(function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/__qc_index__.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);} require('./assets/Script/Block'); require('./assets/Script/ControlManager'); require('./assets/Script/DynamicAtlasManager'); require('./assets/Script/GameManager'); require('./assets/Script/GameOver'); require('./assets/Script/GameScene'); require('./assets/Script/Load'); require('./assets/Script/Map'); require('./assets/Script/Mask'); require('./assets/Script/RankManager'); require('./assets/Script/Window'); require('./assets/Script/module/Config/GameConfig'); require('./assets/Script/module/Crypto/HttpUtil'); require('./assets/Script/module/Crypto/crypto-js.min'); require('./assets/Script/module/GameStart/GameAppStart'); require('./assets/Script/module/Music/AudioManager'); require('./assets/Script/module/Notification/Notification'); require('./assets/Script/module/RankList/ItemRender'); require('./assets/Script/module/RankList/List'); require('./assets/Script/module/Share/share'); require('./assets/Script/module/Storage/Storage'); require('./assets/Script/module/Tool/GameTool'); require('./assets/migration/use_v2.1-2.2.1_cc.Toggle_event'); require('./tiledmap-optimize-resource/Script/TmoAssembler'); require('./tiledmap-optimize-resource/Script/TmoObjectGroup'); require('./tiledmap-optimize-resource/Script/TmoSprite'); require('./tiledmap-optimize-resource/Script/TmoTiledLayer'); require('./tiledmap-optimize-resource/Script/TmoTiledMap'); } if (nodeEnv) { __define(__module.exports, __require, __module); } else { __quick_compile_project__.registerModuleFunc(__filename, function () { __define(__module.exports, __require, __module); }); } })(); //------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; this.getRank(); }; //打开排行榜 NewClass.prototype.openRank = function () { cc.director.loadScene("RankScene"); }; //重新开始玩 NewClass.prototype.again = function () { cc.director.loadScene("GameScene"); }; //获取排行榜 NewClass.prototype.getRank = function () { var _this = this; //获取排行榜数据 所需数据量 var dataFile = { length: 5 }; cc.fx.GameTool.getRank(dataFile, function (data) { return _this.getRankData(data); }); }; //设置排行信息 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 = data.length; 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 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; } if (hitNode) { hitNode.active = true; if (data.nickName.length >= 4) cc.fx.GameTool.subName(data.nickName, 4); hitNode.getChildByName("name").getComponent(cc.Label).string = data.nickName; hitNode.getChildByName("total").getComponent(cc.Label).string = data.totalSunCount; 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lT3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDTSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQW9HQztRQWxHRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBRXZCLFVBQUksR0FBYSxJQUFJLENBQUM7UUFFdEIsY0FBUSxHQUFZLElBQUksQ0FBQztRQUV6QixTQUFHLEdBQVksSUFBSSxDQUFDO1FBRXBCLFNBQUcsR0FBWSxJQUFJLENBQUM7UUFFcEIsV0FBSyxHQUFZLElBQUksQ0FBQztRQUV0QixVQUFJLEdBQVksSUFBSSxDQUFDO1FBRXJCLFVBQUksR0FBWSxJQUFJLENBQUM7O0lBb0Z6QixDQUFDO0lBakZHLGVBQWU7SUFDZix3QkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDeEQsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN2RCxJQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQ3RCLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztZQUNoQixLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztnQkFDbkMsSUFBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSTtvQkFBRSxPQUFPLElBQUksQ0FBQyxDQUFDO2FBQzNDO1lBQ0QsR0FBRyxH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QUVwQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO3lDQUNFO0lBRXBCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MkNBQ0k7SUFFdEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzswQ0FDRztJQUVyQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzBDQUNHO0lBaEJKLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0FvRzVCO0lBQUQsZUFBQztDQXBHRCxBQW9HQyxDQXBHcUMsRUFBRSxDQUFDLFNBQVMsR0FvR2pEO2tCQXBHb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld0NsYXNzIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIGNvdW50OiBjYy5MYWJlbCA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICB0aW1lOiBjYy5MYWJlbCA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIHNlbGZOb2RlOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgb25lOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgdHdvOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgdGhyZWU6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBmb3VyOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgZml2ZTogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBsaXN0RGF0YTogYW55O1xyXG4gICAgc2VsZkRhdGE6IGFueTtcclxuICAgIC8vIG9uTG9hZCAoKSB7fVxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgICAgIHRoaXMuY291bnQuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnNjb3JlICsgXCJcIjtcclxuICAgICAgICB2YXIgeWVzID0gMDtcclxuICAgICAgICB2YXIgc3VjY2Vzc0xpc3QgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uc3VjY2Vzc0xpc3Q7XHJcbiAgICAgICAgaWYoc3VjY2Vzc0xpc3QubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgIHZhciBzdWNjZXNzID0gMDtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8c3VjY2Vzc0xpc3QubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgaWYoc3VjY2Vzc0xpc3RbaV0gPT0gdHJ1ZSkgc3VjY2VzcyArPSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHllcyA9IHN1Y2Nlc3Mvc3VjY2Vzc0xpc3QubGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgICB5ZXMgPSBNYXRoLmZsb29yKHllcyAqIDEwMDApLzEwO1xyXG4gICAgICAgIHRoaXMudGltZS5zdHJpbmcgPSAgXCIlXCIgKyB5ZXM7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcbiAgICAvL+WIneWni+WMluaVsOaNrlxyXG4gICAgaW5pdCgpe1xyXG4gICAgICAgIHRoaXMubGlzdERhdGEgPSBbXTtcclxuICAgICAgICB0aGlzLnNlbGZEYXRhID0gbnVsbDtcclxuICAgICAgICB0aGlzLm9uZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnR3by5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRocmVlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZm91ci5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZpdmUuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5nZXRSYW5rKCk7XHJcbiAgICB9XHJcbiAgICAvL+aJk+W8gOaOkuihjOamnFxyXG4gICAgb3BlblJhbmsoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJSYW5rU2NlbmVcIik7XHJcbiAgICB9XHJcbiAgICAvL+mHjeaWsOW8gOWni+eOqVxyXG4gICAgYWdhaW4oKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICB9XHJcbiAgICAvL+iOt+WPluaOkuihjOamnFxyXG4gICAgZ2V0UmFuaygpe1xyXG4gICAgICAgIC8v6I635Y+W5o6S6KGM5qac5pWw5o2uICDmiYDpnIDmlbDmja7ph49cclxuICAgICAgICBsZXQgZGF0YUZpbGUgPSB7XHJcbiAgICAgICAgICAgIGxlbmd0aDo1XHJcbiAgICAgICAgfVxyXG4gICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRSYW5rKGRhdGFGaWxlLGRhdGEgPT50aGlzLmdldFJhbmtEYXRhKGRhdGEpKTtcclxuICAgIH1cclxuICAgIC8v6K6+572u5o6S6KGM5L+h5oGvXHJcbiAgICBnZXRSYW5rRGF0YShkYXRhKXtcclxuICAgICAgICBpZihkYXRhKXtcclxuICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldFJhbmtEYXRhKGRhdGEsdGhpcyw0KTtcclxuICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFBpYyh0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicGljXCIpLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKSx0aGlzLnNlbGZEYXRhLnBpYyk7XHJcbiAgICAgICAgICAgIHZhciBsZW5ndGggPSBkYXRhLmxlbmd0aDsgaWYobGVuZ3RoID4gNCkgbGVuZ3RoID0gNDtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7aTw9bGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFJhbmsoaSx0aGlzLmxpc3REYXRhW2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v5qC55o2u5YaF5a655aGr5YWF5o6S6KGM5qacXHJcbiAgICBzZXRSYW5rKG51bSxkYXRhKXtcclxuICAgICAgICB2YXIgaGl0Tm9kZSA9IG51bGw7XHJcbiAgICAgICAgaWYobnVtID09IDApe1xyXG4gICAgICAgICAgICBoaXROb2RlID0gdGhpcy5vbmU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYobnVtID09IDEpe1xyXG4gICAgICAgICAgICBoaXROb2RlID0gdGhpcy50d287XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYobnVtID09IDIpe1xyXG4gICAgICAgICAgICBoaXROb2RlID0gdGhpcy50aHJlZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihudW0gPT0gMyl7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLmZvdXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYobnVtID09IDQpe1xyXG4gICAgICAgICAgICBoaXROb2RlID0gdGhpcy5maXZlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihoaXROb2RlKXtcclxuICAgICAgICAgICAgaGl0Tm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZihkYXRhLm5pY2tOYW1lLmxlbmd0aCA+PSA0KVxyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc3ViTmFtZShkYXRhLm5pY2tOYW1lLDQpO1xyXG4gICAgICAgICAgICBoaXROb2RlLmdldENoaWxkQnlOYW1lKFwibmFtZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IGRhdGEubmlja05hbWU7XHJcbiAgICAgICAgICAgIGhpdE5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0b3RhbFwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IGRhdGEudG90YWxTdW5Db3VudDtcclxuICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFBpYyhoaXROb2RlLmdldENoaWxkQnlOYW1lKFwicGljXCIpLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKSxkYXRhLnBpYyk7XHJcbiAgICAgICAgfVxyXG4gICAgfSAgIFxyXG59XHJcbiJdfQ== //------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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vU3ByaXRlLmpzIl0sIm5hbWVzIjpbImNjIiwiQ2xhc3MiLCJTcHJpdGUiLCJzZXRUZXh0dXJlSWR4IiwiaWR4IiwiX3RleHR1cmVJZHgiLCJzZXRWZXJ0c0RpcnR5IiwiX2dldERlZmF1bHRNYXRlcmlhbCIsIl9nZXRUaWxlZE1hcCIsImdldE9iamVjdE1hdGVyaWFsIiwiX3VwZGF0ZU1hdGVyaWFsIiwibWF0ZXJpYWwiLCJnZXRNYXRlcmlhbCIsImdldERlZmluZSIsInVuZGVmaW5lZCIsImRlZmluZSIsInVwZGF0ZUhhc2giLCJub0NvbG9yIiwiaXNOb0NvbG9yIiwiQmxlbmRGdW5jIiwicHJvdG90eXBlIiwiY2FsbCIsIl9yZXNldEFzc2VtYmxlciIsImFzc2VtYmxlciIsIl9hc3NlbWJsZXIiLCJUbW9Bc3NlbWJsZXIiLCJpbml0IiwiX3VwZGF0ZUNvbG9yIiwibm9kZSIsIl90aWxlZE1hcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7ZUFFZUEsRUFBRSxDQUFDQyxLQUFILENBQVM7QUFDcEIsYUFBU0QsRUFBRSxDQUFDRSxNQURROztBQUdwQjtBQUNKO0FBQ0E7QUFDSUMsRUFBQUEsYUFOb0IseUJBTU5DLEdBTk0sRUFNRDtBQUNmLFNBQUtDLFdBQUwsR0FBbUJELEdBQW5CO0FBQ0EsU0FBS0UsYUFBTDtBQUNILEdBVG1CO0FBV3BCQyxFQUFBQSxtQkFYb0IsaUNBV0U7QUFDbEI7QUFDQSxXQUFPLEtBQUtDLFlBQUwsR0FBb0JDLGlCQUFwQixFQUFQO0FBQ0gsR0FkbUI7QUFnQnBCQyxFQUFBQSxlQWhCb0IsNkJBZ0JGO0FBQ2Q7QUFDQSxRQUFJQyxRQUFRLEdBQUcsS0FBS0MsV0FBTCxDQUFpQixDQUFqQixDQUFmOztBQUNBLFFBQUlELFFBQUosRUFBYztBQUNWLFVBQUlBLFFBQVEsQ0FBQ0UsU0FBVCxDQUFtQixhQUFuQixNQUFzQ0MsU0FBMUMsRUFBcUQ7QUFDakRILFFBQUFBLFFBQVEsQ0FBQ0ksTUFBVCxDQUFnQixhQUFoQixFQUErQixJQUEvQjtBQUNILE9BSFMsQ0FJVjs7O0FBQ0FKLE1BQUFBLFFBQVEsQ0FBQ0ssVUFBVCxDQUFvQixNQUFwQixFQUxVLENBT1Y7O0FBQ0EsVUFBSUMsT0FBTyxHQUFHLEtBQUtDLFNBQUwsRUFBZDtBQUNBUCxNQUFBQSxRQUFRLENBQUNJLE1BQVQsQ0FBZ0IsWUFBaEIsRUFBOEIsQ0FBQ0UsT0FBL0I7QUFDSDs7QUFFRGpCLElBQUFBLEVBQUUsQ0FBQ21CLFNBQUgsQ0FBYUMsU0FBYixDQUF1QlYsZUFBdkIsQ0FBdUNXLElBQXZDLENBQTRDLElBQTVDO0FBQ0gsR0FoQ21CO0FBa0NwQkMsRUFBQUEsZUFsQ29CLDZCQWtDRjtBQUNkO0FBQ0EsUUFBSUMsU0FBUyxHQUFHLEtBQUtDLFVBQUwsR0FBa0IsSUFBSUMsMEJBQUosRUFBbEM7QUFDQUYsSUFBQUEsU0FBUyxDQUFDRyxJQUFWLENBQWUsSUFBZjs7QUFFQSxTQUFLQyxZQUFMOztBQUNBLFNBQUtyQixhQUFMO0FBQ0gsR0F6Q21CO0FBMkNwQkUsRUFBQUEsWUEzQ29CLDBCQTJDTDtBQUNYLFdBQU8sS0FBS29CLElBQUwsQ0FBVUMsU0FBakI7QUFDSCxHQTdDbUI7QUErQ3BCWCxFQUFBQSxTQS9Db0IsdUJBK0NSO0FBQ1IsV0FBTyxLQUFLVixZQUFMLEdBQW9CVSxTQUFwQixFQUFQO0FBQ0g7QUFqRG1CLENBQVQiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRtb0Fzc2VtYmxlciB9IGZyb20gXCIuL1Rtb0Fzc2VtYmxlclwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2MuQ2xhc3Moe1xyXG4gICAgZXh0ZW5kczogY2MuU3ByaXRlLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6K6+572uVGV4dHVyZUluZGV4XHJcbiAgICAgKi9cclxuICAgIHNldFRleHR1cmVJZHgoaWR4KSB7XHJcbiAgICAgICAgdGhpcy5fdGV4dHVyZUlkeCA9IGlkeFxyXG4gICAgICAgIHRoaXMuc2V0VmVydHNEaXJ0eSgpO1xyXG4gICAgfSxcclxuXHJcbiAgICBfZ2V0RGVmYXVsdE1hdGVyaWFsKCkge1xyXG4gICAgICAgIC8vIOS7jlRpbGVkTWFw5Y+W5b6X6buY6K6k55qE5p2Q6LSoXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFRpbGVkTWFwKCkuZ2V0T2JqZWN0TWF0ZXJpYWwoKTtcclxuICAgIH0sXHJcblxyXG4gICAgX3VwZGF0ZU1hdGVyaWFsKCkge1xyXG4gICAgICAgIC8vIG1ha2Ugc3VyZSBtYXRlcmlhbCBpcyBiZWxvbmcgdG8gc2VsZi5cclxuICAgICAgICBsZXQgbWF0ZXJpYWwgPSB0aGlzLmdldE1hdGVyaWFsKDApO1xyXG4gICAgICAgIGlmIChtYXRlcmlhbCkge1xyXG4gICAgICAgICAgICBpZiAobWF0ZXJpYWwuZ2V0RGVmaW5lKCdVU0VfVEVYVFVSRScpICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIG1hdGVyaWFsLmRlZmluZSgnVVNFX1RFWFRVUkUnLCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyDmiYvliqjorr7nva7lk4jluIzlgLzvvIzpgb/lhY3ml6Dms5XlkIjmiblcclxuICAgICAgICAgICAgbWF0ZXJpYWwudXBkYXRlSGFzaCg5OTk5OTkpO1xyXG5cclxuICAgICAgICAgICAgLy8g5aKe5YqgV0lUSF9DT0xPUuWuj+WumuS5iVxyXG4gICAgICAgICAgICBsZXQgbm9Db2xvciA9IHRoaXMuaXNOb0NvbG9yKCk7XHJcbiAgICAgICAgICAgIG1hdGVyaWFsLmRlZmluZSgnV0lUSF9DT0xPUicsICFub0NvbG9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNjLkJsZW5kRnVuYy5wcm90b3R5cGUuX3VwZGF0ZU1hdGVyaWFsLmNhbGwodGhpcyk7XHJcbiAgICB9LFxyXG5cclxuICAgIF9yZXNldEFzc2VtYmxlcigpIHtcclxuICAgICAgICAvLyDkv67mlLnpu5jorqRBc3NlbWJsZXJcclxuICAgICAgICBsZXQgYXNzZW1ibGVyID0gdGhpcy5fYXNzZW1ibGVyID0gbmV3IFRtb0Fzc2VtYmxlcigpO1xyXG4gICAgICAgIGFzc2VtYmxlci5pbml0KHRoaXMpO1xyXG5cclxuICAgICAgICB0aGlzLl91cGRhdGVDb2xvcigpO1xyXG4gICAgICAgIHRoaXMuc2V0VmVydHNEaXJ0eSgpO1xyXG4gICAgfSxcclxuXHJcbiAgICBfZ2V0VGlsZWRNYXAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubm9kZS5fdGlsZWRNYXA7XHJcbiAgICB9LFxyXG5cclxuICAgIGlzTm9Db2xvcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VGlsZWRNYXAoKS5pc05vQ29sb3IoKTtcclxuICAgIH1cclxufSk7XHJcbiJdfQ== //------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/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.localTest = false; _this.clientTestVersion = "1.0.0"; _this.testVersion = null; return _this; } NewClass.prototype.start = function () { cc.debug.setDisplayStats(false); window.initMgr(); cc.fx.GameConfig.init(this.localTest); // cc.fx.AudioManager.Instance.init(); this.testVersion.string = this.clientTestVersion; }; //开始游戏,跳转至引导页面 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(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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxMb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNNLElBQUEsS0FBd0MsRUFBRSxDQUFDLFVBQVUsRUFBcEQsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFBLEVBQUUsZ0JBQWdCLHNCQUFpQixDQUFDO0FBRzVEO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBcUNDO1FBbENHLGVBQVMsR0FBWSxLQUFLLENBQUM7UUFHM0IsdUJBQWlCLEdBQVcsT0FBTyxDQUFDO1FBR3BDLGlCQUFXLEdBQWEsSUFBSSxDQUFDOztJQTRCakMsQ0FBQztJQTFCRyx3QkFBSyxHQUFMO1FBQ0ksRUFBRSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEMsc0NBQXNDO1FBQ3RDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUVyRCxDQUFDO0lBRUQsY0FBYztJQUNkLDRCQUFTLEdBQVQ7UUFDSSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQyx1Q0FBdUM7SUFDM0MsQ0FBQztJQUNELGdCQUFnQjtJQUNoQiwyQkFBUSxHQUFSLFVBQVMsS0FBSyxFQUFDLElBQUk7UUFDZixFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsT0FBTztJQUNQLDJCQUFRLEdBQVI7UUFDSSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRVMseUJBQU0sR0FBaEIsVUFBaUIsRUFBVTtJQUMzQixDQUFDO0lBakNEO1FBREMsUUFBUSxDQUFDLEtBQUssQ0FBQzsrQ0FDVztJQUczQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUM7dURBQ3VCO0lBR3BDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7aURBQ1U7SUFUWixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBcUM1QjtJQUFELGVBQUM7Q0FyQ0QsQUFxQ0MsQ0FyQ3FDLEVBQUUsQ0FBQyxTQUFTLEdBcUNqRDtrQkFyQ29CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJcclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5LCByZXF1aXJlQ29tcG9uZW50fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGZhbHNlKVxyXG4gICAgbG9jYWxUZXN0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQHByb3BlcnR5KFwiXCIpXHJcbiAgICBjbGllbnRUZXN0VmVyc2lvbjogc3RyaW5nID0gXCIxLjAuMFwiO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIHRlc3RWZXJzaW9uOiBjYy5MYWJlbCA9IG51bGw7XHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgICAgIGNjLmRlYnVnLnNldERpc3BsYXlTdGF0cyhmYWxzZSk7XHJcbiAgICAgICAgd2luZG93LmluaXRNZ3IoKTtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLmluaXQodGhpcy5sb2NhbFRlc3QpO1xyXG4gICAgICAgIC8vIGNjLmZ4LkF1ZGlvTWFuYWdlci5JbnN0YW5jZS5pbml0KCk7XHJcbiAgICAgICAgdGhpcy50ZXN0VmVyc2lvbi5zdHJpbmcgPSB0aGlzLmNsaWVudFRlc3RWZXJzaW9uO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvL+W8gOWni+a4uOaIj++8jOi3s+i9rOiHs+W8leWvvOmhtemdolxyXG4gICAgc3RhcnRHYW1lKCl7XHJcbiAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgICAgIC8vIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkd1aWRlU2NlbmVcIik7XHJcbiAgICB9XHJcbiAgICAvL+Wkh+eUqO+8jOeUqOadpea1i+ivlei3s+i9rCDmjIflrprlhbPljaFcclxuICAgIGNsaWNrQnRuKGV2ZW50LGRhdGEpe1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jdXN0b20gPSBwYXJzZUludChkYXRhKTtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICB9ICAgXHJcbiAgICAvL+aJk+W8gOaOkuihjOamnFxyXG4gICAgb3BlblJhbmsoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJSYW5rU2NlbmVcIik7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHByb3RlY3RlZCB1cGRhdGUoZHQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgfVxyXG59XHJcbiJdfQ== //------QC-SOURCE-SPLIT------ (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/assets/Script/DynamicAtlasManager.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, '5c9b8FZiaNLMrMDs9T3rByf', 'DynamicAtlasManager'); // Script/DynamicAtlasManager.js "use strict"; 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); }); } })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxEeW5hbWljQXRsYXNNYW5hZ2VyLmpzIl0sIm5hbWVzIjpbImNjIiwiQ2xhc3MiLCJDb21wb25lbnQiLCJwcm9wZXJ0aWVzIiwib25Mb2FkIiwiZHluYW1pY0F0bGFzTWFuYWdlciIsImVuYWJsZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUFBLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTO0FBQ0wsYUFBU0QsRUFBRSxDQUFDRSxTQURQO0FBR0xDLEVBQUFBLFVBQVUsRUFBRSxFQUhQO0FBTUxDLEVBQUFBLE1BTkssb0JBTUs7QUFDTkosSUFBQUEsRUFBRSxDQUFDSyxtQkFBSCxDQUF1QkMsT0FBdkIsR0FBaUMsS0FBakM7QUFDSDtBQVJJLENBQVQiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImNjLkNsYXNzKHtcclxuICAgIGV4dGVuZHM6IGNjLkNvbXBvbmVudCxcclxuXHJcbiAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICB9LFxyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcbiAgICAgICAgY2MuZHluYW1pY0F0bGFzTWFuYWdlci5lbmFibGVkID0gZmFsc2U7XHJcbiAgICB9LFxyXG59KTtcclxuIl19 //------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(210, 453, 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/ov5Tlm57mjInpkq5cclxuICAgIGJhY2tDbGljaygpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkxvYWRTY2VuZVwiKTtcclxuICAgIH1cclxuICAgIC8v5pyA5LiK5pa555So5oi35Yqo55S7XHJcbiAgICBwbGF5ZXJBY3Rpb24oKXtcclxuICAgICAgICAvLy0yNTQgMzc3ICAyMTAgNDUzXHJcbiAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGxldCB0aW1lID0gMTtcclxuICAgICAgICB0aGlzLnR3ZWVuID0gY2MudHdlZW4odGhpcy5QbGF5ZXIpXHJcbiAgICAgICAgLnRvKDIse3Bvc2l0aW9uOmNjLnYzKDIxMCw0NTMsMCl9KVxyXG4gICAgICAgIC5jYWxsKCgpID0+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/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 _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; } NewClass.prototype.onLoad = function () { }; NewClass.prototype.start = function () { this.initMap(); }; NewClass.prototype.initMap = function () { this.setMapInfo(); }; //根据关卡设置地图大小 NewClass.prototype.setMapInfo = function () { switch (cc.fx.GameConfig.custom) { case 0: this.vertical = 4; this.horizontal = 4; this.passTime = 0.3; break; case 1: this.vertical = 5; this.horizontal = 5; this.passTime = 0.25; break; case 2: this.vertical = 5; this.horizontal = 5; this.passTime = 0.2; break; case 3: this.vertical = 5; this.horizontal = 5; this.passTime = 0.18; break; case 4: this.vertical = 6; this.horizontal = 6; this.passTime = 0.16; break; case 5: this.vertical = 6; this.horizontal = 7; this.passTime = 0.14; break; case 6: this.vertical = 6; this.horizontal = 8; this.passTime = 0.12; break; case 7: this.vertical = 6; this.horizontal = 9; this.passTime = 0.1; break; } }; 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFNUUsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFLMUM7SUFBc0MsNEJBQVk7SUFBbEQ7O0lBbUVBLENBQUM7SUEzREcseUJBQU0sR0FBTjtJQUVBLENBQUM7SUFFRCx3QkFBSyxHQUFMO1FBQ0csSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCwwQkFBTyxHQUFQO1FBQ0ksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxZQUFZO0lBQ1osNkJBQVUsR0FBVjtRQUNJLFFBQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFDO1lBQzNCLEtBQUssQ0FBQztnQkFDRixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO2dCQUN4QixNQUFNO1lBQ04sS0FBSyxDQUFDO2dCQUNGLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLE1BQU07WUFDTixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztnQkFDeEIsTUFBTTtZQUNOLEtBQUssQ0FBQztnQkFDRixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUN6QixNQUFNO1lBQ04sS0FBSyxDQUFDO2dCQUNGLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLE1BQU07WUFDTixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDekIsTUFBTTtZQUNOLEtBQUssQ0FBQztnQkFDRixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUN6QixNQUFNO1lBQ04sS0FBSyxDQUFDO2dCQUNGLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7Z0JBQ3hCLE1BQU07U0FDVDtJQUNMLENBQUM7SUFoRWdCLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0FtRTVCO0lBQUQsZUFBQztDQW5FRCxBQW1FQyxDQW5FcUMsRUFBRSxDQUFDLFNBQVMsR0FtRWpEO2tCQW5Fb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcbiAgICBob3Jpem9udGFsOm51bWJlcjsgIC8v5qiq5ZCRICBcclxuICAgIHZlcnRpY2FsOm51bWJlcjsgICAgLy/nurXlkJFcclxuICAgIHBhc3NUaW1lOm51bWJlcjtcclxuICAgIG5vd1BvczpjYy5WZWMyO1xyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgICAgIHRoaXMuaW5pdE1hcCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRNYXAoKXtcclxuICAgICAgICB0aGlzLnNldE1hcEluZm8oKTtcclxuICAgIH1cclxuXHJcbiAgICAvL+agueaNruWFs+WNoeiuvue9ruWcsOWbvuWkp+Wwj1xyXG4gICAgc2V0TWFwSW5mbygpe1xyXG4gICAgICAgIHN3aXRjaChjYy5meC5HYW1lQ29uZmlnLmN1c3RvbSl7XHJcbiAgICAgICAgICAgIGNhc2UgMDpcclxuICAgICAgICAgICAgICAgIHRoaXMudmVydGljYWwgPSA0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ob3Jpem9udGFsID0gNDtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFzc1RpbWUgPSAwLjM7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZlcnRpY2FsID0gNTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaG9yaXpvbnRhbCA9IDU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhc3NUaW1lID0gMC4yNTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICAgIHRoaXMudmVydGljYWwgPSA1O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ob3Jpem9udGFsID0gNTtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFzc1RpbWUgPSAwLjI7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDM6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZlcnRpY2FsID0gNTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaG9yaXpvbnRhbCA9IDU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhc3NUaW1lID0gMC4xODtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgNDpcclxuICAgICAgICAgICAgICAgIHRoaXMudmVydGljYWwgPSA2O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ob3Jpem9udGFsID0gNjtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFzc1RpbWUgPSAwLjE2O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA1OlxyXG4gICAgICAgICAgICAgICAgdGhpcy52ZXJ0aWNhbCA9IDY7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhvcml6b250YWwgPSA3O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wYXNzVGltZSA9IDAuMTQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDY6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZlcnRpY2FsID0gNjtcclxuICAgICAgICAgICAgICAgIHRoaXMuaG9yaXpvbnRhbCA9IDg7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBhc3NUaW1lID0gMC4xMjtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgNzpcclxuICAgICAgICAgICAgICAgIHRoaXMudmVydGljYWwgPSA2O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ob3Jpem9udGFsID0gOTtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFzc1RpbWUgPSAwLjE7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== //------QC-SOURCE-SPLIT------ (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/assets/Script/Mask.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, '81171JxkddO6ZzuXLu/FZen', 'Mask'); // Script/Mask.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: // onLoad () {} NewClass.prototype.start = function () { var GameManager = this.node.parent.parent.parent.getComponent("GameManager"); if (GameManager.bgClick == true) { GameManager.bgClick = false; this.node.on(cc.Node.EventType.TOUCH_START, this.onClick, this); } }; NewClass.prototype.onClick = function () { cc.fx.Notifications.emit(cc.fx.Message.guideNext); }; 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxNYXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTVFLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBRzFDO0lBQXNDLDRCQUFZO0lBQWxEOztJQXFCQSxDQUFDO0lBbkJHLHdCQUF3QjtJQUV4QixlQUFlO0lBRWYsd0JBQUssR0FBTDtRQUNJLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTdFLElBQUcsV0FBVyxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUM7WUFDM0IsV0FBVyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDNUIsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDbkU7SUFFTCxDQUFDO0lBRUQsMEJBQU8sR0FBUDtRQUNJLEVBQUUsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBbEJnQixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBcUI1QjtJQUFELGVBQUM7Q0FyQkQsQUFxQkMsQ0FyQnFDLEVBQUUsQ0FBQyxTQUFTLEdBcUJqRDtrQkFyQm9CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld0NsYXNzIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgbGV0IEdhbWVNYW5hZ2VyID0gdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQucGFyZW50LmdldENvbXBvbmVudChcIkdhbWVNYW5hZ2VyXCIpO1xyXG5cclxuICAgICAgICBpZihHYW1lTWFuYWdlci5iZ0NsaWNrID09IHRydWUpe1xyXG4gICAgICAgICAgICBHYW1lTWFuYWdlci5iZ0NsaWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9TVEFSVCwgdGhpcy5vbkNsaWNrLCB0aGlzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIG9uQ2xpY2soKXtcclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5ndWlkZU5leHQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 //------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, 'b0432BA295DjIOcuitdGKO1', 'GameManager'); // Script/GameManager.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 Block_1 = require("./Block"); // 主游戏控制类 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.Map = null; _this.Block = null; _this.Time = null; _this.Countdown = null; _this.Guide = null; return _this; } GameManager.prototype.onLoad = function () { }; GameManager.prototype.start = function () { this.fit(); this.init(); }; //初始化数据 GameManager.prototype.init = function () { this.initMap(); this.finishiTime = 0; this.scoreTime = 0; this.startTime = cc.fx.GameTool.getTime(); this.countTime = cc.fx.GameConfig.TIME_INFO.totalTime; this.waterTime = cc.fx.GameConfig.TIME_INFO.waterTime[cc.fx.GameConfig.GM_INFO.level]; this.Time.string = cc.fx.GameTool.getTimeMargin(this.countTime); if (!cc.fx.GameConfig.GM_INFO.guide) { this.Guide.active = false; this.step = 0; var head = this.node.getChildByName("Top").getChildByName("head"); var progress = this.node.getChildByName("Top").getChildByName("progress").getComponent(cc.Sprite); head.runAction(cc.moveTo(this.waterTime, cc.v2(310, head.y))); this.waterTween = cc.tween(progress) .to(this.waterTime, { fillRange: 1 }) .start(); this.schedule(this.updateWaterTime, 1); this.schedule(this.updateCountDownTime, 1); } else { this.Guide.active = true; this.guideNext(); } }; //初始化地图 GameManager.prototype.initMap = function () { cc.fx.GameConfig.GM_INFO.round += 1; cc.fx.GameConfig.GM_INFO.fen = 0; this.block_Array = []; this.path_Array = []; this.water_Array = []; this.map_Array = []; this.tip_Array = []; this.plan_over = false; this.map_Hight = 0; this.map_Width = 0; this.step = 0; this.bgClick = false; this.btnClick = false; if (!cc.fx.GameConfig.GM_INFO.guide && cc.fx.GameConfig.GM_INFO.level == 0) { cc.fx.GameConfig.GM_INFO.level = 1; } this.custom = 10; //9 this.custom = Math.floor(Math.random() * cc.fx.GameConfig.LEVEL_INFO[cc.fx.GameConfig.GM_INFO.level].length); // this.custom = 0; var arr = cc.fx.GameConfig.LEVEL_INFO[cc.fx.GameConfig.GM_INFO.level][this.custom].map; if (cc.fx.GameConfig.GM_INFO.level == 0) { this.Map.scale = 1.2; } this.node.getChildByName("Top").getChildByName("id").getComponent(cc.Label).string = cc.fx.GameConfig.LEVEL_INFO[cc.fx.GameConfig.GM_INFO.level][this.custom].id; //将地图x,y轴切换 this.map_Array = arr[0].map(function (item, i) { return arr.map(function (val) { return val[i]; }); }); this.map_Width = this.map_Array.length; this.map_Hight = this.map_Array[0].length; this.Map.x = (6 - this.map_Array.length) * 48; this.Map.y = (this.map_Array[0].length - 6.5) * 48; for (var i = 0; i < this.map_Array.length; i++) { for (var j = 0; j < this.map_Array[i].length; j++) { var block = cc.instantiate(this.Block); block.parent = this.Map; block.getComponent("Block").initData(this.map_Array[i][j], cc.v2(i, j), cc.v2(this.map_Width, this.map_Hight)); if (this.map_Array[i][j] == cc.Enum(Block_1.BlockType).Start) { this.path_Array.push(cc.v3(i, j, cc.Enum(Block_1.BlockType).Nomal)); // this.water_Array.push(cc.v3(i,j,cc.Enum(BlockType).Nomal)); } block.setPosition(cc.v2(-block.width * 2.5 + i * block.width, block.height * 4 - j * block.height)); this.block_Array.push(block); } } }; //开始后,按玩家操作,将路径中地图块放入数组中 GameManager.prototype.setMap = function (data) { for (var i = 0; i < data.length; i++) { var start = this.path_Array[this.path_Array.length - 1]; switch (data[i]) { case "up": this.path_Array.push(cc.v3(start.x, start.y - 1, cc.Enum(Block_1.BlockType).Nomal)); break; case "down": this.path_Array.push(cc.v3(start.x, start.y + 1, cc.Enum(Block_1.BlockType).Nomal)); break; case "left": this.path_Array.push(cc.v3(start.x - 1, start.y, cc.Enum(Block_1.BlockType).Nomal)); break; case "right": this.path_Array.push(cc.v3(start.x + 1, start.y, cc.Enum(Block_1.BlockType).Nomal)); break; case "reinforce": this.path_Array.push(cc.v3(start.x, start.y, cc.Enum(Block_1.BlockType).Reinforce)); break; case "soil": this.path_Array.push(cc.v3(start.x, start.y, cc.Enum(Block_1.BlockType).Xi_Soil)); break; } } this.runRoad(0); }; //开始执行洪峰来了的动画 GameManager.prototype.runRoad = function (order) { var _this = this; order = parseInt(order); if (order > 0) { if (this.path_Array[order - 1].z == 0) { //console.log("1正常放入",this.path_Array[order-1].x,this.path_Array[order-1].y,this.path_Array[order-1].z) this.changeWater(cc.v3(this.path_Array[order - 1].x, this.path_Array[order - 1].y, 0)); if (order == this.path_Array.length - 1) { this.changeWater(cc.v3(this.path_Array[order].x, this.path_Array[order].y, 0)); // console.log("最后放入",this.path_Array[order].x,this.path_Array[order].y) } } else { //console.log("2插入",this.path_Array[order].x,this.path_Array[order].y,this.path_Array[order].z) this.changeWater(cc.v3(this.path_Array[order].x, this.path_Array[order].y, 0)); } } if (order <= this.path_Array.length - 1) { var i = this.path_Array[order].x * this.map_Array[0].length + this.path_Array[order].y; var direction = ""; var circulate = true; //最后一步结束 if (order == this.path_Array.length - 1) { circulate = false; direction = "End"; setTimeout(function () { if (!_this.plan_over) { console.log("准备出水"); _this.plan_over = true; _this.unschedule(_this.updateWaterTime); var head = _this.node.getChildByName("Top").getChildByName("head"); var progress = _this.node.getChildByName("Top").getChildByName("progress").getComponent(cc.Sprite); head.stopAllActions(); head.setPosition(310, head.y); if (_this.waterTween) _this.waterTween.stop(); progress.fillRange = 1; _this.runWater(0); } }, 500); } else { if (this.path_Array[order].z == 6 && order + 1 < this.path_Array.length && order != 1) { direction = "Reinforce"; i = this.path_Array[order + 1].x * this.map_Array[0].length + this.path_Array[order + 1].y; } else if (order + 1 < this.path_Array.length) { if (this.path_Array[order + 1].z == 5) { direction = "Xi_Soil"; } else if (this.path_Array[order + 1].z == 6 && order == 0) { direction = "Reinforce"; } else { direction = this.getDirection(order, this.path_Array); } } else { direction = this.getDirection(order, this.path_Array); } } // console.log(order,this.path_Array[order].x,this.path_Array[order].y,i); // console.log("步骤:",order,"方向",direction); var jg = this.getBoundary(order, this.path_Array[order].x, this.path_Array[order].y, direction, this.path_Array); if (direction == "" || jg == false) return; var target = this.block_Array[i].getComponent("Block"); target.setPath(direction); if (order > 0 && order < this.path_Array.length - 1) { if (this.path_Array[order + 1].z == 5) { this.set_Soil(order + 1, this.path_Array, "road"); circulate = false; return; } else if (order == 1 && this.path_Array[order].z == 5) { this.set_Soil(order, this.path_Array, "road"); circulate = false; return; } } var pos = cc.v2(); // if(order > 0){ if (direction == "End") { if (order > 0) { if (this.path_Array[order - 1].z == 0) { pos = cc.v2(this.path_Array[order - 1].x, this.path_Array[order - 1].y); } } } // } var data = { order: order, time: cc.fx.GameConfig.TIME_INFO.waterSpeed[cc.fx.GameConfig.GM_INFO.level], type: this.path_Array[order].z, circulate: circulate, last: pos }; target.runRoad(data); } }; //判断边界。或者撞山,或者湿地没有加固 GameManager.prototype.getBoundary = function (order, x, y, direction, road) { var jg = true; if (x < 0 || x >= this.map_Width || y < 0 || y >= this.map_Hight) { jg = false; // console.log("超过边界,游戏结束"); alert("超过边界,治水失败"); cc.fx.Notifications.emit(cc.fx.Message.showResult, "lose"); cc.fx.Notifications.emit(cc.fx.Message.setData, false); // cc.director.loadScene("GameScene"); } else { var i = road[order].x * this.map_Array[0].length + road[order].y; var target = this.block_Array[i].getComponent("Block"); if (target.block_Type == 3) { jg = false; // console.log("修筑山峰,游戏结束"); alert("修筑山峰,治水失败"); cc.fx.Notifications.emit(cc.fx.Message.showResult, "lose"); cc.fx.Notifications.emit(cc.fx.Message.setData, false); // cc.director.loadScene("GameScene"); } else if (target.block_Type == 2 && direction != "Reinforce") { jg = false; // console.log("修筑未加固湿地,游戏结束"); alert("修筑未加固湿地,游戏结束"); cc.fx.Notifications.emit(cc.fx.Message.showResult, "lose"); cc.fx.Notifications.emit(cc.fx.Message.setData, false); // cc.director.loadScene("GameScene"); } } return jg; }; //开始执行洪峰来了的动画 GameManager.prototype.runWater = function (order) { order = parseInt(order); if (order <= this.water_Array.length - 1) { var i = this.water_Array[order].x * this.map_Array[0].length + this.water_Array[order].y; var direction = ""; var circulate = true; //最后一步结束 if (order == this.water_Array.length - 1) { circulate = false; direction = "End"; } else { if (this.water_Array[order].z == 6 && order + 1 < this.water_Array.length) { direction = "Reinforce"; i = this.water_Array[order + 1].x * this.map_Array[0].length + this.water_Array[order + 1].y; } else if (order + 1 < this.water_Array.length) { if (this.water_Array[order + 1].z == 5) { direction = "Xi_Soil"; } else if (this.water_Array[order + 1].z == 6 && order == 0) { direction = "Reinforce"; } else { direction = this.getDirection(order, this.water_Array); } } else { direction = this.getDirection(order, this.water_Array); } } // console.log(order,this.path_Array[order].x,this.path_Array[order].y,i); var jg = this.getBoundary(order, this.water_Array[order].x, this.water_Array[order].y, direction, this.water_Array); // console.log("步骤:",order,"方向",direction); if (direction == "" || jg == false) { return; } var target = this.block_Array[i].getComponent("Block"); target.setPath(direction); if (order > 0 && order < this.water_Array.length - 1) { if (this.water_Array[order + 1].z == 5) { this.set_Soil(order + 1, this.water_Array, "water"); circulate = false; return; } else if (order == 1 && this.water_Array[order].z == 5) { this.set_Soil(order, this.water_Array, "water"); circulate = false; return; } } var pos = cc.v2(); if (direction == "End") { if (order > 0) { if (this.water_Array[order - 1].z == 0) { pos = cc.v2(this.water_Array[order - 1].x, this.water_Array[order - 1].y); } } } var data = { order: order, time: cc.fx.GameConfig.TIME_INFO.waterSpeed[cc.fx.GameConfig.GM_INFO.level], type: this.water_Array[order].z, circulate: circulate, last: pos }; target.runWater(data); } }; //获取息壤的格子的方向 GameManager.prototype.getXi_Soil = function (order, road) { var direction = null; //如果息壤后面还有下一步的话 if (order + 1 < road.length) { direction = this.getDirection(order, road); if (direction == "up" || direction == "right_up" || direction == "left_up") { direction = "up"; } else if (direction == "down" || direction == "left_down" || direction == "right_down") { direction = "down"; } else if (direction == "left" || direction == "up_left" || direction == "down_left") { direction = "left"; } else if (direction == "right" || direction == "up_right" || direction == "down_right") { direction = "right"; } } return direction; }; //设置息壤 GameManager.prototype.set_Soil = function (order, road, name) { var direction = this.getXi_Soil(order, road); var length = 0; if (direction == "right") { length = this.map_Width - 1; for (var i = road[order].x; i <= length; i++) { var n = i * this.map_Array[0].length + road[order].y; var target = this.block_Array[n].getComponent("Block"); if (target.block_Type == 3 || target.block_Type == 4) { length = i - 1; if (target.block_Type == 4) { length += 1; } i = 10000; break; } } this.scheduleOnce; } else if (direction == "left") { length = 0; for (var i = road[order].x; i >= length; i--) { var n = i * this.map_Array[0].length + road[order].y; var target = this.block_Array[n].getComponent("Block"); if (target.block_Type == 3 || target.block_Type == 4) { length = i + 1; if (target.block_Type == 4) { length -= 1; } i = -1; break; } } } else if (direction == "up") { length = 0; for (var i = road[order].y; i >= length; i--) { var n = road[order].x * this.map_Array[0].length + i; var target = this.block_Array[n].getComponent("Block"); if (target.block_Type == 3 || target.block_Type == 4) { length = i + 1; if (target.block_Type == 4) { length -= 1; } i = -1; break; } } } else if (direction == "down") { length = this.map_Hight - 1; for (var i = road[order].y; i <= length; i++) { var n = road[order].x * this.map_Array[0].length + i; var target = this.block_Array[n].getComponent("Block"); if (target.block_Type == 3 || target.block_Type == 4) { length = i - 1; if (target.block_Type == 4) { length += 1; } i = 10000; break; } } } this.soil_Find(direction, order, length, road, name); }; //查找息壤蛮遗憾路径 GameManager.prototype.soil_Find = function (direction, order, length, road, name) { var start = road[order].x; if (direction == "right") { for (var i = start; i <= length; i++) { var n = i * this.map_Array[0].length + road[order].y; var target = this.block_Array[n].getComponent("Block"); if (i == start) { target.set_Xi_SoilType(this.getDirection(order, road), null, name); var value = cc.v3(this.path_Array[order].x, this.path_Array[order].y, 0); if (this.water_Array[this.water_Array.length - 1] != value) { // console.log("特别插入:",this.path_Array[order].x,this.path_Array[order].y); this.changeWater(value); } } else { var jg = null; if (i == length) { var number = i - start - 1; this.changePath(order, number, false, road); jg = order; } target.set_Xi_SoilType(direction, jg, name); } } } else if (direction == "left") { for (var i = start; i >= length; i--) { var n = i * this.map_Array[0].length + road[order].y; var target = this.block_Array[n].getComponent("Block"); if (i == start) { target.set_Xi_SoilType(this.getDirection(order, road), null, name); var value = cc.v3(this.path_Array[order].x, this.path_Array[order].y, 0); if (this.water_Array[this.water_Array.length - 1] != value) { // console.log("特别插入:",this.path_Array[order].x,this.path_Array[order].y); this.changeWater(value); } } else { var jg = null; if (i == length) { var number = i - start + 1; this.changePath(order, number, false, road); jg = order; } target.set_Xi_SoilType(direction, jg, name); } } } else if (direction == "up") { start = road[order].y; for (var i = start; i >= length; i--) { var n = road[order].x * this.map_Array[0].length + i; var target = this.block_Array[n].getComponent("Block"); if (i == start) { target.set_Xi_SoilType(this.getDirection(order, road), null, name); var value = cc.v3(this.path_Array[order].x, this.path_Array[order].y, 0); if (this.water_Array[this.water_Array.length - 1] != value) { // console.log("特别插入:",this.path_Array[order].x,this.path_Array[order].y); this.changeWater(value); } } else { var jg = null; if (i == length) { var number = i - start + 1; this.changePath(order, number, true, road); jg = order; } // console.log("想上息壤插入:",this.path_Array[order].x,i); target.set_Xi_SoilType(direction, jg, name); } } } else if (direction == "down") { start = road[order].y; for (var i = start; i <= length; i++) { var n = road[order].x * this.map_Array[0].length + i; var target = this.block_Array[n].getComponent("Block"); if (i == start) { target.set_Xi_SoilType(this.getDirection(order, road), null, name); var value = cc.v3(this.path_Array[order].x, this.path_Array[order].y, 0); if (this.water_Array[this.water_Array.length - 1] != value) { // console.log("特别插入:",this.path_Array[order].x,this.path_Array[order].y); this.changeWater(value); } } else { var jg = null; if (i == length) { var number = i - start - 1; this.changePath(order, number, true, road); jg = order; } target.set_Xi_SoilType(direction, jg, name); } } } }; //改变水流地图 GameManager.prototype.changeWater = function (value) { var jg = true; if (this.water_Array.length > 0) { if (this.water_Array[this.water_Array.length - 1].x == value.x && this.water_Array[this.water_Array.length - 1].y == value.y) { jg = false; } } if (jg) this.water_Array.push(value); }; //息壤过后改变修筑路径 GameManager.prototype.changePath = function (order, number, direction, road) { for (var i = (order + 1); i < road.length; i++) { if (!direction) { road[i].x += (number); } else { road[i].y += (number); } } if (direction) { if (number < 0) { for (var n = -number; n > 0; n--) { this.changeWater(cc.v3(this.path_Array[order + 1].x, this.path_Array[order + 1].y + n, 0)); // console.log("1特殊放入:",this.path_Array[order+1].x,this.path_Array[order+1].y+n) } } else { for (var n = number; n > 0; n--) { this.changeWater(cc.v3(this.path_Array[order + 1].x, this.path_Array[order + 1].y - n, 0)); // console.log("2特殊放入:",this.path_Array[order+1].x,this.path_Array[order+1].y-n) } } } else { if (number < 0) { for (var m = -number; m > 0; m--) { this.changeWater(cc.v3(this.path_Array[order + 1].x + m, this.path_Array[order + 1].y, 0)); // console.log("3特殊放入:",this.path_Array[order+1].x+m,this.path_Array[order+1].y) } } else { for (var m = number; m > 0; m--) { this.changeWater(cc.v3(this.path_Array[order + 1].x - m, this.path_Array[order + 1].y, 0)); // console.log("4特殊放入:",this.path_Array[order+1].x-m,this.path_Array[order+1].y) } } } }; GameManager.prototype.changeMap = function (data) { }; //获取洪峰方向 GameManager.prototype.getDirection = function (order, road) { var name = ""; //入海口比较复杂单独判断 if (order == 0) { var nextX = road[order + 1].x - road[order].x; var nextY = road[order].y - road[order + 1].y; //在底边 if (road[order].y == this.map_Array[0].length - 1) { if (nextX == 0) { if (nextY == 1) name = "up"; else if (nextY == -1) name = "err"; } else if (nextX == 1) name = "up_right"; else if (nextX == -1) name = "up_left"; } //在顶边 else if (road[order].y == 0) { if (nextX == 0) { if (nextY == 1) name = "err"; else if (nextY == -1) name = "down"; } else if (nextX == 1) name = "down_right"; else if (nextX == -1) name = "down_left"; } //在左边 else if (road[order].x == 0) { if (nextX == 0) { if (nextY == 1) name = "right_up"; else if (nextY == -1) name = "right_down"; } else if (nextX == 1) name = "right"; else if (nextX == -1) name = "err"; } //在右边 else if (road[order].x == this.map_Array.length - 1) { if (nextX == 0) { if (nextY == 1) name = "left_up"; else if (nextY == -1) name = "left_down"; } else if (nextX == 1) name = "err"; else if (nextX == -1) name = "left"; } } //不是第一步,已经走过一步 else if (order > 0) { var next = 1; if (order + 2 < road.length) { if (road[order + 1].z == 6) next = 2; } //用于判断此点的上一个点,是为了判断当前方块洪水七点,以及下一个移动方向,判断洪终点方向 var nextX = road[order + next].x - road[order].x; var nextY = road[order].y - road[order + next].y; var previousX = road[order].x - road[order - 1].x; var previousY = road[order - 1].y - road[order].y; if (previousX == 0 && previousY == 0) { if (order > 1) { previousX = road[order].x - road[order - 2].x; previousY = road[order - 2].y - road[order].y; } else if (order + 1 < road.length) { previousX = road[order + 1].x - road[order].x; previousY = road[order].y - road[order + 1].y; // console.log("息壤,上下坐标差距",previousX,previousY); } } if (previousX == 0 && previousY >= 1) { if (nextX == 0) { if (nextY == 1) name = "up"; else if (nextY == -1) name = "err"; } else if (nextX == 1) name = "up_right"; else if (nextX == -1) name = "up_left"; } else if (previousX == 0 && previousY <= -1) { if (nextX == 0) { if (nextY == 1) name = "err"; else if (nextY == -1) name = "down"; } else if (nextX == 1) name = "down_right"; else if (nextX == -1) name = "down_left"; } else if (previousX >= 1 && previousY == 0) { if (nextX == 0) { if (nextY == 1) name = "right_up"; else if (nextY == -1) name = "right_down"; } else if (nextX == 1) name = "right"; else if (nextX == -1) name = "err"; } else if (previousX <= -1 && previousY == 0) { if (nextX == 0) { if (nextY == 1) name = "left_up"; else if (nextY == -1) name = "left_down"; } else if (nextX == 1) name = "err"; else if (nextX == -1) name = "left"; } } return name; }; //根据是否全面屏,做独立适配方面 GameManager.prototype.fit = function () { var jg = this.setFit(); if (!jg) { this.Map.scale = 1.2; } else { this.Map.scale = 1; } }; //判断全面屏 GameManager.prototype.getSetScreenResolutionFlag = function () { var size = cc.winSize; var width = size.width; var height = size.height; if ((height / width) > (16.2 / 9)) return false; return true; }; //判断全面屏适配 GameManager.prototype.setFit = function () { var flag = this.getSetScreenResolutionFlag(); if (flag) { } else { } return flag; }; //返回首页 GameManager.prototype.backScene = function () { cc.director.loadScene("LoadScene"); }; //开始游戏 GameManager.prototype.startGame = function (data) { for (var i = 0; i < this.block_Array.length; i++) { this.block_Array[i].getChildByName("tipWin").active = false; this.block_Array[i].getChildByName("tipLose").active = false; } this.unschedule(this.updateCountDownTime); var now = cc.fx.GameTool.getTime(); var finishi = now - this.finishiTime; var totalTime = now - this.startTime; this.scoreTime = this.waterTime; if (this.waterTime <= 0.5) finishi = -1; cc.fx.GameConfig.CLICK_SET("submitTime", finishi); if (finishi == -1) cc.fx.GameConfig.CLICK_SET("duration", cc.fx.GameConfig.TIME_INFO.waterTime[cc.fx.GameConfig.GM_INFO.level]); else cc.fx.GameConfig.CLICK_SET("duration", totalTime); cc.fx.GameConfig.CLICK_SET("usedSteps", data.length); this.setMap(data); var arr = this.changeStep(data); cc.fx.GameConfig.CLICK_SET("stepList", arr); }; //用于埋点记录 GameManager.prototype.changeStep = function (data) { var arr = []; if (data.length > 0) { for (var i = 0; i < data.length; i++) { if (data[i] == "up") arr[i] = "U"; else if (data[i] == "down") arr[i] = "D"; else if (data[i] == "left") arr[i] = "L"; else if (data[i] == "right") arr[i] = "R"; else if (data[i] == "soil") arr[i] = "X"; else if (data[i] == "reinforce") arr[i] = "F"; } } return arr; }; //洪峰倒计时,计时器 GameManager.prototype.updateWaterTime = function () { var _this = this; if (this.waterTime > 0) { this.waterTime -= 1; this.Countdown.string = cc.fx.GameTool.getTimeMargin(this.waterTime); if (this.waterTime <= 0) { this.unschedule(this.updateWaterTime); if (!this.plan_over) { this.plan_over = true; setTimeout(function () { if (_this.water_Array.length == 0) { cc.fx.Notifications.emit(cc.fx.Message.showResult, "lose"); cc.fx.Notifications.emit(cc.fx.Message.setData, false); } else { _this.runWater(0); } }, 500); } } } }; //如果是倒计时 调用此方法 GameManager.prototype.updateCountDownTime = function () { if (this.countTime > 0) { this.countTime -= 1; cc.fx.GameConfig.TIME_INFO.totalTime = this.countTime; this.Time.string = cc.fx.GameTool.getTimeMargin(this.countTime); if (this.countTime < 5) { var over = this.node.getChildByName("Over"); cc.tween(over) .to(0.2, { opacity: 255 }) .delay(0.1) .to(0.2, { opacity: 0 }) .start(); } if (this.countTime <= 0) { this.countTime = 0; this.setData(null); this.unschedule(this.updateCountDownTime); this.gameOver(); } } }; //上传每次操作数据 GameManager.prototype.setData = function (success) { //设置埋点数据 cc.fx.GameConfig.CLICK_SET("mapId", cc.fx.GameConfig.LEVEL_INFO[cc.fx.GameConfig.GM_INFO.level][this.custom].id); cc.fx.GameConfig.CLICK_SET("difficulty", cc.fx.GameConfig.GM_INFO.level); cc.fx.GameConfig.CLICK_SET("optimizedSteps", cc.fx.GameConfig.LEVEL_INFO[cc.fx.GameConfig.GM_INFO.level][this.custom].min_steps); cc.fx.GameConfig.CLICK_SET("round", cc.fx.GameConfig.GM_INFO.round); cc.fx.GameConfig.CLICK_SET("timer", cc.fx.GameConfig.TIME_INFO.totalTime); cc.fx.GameConfig.CLICK_SET("cumulativeScore", cc.fx.GameConfig.GM_INFO.score); if (success != null) { cc.fx.GameConfig.CLICK_SET("success", success); cc.fx.GameConfig.GM_INFO.fen = this.getScore(); cc.fx.GameConfig.CLICK_SET("getScore", cc.fx.GameConfig.GM_INFO.fen); cc.fx.GameConfig.GM_INFO.score += cc.fx.GameConfig.GM_INFO.fen; cc.fx.GameConfig.CLICK_SET("cumulativeScore", cc.fx.GameConfig.GM_INFO.score); cc.fx.GameConfig.GM_INFO.successList.push(success); } cc.fx.GameTool.setGameData(); }; //计算得分 GameManager.prototype.getScore = function () { //最小步数 var min = cc.fx.GameConfig.LEVEL_INFO[cc.fx.GameConfig.GM_INFO.level][this.custom].min_steps; //实际使用步数 var now = this.path_Array.length - 1; if (now <= 0) now = 0; var x = (2.5 * min - now) / min; var score = Math.pow(Math.pow(min, x), 0.5); score = score * (this.scoreTime + 10) * 100; return Math.floor(score); }; //上传排行榜数据 GameManager.prototype.gameOver = function () { var rate = 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; } rate = success / successList.length; } rate = Math.floor(rate * 1000) / 10; var data = { score: cc.fx.GameConfig.GM_INFO.score, rate: rate }; cc.fx.GameTool.setRank(data); this.node.getChildByName("GameOver").active = true; this.node.getChildByName("GameOver").opacity = 0; cc.tween(this.node.getChildByName("GameOver")) .to(0.4, { opacity: 255 }) .delay(1) .to(0.4, { opacity: 50 }) .call(function () { cc.director.loadScene("OverScene"); }) .start(); }; //展示结果 GameManager.prototype.showResult = function (data) { this.node.getChildByName("Window").active = true; this.node.getChildByName("Window").getComponent("Window").init(data); }; //记录反应时长,以及做步骤提示 GameManager.prototype.clickSun = function (data) { if (cc.fx.GameConfig.GM_INFO.level > 3) return; //如果没有记录过 回合开始到操作反应时长,则第一次记录, 后面不记录 if (cc.fx.GameConfig.CLICK_DATA.startTime == 0) { var now = cc.fx.GameTool.getTime(); this.finishiTime = now - this.startTime; cc.fx.GameConfig.CLICK_SET("startTime", this.finishiTime); } //步骤提示 var nowPos = this.path_Array[0]; if (this.tip_Array.length != 0) { if (this.tip_Array[this.tip_Array.length - 1] == null) { this.tip_Array.push(null); return; } nowPos = this.tip_Array[this.tip_Array.length - 1][this.tip_Array[this.tip_Array.length - 1].length - 1]; var n = nowPos.x * this.map_Array[0].length + nowPos.y; var targetNode = this.block_Array[n]; if (targetNode.getChildByName("tipLose").active == true) { this.tip_Array.push(null); return; } } if (data == "up") { var n = cc.v2(nowPos.x, nowPos.y - 1); this.tipCan(n, data); } else if (data == "down") { var n = cc.v2(nowPos.x, nowPos.y + 1); this.tipCan(n, data); } else if (data == "left") { var n = cc.v2(nowPos.x - 1, nowPos.y); this.tipCan(n, data); } else if (data == "right") { var n = cc.v2(nowPos.x + 1, nowPos.y); this.tipCan(n, data); } else if (data == "reinforce") { var n = cc.v3(nowPos.x, nowPos.y, 2); this.tip_Array.push([n]); } else if (data == "soil") { var n = cc.v3(nowPos.x, nowPos.y, 3); this.tip_Array.push([n]); } }; //提示是否错误 GameManager.prototype.tipCan = function (pos, data) { //先判断是否出边界 if (pos.x < 0 || pos.x > this.map_Array.length - 1 || pos.y < 0 || pos.y > this.map_Array[0].length - 1) { this.tip_Array.push(null); return; } var n = pos.x * this.map_Array[0].length + pos.y; var target = this.block_Array[n].getComponent("Block"); target.node.getChildByName("tipWin").active = true; // target.node.getChildByName("tipWin").opacity = 255; // target.node.getChildByName("tipLose").opacity = 255; // debugger; //重复路回头路,或者山峰 if (target.repeatRoad(false) == true || target.block_Type == 3) { target.node.getChildByName("tipLose").active = true; target.node.getChildByName("tipWin").active = false; } //湿地 上一步如果没用息壤或者加固 else if (target.block_Type == 2) { if (this.tip_Array.length > 1) { if (this.tip_Array[this.tip_Array.length - 1][0].z == 0) { target.node.getChildByName("tipLose").active = true; target.node.getChildByName("tipWin").active = false; } } } if (this.tip_Array.length > 0) { if (this.tip_Array[this.tip_Array.length - 1][0].z == 3) { if (data == "up") { var arr = []; for (var i = pos.y; i >= 0; i--) { var block = this.block_Array[pos.x * this.map_Array[0].length + i].getComponent("Block"); if (block.block_Type == 3) { i = -10000; } else { block.node.getChildByName("tipWin").active = true; arr.push(cc.v3(pos.x, i, 0)); if (block.block_Type == 4) i = -10000; } } this.tip_Array.push(arr); } else if (data == "down") { var arr = []; for (var i = pos.y; i < this.map_Array[0].length; i++) { var block = this.block_Array[pos.x * this.map_Array[0].length + i].getComponent("Block"); if (block.block_Type == 3) { i = 10000; } else { block.node.getChildByName("tipWin").active = true; arr.push(cc.v3(pos.x, i, 0)); if (block.block_Type == 4) i = 10000; } } this.tip_Array.push(arr); } else if (data == "right") { var arr = []; for (var i = pos.x; i < this.map_Array.length; i++) { var block = this.block_Array[i * this.map_Array[0].length + pos.y].getComponent("Block"); if (block.block_Type == 3) { i = 10000; } else { block.node.getChildByName("tipWin").active = true; arr.push(cc.v3(i, pos.y, 0)); if (block.block_Type == 4) i = 10000; } } this.tip_Array.push(arr); } else if (data == "left") { var arr = []; for (var i = pos.x; i >= 0; i--) { var block = this.block_Array[i * this.map_Array[0].length + pos.y].getComponent("Block"); if (block.block_Type == 3) { i = -10000; } else { block.node.getChildByName("tipWin").active = true; arr.push(cc.v3(i, pos.y, 0)); if (block.block_Type == 4) i = -10000; } } this.tip_Array.push(arr); } } else { var posJg_1 = cc.v3(pos.x, pos.y, 0); if (data == "reinforce") pos.z = 2; if (data == "soil") pos.z = 3; this.tip_Array.push([posJg_1]); } console.log(this.tip_Array); return; } var posJg = cc.v3(pos.x, pos.y, 0); if (data == "reinforce") pos.z = 2; if (data == "soil") pos.z = 3; this.tip_Array.push([posJg]); console.log(this.tip_Array); }; //移除提示 GameManager.prototype.removeTip = function (data) { if (cc.fx.GameConfig.GM_INFO.level > 3) return; //分为撤回一步 和全部清空 if (this.tip_Array.length > 0) { if (data == "back") { var target = this.tip_Array[this.tip_Array.length - 1]; if (target == null) { this.tip_Array.pop(); } else { this.tip_Array.pop(); for (var i = 0; i < target.length; i++) { if (target[i]) { if (target[0].z == 0) { var n = target[i].x * this.map_Array[0].length + target[i].y; var node = this.block_Array[n]; node.getChildByName("tipWin").active = false; node.getChildByName("tipLose").active = false; } } } } } else if (data == "remove") { for (var j = 0; j < this.tip_Array.length; j++) { var target = this.tip_Array[j]; if (target != null) { for (var i = 0; i < target.length; i++) { if (target[i]) { var n = target[i].x * this.map_Array[0].length + target[i].y; var node = this.block_Array[n]; node.getChildByName("tipWin").active = false; node.getChildByName("tipLose").active = false; } } } } this.tip_Array = []; } } }; //获取引导名字 GameManager.prototype.getGuideName = function () { var name = "one"; switch (this.step) { case 1: name = "one"; this.btnClick = false; this.bgClick = true; break; case 2: name = "two"; this.btnClick = false; this.bgClick = true; break; case 3: name = "three"; this.btnClick = false; this.bgClick = true; break; case 4: name = "four"; this.btnClick = false; this.bgClick = true; break; case 5: name = "five"; this.btnClick = true; this.bgClick = false; break; case 6: name = "six"; this.btnClick = true; this.bgClick = false; break; case 7: name = "seven"; this.btnClick = false; this.bgClick = true; break; case 8: name = "eight"; this.btnClick = false; this.bgClick = true; break; case 9: name = "nine"; this.btnClick = false; this.bgClick = true; break; case 10: name = "ten"; this.btnClick = true; this.bgClick = false; break; case 11: name = "eleven"; this.btnClick = false; this.bgClick = true; break; case 12: name = "twelve"; this.btnClick = true; this.bgClick = false; break; case 13: name = "thirteen"; this.btnClick = true; this.bgClick = false; break; case 14: name = "fourteen"; this.btnClick = true; this.bgClick = false; break; case 15: name = "fiveteen"; this.btnClick = true; this.bgClick = false; break; case 16: name = "sixteen"; this.btnClick = true; this.bgClick = false; break; case 17: name = "last"; this.btnClick = true; this.bgClick = false; break; } return name; }; //引导下一步 GameManager.prototype.guideNext = function () { //每次先把所有的 console.log(this.step, this.Guide.children.length); if (this.step + 1 == this.Guide.children.length) { cc.fx.GameConfig.GM_INFO.guide = false; // cc.director.loadScene("GameScene"); } if (this.step > 0) this.Guide.children[this.step - 1].active = false; this.step += 1; var name = this.getGuideName(); var target = this.Guide.getChildByName(name); target.active = true; var size = cc.winSize; if (size.height > 1334) { var height = (size.height - 1334) / 2; target.getChildByName("sp").height += height; } }; GameManager.prototype.addEnd = function (data) { }; GameManager.prototype.onEnable = function () { cc.fx.Notifications.on(cc.fx.Message.control, this.clickSun, this); cc.fx.Notifications.on(cc.fx.Message.next, this.runRoad, this); cc.fx.Notifications.on(cc.fx.Message.nextWater, this.runWater, this); cc.fx.Notifications.on(cc.fx.Message.startGame, this.startGame, this); cc.fx.Notifications.on(cc.fx.Message.changePath, this.changePath, this); cc.fx.Notifications.on(cc.fx.Message.changeMap, this.changeMap, this); cc.fx.Notifications.on(cc.fx.Message.addEnd, this.addEnd, this); cc.fx.Notifications.on(cc.fx.Message.setData, this.setData, this); cc.fx.Notifications.on(cc.fx.Message.guideNext, this.guideNext, this); cc.fx.Notifications.on(cc.fx.Message.showResult, this.showResult, this); cc.fx.Notifications.on(cc.fx.Message.removeTip, this.removeTip, this); }; GameManager.prototype.onDisable = function () { cc.fx.Notifications.off(cc.fx.Message.control, this.clickSun); cc.fx.Notifications.off(cc.fx.Message.next, this.runRoad); cc.fx.Notifications.off(cc.fx.Message.nextWater, this.runWater); cc.fx.Notifications.off(cc.fx.Message.startGame, this.startGame); cc.fx.Notifications.off(cc.fx.Message.changePath, this.changePath); cc.fx.Notifications.off(cc.fx.Message.changeMap, this.changeMap); cc.fx.Notifications.off(cc.fx.Message.addEnd, this.addEnd); cc.fx.Notifications.off(cc.fx.Message.setData, this.setData); cc.fx.Notifications.off(cc.fx.Message.guideNext, this.guideNext); cc.fx.Notifications.off(cc.fx.Message.showResult, this.showResult); cc.fx.Notifications.off(cc.fx.Message.removeTip, this.removeTip); }; GameManager.prototype.update = function (dt) { }; __decorate([ property(cc.Node) ], GameManager.prototype, "Map", void 0); __decorate([ property(cc.Prefab) ], GameManager.prototype, "Block", void 0); __decorate([ property(cc.Label) ], GameManager.prototype, "Time", void 0); __decorate([ property(cc.Label) ], GameManager.prototype, "Countdown", void 0); __decorate([ property(cc.Node) ], GameManager.prototype, "Guide", void 0); GameManager = __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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpQ0FBb0M7QUFFcEMsU0FBUztBQUNILElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBRTFDO0lBQXlDLCtCQUFZO0lBQXJEO1FBQUEscUVBd3VDQztRQXJ1Q0csU0FBRyxHQUFZLElBQUksQ0FBQztRQUdwQixXQUFLLEdBQWMsSUFBSSxDQUFDO1FBR3hCLFVBQUksR0FBYSxJQUFJLENBQUM7UUFHdEIsZUFBUyxHQUFhLElBQUksQ0FBQztRQUczQixXQUFLLEdBQVksSUFBSSxDQUFDOztJQXl0QzFCLENBQUM7SUFuc0NHLDRCQUFNLEdBQU47SUFDQSxDQUFDO0lBQ0QsMkJBQUssR0FBTDtRQUNJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNYLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTztJQUNQLDBCQUFJLEdBQUo7UUFDSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztRQUN0RCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUss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QUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFMUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBQyxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBQyxFQUFFLENBQUM7UUFFakQsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFDLENBQUMsRUFBRSxFQUFDO1lBQ3BDLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxJQUFJLENBQUMsU0FBUyxDQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQyxDQUFDLEVBQUUsRUFBQztnQkFDekMsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3ZDLEtBQUssQ0FBQyxNQUFNLEdBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDdkIsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVHLElBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBRSxDQUFDLENBQUMsQ0FB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QUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxQixPQUFPO2FBQ1Y7U0FDSjtRQUVELElBQUcsSUFBSSxJQUFJLElBQUksRUFBQztZQUNaLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxNQUFNLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3ZCO2FBQ0ksSUFBRyxJQUFJLElBQUksTUFBTSxFQUFDO1lBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxNQUFNLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3ZCO2FBQ0ksSUFBRyxJQUFJLElBQUksTUFBTSxFQUFDO1lBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3ZCO2FBQ0ksSUFBRyxJQUFJLElBQUksT0FBTyxFQUFDO1lBQ3BCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3ZCO2FBQ0ksSUFBRyxJQUFJLElBQUksV0FBVyxFQUFDO1lBQ3hCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO1lB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ZixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxHQUFHLE1BQU0sQ0FBQztnQkFDZCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxHQUFHLE1BQU0sQ0FBQztnQkFDZCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxHQUFHLEtBQUssQ0FBQztnQkFDYixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxHQUFHLE9BQU8sQ0FBQztnQkFDZixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxHQUFHLE9BQU8sQ0FBQztnQkFDZixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxHQUFHLE1BQU0sQ0FBQztnQkFDZCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztnQkFDdEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7Z0JBQ3BCLE1BQU07WUFDVixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxHQUFHLEtBQUssQ0FBQztnQkFDYixJQUFJLENBQUMsUUFBUSxH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SUFBSSxDQUFDLENBQUM7UUFDaEUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xFLEVBQUUsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RSxFQUFFLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFDRCwrQkFBUyxHQUFUO1FBQ0ksRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUQsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUQsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0QsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0QsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUNELDRCQUFNLEdBQU4sVUFBUSxFQUFFO0lBR1YsQ0FBQztJQXB1Q0Q7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzs0Q0FDRTtJQUdwQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDOzhDQUNJO0lBR3hCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7NkNBQ0c7SUFHdEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztrREFDUTtJQUczQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzhDQUNJO0lBZkwsV0FBVztRQUQvQixPQUFPO09BQ2EsV0FBVyxDQXd1Qy9CO0lBQUQsa0JBQUM7Q0F4dUNELEFBd3VDQyxDQXh1Q3dDLEVBQUUsQ0FBQyxTQUFTLEdBd3VDcEQ7a0JBeHVDb0IsV0FBVyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJsb2NrVHlwZSB9IGZyb20gXCIuL0Jsb2NrXCI7XHJcblxyXG4vLyDkuLvmuLjmiI/mjqfliLbnsbtcclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhbWVNYW5hZ2VyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIE1hcDogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLlByZWZhYilcclxuICAgIEJsb2NrOiBjYy5QcmVmYWIgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIFRpbWU6IGNjLkxhYmVsID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBDb3VudGRvd246IGNjLkxhYmVsID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIEd1aWRlOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBzdGVwOm51bWJlcjsgICAgICAgICAgICAvL+W8leWvvOatpemqpFxyXG4gICAgYmdDbGljazpib29sZWFuICAgICAgICAgLy/lvJXlr7zml7ZNYXNr6YGu572p5Y+v5LiN5Y+v5Lul54K55Ye7XHJcbiAgICBidG5DbGljazpib29sZWFuICAgICAgICAvL+W8leWvvOaXtu+8jOaMiemSruWPr+S4jeWPr+eCueWHu1xyXG4gICAgY3VzdG9tOm51bWJlcjsgICAgICAgICAgLy/lvZPliY3pmr7luqbpmo/mnLrlnLDlm75JRFxyXG4gICAgY291bnRUaW1lOiBudW1iZXI7ICAgICAgLy/mgLvlgJLorqHml7ZcclxuICAgIHdhdGVyVGltZTogbnVtYmVyICAgICAgIC8v5rSq5bOw5YCS6K6h5pe2XHJcbiAgICBzdGFydFRpbWU6IG51bWJlcjsgICAgICAvL+a4uOaIj+W8gOWni+iuoeaXtlxyXG4gICAgZmluaXNoaVRpbWU6bnVtYmVyOyAgICAgLy/mj5DkuqTml7bpl7RcclxuICAgIHNjb3JlVGltZTpudW1iZXIgICAgICAgIC8v55So5LqO6K6h566X5o+Q5Lqk5Yiw5rSq5bOw5p2l55qE5pe26Ze05beuXHJcbiAgICBibG9ja19BcnJheTogYW55OyAgICAgICAvL+aJgOacieWdl+aVsOe7hFxyXG4gICAgcGF0aF9BcnJheTogYW55OyAgICAgICAgLy/kv67nrZHot6/lvoRcclxuICAgIHdhdGVyX0FycmF5OiBhbnk7ICAgICAgIC8v5rC05rWB6Lev5b6EXHJcbiAgICBtYXBfQXJyYXk6IGFueTsgICAgICAgICAvL+WcsOWbvuaVsOe7hFxyXG4gICAgd2F0ZXJfUGF0aEFyYXk6YW55OyAgICAgLy/mtKrls7Dot6/lvoRcclxuICAgIHRpcF9BcnJheTogYW55OyAgICAgICAvL+W8leWvvOaVsOe7hFxyXG4gICAgbWFwX0hpZ2h0Om51bWJlcjsgICAgICAgLy/lnLDlm77pq5jluqZcclxuICAgIG1hcF9XaWR0aDpudW1iZXI7ICAgICAgIC8v5Zyw5Zu+5a695bqmXHJcbiAgICBwbGFuX292ZXI6Ym9vbGVhbjsgICAgICAvL+aYr+WQpuS/ruW7uuWujFxyXG4gICAgd2F0ZXJUd2VlbjpjYy5Ud2VlbjsgICAgLy/msrPmsLTlgJLorqHml7bliqjnlLtcclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG4gICAgfVxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgICAgIHRoaXMuZml0KCk7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcbiAgICAvL+WIneWni+WMluaVsOaNrlxyXG4gICAgaW5pdCgpe1xyXG4gICAgICAgIHRoaXMuaW5pdE1hcCgpOyBcclxuICAgICAgICB0aGlzLmZpbmlzaGlUaW1lID0gMDtcclxuICAgICAgICB0aGlzLnNjb3JlVGltZSA9IDA7XHJcbiAgICAgICAgdGhpcy5zdGFydFRpbWUgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lKCk7XHJcbiAgICAgICAgdGhpcy5jb3VudFRpbWUgPSBjYy5meC5HYW1lQ29uZmlnLlRJTUVfSU5GTy50b3RhbFRpbWU7XHJcbiAgICAgICAgdGhpcy53YXRlclRpbWUgPSBjYy5meC5HYW1lQ29uZmlnLlRJTUVfSU5GTy53YXRlclRpbWVbY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsXTtcclxuICAgICAgICB0aGlzLlRpbWUuc3RyaW5nID0gIGNjLmZ4LkdhbWVUb29sLmdldFRpbWVNYXJnaW4odGhpcy5jb3VudFRpbWUpOyAgICBcclxuXHJcbiAgICAgICAgaWYoIWNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ndWlkZSl7XHJcbiAgICAgICAgICAgIHRoaXMuR3VpZGUuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc3RlcCA9IDA7XHJcbiAgICAgICAgICAgIHZhciBoZWFkID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiVG9wXCIpLmdldENoaWxkQnlOYW1lKFwiaGVhZFwiKTtcclxuICAgICAgICAgICAgdmFyIHByb2dyZXNzID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiVG9wXCIpLmdldENoaWxkQnlOYW1lKFwicHJvZ3Jlc3NcIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSk7XHJcbiAgICAgICAgICAgIGhlYWQucnVuQWN0aW9uKGNjLm1vdmVUbyh0aGlzLndhdGVyVGltZSxjYy52MigzMTAsaGVhZC55KSkpO1xyXG4gICAgICAgICAgICB0aGlzLndhdGVyVHdlZW4gPSBjYy50d2Vlbihwcm9ncmVzcylcclxuICAgICAgICAgICAgLnRvKHRoaXMud2F0ZXJUaW1lLHtmaWxsUmFuZ2U6MX0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICB0aGlzLnNjaGVkdWxlKHRoaXMudXBkYXRlV2F0ZXJUaW1lLDEpO1xyXG4gICAgICAgICAgICB0aGlzLnNjaGVkdWxlKHRoaXMudXBkYXRlQ291bnREb3duVGltZSwxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5HdWlkZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmd1aWRlTmV4dCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgICAvL+WIneWni+WMluWcsOWbvlxyXG4gICAgaW5pdE1hcCgpe1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5yb3VuZCArPSAxO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mZW4gPSAwO1xyXG4gICAgICAgIHRoaXMuYmxvY2tfQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLnBhdGhfQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLndhdGVyX0FycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5tYXBfQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLnRpcF9BcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMucGxhbl9vdmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5tYXBfSGlnaHQgPSAwO1xyXG4gICAgICAgIHRoaXMubWFwX1dpZHRoID0gMDtcclxuICAgICAgICB0aGlzLnN0ZXAgPSAwO1xyXG4gICAgICAgIHRoaXMuYmdDbGljayA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYnRuQ2xpY2sgPSBmYWxzZTtcclxuICAgICAgICBpZighY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmd1aWRlICYmY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID09IDAgKXtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jdXN0b20gPSAxMDsgLy85XHJcbiAgICAgICAgdGhpcy5jdXN0b20gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT1tjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWxdLmxlbmd0aCk7XHJcbiAgICAgICAgLy8gdGhpcy5jdXN0b20gPSAwO1xyXG5cclxuICAgICAgICBsZXQgYXJyID0gY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPW2NjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbF1bdGhpcy5jdXN0b21dLm1hcDtcclxuICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPT0gMCl7XHJcbiAgICAgICAgICAgIHRoaXMuTWFwLnNjYWxlID0gMS4yO1xyXG4gICAgICAgIH0gXHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiVG9wXCIpLmdldENoaWxkQnlOYW1lKFwiaWRcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9bY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsXVt0aGlzLmN1c3RvbV0uaWQ7XHJcbiAgICAgICAgLy/lsIblnLDlm754LHnovbTliIfmjaJcclxuICAgICAgICB0aGlzLm1hcF9BcnJheSA9IGFyclswXS5tYXAoKGl0ZW0sIGkpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGFyci5tYXAoKHZhbCkgPT4gdmFsW2ldKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy5tYXBfV2lkdGggPSB0aGlzLm1hcF9BcnJheS5sZW5ndGg7XHJcbiAgICAgICAgdGhpcy5tYXBfSGlnaHQgPSB0aGlzLm1hcF9BcnJheVswXS5sZW5ndGg7XHJcblxyXG4gICAgICAgIHRoaXMuTWFwLnggPSg2IC0gdGhpcy5tYXBfQXJyYXkubGVuZ3RoKSo0ODtcclxuICAgICAgICB0aGlzLk1hcC55ID0gKHRoaXMubWFwX0FycmF5WzBdLmxlbmd0aCAtIDYuNSkqNDg7XHJcblxyXG4gICAgICAgIGZvcihsZXQgaT0wO2k8dGhpcy5tYXBfQXJyYXkubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaj0wOyBqPHRoaXMubWFwX0FycmF5IFtpXS5sZW5ndGg7aisrKXtcclxuICAgICAgICAgICAgICAgIGxldCBibG9jayA9IGNjLmluc3RhbnRpYXRlKHRoaXMuQmxvY2spO1xyXG4gICAgICAgICAgICAgICAgYmxvY2sucGFyZW50PSB0aGlzLk1hcDtcclxuICAgICAgICAgICAgICAgIGJsb2NrLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmluaXREYXRhKHRoaXMubWFwX0FycmF5IFtpXVtqXSxjYy52MihpLGopLGNjLnYyKHRoaXMubWFwX1dpZHRoLHRoaXMubWFwX0hpZ2h0KSk7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm1hcF9BcnJheSBbaV1bal0gPT0gY2MuRW51bShCbG9ja1R5cGUpLlN0YXJ0KXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhdGhfQXJyYXkucHVzaChjYy52MyhpLGosY2MuRW51bShCbG9ja1R5cGUpLk5vbWFsKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy53YXRlcl9BcnJheS5wdXNoKGNjLnYzKGksaixjYy5FbnVtKEJsb2NrVHlwZSkuTm9tYWwpKTtcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICBibG9jay5zZXRQb3NpdGlvbihjYy52MigtYmxvY2sud2lkdGgqMi41ICsgaSpibG9jay53aWR0aCxibG9jay5oZWlnaHQqNCAtIGoqYmxvY2suaGVpZ2h0KSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0FycmF5LnB1c2goYmxvY2spO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICAvL+W8gOWni+WQju+8jOaMieeOqeWutuaTjeS9nO+8jOWwhui3r+W+hOS4reWcsOWbvuWdl+aUvuWFpeaVsOe7hOS4rVxyXG4gICAgc2V0TWFwKGRhdGEpe1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPGRhdGEubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICBsZXQgc3RhcnQgPSB0aGlzLnBhdGhfQXJyYXlbdGhpcy5wYXRoX0FycmF5Lmxlbmd0aC0xXTtcclxuICAgICAgICAgICAgc3dpdGNoKGRhdGFbaV0pe1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcInVwXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXRoX0FycmF5LnB1c2goY2MudjMoc3RhcnQueCxzdGFydC55LTEsY2MuRW51bShCbG9ja1R5cGUpLk5vbWFsKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiZG93blwiOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGF0aF9BcnJheS5wdXNoKGNjLnYzKHN0YXJ0Lngsc3RhcnQueSsxLGNjLkVudW0oQmxvY2tUeXBlKS5Ob21hbCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcImxlZnRcIjpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhdGhfQXJyYXkucHVzaChjYy52MyhzdGFydC54LTEsc3RhcnQueSxjYy5FbnVtKEJsb2NrVHlwZSkuTm9tYWwpKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJyaWdodFwiOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGF0aF9BcnJheS5wdXNoKGNjLnYzKHN0YXJ0LngrMSxzdGFydC55LGNjLkVudW0oQmxvY2tUeXBlKS5Ob21hbCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcInJlaW5mb3JjZVwiOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGF0aF9BcnJheS5wdXNoKGNjLnYzKHN0YXJ0Lngsc3RhcnQueSxjYy5FbnVtKEJsb2NrVHlwZSkuUmVpbmZvcmNlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwic29pbFwiOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGF0aF9BcnJheS5wdXNoKGNjLnYzKHN0YXJ0Lngsc3RhcnQueSxjYy5FbnVtKEJsb2NrVHlwZSkuWGlfU29pbCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucnVuUm9hZCgwKTtcclxuICAgIH1cclxuICAgIC8v5byA5aeL5omn6KGM5rSq5bOw5p2l5LqG55qE5Yqo55S7XHJcbiAgICBydW5Sb2FkKG9yZGVyKXtcclxuICAgICAgICBvcmRlciA9IHBhcnNlSW50KG9yZGVyKTtcclxuXHJcbiAgICAgICAgaWYob3JkZXIgPiAwKXtcclxuICAgICAgICAgICAgaWYodGhpcy5wYXRoX0FycmF5W29yZGVyLTFdLnogPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiMeato+W4uOaUvuWFpVwiLHRoaXMucGF0aF9BcnJheVtvcmRlci0xXS54LHRoaXMucGF0aF9BcnJheVtvcmRlci0xXS55LHRoaXMucGF0aF9BcnJheVtvcmRlci0xXS56KVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VXYXRlcihjYy52Myh0aGlzLnBhdGhfQXJyYXlbb3JkZXItMV0ueCx0aGlzLnBhdGhfQXJyYXlbb3JkZXItMV0ueSwwKSk7XHJcbiAgICAgICAgICAgICAgICBpZihvcmRlciA9PSB0aGlzLnBhdGhfQXJyYXkubGVuZ3RoLTEpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlV2F0ZXIoY2MudjModGhpcy5wYXRoX0FycmF5W29yZGVyXS54LHRoaXMucGF0aF9BcnJheVtvcmRlcl0ueSwwKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmnIDlkI7mlL7lhaVcIix0aGlzLnBhdGhfQXJyYXlbb3JkZXJdLngsdGhpcy5wYXRoX0FycmF5W29yZGVyXS55KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiMuaPkuWFpVwiLHRoaXMucGF0aF9BcnJheVtvcmRlcl0ueCx0aGlzLnBhdGhfQXJyYXlbb3JkZXJdLnksdGhpcy5wYXRoX0FycmF5W29yZGVyXS56KVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VXYXRlcihjYy52Myh0aGlzLnBhdGhfQXJyYXlbb3JkZXJdLngsdGhpcy5wYXRoX0FycmF5W29yZGVyXS55LDApKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gXHJcblxyXG4gICAgICAgIGlmKG9yZGVyIDw9IHRoaXMucGF0aF9BcnJheS5sZW5ndGgtMSl7XHJcbiAgICAgICAgICAgIGxldCBpID0gdGhpcy5wYXRoX0FycmF5W29yZGVyXS54KnRoaXMubWFwX0FycmF5WzBdLmxlbmd0aCt0aGlzLnBhdGhfQXJyYXlbb3JkZXJdLnk7XHJcbiAgICAgICAgICAgIGxldCBkaXJlY3Rpb24gPSBcIlwiO1xyXG4gICAgICAgICAgICBsZXQgY2lyY3VsYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy/mnIDlkI7kuIDmraXnu5PmnZ9cclxuICAgICAgICAgICAgaWYob3JkZXIgPT0gdGhpcy5wYXRoX0FycmF5Lmxlbmd0aC0xKXtcclxuICAgICAgICAgICAgICAgIGNpcmN1bGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gXCJFbmRcIjtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKCF0aGlzLnBsYW5fb3Zlcil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5YeG5aSH5Ye65rC0XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYW5fb3ZlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudW5zY2hlZHVsZSh0aGlzLnVwZGF0ZVdhdGVyVGltZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoZWFkID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiVG9wXCIpLmdldENoaWxkQnlOYW1lKFwiaGVhZFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByb2dyZXNzID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiVG9wXCIpLmdldENoaWxkQnlOYW1lKFwicHJvZ3Jlc3NcIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWQuc3RvcEFsbEFjdGlvbnMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZC5zZXRQb3NpdGlvbigzMTAsaGVhZC55KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy53YXRlclR3ZWVuKSB0aGlzLndhdGVyVHdlZW4uc3RvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmVzcy5maWxsUmFuZ2UgPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJ1bldhdGVyKDApOyBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLnBhdGhfQXJyYXlbb3JkZXJdLnogPT0gNiAmJiBvcmRlciArIDEgPCB0aGlzLnBhdGhfQXJyYXkubGVuZ3RoICYmIG9yZGVyIT0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gXCJSZWluZm9yY2VcIjtcclxuICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy5wYXRoX0FycmF5W29yZGVyKzFdLngqdGhpcy5tYXBfQXJyYXlbMF0ubGVuZ3RoK3RoaXMucGF0aF9BcnJheVtvcmRlcisxXS55O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihvcmRlcisxIDwgdGhpcy5wYXRoX0FycmF5Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5wYXRoX0FycmF5W29yZGVyKzFdLnogPT0gNSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IFwiWGlfU29pbFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKHRoaXMucGF0aF9BcnJheVtvcmRlcisxXS56ID09IDYgJiYgb3JkZXIgPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IFwiUmVpbmZvcmNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IHRoaXMuZ2V0RGlyZWN0aW9uKG9yZGVyLHRoaXMucGF0aF9BcnJheSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSB0aGlzLmdldERpcmVjdGlvbihvcmRlcix0aGlzLnBhdGhfQXJyYXkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKG9yZGVyLHRoaXMucGF0aF9BcnJheVtvcmRlcl0ueCx0aGlzLnBhdGhfQXJyYXlbb3JkZXJdLnksaSk7XHJcbiBcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmraXpqqQ6XCIsb3JkZXIsXCLmlrnlkJFcIixkaXJlY3Rpb24pO1xyXG4gICAgICAgICAgICBsZXQgamcgPSB0aGlzLmdldEJvdW5kYXJ5KG9yZGVyLHRoaXMucGF0aF9BcnJheVtvcmRlcl0ueCx0aGlzLnBhdGhfQXJyYXlbb3JkZXJdLnksZGlyZWN0aW9uLHRoaXMucGF0aF9BcnJheSk7XHJcblxyXG4gICAgICAgICAgICBpZihkaXJlY3Rpb24gPT0gXCJcIiB8fCBqZyA9PSBmYWxzZSkgcmV0dXJuO1xyXG4gICAgICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5ibG9ja19BcnJheVtpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKTtcclxuICAgIFxyXG4gICAgICAgICAgICB0YXJnZXQuc2V0UGF0aChkaXJlY3Rpb24pO1xyXG5cclxuICAgICAgICAgICAgaWYob3JkZXIgPiAwICYmIG9yZGVyIDwgdGhpcy5wYXRoX0FycmF5Lmxlbmd0aC0xKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMucGF0aF9BcnJheVtvcmRlcisxXS56ID09IDUpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0X1NvaWwob3JkZXIrMSx0aGlzLnBhdGhfQXJyYXksXCJyb2FkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNpcmN1bGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYob3JkZXIgPT0gMSAmJiB0aGlzLnBhdGhfQXJyYXlbb3JkZXJdLnogPT0gNSl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRfU29pbChvcmRlcix0aGlzLnBhdGhfQXJyYXksXCJyb2FkXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNpcmN1bGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgcG9zID0gY2MudjIoKTtcclxuICAgICAgICAgICAgLy8gaWYob3JkZXIgPiAwKXtcclxuICAgICAgICAgICAgaWYoZGlyZWN0aW9uID09IFwiRW5kXCIpe1xyXG4gICAgICAgICAgICAgICAgaWYob3JkZXIgPiAwKXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnBhdGhfQXJyYXlbb3JkZXItMV0ueiA9PSAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gY2MudjIodGhpcy5wYXRoX0FycmF5W29yZGVyLTFdLngsIHRoaXMucGF0aF9BcnJheVtvcmRlci0xXS55KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICBvcmRlcjpvcmRlcixcclxuICAgICAgICAgICAgICAgIHRpbWU6Y2MuZnguR2FtZUNvbmZpZy5USU1FX0lORk8ud2F0ZXJTcGVlZFtjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWxdLFxyXG4gICAgICAgICAgICAgICAgdHlwZTp0aGlzLnBhdGhfQXJyYXlbb3JkZXJdLnosXHJcbiAgICAgICAgICAgICAgICBjaXJjdWxhdGU6Y2lyY3VsYXRlLFxyXG4gICAgICAgICAgICAgICAgbGFzdDpwb3NcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGFyZ2V0LnJ1blJvYWQoZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/liKTmlq3ovrnnlYzjgILmiJbogIXmkp7lsbHvvIzmiJbogIXmub/lnLDmsqHmnInliqDlm7pcclxuICAgIGdldEJvdW5kYXJ5KG9yZGVyLHgseSxkaXJlY3Rpb24scm9hZCl7XHJcbiAgICAgICAgbGV0IGpnID0gdHJ1ZTtcclxuICAgICAgICBpZih4IDwgMCB8fCB4ID49IHRoaXMubWFwX1dpZHRoIHx8IHkgPCAwIHx8IHkgPj0gdGhpcy5tYXBfSGlnaHQpe1xyXG4gICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIui2hei/h+i+ueeVjO+8jOa4uOaIj+e7k+adn1wiKTtcclxuICAgICAgICAgICAgYWxlcnQoXCLotoXov4fovrnnlYzvvIzmsrvmsLTlpLHotKVcIik7XHJcbiAgICAgICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMuZW1pdChjYy5meC5NZXNzYWdlLnNob3dSZXN1bHQsXCJsb3NlXCIpO1xyXG4gICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5zZXREYXRhLGZhbHNlKTtcclxuICAgICAgICAgICAgLy8gY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IGkgPSByb2FkW29yZGVyXS54KnRoaXMubWFwX0FycmF5WzBdLmxlbmd0aCtyb2FkW29yZGVyXS55O1xyXG4gICAgICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5ibG9ja19BcnJheVtpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKTtcclxuICAgICAgICAgICAgaWYodGFyZ2V0LmJsb2NrX1R5cGUgPT0gMyl7XHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLkv67nrZHlsbHls7DvvIzmuLjmiI/nu5PmnZ9cIik7XHJcbiAgICAgICAgICAgICAgICBhbGVydChcIuS/ruetkeWxseWzsO+8jOayu+awtOWksei0pVwiKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMuZW1pdChjYy5meC5NZXNzYWdlLnNob3dSZXN1bHQsXCJsb3NlXCIpO1xyXG4gICAgICAgICAgICAgICAgY2MuZnguTm90aWZpY2F0aW9ucy5lbWl0KGNjLmZ4Lk1lc3NhZ2Uuc2V0RGF0YSxmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAvLyBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZih0YXJnZXQuYmxvY2tfVHlwZSA9PSAyICYmIGRpcmVjdGlvbiAhPSBcIlJlaW5mb3JjZVwiKXtcclxuICAgICAgICAgICAgICAgIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS/ruetkeacquWKoOWbuua5v+WcsCzmuLjmiI/nu5PmnZ9cIik7XHJcbiAgICAgICAgICAgICAgICBhbGVydChcIuS/ruetkeacquWKoOWbuua5v+WcsCzmuLjmiI/nu5PmnZ9cIik7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5zaG93UmVzdWx0LFwibG9zZVwiKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMuZW1pdChjYy5meC5NZXNzYWdlLnNldERhdGEsZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgLy8gY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH1cclxuXHJcbiAgICAvL+W8gOWni+aJp+ihjOa0quWzsOadpeS6hueahOWKqOeUu1xyXG4gICAgcnVuV2F0ZXIob3JkZXIpe1xyXG4gICAgICAgIG9yZGVyID0gcGFyc2VJbnQob3JkZXIpO1xyXG4gICAgICAgIGlmKG9yZGVyIDw9IHRoaXMud2F0ZXJfQXJyYXkubGVuZ3RoLTEpe1xyXG4gICAgICAgICAgICBsZXQgaSA9IHRoaXMud2F0ZXJfQXJyYXlbb3JkZXJdLngqdGhpcy5tYXBfQXJyYXlbMF0ubGVuZ3RoK3RoaXMud2F0ZXJfQXJyYXlbb3JkZXJdLnk7XHJcbiAgICAgICAgICAgIGxldCBkaXJlY3Rpb24gPSBcIlwiO1xyXG4gICAgICAgICAgICBsZXQgY2lyY3VsYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgLy/mnIDlkI7kuIDmraXnu5PmnZ9cclxuICAgICAgICAgICAgaWYob3JkZXIgPT0gdGhpcy53YXRlcl9BcnJheS5sZW5ndGgtMSl7XHJcbiAgICAgICAgICAgICAgICBjaXJjdWxhdGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IFwiRW5kXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMud2F0ZXJfQXJyYXlbb3JkZXJdLnogPT0gNiAmJiBvcmRlciArIDEgPCB0aGlzLndhdGVyX0FycmF5Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IFwiUmVpbmZvcmNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgaSA9IHRoaXMud2F0ZXJfQXJyYXlbb3JkZXIrMV0ueCp0aGlzLm1hcF9BcnJheVswXS5sZW5ndGgrdGhpcy53YXRlcl9BcnJheVtvcmRlcisxXS55O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihvcmRlcisxIDwgdGhpcy53YXRlcl9BcnJheS5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMud2F0ZXJfQXJyYXlbb3JkZXIrMV0ueiA9PSA1KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gXCJYaV9Tb2lsXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYodGhpcy53YXRlcl9BcnJheVtvcmRlcisxXS56ID09IDYgJiYgb3JkZXIgPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IFwiUmVpbmZvcmNlXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IHRoaXMuZ2V0RGlyZWN0aW9uKG9yZGVyLHRoaXMud2F0ZXJfQXJyYXkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gdGhpcy5nZXREaXJlY3Rpb24ob3JkZXIsdGhpcy53YXRlcl9BcnJheSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2cob3JkZXIsdGhpcy5wYXRoX0FycmF5W29yZGVyXS54LHRoaXMucGF0aF9BcnJheVtvcmRlcl0ueSxpKTtcclxuICAgICAgICAgICAgbGV0IGpnID0gdGhpcy5nZXRCb3VuZGFyeShvcmRlcix0aGlzLndhdGVyX0FycmF5W29yZGVyXS54LHRoaXMud2F0ZXJfQXJyYXlbb3JkZXJdLnksZGlyZWN0aW9uLHRoaXMud2F0ZXJfQXJyYXkpO1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuatpemqpDpcIixvcmRlcixcIuaWueWQkVwiLGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgIGlmKGRpcmVjdGlvbiA9PSBcIlwiIHx8IGpnID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5ibG9ja19BcnJheVtpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKTtcclxuICAgICAgXHJcbiAgICAgICAgICAgIHRhcmdldC5zZXRQYXRoKGRpcmVjdGlvbik7XHJcblxyXG4gICAgICAgICAgICBpZihvcmRlciA+IDAgJiYgb3JkZXIgPCB0aGlzLndhdGVyX0FycmF5Lmxlbmd0aC0xKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMud2F0ZXJfQXJyYXlbb3JkZXIrMV0ueiA9PSA1KXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldF9Tb2lsKG9yZGVyKzEsdGhpcy53YXRlcl9BcnJheSxcIndhdGVyXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNpcmN1bGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYob3JkZXIgPT0gMSAmJiB0aGlzLndhdGVyX0FycmF5W29yZGVyXS56ID09IDUpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0X1NvaWwob3JkZXIsdGhpcy53YXRlcl9BcnJheSxcIndhdGVyXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNpcmN1bGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCBwb3MgPSBjYy52MigpO1xyXG4gICAgICAgICAgICBpZihkaXJlY3Rpb24gPT0gXCJFbmRcIil7XHJcbiAgICAgICAgICAgICAgICBpZihvcmRlciA+IDApe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMud2F0ZXJfQXJyYXlbb3JkZXItMV0ueiA9PSAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gY2MudjIodGhpcy53YXRlcl9BcnJheVtvcmRlci0xXS54LCB0aGlzLndhdGVyX0FycmF5W29yZGVyLTFdLnkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICBvcmRlcjpvcmRlcixcclxuICAgICAgICAgICAgICAgIHRpbWU6Y2MuZnguR2FtZUNvbmZpZy5USU1FX0lORk8ud2F0ZXJTcGVlZFtjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWxdLFxyXG4gICAgICAgICAgICAgICAgdHlwZTp0aGlzLndhdGVyX0FycmF5W29yZGVyXS56LFxyXG4gICAgICAgICAgICAgICAgY2lyY3VsYXRlOmNpcmN1bGF0ZSxcclxuICAgICAgICAgICAgICAgIGxhc3Q6cG9zXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHRhcmdldC5ydW5XYXRlcihkYXRhKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/ojrflj5bmga/lo6TnmoTmoLzlrZDnmoTmlrnlkJFcclxuICAgIGdldFhpX1NvaWwob3JkZXIscm9hZCl7XHJcbiAgICAgICAgdmFyIGRpcmVjdGlvbiA9IG51bGw7XHJcbiAgICAgICAgLy/lpoLmnpzmga/lo6TlkI7pnaLov5jmnInkuIvkuIDmraXnmoTor51cclxuICAgICAgICBpZihvcmRlciArIDEgPCByb2FkLmxlbmd0aCl7XHJcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9IHRoaXMuZ2V0RGlyZWN0aW9uKG9yZGVyLHJvYWQpO1xyXG4gICAgICAgICAgICBpZihkaXJlY3Rpb24gPT0gXCJ1cFwiIHx8IGRpcmVjdGlvbiA9PSBcInJpZ2h0X3VwXCIgfHwgZGlyZWN0aW9uID09IFwibGVmdF91cFwiKXtcclxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IFwidXBcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKGRpcmVjdGlvbiA9PSBcImRvd25cIiB8fCBkaXJlY3Rpb24gPT0gXCJsZWZ0X2Rvd25cIiB8fCBkaXJlY3Rpb24gPT0gXCJyaWdodF9kb3duXCIpe1xyXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gXCJkb3duXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZihkaXJlY3Rpb24gPT0gXCJsZWZ0XCIgfHwgZGlyZWN0aW9uID09IFwidXBfbGVmdFwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25fbGVmdFwiKXtcclxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IFwibGVmdFwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYoZGlyZWN0aW9uID09IFwicmlnaHRcIiB8fCBkaXJlY3Rpb24gPT0gXCJ1cF9yaWdodFwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25fcmlnaHRcIil7XHJcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSBcInJpZ2h0XCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9ICBcclxuICAgICAgICByZXR1cm4gZGlyZWN0aW9uO1xyXG4gICAgfVxyXG4gICAgLy/orr7nva7mga/lo6RcclxuICAgIHNldF9Tb2lsKG9yZGVyLHJvYWQsbmFtZSl7XHJcbiAgICAgICAgdmFyIGRpcmVjdGlvbiA9IHRoaXMuZ2V0WGlfU29pbChvcmRlcixyb2FkKTtcclxuICAgICAgICB2YXIgbGVuZ3RoID0gMDtcclxuICAgICAgICBpZihkaXJlY3Rpb24gPT0gXCJyaWdodFwiKXtcclxuICAgICAgICAgICAgbGVuZ3RoID0gdGhpcy5tYXBfV2lkdGggLSAxO1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9cm9hZFtvcmRlcl0ueDtpPD1sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgIGxldCBuID0gaSp0aGlzLm1hcF9BcnJheVswXS5sZW5ndGgrcm9hZFtvcmRlcl0ueTtcclxuICAgICAgICAgICAgICAgIGxldCB0YXJnZXQgPSB0aGlzLmJsb2NrX0FycmF5W25dLmdldENvbXBvbmVudChcIkJsb2NrXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYodGFyZ2V0LmJsb2NrX1R5cGUgPT0gMyB8fCB0YXJnZXQuYmxvY2tfVHlwZSA9PSA0KXtcclxuICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSBpLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGFyZ2V0LmJsb2NrX1R5cGUgPT0gNCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCArPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpID0gMTAwMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH10aGlzLnNjaGVkdWxlT25jZVxyXG4gICAgICAgIH0gXHJcbiAgICAgICAgZWxzZSBpZihkaXJlY3Rpb24gPT0gXCJsZWZ0XCIpe1xyXG4gICAgICAgICAgICBsZW5ndGggPSAwO1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9cm9hZFtvcmRlcl0ueDtpPj1sZW5ndGg7aS0tKXtcclxuICAgICAgICAgICAgICAgIGxldCBuID0gaSp0aGlzLm1hcF9BcnJheVswXS5sZW5ndGgrcm9hZFtvcmRlcl0ueTtcclxuICAgICAgICAgICAgICAgIGxldCB0YXJnZXQgPSB0aGlzLmJsb2NrX0FycmF5W25dLmdldENvbXBvbmVudChcIkJsb2NrXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYodGFyZ2V0LmJsb2NrX1R5cGUgPT0gMyB8fCB0YXJnZXQuYmxvY2tfVHlwZSA9PSA0KXtcclxuICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSAgaSArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGFyZ2V0LmJsb2NrX1R5cGUgPT0gNCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCAtPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpID0gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IFxyXG4gICAgICAgIGVsc2UgaWYoZGlyZWN0aW9uID09IFwidXBcIil7XHJcbiAgICAgICAgICAgIGxlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT1yb2FkW29yZGVyXS55O2k+PWxlbmd0aDtpLS0pe1xyXG4gICAgICAgICAgICAgICAgbGV0IG4gPSByb2FkW29yZGVyXS54KnRoaXMubWFwX0FycmF5WzBdLmxlbmd0aCArIGk7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5ibG9ja19BcnJheVtuXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKTtcclxuICAgXHJcbiAgICAgICAgICAgICAgICBpZih0YXJnZXQuYmxvY2tfVHlwZSA9PSAzIHx8IHRhcmdldC5ibG9ja19UeXBlID09IDQpe1xyXG4gICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IGkgKyAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRhcmdldC5ibG9ja19UeXBlID09IDQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggLT0gMTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaSA9IC0xO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBcclxuICAgICAgICBlbHNlIGlmKGRpcmVjdGlvbiA9PSBcImRvd25cIil7XHJcbiAgICAgICAgICAgIGxlbmd0aCA9IHRoaXMubWFwX0hpZ2h0IC0gMTtcclxuICAgICAgICAgICAgZm9yKGxldCBpPXJvYWRbb3JkZXJdLnk7aTw9bGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICBsZXQgbiA9IHJvYWRbb3JkZXJdLngqdGhpcy5tYXBfQXJyYXlbMF0ubGVuZ3RoICsgaTtcclxuICAgICAgICAgICAgICAgIGxldCB0YXJnZXQgPSB0aGlzLmJsb2NrX0FycmF5W25dLmdldENvbXBvbmVudChcIkJsb2NrXCIpO1xyXG4gICAgXHJcbiAgICAgICAgICAgICAgICBpZih0YXJnZXQuYmxvY2tfVHlwZSA9PSAzIHx8IHRhcmdldC5ibG9ja19UeXBlID09IDQpe1xyXG4gICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IGktMTtcclxuICAgICAgICAgICAgICAgICAgICBpZih0YXJnZXQuYmxvY2tfVHlwZSA9PSA0KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoICs9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGkgPSAxMDAwMDtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gXHJcbiAgICAgICAgdGhpcy5zb2lsX0ZpbmQoZGlyZWN0aW9uLG9yZGVyLGxlbmd0aCxyb2FkLG5hbWUpO1xyXG4gICAgfVxyXG4gICAgLy/mn6Xmib7mga/lo6Tom67pgZfmhr7ot6/lvoRcclxuICAgIHNvaWxfRmluZChkaXJlY3Rpb24sb3JkZXIsbGVuZ3RoLHJvYWQsbmFtZSl7XHJcbiAgICAgICAgbGV0IHN0YXJ0ID0gcm9hZFtvcmRlcl0ueDtcclxuICAgICAgICBpZihkaXJlY3Rpb24gPT0gXCJyaWdodFwiKXtcclxuICAgICAgICAgICAgZm9yKGxldCBpID0gc3RhcnQ7IGk8PWxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgIGxldCBuID0gaSp0aGlzLm1hcF9BcnJheVswXS5sZW5ndGgrcm9hZFtvcmRlcl0ueTtcclxuICAgICAgICAgICAgICAgIGxldCB0YXJnZXQgPSB0aGlzLmJsb2NrX0FycmF5W25dLmdldENvbXBvbmVudChcIkJsb2NrXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYoaSA9PSBzdGFydCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnNldF9YaV9Tb2lsVHlwZSh0aGlzLmdldERpcmVjdGlvbihvcmRlcixyb2FkKSxudWxsLG5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IGNjLnYzKHRoaXMucGF0aF9BcnJheVtvcmRlcl0ueCx0aGlzLnBhdGhfQXJyYXlbb3JkZXJdLnksMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy53YXRlcl9BcnJheVt0aGlzLndhdGVyX0FycmF5Lmxlbmd0aC0xXSAhPSB2YWx1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi54m55Yir5o+S5YWlOlwiLHRoaXMucGF0aF9BcnJheVtvcmRlcl0ueCx0aGlzLnBhdGhfQXJyYXlbb3JkZXJdLnkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVdhdGVyKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9ICBcclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBqZyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoaSA9PSBsZW5ndGgpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbnVtYmVyID0gaSAtIHN0YXJ0IC0xO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVBhdGgob3JkZXIsbnVtYmVyLGZhbHNlLHJvYWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBqZyA9IG9yZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zZXRfWGlfU29pbFR5cGUoZGlyZWN0aW9uLGpnLG5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBcclxuICAgICAgICBlbHNlIGlmKGRpcmVjdGlvbiA9PSBcImxlZnRcIil7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaSA9IHN0YXJ0OyBpPj1sZW5ndGg7IGktLSl7XHJcbiAgICAgICAgICAgICAgICBsZXQgbiA9IGkqdGhpcy5tYXBfQXJyYXlbMF0ubGVuZ3RoK3JvYWRbb3JkZXJdLnk7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5ibG9ja19BcnJheVtuXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZihpID09IHN0YXJ0KXtcclxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc2V0X1hpX1NvaWxUeXBlKHRoaXMuZ2V0RGlyZWN0aW9uKG9yZGVyLHJvYWQpLG51bGwsbmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gY2MudjModGhpcy5wYXRoX0FycmF5W29yZGVyXS54LHRoaXMucGF0aF9BcnJheVtvcmRlcl0ueSwwKTtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLndhdGVyX0FycmF5W3RoaXMud2F0ZXJfQXJyYXkubGVuZ3RoLTFdICE9IHZhbHVlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLnibnliKvmj5LlhaU6XCIsdGhpcy5wYXRoX0FycmF5W29yZGVyXS54LHRoaXMucGF0aF9BcnJheVtvcmRlcl0ueSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlV2F0ZXIodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gIFxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGpnID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBpZihpID09IGxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBudW1iZXIgPSBpIC0gc3RhcnQgKyAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVBhdGgob3JkZXIsbnVtYmVyLGZhbHNlLHJvYWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBqZyA9IG9yZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnNldF9YaV9Tb2lsVHlwZShkaXJlY3Rpb24samcsbmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IFxyXG4gICAgICAgIGVsc2UgaWYoZGlyZWN0aW9uID09IFwidXBcIil7XHJcbiAgICAgICAgICAgIHN0YXJ0ID0gcm9hZFtvcmRlcl0ueTtcclxuICAgICAgXHJcbiAgICAgICAgICAgIGZvcihsZXQgaSA9IHN0YXJ0OyBpPj1sZW5ndGg7IGktLSl7XHJcbiAgICAgICAgICAgICAgICBsZXQgbiA9IHJvYWRbb3JkZXJdLngqdGhpcy5tYXBfQXJyYXlbMF0ubGVuZ3RoK2k7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5ibG9ja19BcnJheVtuXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKTtcclxuICAgICAgICAgICAgICAgIGlmKGkgPT0gc3RhcnQpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zZXRfWGlfU29pbFR5cGUodGhpcy5nZXREaXJlY3Rpb24ob3JkZXIscm9hZCksbnVsbCxuYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBjYy52Myh0aGlzLnBhdGhfQXJyYXlbb3JkZXJdLngsdGhpcy5wYXRoX0FycmF5W29yZGVyXS55LDApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMud2F0ZXJfQXJyYXlbdGhpcy53YXRlcl9BcnJheS5sZW5ndGgtMV0gIT0gdmFsdWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIueJueWIq+aPkuWFpTpcIix0aGlzLnBhdGhfQXJyYXlbb3JkZXJdLngsdGhpcy5wYXRoX0FycmF5W29yZGVyXS55KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VXYXRlcih2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSAgXHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgamcgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGkgPT0gbGVuZ3RoKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG51bWJlciA9IGkgLSBzdGFydCArIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlUGF0aChvcmRlcixudW1iZXIsdHJ1ZSxyb2FkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgamcgPSBvcmRlcjtcclxuICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5oOz5LiK5oGv5aOk5o+S5YWlOlwiLHRoaXMucGF0aF9BcnJheVtvcmRlcl0ueCxpKTtcclxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc2V0X1hpX1NvaWxUeXBlKGRpcmVjdGlvbixqZyxuYW1lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gXHJcbiAgICAgICAgZWxzZSBpZihkaXJlY3Rpb24gPT0gXCJkb3duXCIpe1xyXG4gICAgICAgICAgICBzdGFydCA9IHJvYWRbb3JkZXJdLnk7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaSA9IHN0YXJ0OyBpPD1sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBsZXQgbiA9IHJvYWRbb3JkZXJdLngqdGhpcy5tYXBfQXJyYXlbMF0ubGVuZ3RoK2k7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5ibG9ja19BcnJheVtuXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKTtcclxuICAgICAgICAgICAgICAgIGlmKGkgPT0gc3RhcnQpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zZXRfWGlfU29pbFR5cGUodGhpcy5nZXREaXJlY3Rpb24ob3JkZXIscm9hZCksbnVsbCxuYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBjYy52Myh0aGlzLnBhdGhfQXJyYXlbb3JkZXJdLngsdGhpcy5wYXRoX0FycmF5W29yZGVyXS55LDApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMud2F0ZXJfQXJyYXlbdGhpcy53YXRlcl9BcnJheS5sZW5ndGgtMV0gIT0gdmFsdWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIueJueWIq+aPkuWFpTpcIix0aGlzLnBhdGhfQXJyYXlbb3JkZXJdLngsdGhpcy5wYXRoX0FycmF5W29yZGVyXS55KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VXYXRlcih2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBqZyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoaSA9PSBsZW5ndGgpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbnVtYmVyID0gaSAtIHN0YXJ0IC0gMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VQYXRoKG9yZGVyLG51bWJlcix0cnVlLHJvYWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBqZyA9IG9yZGVyO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnNldF9YaV9Tb2lsVHlwZShkaXJlY3Rpb24samcsbmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IFxyXG4gICAgfVxyXG5cclxuICAgIC8v5pS55Y+Y5rC05rWB5Zyw5Zu+XHJcbiAgICBjaGFuZ2VXYXRlcih2YWx1ZSl7XHJcbiAgICAgICAgbGV0IGpnID0gdHJ1ZTtcclxuICAgICAgICBpZih0aGlzLndhdGVyX0FycmF5Lmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICBpZih0aGlzLndhdGVyX0FycmF5W3RoaXMud2F0ZXJfQXJyYXkubGVuZ3RoLTFdLnggPT0gdmFsdWUueCAmJiB0aGlzLndhdGVyX0FycmF5W3RoaXMud2F0ZXJfQXJyYXkubGVuZ3RoLTFdLnkgPT0gdmFsdWUueSl7XHJcbiAgICAgICAgICAgICAgICBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGpnKSB0aGlzLndhdGVyX0FycmF5LnB1c2godmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5oGv5aOk6L+H5ZCO5pS55Y+Y5L+u562R6Lev5b6EXHJcbiAgICBjaGFuZ2VQYXRoKG9yZGVyLG51bWJlcixkaXJlY3Rpb24scm9hZCl7XHJcbiAgXHJcbiAgICAgICAgZm9yKGxldCBpID0gKG9yZGVyKzEpOyBpPHJvYWQubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICBpZighZGlyZWN0aW9uKXtcclxuICAgICAgICAgICAgICAgIHJvYWRbaV0ueCArPSAobnVtYmVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgcm9hZFtpXS55ICs9IChudW1iZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGRpcmVjdGlvbil7XHJcbiAgICAgICAgICAgIGlmKG51bWJlciA8IDApe1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBuPSAtbnVtYmVyOyBuPjA7IG4tLSl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VXYXRlcihjYy52Myh0aGlzLnBhdGhfQXJyYXlbb3JkZXIrMV0ueCx0aGlzLnBhdGhfQXJyYXlbb3JkZXIrMV0ueStuLDApKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIjHnibnmrormlL7lhaU6XCIsdGhpcy5wYXRoX0FycmF5W29yZGVyKzFdLngsdGhpcy5wYXRoX0FycmF5W29yZGVyKzFdLnkrbilcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNleyBcclxuICAgICAgICAgICAgICAgIGZvcihsZXQgbj1udW1iZXI7IG4+MDsgbi0tKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVdhdGVyKGNjLnYzKHRoaXMucGF0aF9BcnJheVtvcmRlcisxXS54LHRoaXMucGF0aF9BcnJheVtvcmRlcisxXS55LW4sMCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiMueJueauiuaUvuWFpTpcIix0aGlzLnBhdGhfQXJyYXlbb3JkZXIrMV0ueCx0aGlzLnBhdGhfQXJyYXlbb3JkZXIrMV0ueS1uKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGlmKG51bWJlciA8IDApe1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBtPSAtbnVtYmVyOyBtPjA7IG0tLSl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VXYXRlcihjYy52Myh0aGlzLnBhdGhfQXJyYXlbb3JkZXIrMV0ueCttLHRoaXMucGF0aF9BcnJheVtvcmRlcisxXS55LDApKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIjPnibnmrormlL7lhaU6XCIsdGhpcy5wYXRoX0FycmF5W29yZGVyKzFdLngrbSx0aGlzLnBhdGhfQXJyYXlbb3JkZXIrMV0ueSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBtPW51bWJlcjsgbT4wOyBtLS0pe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlV2F0ZXIoY2MudjModGhpcy5wYXRoX0FycmF5W29yZGVyKzFdLngtbSx0aGlzLnBhdGhfQXJyYXlbb3JkZXIrMV0ueSwwKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCI054m55q6K5pS+5YWlOlwiLHRoaXMucGF0aF9BcnJheVtvcmRlcisxXS54LW0sdGhpcy5wYXRoX0FycmF5W29yZGVyKzFdLnkpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlTWFwKGRhdGEpe1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvL+iOt+WPlua0quWzsOaWueWQkVxyXG4gICAgZ2V0RGlyZWN0aW9uKG9yZGVyLHJvYWQpe1xyXG4gICAgICAgIHZhciBuYW1lID0gXCJcIjtcclxuICAgICAgICAvL+WFpea1t+WPo+avlOi+g+WkjeadguWNleeLrOWIpOaWrVxyXG4gICAgICAgIGlmKG9yZGVyID09IDApe1xyXG4gICAgICAgICAgICBsZXQgbmV4dFggPSByb2FkW29yZGVyKzFdLnggLSByb2FkW29yZGVyXS54O1xyXG4gICAgICAgICAgICBsZXQgbmV4dFkgPSByb2FkW29yZGVyXS55IC0gcm9hZFtvcmRlcisxXS55O1xyXG4gICAgICAgICAgICAvL+WcqOW6lei+uVxyXG4gICAgICAgICAgICBpZihyb2FkW29yZGVyXS55ID09IHRoaXMubWFwX0FycmF5WzBdLmxlbmd0aC0xKXtcclxuICAgICAgICAgICAgICAgIGlmKG5leHRYID09IDApe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKG5leHRZID09IDEpbmFtZSA9IFwidXBcIjtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKG5leHRZID09IC0xKSBuYW1lID0gXCJlcnJcIjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYobmV4dFggPT0gMSkgbmFtZSA9IFwidXBfcmlnaHRcIjtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYobmV4dFggPT0gLTEpIG5hbWUgPSBcInVwX2xlZnRcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL+WcqOmhtui+uVxyXG4gICAgICAgICAgICBlbHNlIGlmKHJvYWRbb3JkZXJdLnkgPT0gMCl7XHJcbiAgICAgICAgICAgICAgICBpZihuZXh0WCA9PSAwKXtcclxuICAgICAgICAgICAgICAgICAgICBpZihuZXh0WSA9PSAxKW5hbWUgPSBcImVyclwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYobmV4dFkgPT0gLTEpIG5hbWUgPSBcImRvd25cIjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYobmV4dFggPT0gMSkgbmFtZSA9IFwiZG93bl9yaWdodFwiO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihuZXh0WCA9PSAtMSkgbmFtZSA9IFwiZG93bl9sZWZ0XCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy/lnKjlt6bovrlcclxuICAgICAgICAgICAgZWxzZSBpZihyb2FkW29yZGVyXS54ID09IDApe1xyXG4gICAgICAgICAgICAgICAgaWYobmV4dFggPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYobmV4dFkgPT0gMSluYW1lID0gXCJyaWdodF91cFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYobmV4dFkgPT0gLTEpIG5hbWUgPSBcInJpZ2h0X2Rvd25cIjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYobmV4dFggPT0gMSkgbmFtZSA9IFwicmlnaHRcIjtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYobmV4dFggPT0gLTEpIG5hbWUgPSBcImVyclwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8v5Zyo5Y+z6L65XHJcbiAgICAgICAgICAgIGVsc2UgaWYocm9hZFtvcmRlcl0ueCA9PSB0aGlzLm1hcF9BcnJheS5sZW5ndGgtMSl7XHJcbiAgICAgICAgICAgICAgICBpZihuZXh0WCA9PSAwKXtcclxuICAgICAgICAgICAgICAgICAgICBpZihuZXh0WSA9PSAxKW5hbWUgPSBcImxlZnRfdXBcIjtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKG5leHRZID09IC0xKSBuYW1lID0gXCJsZWZ0X2Rvd25cIjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYobmV4dFggPT0gMSkgbmFtZSA9IFwiZXJyXCI7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKG5leHRYID09IC0xKSBuYW1lID0gXCJsZWZ0XCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy/kuI3mmK/nrKzkuIDmraXvvIzlt7Lnu4/otbDov4fkuIDmraVcclxuICAgICAgICBlbHNlIGlmKG9yZGVyID4gMCl7XHJcbiAgICAgICAgICAgIHZhciBuZXh0ID0gMTtcclxuICAgICAgICAgICAgaWYob3JkZXIrMiA8IHJvYWQubGVuZ3RoKXtcclxuICAgICAgICAgICAgICAgIGlmKHJvYWRbb3JkZXIrMV0ueiA9PSA2KSBuZXh0ID0gMjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgLy/nlKjkuo7liKTmlq3mraTngrnnmoTkuIrkuIDkuKrngrnvvIzmmK/kuLrkuobliKTmlq3lvZPliY3mlrnlnZfmtKrmsLTkuIPngrnvvIzku6Xlj4rkuIvkuIDkuKrnp7vliqjmlrnlkJHvvIzliKTmlq3mtKrnu4jngrnmlrnlkJFcclxuICAgICAgICAgICAgbGV0IG5leHRYID0gcm9hZFtvcmRlcituZXh0XS54IC0gcm9hZFtvcmRlcl0ueDtcclxuICAgICAgICAgICAgbGV0IG5leHRZID0gcm9hZFtvcmRlcl0ueSAtIHJvYWRbb3JkZXIrbmV4dF0ueVxyXG4gICAgICAgICAgICBsZXQgcHJldmlvdXNYID0gcm9hZFtvcmRlcl0ueCAtIHJvYWRbb3JkZXItMV0ueDtcclxuICAgICAgICAgICAgbGV0IHByZXZpb3VzWSA9IHJvYWRbb3JkZXItMV0ueSAtIHJvYWRbb3JkZXJdLnk7XHJcbiAgICAgICAgICAgIGlmKHByZXZpb3VzWCA9PSAwICYmIHByZXZpb3VzWSA9PSAwKXtcclxuICAgICAgICAgICAgICAgIGlmKG9yZGVyID4gMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNYID0gcm9hZFtvcmRlcl0ueCAtIHJvYWRbb3JkZXItMl0ueDtcclxuICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1kgPSByb2FkW29yZGVyLTJdLnkgLSByb2FkW29yZGVyXS55O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihvcmRlciArIDEgPCByb2FkLmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNYID0gcm9hZFtvcmRlcisxXS54IC0gcm9hZFtvcmRlcl0ueDtcclxuICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1kgPSByb2FkW29yZGVyXS55IC0gcm9hZFtvcmRlcisxXS55O1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5oGv5aOk77yM5LiK5LiL5Z2Q5qCH5beu6LedXCIscHJldmlvdXNYLHByZXZpb3VzWSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYocHJldmlvdXNYID09IDAgJiYgcHJldmlvdXNZID49IDEpe1xyXG4gICAgICAgICAgICAgICAgaWYobmV4dFggPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYobmV4dFkgPT0gMSluYW1lID0gXCJ1cFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYobmV4dFkgPT0gLTEpIG5hbWUgPSBcImVyclwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihuZXh0WCA9PSAxKSBuYW1lID0gXCJ1cF9yaWdodFwiO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihuZXh0WCA9PSAtMSkgbmFtZSA9IFwidXBfbGVmdFwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYocHJldmlvdXNYID09IDAgJiYgcHJldmlvdXNZIDw9IC0xKXtcclxuICAgICAgICAgICAgICAgIGlmKG5leHRYID09IDApe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKG5leHRZID09IDEpbmFtZSA9IFwiZXJyXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZihuZXh0WSA9PSAtMSkgbmFtZSA9IFwiZG93blwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihuZXh0WCA9PSAxKSBuYW1lID0gXCJkb3duX3JpZ2h0XCI7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKG5leHRYID09IC0xKSBuYW1lID0gXCJkb3duX2xlZnRcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHByZXZpb3VzWCA+PSAxICYmIHByZXZpb3VzWSA9PSAwKXtcclxuICAgICAgICAgICAgICAgIGlmKG5leHRYID09IDApe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKG5leHRZID09IDEpbmFtZSA9IFwicmlnaHRfdXBcIjtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKG5leHRZID09IC0xKSBuYW1lID0gXCJyaWdodF9kb3duXCI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKG5leHRYID09IDEpIG5hbWUgPSBcInJpZ2h0XCI7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKG5leHRYID09IC0xKSBuYW1lID0gXCJlcnJcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHByZXZpb3VzWCA8PSAtMSAmJiBwcmV2aW91c1kgPT0gMCl7XHJcbiAgICAgICAgICAgICAgICBpZihuZXh0WCA9PSAwKXtcclxuICAgICAgICAgICAgICAgICAgICBpZihuZXh0WSA9PSAxKW5hbWUgPSBcImxlZnRfdXBcIjtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKG5leHRZID09IC0xKSBuYW1lID0gXCJsZWZ0X2Rvd25cIjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYobmV4dFggPT0gMSkgbmFtZSA9IFwiZXJyXCI7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKG5leHRYID09IC0xKSBuYW1lID0gXCJsZWZ0XCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBuYW1lIDtcclxuICAgIH1cclxuXHJcbiAgICAvL+agueaNruaYr+WQpuWFqOmdouWxj++8jOWBmueLrOeri+mAgumFjeaWuemdolxyXG4gICAgZml0KCl7XHJcbiAgICAgICAgdmFyIGpnID0gdGhpcy5zZXRGaXQoKTtcclxuICAgICAgICBpZighamcpe1xyXG4gICAgICAgICAgICB0aGlzLk1hcC5zY2FsZSA9IDEuMjtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5NYXAuc2NhbGUgPSAxO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v5Yik5pat5YWo6Z2i5bGPXHJcbiAgICBnZXRTZXRTY3JlZW5SZXNvbHV0aW9uRmxhZyAoKSB7XHJcbiAgICAgICAgbGV0IHNpemUgPSBjYy53aW5TaXplO1xyXG4gICAgICAgIGxldCB3aWR0aCA9IHNpemUud2lkdGg7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IHNpemUuaGVpZ2h0O1xyXG4gICAgICAgIGlmICgoaGVpZ2h0IC8gd2lkdGgpID4gKDE2LjIgLyA5KSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgLy/liKTmlq3lhajpnaLlsY/pgILphY1cclxuICAgIHNldEZpdCAoKSB7XHJcbiAgICAgICAgbGV0IGZsYWcgPSB0aGlzLmdldFNldFNjcmVlblJlc29sdXRpb25GbGFnKCk7XHJcbiAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmxhZztcclxuICAgIH1cclxuICAgIC8v6L+U5Zue6aaW6aG1XHJcbiAgICBiYWNrU2NlbmUoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJMb2FkU2NlbmVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLy/lvIDlp4vmuLjmiI9cclxuICAgIHN0YXJ0R2FtZShkYXRhKXtcclxuICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLmJsb2NrX0FycmF5Lmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICB0aGlzLmJsb2NrX0FycmF5W2ldLmdldENoaWxkQnlOYW1lKFwidGlwV2luXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmJsb2NrX0FycmF5W2ldLmdldENoaWxkQnlOYW1lKFwidGlwTG9zZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51bnNjaGVkdWxlKHRoaXMudXBkYXRlQ291bnREb3duVGltZSk7XHJcbiAgICAgICAgdmFyIG5vdyA9IGNjLmZ4LkdhbWVUb29sLmdldFRpbWUoKTtcclxuICAgICAgICB2YXIgZmluaXNoaSA9IG5vdyAtIHRoaXMuZmluaXNoaVRpbWU7XHJcbiAgICAgICAgdmFyIHRvdGFsVGltZSA9IG5vdyAtIHRoaXMuc3RhcnRUaW1lO1xyXG4gICAgICAgIHRoaXMuc2NvcmVUaW1lID0gdGhpcy53YXRlclRpbWU7XHJcbiAgICAgICAgaWYodGhpcy53YXRlclRpbWUgPD0gMC41KSBmaW5pc2hpID0gLTE7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5DTElDS19TRVQoXCJzdWJtaXRUaW1lXCIsZmluaXNoaSk7XHJcbiAgICAgICAgaWYoZmluaXNoaSA9PSAtMSkgXHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuQ0xJQ0tfU0VUKFwiZHVyYXRpb25cIixjYy5meC5HYW1lQ29uZmlnLlRJTUVfSU5GTy53YXRlclRpbWVbY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsXSk7XHJcbiAgICAgICAgZWxzZSBcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5DTElDS19TRVQoXCJkdXJhdGlvblwiLHRvdGFsVGltZSk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuQ0xJQ0tfU0VUKFwidXNlZFN0ZXBzXCIsZGF0YS5sZW5ndGgpO1xyXG4gICAgICAgIHRoaXMuc2V0TWFwKGRhdGEpO1xyXG4gIFxyXG4gICAgICAgIHZhciBhcnIgPSB0aGlzLmNoYW5nZVN0ZXAoZGF0YSk7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5DTElDS19TRVQoXCJzdGVwTGlzdFwiLGFycik7XHJcbiAgICB9XHJcblxyXG4gICAgLy/nlKjkuo7ln4vngrnorrDlvZVcclxuICAgIGNoYW5nZVN0ZXAoZGF0YSl7XHJcbiAgICAgICAgdmFyIGFyciA9IFtdO1xyXG4gICAgICAgIGlmKGRhdGEubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wOyBpPGRhdGEubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgaWYoZGF0YVtpXSA9PSBcInVwXCIpIGFycltpXSA9IFwiVVwiO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihkYXRhW2ldID09IFwiZG93blwiKSBhcnJbaV0gPSBcIkRcIjtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYoZGF0YVtpXSA9PSBcImxlZnRcIikgYXJyW2ldID0gXCJMXCI7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKGRhdGFbaV0gPT0gXCJyaWdodFwiKSBhcnJbaV0gPSBcIlJcIjtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYoZGF0YVtpXSA9PSBcInNvaWxcIikgYXJyW2ldID0gXCJYXCI7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKGRhdGFbaV0gPT0gXCJyZWluZm9yY2VcIikgYXJyW2ldID0gXCJGXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGFycjtcclxuICAgIH1cclxuICAgIC8v5rSq5bOw5YCS6K6h5pe277yM6K6h5pe25ZmoXHJcbiAgICB1cGRhdGVXYXRlclRpbWUoKXtcclxuICAgICAgICBpZiAodGhpcy53YXRlclRpbWUgPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMud2F0ZXJUaW1lIC09IDE7XHJcbiAgICAgICAgICAgIHRoaXMuQ291bnRkb3duLnN0cmluZyA9ICBjYy5meC5HYW1lVG9vbC5nZXRUaW1lTWFyZ2luKHRoaXMud2F0ZXJUaW1lKTtcclxuICAgICAgICAgICAgaWYodGhpcy53YXRlclRpbWUgPD0gMCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy51cGRhdGVXYXRlclRpbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYoIXRoaXMucGxhbl9vdmVyKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYW5fb3ZlciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMud2F0ZXJfQXJyYXkubGVuZ3RoID09IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguTm90aWZpY2F0aW9ucy5lbWl0KGNjLmZ4Lk1lc3NhZ2Uuc2hvd1Jlc3VsdCxcImxvc2VcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5zZXREYXRhLGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ydW5XYXRlcigwKTsgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gICBcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v5aaC5p6c5piv5YCS6K6h5pe2IOiwg+eUqOatpOaWueazlVxyXG4gICAgdXBkYXRlQ291bnREb3duVGltZSAoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY291bnRUaW1lID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvdW50VGltZSAtPSAxO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLlRJTUVfSU5GTy50b3RhbFRpbWUgPSB0aGlzLmNvdW50VGltZTtcclxuICAgICAgICAgICAgdGhpcy5UaW1lLnN0cmluZyA9ICBjYy5meC5HYW1lVG9vbC5nZXRUaW1lTWFyZ2luKHRoaXMuY291bnRUaW1lKTtcclxuICAgICAgICAgICAgaWYodGhpcy5jb3VudFRpbWUgPCA1KXtcclxuICAgICAgICAgICAgICAgIGxldCBvdmVyID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiT3ZlclwiKTtcclxuICAgICAgICAgICAgICAgIGNjLnR3ZWVuKG92ZXIpXHJcbiAgICAgICAgICAgICAgICAudG8oMC4yLHtvcGFjaXR5OjI1NX0pXHJcbiAgICAgICAgICAgICAgICAuZGVsYXkoMC4xKVxyXG4gICAgICAgICAgICAgICAgLnRvKDAuMix7b3BhY2l0eTowfSlcclxuICAgICAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHRoaXMuY291bnRUaW1lIDw9IDApe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb3VudFRpbWUgPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRhKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51bnNjaGVkdWxlKHRoaXMudXBkYXRlQ291bnREb3duVGltZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdhbWVPdmVyKCk7ICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/kuIrkvKDmr4/mrKHmk43kvZzmlbDmja5cclxuICAgIHNldERhdGEoc3VjY2Vzcyl7XHJcbiAgICAgICAgLy/orr7nva7ln4vngrnmlbDmja5cclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkNMSUNLX1NFVChcIm1hcElkXCIsY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPW2NjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbF1bdGhpcy5jdXN0b21dLmlkKTtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkNMSUNLX1NFVChcImRpZmZpY3VsdHlcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwpO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuQ0xJQ0tfU0VUKFwib3B0aW1pemVkU3RlcHNcIixjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9bY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsXVt0aGlzLmN1c3RvbV0ubWluX3N0ZXBzKTtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkNMSUNLX1NFVChcInJvdW5kXCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnJvdW5kKTtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkNMSUNLX1NFVChcInRpbWVyXCIsY2MuZnguR2FtZUNvbmZpZy5USU1FX0lORk8udG90YWxUaW1lKTtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkNMSUNLX1NFVChcImN1bXVsYXRpdmVTY29yZVwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5zY29yZSk7XHJcbiAgICAgICAgaWYoc3VjY2VzcyAhPSBudWxsKXtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5DTElDS19TRVQoXCJzdWNjZXNzXCIsc3VjY2Vzcyk7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mZW4gPSB0aGlzLmdldFNjb3JlKCk7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuQ0xJQ0tfU0VUKFwiZ2V0U2NvcmVcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZmVuKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnNjb3JlICs9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mZW47XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuQ0xJQ0tfU0VUKFwiY3VtdWxhdGl2ZVNjb3JlXCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnNjb3JlKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnN1Y2Nlc3NMaXN0LnB1c2goc3VjY2Vzcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldEdhbWVEYXRhKCk7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcbiAgICAvL+iuoeeul+W+l+WIhlxyXG4gICAgZ2V0U2NvcmUoKXtcclxuICAgICAgICAvL+acgOWwj+atpeaVsFxyXG4gICAgICAgIGxldCBtaW4gPSBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk9bY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsXVt0aGlzLmN1c3RvbV0ubWluX3N0ZXBzO1xyXG4gICAgICAgIC8v5a6e6ZmF5L2/55So5q2l5pWwXHJcbiAgICAgICAgbGV0IG5vdyA9IHRoaXMucGF0aF9BcnJheS5sZW5ndGgtMTtcclxuICAgICAgICBpZihub3cgPD0wKSBub3cgPSAwO1xyXG4gICAgICAgIHZhciB4ID0gKDIuNSptaW4gLSBub3cpIC8gbWluO1xyXG4gICAgICAgIGxldCBzY29yZSA9IE1hdGgucG93KG1pbix4KSAqKiAwLjU7XHJcbiAgICAgICAgc2NvcmUgPSBzY29yZSAqICh0aGlzLnNjb3JlVGltZSArIDEwKSoxMDA7XHJcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3Ioc2NvcmUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5LiK5Lyg5o6S6KGM5qac5pWw5o2uXHJcbiAgICBnYW1lT3Zlcigpe1xyXG4gICAgICAgIHZhciByYXRlID0gMDtcclxuICAgICAgICB2YXIgc3VjY2Vzc0xpc3QgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uc3VjY2Vzc0xpc3Q7XHJcbiAgICAgICAgaWYoc3VjY2Vzc0xpc3QubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgIHZhciBzdWNjZXNzID0gMDtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8c3VjY2Vzc0xpc3QubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgaWYoc3VjY2Vzc0xpc3RbaV0gPT0gdHJ1ZSkgc3VjY2VzcyArPSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJhdGUgPSBzdWNjZXNzL3N1Y2Nlc3NMaXN0Lmxlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmF0ZSA9IE1hdGguZmxvb3IocmF0ZSAqIDEwMDApLzEwO1xyXG4gICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICBzY29yZTogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnNjb3JlLFxyXG4gICAgICAgICAgICByYXRlOiByYXRlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFJhbmsoZGF0YSk7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZU92ZXJcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJHYW1lT3ZlclwiKS5vcGFjaXR5ID0gMDtcclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJHYW1lT3ZlclwiKSlcclxuICAgICAgICAudG8oMC40LHtvcGFjaXR5OjI1NX0pXHJcbiAgICAgICAgLmRlbGF5KDEpXHJcbiAgICAgICAgLnRvKDAuNCx7b3BhY2l0eTo1MH0pXHJcbiAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIk92ZXJTY2VuZVwiKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5zdGFydCgpXHJcbiAgICB9XHJcbiAgICAvL+Wxleekuue7k+aenFxyXG4gICAgc2hvd1Jlc3VsdChkYXRhKXtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJXaW5kb3dcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJXaW5kb3dcIikuZ2V0Q29tcG9uZW50KFwiV2luZG93XCIpLmluaXQoZGF0YSk7XHJcbiAgICB9XHJcbiAgICAvL+iusOW9leWPjeW6lOaXtumVv++8jOS7peWPiuWBmuatpemqpOaPkOekulxyXG4gICAgY2xpY2tTdW4oZGF0YSl7XHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID4gMykgcmV0dXJuO1xyXG4gICAgICAgIC8v5aaC5p6c5rKh5pyJ6K6w5b2V6L+HIOWbnuWQiOW8gOWni+WIsOaTjeS9nOWPjeW6lOaXtumVv++8jOWImeesrOS4gOasoeiusOW9le+8jCDlkI7pnaLkuI3orrDlvZVcclxuICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkNMSUNLX0RBVEEuc3RhcnRUaW1lID09IDApe1xyXG4gICAgICAgICAgICB2YXIgbm93ID0gY2MuZnguR2FtZVRvb2wuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZpbmlzaGlUaW1lICA9IG5vdyAtIHRoaXMuc3RhcnRUaW1lO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkNMSUNLX1NFVChcInN0YXJ0VGltZVwiLHRoaXMuZmluaXNoaVRpbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL+atpemqpOaPkOekulxyXG4gICAgICAgIHZhciBub3dQb3MgPSB0aGlzLnBhdGhfQXJyYXlbMF07XHJcbiAgICAgICAgaWYodGhpcy50aXBfQXJyYXkubGVuZ3RoICE9IDApe1xyXG4gICAgICAgICAgICBpZih0aGlzLnRpcF9BcnJheVt0aGlzLnRpcF9BcnJheS5sZW5ndGgtMV0gPT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpcF9BcnJheS5wdXNoKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG5vd1BvcyA9IHRoaXMudGlwX0FycmF5W3RoaXMudGlwX0FycmF5Lmxlbmd0aC0xXVt0aGlzLnRpcF9BcnJheVt0aGlzLnRpcF9BcnJheS5sZW5ndGgtMV0ubGVuZ3RoLTFdO1xyXG4gICAgICAgICAgICBsZXQgbiA9IG5vd1Bvcy54KnRoaXMubWFwX0FycmF5WzBdLmxlbmd0aCtub3dQb3MueTtcclxuICAgICAgICAgICAgbGV0IHRhcmdldE5vZGUgPSB0aGlzLmJsb2NrX0FycmF5W25dO1xyXG4gICAgICAgICAgICBpZih0YXJnZXROb2RlLmdldENoaWxkQnlOYW1lKFwidGlwTG9zZVwiKS5hY3RpdmUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpcF9BcnJheS5wdXNoKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBcclxuXHJcbiAgICAgICAgaWYoZGF0YSA9PSBcInVwXCIpe1xyXG4gICAgICAgICAgICBsZXQgbiA9IGNjLnYyKG5vd1Bvcy54LG5vd1Bvcy55LTEpO1xyXG4gICAgICAgICAgICB0aGlzLnRpcENhbihuLGRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKGRhdGEgPT0gXCJkb3duXCIpe1xyXG4gICAgICAgICAgICBsZXQgbiA9IGNjLnYyKG5vd1Bvcy54LG5vd1Bvcy55KzEpO1xyXG4gICAgICAgICAgICB0aGlzLnRpcENhbihuLGRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKGRhdGEgPT0gXCJsZWZ0XCIpe1xyXG4gICAgICAgICAgICBsZXQgbiA9IGNjLnYyKG5vd1Bvcy54LTEsbm93UG9zLnkpO1xyXG4gICAgICAgICAgICB0aGlzLnRpcENhbihuLGRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKGRhdGEgPT0gXCJyaWdodFwiKXtcclxuICAgICAgICAgICAgbGV0IG4gPSBjYy52Mihub3dQb3MueCsxLG5vd1Bvcy55KTtcclxuICAgICAgICAgICAgdGhpcy50aXBDYW4obixkYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihkYXRhID09IFwicmVpbmZvcmNlXCIpe1xyXG4gICAgICAgICAgICBsZXQgbiA9IGNjLnYzKG5vd1Bvcy54LG5vd1Bvcy55LDIpO1xyXG4gICAgICAgICAgICB0aGlzLnRpcF9BcnJheS5wdXNoKFtuXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYoZGF0YSA9PSBcInNvaWxcIil7XHJcbiAgICAgICAgICAgIGxldCBuID0gY2MudjMobm93UG9zLngsbm93UG9zLnksMyk7XHJcbiAgICAgICAgICAgIHRoaXMudGlwX0FycmF5LnB1c2goW25dKTtcclxuICAgICAgICB9XHJcbiAgICBcclxuICAgIH1cclxuICAgIC8v5o+Q56S65piv5ZCm6ZSZ6K+vXHJcbiAgICB0aXBDYW4ocG9zLGRhdGEpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8v5YWI5Yik5pat5piv5ZCm5Ye66L6555WMXHJcbiAgICAgICAgaWYocG9zLnggPDAgfHwgcG9zLnggPnRoaXMubWFwX0FycmF5Lmxlbmd0aC0xIHx8IHBvcy55IDwwIHx8IHBvcy55ID4gdGhpcy5tYXBfQXJyYXlbMF0ubGVuZ3RoLTEgKXtcclxuICAgICAgICAgICAgdGhpcy50aXBfQXJyYXkucHVzaChudWxsKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gICBcclxuICAgICAgICBsZXQgbiA9IHBvcy54KnRoaXMubWFwX0FycmF5WzBdLmxlbmd0aCtwb3MueTtcclxuICAgICAgICBsZXQgdGFyZ2V0ID0gdGhpcy5ibG9ja19BcnJheVtuXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKTtcclxuICAgICAgICB0YXJnZXQubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpcFdpblwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIC8vIHRhcmdldC5ub2RlLmdldENoaWxkQnlOYW1lKFwidGlwV2luXCIpLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgLy8gdGFyZ2V0Lm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXBMb3NlXCIpLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgLy8gZGVidWdnZXI7XHJcbiAgICAgICAgLy/ph43lpI3ot6/lm57lpLTot6/vvIzmiJbogIXlsbHls7BcclxuICAgICAgICBpZih0YXJnZXQucmVwZWF0Um9hZChmYWxzZSkgPT0gdHJ1ZSB8fCB0YXJnZXQuYmxvY2tfVHlwZSA9PSAzKXtcclxuICAgICAgICAgICAgdGFyZ2V0Lm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXBMb3NlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRhcmdldC5ub2RlLmdldENoaWxkQnlOYW1lKFwidGlwV2luXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL+a5v+WcsCDkuIrkuIDmraXlpoLmnpzmsqHnlKjmga/lo6TmiJbogIXliqDlm7pcclxuICAgICAgICBlbHNlIGlmKHRhcmdldC5ibG9ja19UeXBlID09IDIpe1xyXG4gICAgICAgICAgICBpZih0aGlzLnRpcF9BcnJheS5sZW5ndGggPiAxKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMudGlwX0FycmF5W3RoaXMudGlwX0FycmF5Lmxlbmd0aC0xXVswXS56ID09IDApe1xyXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5ub2RlLmdldENoaWxkQnlOYW1lKFwidGlwTG9zZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5ub2RlLmdldENoaWxkQnlOYW1lKFwidGlwV2luXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZih0aGlzLnRpcF9BcnJheS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgaWYodGhpcy50aXBfQXJyYXlbdGhpcy50aXBfQXJyYXkubGVuZ3RoLTFdWzBdLnogPT0gMyl7XHJcbiAgICAgICAgICAgICAgICBpZihkYXRhID09IFwidXBcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFyciA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaT1wb3MueTsgaSA+PTA7aS0tKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJsb2NrID0gdGhpcy5ibG9ja19BcnJheVtwb3MueCp0aGlzLm1hcF9BcnJheVswXS5sZW5ndGgraV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGJsb2NrLmJsb2NrX1R5cGUgPT0gMyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gLTEwMDAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay5ub2RlLmdldENoaWxkQnlOYW1lKFwidGlwV2luXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnIucHVzaChjYy52Myhwb3MueCxpLDApKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBibG9jay5ibG9ja19UeXBlID09IDQpIGkgPSAtMTAwMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aXBfQXJyYXkucHVzaChhcnIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihkYXRhID09IFwiZG93blwiKXtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgYXJyID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpPXBvcy55OyBpPHRoaXMubWFwX0FycmF5WzBdLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYmxvY2sgPSB0aGlzLmJsb2NrX0FycmF5W3Bvcy54KnRoaXMubWFwX0FycmF5WzBdLmxlbmd0aCtpXS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoYmxvY2suYmxvY2tfVHlwZSA9PSAzKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAxMDAwMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2subm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpcFdpblwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyLnB1c2goY2MudjMocG9zLngsaSwwKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggYmxvY2suYmxvY2tfVHlwZSA9PSA0KSBpID0gMTAwMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aXBfQXJyYXkucHVzaChhcnIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihkYXRhID09IFwicmlnaHRcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFyciA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaT1wb3MueDsgaTx0aGlzLm1hcF9BcnJheS5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJsb2NrID0gdGhpcy5ibG9ja19BcnJheVtpKnRoaXMubWFwX0FycmF5WzBdLmxlbmd0aCtwb3MueV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGJsb2NrLmJsb2NrX1R5cGUgPT0gMyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMTAwMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXBXaW5cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKGNjLnYzKGkscG9zLnksMCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIGJsb2NrLmJsb2NrX1R5cGUgPT0gNCkgaSA9IDEwMDAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGlwX0FycmF5LnB1c2goYXJyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYoZGF0YSA9PSBcImxlZnRcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFyciA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvcihsZXQgaT1wb3MueDsgaT49MCA7aS0tKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJsb2NrID0gdGhpcy5ibG9ja19BcnJheVtpKnRoaXMubWFwX0FycmF5WzBdLmxlbmd0aCtwb3MueV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGJsb2NrLmJsb2NrX1R5cGUgPT0gMyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gLTEwMDAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jay5ub2RlLmdldENoaWxkQnlOYW1lKFwidGlwV2luXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnIucHVzaChjYy52MyhpLHBvcy55LDApKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBibG9jay5ibG9ja19UeXBlID09IDQpIGkgPSAtMTAwMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aXBfQXJyYXkucHVzaChhcnIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zSmcgPSBjYy52Myhwb3MueCxwb3MueSwwKTtcclxuICAgICAgICAgICAgICAgIGlmKGRhdGEgPT0gXCJyZWluZm9yY2VcIikgcG9zLnogPSAyO1xyXG4gICAgICAgICAgICAgICAgaWYoZGF0YSA9PSBcInNvaWxcIikgcG9zLnogPSAzOyBcclxuICAgICAgICAgICAgICAgIHRoaXMudGlwX0FycmF5LnB1c2goW3Bvc0pnXSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy50aXBfQXJyYXkpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgcG9zSmcgPSBjYy52Myhwb3MueCxwb3MueSwwKTtcclxuICAgICAgICBpZihkYXRhID09IFwicmVpbmZvcmNlXCIpIHBvcy56ID0gMjtcclxuICAgICAgICBpZihkYXRhID09IFwic29pbFwiKSBwb3MueiA9IDM7IFxyXG4gICAgICAgIHRoaXMudGlwX0FycmF5LnB1c2goW3Bvc0pnXSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc29sZS5sb2codGhpcy50aXBfQXJyYXkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v56e76Zmk5o+Q56S6XHJcbiAgICByZW1vdmVUaXAoZGF0YSl7XHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID4gMykgcmV0dXJuO1xyXG4gICAgICAgIC8v5YiG5Li65pKk5Zue5LiA5q2lIOWSjOWFqOmDqOa4heepulxyXG4gICAgICAgIGlmKHRoaXMudGlwX0FycmF5Lmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICBpZihkYXRhID09IFwiYmFja1wiKXtcclxuICAgICAgICAgICAgICAgIGxldCB0YXJnZXQgPSB0aGlzLnRpcF9BcnJheVt0aGlzLnRpcF9BcnJheS5sZW5ndGgtMV07XHJcbiAgICAgICAgICAgICAgICBpZih0YXJnZXQgPT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aXBfQXJyYXkucG9wKCk7XHJcbiAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpcF9BcnJheS5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGk9MDsgaTx0YXJnZXQubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRhcmdldFtpXSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiggdGFyZ2V0WzBdLnogPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG4gPSB0YXJnZXRbaV0ueCp0aGlzLm1hcF9BcnJheVswXS5sZW5ndGgrdGFyZ2V0W2ldLnk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5vZGUgPSB0aGlzLmJsb2NrX0FycmF5W25dO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXBXaW5cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpcExvc2VcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgIGVsc2UgaWYoZGF0YSA9PSBcInJlbW92ZVwiKXtcclxuICAgICAgICAgICAgICAgIGZvcihsZXQgaiA9MDsgajx0aGlzLnRpcF9BcnJheS5sZW5ndGg7IGorKyl7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRhcmdldCA9IHRoaXMudGlwX0FycmF5W2pdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRhcmdldCAhPSBudWxsKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGFyZ2V0Lmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGFyZ2V0W2ldKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbiA9IHRhcmdldFtpXS54KnRoaXMubWFwX0FycmF5WzBdLmxlbmd0aCt0YXJnZXRbaV0ueTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9IHRoaXMuYmxvY2tfQXJyYXlbbl07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpcFdpblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLmdldENoaWxkQnlOYW1lKFwidGlwTG9zZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMudGlwX0FycmF5ID0gW107XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v6I635Y+W5byV5a+85ZCN5a2XXHJcbiAgICBnZXRHdWlkZU5hbWUoKXtcclxuICAgICAgICB2YXIgbmFtZSA9IFwib25lXCI7XHJcbiAgICAgICAgc3dpdGNoKHRoaXMuc3RlcCl7XHJcbiAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICAgIG5hbWUgPSBcIm9uZVwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5idG5DbGljayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iZ0NsaWNrID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDI6XHJcbiAgICAgICAgICAgICAgICBuYW1lID0gXCJ0d29cIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnRuQ2xpY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmdDbGljayA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICAgICAgbmFtZSA9IFwidGhyZWVcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnRuQ2xpY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmdDbGljayA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA0OlxyXG4gICAgICAgICAgICAgICAgbmFtZSA9IFwiZm91clwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5idG5DbGljayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iZ0NsaWNrID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDU6XHJcbiAgICAgICAgICAgICAgICBuYW1lID0gXCJmaXZlXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJ0bkNsaWNrID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmdDbGljayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgNjpcclxuICAgICAgICAgICAgICAgIG5hbWUgPSBcInNpeFwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5idG5DbGljayA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJnQ2xpY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDc6XHJcbiAgICAgICAgICAgICAgICBuYW1lID0gXCJzZXZlblwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5idG5DbGljayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iZ0NsaWNrID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDg6XHJcbiAgICAgICAgICAgICAgICBuYW1lID0gXCJlaWdodFwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5idG5DbGljayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iZ0NsaWNrID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDk6XHJcbiAgICAgICAgICAgICAgICBuYW1lID0gXCJuaW5lXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJ0bkNsaWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJnQ2xpY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTA6XHJcbiAgICAgICAgICAgICAgICBuYW1lID0gXCJ0ZW5cIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnRuQ2xpY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iZ0NsaWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxMTpcclxuICAgICAgICAgICAgICAgIG5hbWUgPSBcImVsZXZlblwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5idG5DbGljayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iZ0NsaWNrID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDEyOlxyXG4gICAgICAgICAgICAgICAgbmFtZSA9IFwidHdlbHZlXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJ0bkNsaWNrID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmdDbGljayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTM6XHJcbiAgICAgICAgICAgICAgICBuYW1lID0gXCJ0aGlydGVlblwiO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5idG5DbGljayA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJnQ2xpY2sgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE0OlxyXG4gICAgICAgICAgICAgICAgbmFtZSA9IFwiZm91cnRlZW5cIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuYnRuQ2xpY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iZ0NsaWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxNTpcclxuICAgICAgICAgICAgICAgIG5hbWUgPSBcImZpdmV0ZWVuXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJ0bkNsaWNrID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmdDbGljayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTY6XHJcbiAgICAgICAgICAgICAgICBuYW1lID0gXCJzaXh0ZWVuXCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJ0bkNsaWNrID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmdDbGljayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTc6XHJcbiAgICAgICAgICAgICAgICBuYW1lID0gXCJsYXN0XCI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJ0bkNsaWNrID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmdDbGljayA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbmFtZTtcclxuICAgIH1cclxuICAgIC8v5byV5a+85LiL5LiA5q2lXHJcbiAgICBndWlkZU5leHQoKXtcclxuICAgICAgICAvL+avj+asoeWFiOaKiuaJgOacieeahFxyXG4gICAgICAgIGNvbnNvbGUubG9nKHRoaXMuc3RlcCx0aGlzLkd1aWRlLmNoaWxkcmVuLmxlbmd0aCk7XHJcbiAgICAgICAgaWYodGhpcy5zdGVwICsgMSAgPT0gIHRoaXMuR3VpZGUuY2hpbGRyZW4ubGVuZ3RoKXtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmd1aWRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkdhbWVTY2VuZVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodGhpcy5zdGVwID4gMCkgdGhpcy5HdWlkZS5jaGlsZHJlblt0aGlzLnN0ZXAtMV0uYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGVwICs9IDE7XHJcbiAgICAgICAgbGV0IG5hbWUgPSB0aGlzLmdldEd1aWRlTmFtZSgpO1xyXG4gICBcclxuICAgICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5HdWlkZS5nZXRDaGlsZEJ5TmFtZShuYW1lKTtcclxuICAgICAgICB0YXJnZXQuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBsZXQgc2l6ZSA9IGNjLndpblNpemU7XHJcblxyXG4gICAgICAgIGlmKHNpemUuaGVpZ2h0ID4gMTMzNCl7XHJcbiAgICAgICAgICAgIGxldCBoZWlnaHQgPSAoc2l6ZS5oZWlnaHQgLSAxMzM0KS8yO1xyXG4gICAgICAgICAgICB0YXJnZXQuZ2V0Q2hpbGRCeU5hbWUoXCJzcFwiKS5oZWlnaHQgKz0gaGVpZ2h0O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhZGRFbmQoZGF0YSl7XHJcbiAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgb25FbmFibGUgKCkge1xyXG4gICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMub24oY2MuZnguTWVzc2FnZS5jb250cm9sLCB0aGlzLmNsaWNrU3VuLCB0aGlzKTtcclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLm9uKGNjLmZ4Lk1lc3NhZ2UubmV4dCwgdGhpcy5ydW5Sb2FkLCB0aGlzKTtcclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLm9uKGNjLmZ4Lk1lc3NhZ2UubmV4dFdhdGVyLCB0aGlzLnJ1bldhdGVyLCB0aGlzKTtcclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLm9uKGNjLmZ4Lk1lc3NhZ2Uuc3RhcnRHYW1lLCB0aGlzLnN0YXJ0R2FtZSwgdGhpcyk7XHJcbiAgICAgICAgY2MuZnguTm90aWZpY2F0aW9ucy5vbihjYy5meC5NZXNzYWdlLmNoYW5nZVBhdGgsIHRoaXMuY2hhbmdlUGF0aCwgdGhpcyk7XHJcbiAgICAgICAgY2MuZnguTm90aWZpY2F0aW9ucy5vbihjYy5meC5NZXNzYWdlLmNoYW5nZU1hcCwgdGhpcy5jaGFuZ2VNYXAsIHRoaXMpO1xyXG4gICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMub24oY2MuZnguTWVzc2FnZS5hZGRFbmQsIHRoaXMuYWRkRW5kLCB0aGlzKTtcclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLm9uKGNjLmZ4Lk1lc3NhZ2Uuc2V0RGF0YSwgdGhpcy5zZXREYXRhLCB0aGlzKTtcclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLm9uKGNjLmZ4Lk1lc3NhZ2UuZ3VpZGVOZXh0LCB0aGlzLmd1aWRlTmV4dCwgdGhpcyk7XHJcbiAgICAgICAgY2MuZnguTm90aWZpY2F0aW9ucy5vbihjYy5meC5NZXNzYWdlLnNob3dSZXN1bHQsIHRoaXMuc2hvd1Jlc3VsdCwgdGhpcyk7XHJcbiAgICAgICAgY2MuZnguTm90aWZpY2F0aW9ucy5vbihjYy5meC5NZXNzYWdlLnJlbW92ZVRpcCwgdGhpcy5yZW1vdmVUaXAsIHRoaXMpO1xyXG4gICAgfVxyXG4gICAgb25EaXNhYmxlICgpIHtcclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLm9mZihjYy5meC5NZXNzYWdlLmNvbnRyb2wsIHRoaXMuY2xpY2tTdW4pO1xyXG4gICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMub2ZmKGNjLmZ4Lk1lc3NhZ2UubmV4dCwgdGhpcy5ydW5Sb2FkKTtcclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLm9mZihjYy5meC5NZXNzYWdlLm5leHRXYXRlciwgdGhpcy5ydW5XYXRlcik7XHJcbiAgICAgICAgY2MuZnguTm90aWZpY2F0aW9ucy5vZmYoY2MuZnguTWVzc2FnZS5zdGFydEdhbWUsIHRoaXMuc3RhcnRHYW1lKTtcclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLm9mZihjYy5meC5NZXNzYWdlLmNoYW5nZVBhdGgsIHRoaXMuY2hhbmdlUGF0aCk7XHJcbiAgICAgICAgY2MuZnguTm90aWZpY2F0aW9ucy5vZmYoY2MuZnguTWVzc2FnZS5jaGFuZ2VNYXAsIHRoaXMuY2hhbmdlTWFwKTtcclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLm9mZihjYy5meC5NZXNzYWdlLmFkZEVuZCwgdGhpcy5hZGRFbmQpO1xyXG4gICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMub2ZmKGNjLmZ4Lk1lc3NhZ2Uuc2V0RGF0YSwgdGhpcy5zZXREYXRhKTtcclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLm9mZihjYy5meC5NZXNzYWdlLmd1aWRlTmV4dCwgdGhpcy5ndWlkZU5leHQpO1xyXG4gICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMub2ZmKGNjLmZ4Lk1lc3NhZ2Uuc2hvd1Jlc3VsdCwgdGhpcy5zaG93UmVzdWx0KTtcclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLm9mZihjYy5meC5NZXNzYWdlLnJlbW92ZVRpcCwgdGhpcy5yZW1vdmVUaXApO1xyXG4gICAgfVxyXG4gICAgdXBkYXRlIChkdCkge1xyXG5cclxuICAgXHJcbiAgICB9XHJcbn1cclxuIl19 //------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 //------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: // onLoad () {} NewClass.prototype.start = function () { }; NewClass.prototype.init = function (data) { var _this = this; this.node.getChildByName("win").active = false; this.node.getChildByName("lose").active = false; this.node.getChildByName("finishi").active = false; this.node.getChildByName(data).active = true; var target = this.node.getChildByName(data); target.opacity = 0; target.scale = 2; cc.tween(target) .delay(0.2) .to(0.4, { opacity: 255, scale: 1 }) .delay(1.3) .call(function () { cc.tween(_this.node) .to(0.3, { opacity: 0 }) .call(function () { _this.node.active = false; cc.director.loadScene("GameScene"); }) .start(); }) .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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxXaW5kb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFNUUsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFHMUM7SUFBc0MsNEJBQVk7SUFBbEQ7O0lBa0NBLENBQUM7SUFoQ0csd0JBQXdCO0lBRXhCLGVBQWU7SUFFZix3QkFBSyxHQUFMO0lBRUEsQ0FBQztJQUVELHVCQUFJLEdBQUosVUFBSyxJQUFJO1FBQVQsaUJBcUJDO1FBcEJHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDN0MsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNyQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQzthQUNmLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDVixFQUFFLENBQUMsR0FBRyxFQUFDLEVBQUMsT0FBTyxFQUFDLEdBQUcsRUFBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDLENBQUM7YUFDN0IsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLElBQUksQ0FBQztZQUNGLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQztpQkFDbEIsRUFBRSxDQUFDLEdBQUcsRUFBQyxFQUFDLE9BQU8sRUFBQyxDQUFDLEVBQUMsQ0FBQztpQkFDbkIsSUFBSSxDQUFDO2dCQUNGLEtBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDekIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdkMsQ0FBQyxDQUFDO2lCQUNELEtBQUssRUFBRSxDQUFDO1FBQ2IsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxFQUFFLENBQUM7SUFDYixDQUFDO0lBL0JnQixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBa0M1QjtJQUFELGVBQUM7Q0FsQ0QsQUFrQ0MsQ0FsQ3FDLEVBQUUsQ0FBQyxTQUFTLEdBa0NqRDtrQkFsQ29CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld0NsYXNzIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGluaXQoZGF0YSl7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwid2luXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImxvc2VcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiZmluaXNoaVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoZGF0YSkuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB2YXIgdGFyZ2V0ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKGRhdGEpO1xyXG4gICAgICAgIHRhcmdldC5vcGFjaXR5ID0gMDsgdGFyZ2V0LnNjYWxlID0gMjtcclxuICAgICAgICBjYy50d2Vlbih0YXJnZXQpXHJcbiAgICAgICAgLmRlbGF5KDAuMilcclxuICAgICAgICAudG8oMC40LHtvcGFjaXR5OjI1NSxzY2FsZToxfSlcclxuICAgICAgICAuZGVsYXkoMS4zKVxyXG4gICAgICAgIC5jYWxsKCgpPT57XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZSlcclxuICAgICAgICAgICAgLnRvKDAuMyx7b3BhY2l0eTowfSlcclxuICAgICAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= //------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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vVGlsZWRNYXAuanMiXSwibmFtZXMiOlsiVG1vVGlsZWRMYXllciIsInJlcXVpcmUiLCJUbW9PYmplY3RHcm91cCIsImNjIiwiQ2xhc3MiLCJUaWxlZE1hcCIsInByb3BlcnRpZXMiLCJvYmplY3RNYXRlcmlhbCIsIk1hdGVyaWFsIiwibm9Db2xvciIsInNpbmdsZVRleHR1cmUiLCJfb2JqZWN0VGV4dHVyZXMiLCJfYXBwbHlGaWxlIiwiZXJyb3IiLCJfc3VwZXIiLCJfYnVpbGRMYXllckFuZEdyb3VwIiwidGlsZXNldHMiLCJfdGlsZXNldHMiLCJ0ZXhHcmlkcyIsIl90ZXhHcmlkcyIsImFuaW1hdGlvbnMiLCJfYW5pbWF0aW9ucyIsImxlbmd0aCIsImkiLCJsIiwidGlsZXNldEluZm8iLCJmaWxsVGV4dHVyZUdyaWRzIiwiX2ZpbGxBbmlHcmlkcyIsImxheWVycyIsIl9sYXllcnMiLCJncm91cHMiLCJfZ3JvdXBzIiwiaW1hZ2VzIiwiX2ltYWdlcyIsIm9sZE5vZGVOYW1lcyIsIm4iLCJub2RlIiwiX25hbWUiLCJtYXBJbmZvIiwiX21hcEluZm8iLCJsYXllckluZm9zIiwiZ2V0QWxsQ2hpbGRyZW4iLCJ0ZXh0dXJlcyIsIl90ZXh0dXJlcyIsIm1heFdpZHRoIiwibWF4SGVpZ2h0IiwiZmlyc3RUbXhMYXllciIsImxlbiIsImxheWVySW5mbyIsIm5hbWUiLCJjaGlsZCIsImdldENoaWxkQnlOYW1lIiwiTm9kZSIsImFkZENoaWxkIiwic2V0U2libGluZ0luZGV4IiwiYWN0aXZlIiwidmlzaWJsZSIsIlRNWExheWVySW5mbyIsImxheWVyIiwiZ2V0Q29tcG9uZW50IiwiYWRkQ29tcG9uZW50IiwiX2luaXQiLCJvd25UaWxlcyIsInB1c2giLCJUTVhPYmplY3RHcm91cEluZm8iLCJncm91cCIsIlRNWEltYWdlTGF5ZXJJbmZvIiwidGV4dHVyZSIsInNvdXJjZUltYWdlIiwib3BhY2l0eSIsIl9vZmZzZXQiLCJ2MiIsIm9mZnNldCIsIngiLCJ5IiwiaW1hZ2UiLCJTcHJpdGUiLCJzcGYiLCJzcHJpdGVGcmFtZSIsIlNwcml0ZUZyYW1lIiwic2V0VGV4dHVyZSIsIndpZHRoIiwiaGVpZ2h0IiwiTWF0aCIsIm1heCIsIm9iamVjdFRleHR1cmVzIiwiaWR4Iiwic2V0UHJvcGVydHkiLCJjaGlsZHJlbiIsImMiLCJkZXN0cm95IiwiX3N5bmNBbmNob3JQb2ludCIsImdldE9iamVjdE1hdGVyaWFsIiwiaXNOb0NvbG9yIiwiaXNTaW5nbGVUZXh0dXJlIiwiZ2V0T2JqZWN0VGV4dHVyZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsYUFBYSxHQUFHQyxPQUFPLENBQUMsaUJBQUQsQ0FBN0I7O0FBQ0EsSUFBTUMsY0FBYyxHQUFHRCxPQUFPLENBQUMsa0JBQUQsQ0FBOUI7O0FBQ0FFLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTO0FBQ0wsYUFBU0QsRUFBRSxDQUFDRSxRQURQO0FBRUxDLEVBQUFBLFVBQVUsRUFBRTtBQUNSQyxJQUFBQSxjQUFjLEVBQUVKLEVBQUUsQ0FBQ0ssUUFEWDtBQUVSQyxJQUFBQSxPQUFPLEVBQUUsSUFGRDtBQUdSQyxJQUFBQSxhQUFhLEVBQUUsSUFIUDtBQUtSQyxJQUFBQSxlQUFlLEVBQUU7QUFMVCxHQUZQO0FBV0xDLEVBQUFBLFVBQVUsRUFBRSxzQkFBWTtBQUNwQixRQUFJLENBQUMsS0FBS0wsY0FBVixFQUEwQjtBQUN0QkosTUFBQUEsRUFBRSxDQUFDVSxLQUFILENBQVMsc0NBQVQ7QUFDQTtBQUNIOztBQUVELFNBQUtDLE1BQUw7QUFDSCxHQWxCSTtBQW9CTEMsRUFBQUEsbUJBQW1CLEVBQUUsK0JBQVk7QUFDN0IsUUFBSUMsUUFBUSxHQUFHLEtBQUtDLFNBQXBCO0FBQ0EsUUFBSUMsUUFBUSxHQUFHLEtBQUtDLFNBQXBCO0FBQ0EsUUFBSUMsVUFBVSxHQUFHLEtB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SDtBQUNKOztBQUVELFNBQUt0RCxJQUFMLENBQVU2QyxLQUFWLEdBQWtCckMsUUFBbEI7QUFDQSxTQUFLUixJQUFMLENBQVU4QyxNQUFWLEdBQW1CckMsU0FBbkI7O0FBQ0EsU0FBSzhDLGdCQUFMO0FBQ0gsR0FqSkk7QUFtSkxDLEVBQUFBLGlCQUFpQixFQUFFLDZCQUFZO0FBQzNCLFdBQU8sS0FBS3JGLGNBQVo7QUFDSCxHQXJKSTtBQXVKTHNGLEVBQUFBLFNBQVMsRUFBRSxxQkFBWTtBQUNuQixXQUFPLEtBQUtwRixPQUFaO0FBQ0gsR0F6Skk7QUEySkxxRixFQUFBQSxlQUFlLEVBQUUsMkJBQVk7QUFDekIsV0FBTyxLQUFLcEYsYUFBWjtBQUNILEdBN0pJO0FBK0pMcUYsRUFBQUEsaUJBQWlCLEVBQUUsNkJBQVk7QUFDM0IsV0FBTyxLQUFLcEYsZUFBWjtBQUNIO0FBaktJLENBQVQiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIGNjLkNsYXNzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9jbGFzcy5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5jb25zdCBUbW9UaWxlZExheWVyID0gcmVxdWlyZShcIi4vVG1vVGlsZWRMYXllclwiKTtcclxuY29uc3QgVG1vT2JqZWN0R3JvdXAgPSByZXF1aXJlKFwiLi9UbW9PYmplY3RHcm91cFwiKTtcclxuY2MuQ2xhc3Moe1xyXG4gICAgZXh0ZW5kczogY2MuVGlsZWRNYXAsXHJcbiAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgb2JqZWN0TWF0ZXJpYWw6IGNjLk1hdGVyaWFsLFxyXG4gICAgICAgIG5vQ29sb3I6IHRydWUsXHJcbiAgICAgICAgc2luZ2xlVGV4dHVyZTogdHJ1ZSxcclxuXHJcbiAgICAgICAgX29iamVjdFRleHR1cmVzOiBbXSxcclxuICAgIH0sXHJcbiAgICBcclxuXHJcbiAgICBfYXBwbHlGaWxlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm9iamVjdE1hdGVyaWFsKSB7XHJcbiAgICAgICAgICAgIGNjLmVycm9yKFwiVGlsZWRtYXBPcHRpbWl6ZTog5pyq6K6+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/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,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== //------QC-SOURCE-SPLIT------ (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; 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"; // 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.PathType = exports.BlockType = void 0; var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; var BlockType; (function (BlockType) { /*普通地块 */ BlockType[BlockType["Nomal"] = 0] = "Nomal"; /*起点地块 */ BlockType[BlockType["Start"] = 1] = "Start"; /*湿地 */ BlockType[BlockType["Nunja"] = 2] = "Nunja"; /*山峰 */ BlockType[BlockType["Peak"] = 3] = "Peak"; /*终点地块 */ BlockType[BlockType["End"] = 4] = "End"; /*息壤 */ BlockType[BlockType["Xi_Soil"] = 5] = "Xi_Soil"; /*加固 */ BlockType[BlockType["Reinforce"] = 6] = "Reinforce"; })(BlockType = exports.BlockType || (exports.BlockType = {})); 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 NewClass = /** @class */ (function (_super) { __extends(NewClass, _super); function NewClass() { var _this = _super !== null && _super.apply(this, arguments) || this; // LIFE-CYCLE CALLBACKS: _this.UI = null; return _this; // update (dt) {} } NewClass.prototype.onLoad = function () { this.finishi = false; this.pos_Shifting = 0; this.pos = cc.v2(0, 0); }; NewClass.prototype.start = function () { }; NewClass.prototype.initData = function (type, pos, max) { this.block_Type = type; this.pos = cc.v2(pos.x, pos.y); // if(this.pos.y%2 == 0) this.node.getChildByName("tip").active = true; if (type == cc.Enum(BlockType).Start) { var bg = this.node.getChildByName("sp"); // this.node.getComponent(cc.Sprite).spriteFrame = null; bg.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["start"]; if (cc.fx.GameConfig.GM_INFO.level > 4) { bg.getChildByName("start").y = 20; bg.getChildByName("end").y = 20; } this.rotateTarget(bg, "start", pos, max); } else if (type == cc.Enum(BlockType).End) { var bg = this.node.getChildByName("sp"); // this.node.getComponent(cc.Sprite).spriteFrame = null; bg.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["end"]; if (cc.fx.GameConfig.GM_INFO.level > 4) { bg.getChildByName("start").y = 20; bg.getChildByName("end").y = 20; } this.rotateTarget(bg, "end", pos, max); } else if (type == cc.Enum(BlockType).Nunja) { var random = Math.floor(Math.random() * 4); var rotationArr = [0, 90, 180, 270]; var rotation = rotationArr[random]; this.node.getChildByName("bg").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e5"]; this.node.getChildByName("bg").angle = -rotation; this.node.getComponent(cc.Sprite).spriteFrame = null; } else if (type == cc.Enum(BlockType).Peak) { var random = Math.floor(Math.random() * 4 + 1); var name = "shan" + random; this.node.getChildByName("bg").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; this.node.getComponent(cc.Sprite).spriteFrame = null; } // this.node.getChildByName("tipWin").active = true; // this.node.getChildByName("tipLose").active = true; if (cc.fx.GameConfig.GM_INFO.level == 1) { this.node.getChildByName("tipWin").opacity = 220; this.node.getChildByName("tipLose").opacity = 220; } else if (cc.fx.GameConfig.GM_INFO.level == 2) { this.node.getChildByName("tipWin").opacity = 100; this.node.getChildByName("tipLose").opacity = 100; } else if (cc.fx.GameConfig.GM_INFO.level == 3) { this.node.getChildByName("tipWin").opacity = 50; this.node.getChildByName("tipLose").opacity = 50; } else if (cc.fx.GameConfig.GM_INFO.level > 3) { this.node.getChildByName("tipWin").opacity = 0; this.node.getChildByName("tipLose").opacity = 0; } }; //旋转入海口和出海口的 图片以及文字角度 NewClass.prototype.rotateTarget = function (bg, name, pos, max) { var target = bg.getChildByName(name); if (pos.y == max.y - 1) { bg.angle = 0; if (name == "end") target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["end_x"]; target.active = true; target.angle = 0; return; } else if (pos.y == 0) { bg.angle = -180; if (name == "end") target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["end_x"]; target.active = true; target.angle = -180; return; } else if (pos.x == max.x - 1) { bg.angle = 90; if (name == "start") target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["start_y"]; else target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["end_y"]; target.active = true; target.angle = -90; } else if (pos.x == 0) { bg.angle = -90; if (name == "start") target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["start_y"]; else target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["end_y"]; target.active = true; target.angle = 90; } }; NewClass.prototype.setPath = function (type) { this.path_Type = type; }; //设置息壤在起点 NewClass.prototype.set_Xi_Soil = function (direction, type) { var sp = this.node.getChildByName("sp"); var turn = this.node.getChildByName("turnStart"); var water = this.node.getChildByName("waterStart"); if (direction == "left" || direction == "right") { if (sp.angle == 0) { turn.active = true; water.active = true; water.opacity = 0; if (type) { turn.angle = direction == "left" ? 90 : 0; water.angle = direction == "left" ? 90 : 0; } else { turn.angle = direction == "left" ? 0 : 90; water.angle = direction == "left" ? 0 : 90; } } else if (sp.angle == -180) { turn.active = true; water.active = true; water.opacity = 0; if (type) { turn.angle = direction == "left" ? -180 : -90; water.angle = direction == "left" ? -180 : -90; } else { turn.angle = direction == "left" ? 270 : -180; water.angle = direction == "left" ? 270 : -180; } } else if (sp.angle == -90) { turn.active = true; turn.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["a1"]; turn.angle = 90; if (type) { water.active = true; water.angle = 90; water.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block1"]; water.opacity = 0; } } else if (sp.angle == 90) { turn.active = true; turn.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["a1"]; turn.angle = 90; if (type) { water.active = true; water.angle = 90; water.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block1"]; water.opacity = 0; } } } else if (direction == "up" || direction == "down") { var sp_1 = this.node.getChildByName("sp"); if (sp_1.angle == -90) { turn.active = true; water.active = true; water.opacity = 0; if (type) { turn.angle = direction == "up" ? -90 : 0; water.angle = direction == "up" ? -90 : 0; } else { turn.angle = direction == "up" ? -90 : 0; water.angle = direction == "up" ? -90 : 0; } } else if (sp_1.angle == 90) { turn.active = true; water.active = true; water.opacity = 0; if (type) { turn.angle = direction == "up" ? 90 : 180; water.angle = direction == "up" ? 90 : 180; } else { turn.angle = direction == "up" ? 180 : 90; water.angle = direction == "up" ? 180 : 90; } } else if (sp_1.angle == 0) { turn.active = true; turn.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["a1"]; turn.angle = 0; if (type) { water.active = true; water.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block1"]; water.opacity = 0; } } else if (sp_1.angle == -180) { turn.active = true; turn.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["a1"]; turn.angle = 0; if (type) { water.active = true; water.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block1"]; water.opacity = 0; } } } }; NewClass.prototype.set_Xi_SoilType = function (direction, end, name) { var _this = this; // console.log("息壤",direction,name,this.block_Type); if (this.block_Type == cc.Enum(BlockType).Start) { this.set_Xi_Soil(direction, false); return; } if (this.block_Type == cc.Enum(BlockType).Nunja) { this.block_Type = cc.Enum(BlockType).Nomal; this.node.getChildByName("bg").getComponent(cc.Sprite).spriteFrame = null; this.node.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block_Bg"]; } if (end != null) { if (this.block_Type == cc.Enum(BlockType).End) { this.finishi = true; this.set_Xi_Soil(direction, true); } setTimeout(function () { if (name == "water") cc.fx.Notifications.emit(cc.fx.Message.nextWater, (end + 1)); else cc.fx.Notifications.emit(cc.fx.Message.next, (end + 1)); }, 400); } if (this.block_Type != cc.Enum(BlockType).End && this.block_Type != cc.Enum(BlockType).Start) { this.block_Type = cc.Enum(BlockType).Xi_Soil; } else { } var target = this.node.getChildByName("Xi_Soil"); this.path_Type = direction; target.active = true; target.opacity = 0; cc.tween(target) .to(0.1, { opacity: 255 }) .to(0.1, { opacity: 0 }) .call(function () { if (direction != null && end == null) { var data = { order: 0, time: cc.fx.GameConfig.TIME_INFO.waterSpeed[0], type: 0, circulate: false }; if (name == "water") { _this.runWater(data); } else _this.runRoad(data); } }) .start(); }; NewClass.prototype.repeatRoad = function (type) { //如果双向都占用了还进来就算死了- var jg = false; if (this.node.getChildByName("vertical2").active == true && this.node.getChildByName("horizontal2").active == true) { // alert("治水失败"); jg = true; if (type) { cc.fx.Notifications.emit(cc.fx.Message.showResult, "lose"); cc.fx.Notifications.emit(cc.fx.Message.setData, false); } } else if (this.node.getChildByName("turn2").active == true && this.block_Type != cc.Enum(BlockType).Xi_Soil) { // alert("治水失败"); jg = true; if (type) { cc.fx.Notifications.emit(cc.fx.Message.showResult, "lose"); cc.fx.Notifications.emit(cc.fx.Message.setData, false); } } return jg; }; //修筑路线执行 NewClass.prototype.runRoad = function (data) { if (this.path_Type == "err") { setTimeout(function () { if (data.circulate) cc.fx.Notifications.emit(cc.fx.Message.next, order); }, data.time); return; } var jg = this.repeatRoad(true); if (jg == true) return; var target = null; var progress = 1; var time = data.time; var order = data.order + 1; var random = Math.floor(Math.random() * 4 + 1); target = this.node.getChildByName("vertical2"); if (target.name == "vertical") { var water1_1 = target.getChildByName("wave").getChildByName("water1"); var water2_1 = target.getChildByName("wave").getChildByName("water2"); var water3_1 = target.getChildByName("wave").getChildByName("water3"); var timeDelay = 0.15; water1_1.runAction(cc.sequence(cc.moveTo(0.6, cc.v2(water1_1.x, 120)), cc.delayTime(timeDelay), cc.callFunc(function () { water1_1.y = -120; })).repeatForever()); water2_1.runAction(cc.sequence(cc.moveTo(0.6, cc.v2(water2_1.x, 120)), cc.delayTime(timeDelay), cc.callFunc(function () { water2_1.y = -120; })).repeatForever()); water3_1.runAction(cc.sequence(cc.moveTo(0.6, cc.v2(water3_1.x, 120)), cc.delayTime(timeDelay), cc.callFunc(function () { water3_1.y = -120; })).repeatForever()); } var name = "a" + random; if (this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; if (target.active == true) { target = this.node.getChildByName("horizontal2"); name = "b" + random; if (this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; } // console.log(this.path_Type,data.order); if (this.path_Type == cc.Enum(PathType).up) { } else if (this.path_Type == cc.Enum(PathType).down) { target.angle = 180; } else if (this.path_Type == cc.Enum(PathType).left) { target.angle = 90; name = "b" + random; if (this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; } else if (this.path_Type == cc.Enum(PathType).right) { target.angle = 270; name = "b" + random; if (this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; } else { target = this.node.getChildByName("turn2"); if (target.name == "turn") { var water_1 = target.getChildByName("wave").getChildByName("water"); water_1.opacity = 0; water_1.runAction(cc.sequence(cc.rotateTo(7.2, -1080), cc.delayTime(0)).repeatForever()); setTimeout(function () { water_1.opacity = 255; }, 200); } name = "c" + random; if (this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; progress = 0.25; if (this.path_Type == cc.Enum(PathType).up_left) { target.setPosition(-this.pos_Shifting, -this.pos_Shifting); } else if (this.path_Type == cc.Enum(PathType).up_right) { target.scaleX = -1; target.setPosition(this.pos_Shifting, -this.pos_Shifting); } else if (this.path_Type == cc.Enum(PathType).down_left) { target.angle = 180; target.scaleX = -1; target.setPosition(-this.pos_Shifting, this.pos_Shifting); } else if (this.path_Type == cc.Enum(PathType).down_right) { target.angle = 180; target.setPosition(this.pos_Shifting, this.pos_Shifting); } else if (this.path_Type == cc.Enum(PathType).left_up) { target.angle = -90; target.scaleY = -1; target.setPosition(this.pos_Shifting, this.pos_Shifting); } else if (this.path_Type == cc.Enum(PathType).left_down) { target.angle = 90; target.setPosition(-this.pos_Shifting, -this.pos_Shifting); } else if (this.path_Type == cc.Enum(PathType).right_up) { target.angle = -90; target.setPosition(-this.pos_Shifting, this.pos_Shifting); } else if (this.path_Type == cc.Enum(PathType).right_down) { target.angle = -90; target.scaleX = -1; target.setPosition(-this.pos_Shifting, -this.pos_Shifting); } } if (this.path_Type == "Reinforce") { target = this.node.getChildByName("Reinforce"); if (this.block_Type != cc.Enum(BlockType).End) this.block_Type = cc.Enum(BlockType).Reinforce; this.node.getChildByName("vertical2").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e1"]; this.node.getChildByName("turn2").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e3"]; this.node.getChildByName("horizontal2").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e2"]; target.active = true; target.opacity = 0; progress = 1; cc.tween(target) .to(cc.fx.GameConfig.TIME_INFO.ReinforceSpeed, { opacity: 255 }) .call(function () { if (data.circulate) cc.fx.Notifications.emit(cc.fx.Message.changeMap, order); cc.fx.Notifications.emit(cc.fx.Message.next, order); }) .start(); } else if (this.path_Type == "Xi_Soil") { target.active = false; if (this.block_Type != cc.Enum(BlockType).End && this.block_Type != cc.Enum(BlockType).Start) this.block_Type = cc.Enum(BlockType).Xi_Soil; target = this.node.getChildByName("Xi_Soil"); target.active = true; target.opacity = 0; cc.tween(target) .to(0.01, { opacity: 1 }) .to(0.01, { opacity: 0 }) .call(function () { if (data.circulate) { cc.fx.Notifications.emit(cc.fx.Message.next, order); } }) .start(); } else if (this.path_Type == "End") { target.active = false; if (this.block_Type != cc.Enum(BlockType).End && this.block_Type != cc.Enum(BlockType).Start) this.block_Type = cc.Enum(BlockType).Xi_Soil; var posTemp = data.last; var direction = "up"; if (this.pos.x - posTemp.x >= 1) { direction = "right"; } else if (this.pos.x - posTemp.x <= -1) { direction = "left"; } else if (this.pos.y - posTemp.y >= 1) { direction = "down"; } // console.log("结束方向:",direction); if (!this.finishi) { this.finishi = true; this.set_Xi_Soil(direction, true); } } else { target.active = true; if (this.block_Type != cc.Enum(BlockType).Xi_Soil) { target.getComponent(cc.Sprite).fillRange = 0; cc.tween(target.getComponent(cc.Sprite)) .to(time, { fillRange: progress }) .call(function () { if (data.circulate) cc.fx.Notifications.emit(cc.fx.Message.next, order); }) .start(); } else { target.opacity = 0; target.getComponent(cc.Sprite).fillRange = 1; cc.tween(target) .to(time, { opacity: 255 }) .call(function () { if (data.circulate) cc.fx.Notifications.emit(cc.fx.Message.next, order); }) .start(); } } }; //洪峰执行 NewClass.prototype.runWater = function (data) { if (this.node.getChildByName("waterStart").active == true && this.block_Type == cc.Enum(BlockType).Start) { // sp.getChildByName("waterStart").opacity = 255; cc.tween(this.node.getChildByName("waterStart")) .to(0.2, { opacity: 255 }) .start(); } if (this.path_Type == "err") { setTimeout(function () { if (data.circulate) cc.fx.Notifications.emit(cc.fx.Message.nextWater, order); }, data.time); return; } //如果双向都占用了还进来就算死了- if (this.node.getChildByName("vertical").active == true && this.node.getChildByName("horizontal").active == true) { // alert("治水失败"); cc.fx.Notifications.emit(cc.fx.Message.showResult, "lose"); cc.fx.Notifications.emit(cc.fx.Message.setData, false); // cc.director.loadScene("GameScene"); return; } else if (this.node.getChildByName("turn").active == true && this.block_Type != cc.Enum(BlockType).Xi_Soil) { // alert("治水失败"); cc.fx.Notifications.emit(cc.fx.Message.showResult, "lose"); cc.fx.Notifications.emit(cc.fx.Message.setData, false); // cc.director.loadScene("GameScene"); return; } var target = null; var progress = 1; var time = data.time; var order = data.order + 1; var random = Math.floor(Math.random() * 4 + 1); target = this.node.getChildByName("vertical"); if (target.name == "vertical") { var water1_2 = target.getChildByName("wave").getChildByName("water1"); var water2_2 = target.getChildByName("wave").getChildByName("water2"); var water3_2 = target.getChildByName("wave").getChildByName("water3"); var timeDelay = 0.15; water1_2.runAction(cc.sequence(cc.moveTo(0.6, cc.v2(water1_2.x, 120)), cc.delayTime(timeDelay), cc.callFunc(function () { water1_2.y = -120; })).repeatForever()); water2_2.runAction(cc.sequence(cc.moveTo(0.6, cc.v2(water2_2.x, 120)), cc.delayTime(timeDelay), cc.callFunc(function () { water2_2.y = -120; })).repeatForever()); water3_2.runAction(cc.sequence(cc.moveTo(0.6, cc.v2(water3_2.x, 120)), cc.delayTime(timeDelay), cc.callFunc(function () { water3_2.y = -120; })).repeatForever()); } var name = "a" + random; // if(this.block_Type != cc.Enum(BlockType).Reinforce)target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; if (target.active == true) { target = this.node.getChildByName("horizontal"); var water1_3 = target.getChildByName("wave").getChildByName("water1"); var water2_3 = target.getChildByName("wave").getChildByName("water2"); var water3_3 = target.getChildByName("wave").getChildByName("water3"); var timeDelay = 0.15; water1_3.runAction(cc.sequence(cc.moveTo(0.6, cc.v2(water1_3.x, 120)), cc.delayTime(timeDelay), cc.callFunc(function () { water1_3.y = -120; })).repeatForever()); water2_3.runAction(cc.sequence(cc.moveTo(0.6, cc.v2(water2_3.x, 120)), cc.delayTime(timeDelay), cc.callFunc(function () { water2_3.y = -120; })).repeatForever()); water3_3.runAction(cc.sequence(cc.moveTo(0.6, cc.v2(water3_3.x, 120)), cc.delayTime(timeDelay), cc.callFunc(function () { water3_3.y = -120; })).repeatForever()); name = "b" + random; //if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; } // console.log(this.path_Type,data.order); if (this.path_Type == cc.Enum(PathType).up) { } else if (this.path_Type == cc.Enum(PathType).down) { target.angle = 180; } else if (this.path_Type == cc.Enum(PathType).left) { target.angle = 90; name = "b" + random; //if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; } else if (this.path_Type == cc.Enum(PathType).right) { target.angle = 270; name = "b" + random; //if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; } else { target = this.node.getChildByName("turn"); if (target.name == "turn") { var water_2 = target.getChildByName("wave").getChildByName("water"); water_2.opacity = 0; water_2.runAction(cc.sequence(cc.rotateTo(7.2, -1080), cc.delayTime(0)).repeatForever()); setTimeout(function () { water_2.opacity = 255; }, 200); } name = "c" + random; //if(this.block_Type != cc.Enum(BlockType).Reinforce)target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name]; progress = 0.25; if (this.path_Type == cc.Enum(PathType).up_left) { target.setPosition(-this.pos_Shifting, -this.pos_Shifting); } else if (this.path_Type == cc.Enum(PathType).up_right) { target.scaleX = -1; target.setPosition(this.pos_Shifting, -this.pos_Shifting); } else if (this.path_Type == cc.Enum(PathType).down_left) { target.angle = 180; target.scaleX = -1; target.setPosition(-this.pos_Shifting, this.pos_Shifting); } else if (this.path_Type == cc.Enum(PathType).down_right) { target.angle = 180; target.setPosition(this.pos_Shifting, this.pos_Shifting); } else if (this.path_Type == cc.Enum(PathType).left_up) { target.angle = -90; target.scaleY = -1; target.setPosition(this.pos_Shifting, this.pos_Shifting); } else if (this.path_Type == cc.Enum(PathType).left_down) { target.angle = 90; target.setPosition(-this.pos_Shifting, -this.pos_Shifting); } else if (this.path_Type == cc.Enum(PathType).right_up) { target.angle = -90; target.setPosition(-this.pos_Shifting, this.pos_Shifting); } else if (this.path_Type == cc.Enum(PathType).right_down) { target.angle = -90; target.scaleX = -1; target.setPosition(-this.pos_Shifting, -this.pos_Shifting); } } // if(this.path_Type == "Reinforce"){ // target = this.node.getChildByName("Reinforce"); // this.block_Type = cc.Enum(BlockType).Reinforce; // // this.node.getChildByName("vertical").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e1"]; // // this.node.getChildByName("turn").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e3"]; // // this.node.getChildByName("horizontal").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e2"]; // target.active = true; // target.opacity = 0; // progress = 1; // cc.tween(target) // .to(cc.fx.GameConfig.TIME_INFO.ReinforceSpeed,{opacity:255}) // .call(() =>{ // if(data.circulate) // cc.fx.Notifications.emit(cc.fx.Message.changeMap,order); // cc.fx.Notifications.emit(cc.fx.Message.nextWater,order); // }) // .start(); // } // else if(this.path_Type == "Xi_Soil"){ // target.active = false; // this.block_Type = cc.Enum(BlockType).Xi_Soil; // target = this.node.getChildByName("Xi_Soil"); // target.active = true; // target.opacity = 0; // cc.tween(target) // .to(0.01,{opacity:1}) // .to(0.01,{opacity:0}) // .call(() =>{ // if(data.circulate){ // cc.fx.Notifications.emit(cc.fx.Message.nextWater,order); // } // }) // .start(); // } if (this.path_Type == "End") { target.active = false; if (this.block_Type == cc.Enum(BlockType).End) { if (this.node.getChildByName("waterStart").active == true && this.block_Type == cc.Enum(BlockType).End) { cc.tween(this.node.getChildByName("waterStart")) .to(0.2, { opacity: 255 }) .call(function () { // alert("治水成功"); cc.fx.Notifications.emit(cc.fx.Message.showResult, "win"); cc.fx.Notifications.emit(cc.fx.Message.setData, true); if (cc.fx.GameConfig.GM_INFO.level < 7) { cc.fx.GameConfig.GM_INFO.level += 1; } setTimeout(function () { // cc.director.loadScene("GameScene"); }, 500); }) .start(); } } else { target = this.node.getChildByName("End"); target.active = true; target.opacity = 0; var posTemp = data.last; if (this.pos.x - posTemp.x >= 1) { target.angle = -90; } else if (this.pos.x - posTemp.x <= -1) { target.angle = 90; } else if (this.pos.y - posTemp.y >= 1) { target.angle = 180; } cc.tween(target) .to(0.5, { opacity: 255 }) .call(function () { // alert("治水失败") cc.fx.Notifications.emit(cc.fx.Message.showResult, "lose"); cc.fx.Notifications.emit(cc.fx.Message.setData, false); // cc.director.loadScene("GameScene"); }) .start(); } } else { target.active = true; target.getComponent(cc.Sprite).fillRange = 0; cc.tween(target.getComponent(cc.Sprite)) .to(time, { fillRange: progress }) .call(function () { if (data.circulate) cc.fx.Notifications.emit(cc.fx.Message.nextWater, order); }) .start(); } }; __decorate([ property(cc.SpriteAtlas) ], NewClass.prototype, "UI", 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxCbG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFNUUsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFFMUMsSUFBWSxTQWdCWDtBQWhCRCxXQUFZLFNBQVM7SUFDakIsU0FBUztJQUNULDJDQUFTLENBQUE7SUFDVCxTQUFTO0lBQ1QsMkNBQVMsQ0FBQTtJQUNULE9BQU87SUFDUCwyQ0FBUyxDQUFBO0lBQ1QsT0FBTztJQUNQLHlDQUFRLENBQUE7SUFDUixTQUFTO0lBQ1QsdUNBQU8sQ0FBQTtJQUVQLE9BQU87SUFDUCwrQ0FBVyxDQUFBO0lBQ1gsT0FBTztJQUNQLG1EQUFhLENBQUE7QUFDakIsQ0FBQyxFQWhCVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQWdCcEI7QUFFRCxJQUFZLFFBY1g7QUFkRCxXQUFZLFFBQVE7SUFDaEIsdUJBQVcsQ0FBQTtJQUNYLHFCQUFTLENBQUE7SUFDVCx5QkFBYSxDQUFBO0lBQ2IseUJBQWEsQ0FBQTtJQUNiLDJCQUFlLENBQUE7SUFDZiwrQkFBbUIsQ0FBQTtJQUNuQixpQ0FBcUIsQ0FBQTtJQUNyQixtQ0FBdUIsQ0FBQTtJQUN2QixxQ0FBeUIsQ0FBQTtJQUN6QiwrQkFBbUIsQ0FBQTtJQUNuQixtQ0FBdUIsQ0FBQTtJQUN2QixpQ0FBcUIsQ0FBQTtJQUNyQixxQ0FBeUIsQ0FBQTtBQUM3QixDQUFDLEVBZFcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFjbkI7QUFHRDtJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQTh1QkM7UUE3dUJHLHdCQUF3QjtRQUV4QixRQUFFLEdBQW1CLElBQUks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QUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEUsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLFFBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQU0sQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUN2RixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUNSLFFBQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUE7WUFDbkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQ3JCLFFBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQU0sQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUN2RixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUNSLFFBQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUE7WUFDbkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQ3JCLFFBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQU0sQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUN2RixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUNSLFFBQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUE7WUFDbkIsQ0FBQyxDQUFDLENBQUMsQ0FB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QUksQ0FBQztZQUNyQixRQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFNLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFDdkYsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFDUixRQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFBO1lBQ25CLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztZQUNyQixRQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFNLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFDdkYsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFDUixRQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFBO1lBQ25CLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztZQUNyQixRQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFNLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFDdkYsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFDUixRQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFBO1lBQ25CLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztZQUNyQixJQUFJLEdBQUcsR0FBRyxHQUFHLE1BQU0sQ0FBQztZQUNwQixrSUFBa0k7U0FDckk7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U0FBUyxFQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hFLENBQUMsQ0FBQztpQkFDRCxLQUFLLEVBQUUsQ0FBQztTQUNaO0lBRUwsQ0FBQztJQXh1QkQ7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQzt3Q0FDQztJQUhULFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0E4dUI1QjtJQUFELGVBQUM7Q0E5dUJELEFBOHVCQyxDQTl1QnFDLEVBQUUsQ0FBQyxTQUFTLEdBOHVCakQ7a0JBOXVCb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuZXhwb3J0IGVudW0gQmxvY2tUeXBle1xyXG4gICAgLyrmma7pgJrlnLDlnZcgKi9cclxuICAgIE5vbWFsID0gMCwgIFxyXG4gICAgLyrotbfngrnlnLDlnZcgKi9cclxuICAgIFN0YXJ0ID0gMSwgIFxyXG4gICAgLyrmub/lnLAgKi9cclxuICAgIE51bmphID0gMixcclxuICAgIC8q5bGx5bOwICovXHJcbiAgICBQZWFrID0gMyxcclxuICAgIC8q57uI54K55Zyw5Z2XICovXHJcbiAgICBFbmQgPSA0LFxyXG5cclxuICAgIC8q5oGv5aOkICovXHJcbiAgICBYaV9Tb2lsID0gNSxcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBSZWluZm9yY2UgPSA2XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFBhdGhUeXBle1xyXG4gICAgZXJyID0gXCJlcnJcIixcclxuICAgIHVwID0gXCJ1cFwiLCAgXHJcbiAgICBkb3duID0gXCJkb3duXCIsICBcclxuICAgIGxlZnQgPSBcImxlZnRcIixcclxuICAgIHJpZ2h0ID0gXCJyaWdodFwiLFxyXG4gICAgdXBfbGVmdCA9IFwidXBfbGVmdFwiLFxyXG4gICAgdXBfcmlnaHQgPSBcInVwX3JpZ2h0XCIsXHJcbiAgICBkb3duX2xlZnQgPSBcImRvd25fbGVmdFwiLFxyXG4gICAgZG93bl9yaWdodCA9IFwiZG93bl9yaWdodFwiLFxyXG4gICAgbGVmdF91cCA9IFwibGVmdF91cFwiLFxyXG4gICAgbGVmdF9kb3duID0gXCJsZWZ0X2Rvd25cIixcclxuICAgIHJpZ2h0X3VwID0gXCJyaWdodF91cFwiLFxyXG4gICAgcmlnaHRfZG93biA9IFwicmlnaHRfZG93blwiLFxyXG59XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGVBdGxhcylcclxuICAgIFVJOiBjYy5TcHJpdGVBdGxhcyA9IG51bGw7XHJcblxyXG4gICAgcG9zX1NoaWZ0aW5nOm51bWJlcjtcclxuICAgIGJsb2NrX1R5cGU6bnVtYmVyO1xyXG4gICAgcGF0aF9UeXBlOnN0cmluZztcclxuICAgIGZpbmlzaGk6Ym9vbGVhbjtcclxuICAgIHBvczogYW55O1xyXG4gICAgb25Mb2FkICgpIHtcclxuICAgICAgICB0aGlzLmZpbmlzaGkgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnBvc19TaGlmdGluZyA9IDA7XHJcbiAgICAgICAgdGhpcy5wb3MgPSBjYy52MigwLDApO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICBpbml0RGF0YSh0eXBlLHBvcyxtYXgpe1xyXG4gICAgICAgIHRoaXMuYmxvY2tfVHlwZSA9IHR5cGU7XHJcbiAgICAgICAgdGhpcy5wb3MgPSBjYy52Mihwb3MueCxwb3MueSk7XHJcbiAgICAgICAgLy8gaWYodGhpcy5wb3MueSUyID09IDApIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpcFwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIGlmKHR5cGUgPT0gY2MuRW51bShCbG9ja1R5cGUpLlN0YXJ0KXsgXHJcbiAgICAgICAgICAgIHZhciBiZyA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInNwXCIpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLm5vZGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBudWxsO1xyXG4gICAgICAgICAgICBiZy5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuVUlbXCJfc3ByaXRlRnJhbWVzXCJdW1wic3RhcnRcIl07XHJcbiAgICAgICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA+IDQpe1xyXG4gICAgICAgICAgICAgICAgYmcuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFydFwiKS55ID0gMjA7XHJcbiAgICAgICAgICAgICAgICBiZy5nZXRDaGlsZEJ5TmFtZShcImVuZFwiKS55ID0gMjA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5yb3RhdGVUYXJnZXQoYmcsXCJzdGFydFwiLHBvcyxtYXgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHR5cGUgPT0gY2MuRW51bShCbG9ja1R5cGUpLkVuZCl7XHJcbiAgICAgICAgICAgIHZhciBiZyA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInNwXCIpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLm5vZGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBudWxsO1xyXG4gICAgICAgICAgICBiZy5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuVUlbXCJfc3ByaXRlRnJhbWVzXCJdW1wiZW5kXCJdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPiA0KXtcclxuICAgICAgICAgICAgICAgIGJnLmdldENoaWxkQnlOYW1lKFwic3RhcnRcIikueSA9IDIwO1xyXG4gICAgICAgICAgICAgICAgYmcuZ2V0Q2hpbGRCeU5hbWUoXCJlbmRcIikueSA9IDIwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucm90YXRlVGFyZ2V0KGJnLFwiZW5kXCIscG9zLG1heCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodHlwZSA9PSBjYy5FbnVtKEJsb2NrVHlwZSkuTnVuamEpe1xyXG4gICAgICAgICAgICBsZXQgcmFuZG9tID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjQpO1xyXG4gICAgICAgICAgICBsZXQgcm90YXRpb25BcnIgPSBbMCw5MCwxODAsMjcwXTtcclxuICAgICAgICAgICAgbGV0IHJvdGF0aW9uID0gcm90YXRpb25BcnJbcmFuZG9tXTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiYmdcIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLlVJW1wiX3Nwcml0ZUZyYW1lc1wiXVtcImU1XCJdO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJiZ1wiKS5hbmdsZSA9IC1yb3RhdGlvbjtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZih0eXBlID09IGNjLkVudW0oQmxvY2tUeXBlKS5QZWFrKXtcclxuICAgICAgICAgICAgbGV0IHJhbmRvbSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSo0KzEpO1xyXG4gICAgICAgICAgICBsZXQgbmFtZSA9IFwic2hhblwiICsgcmFuZG9tO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJiZ1wiKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuVUlbXCJfc3ByaXRlRnJhbWVzXCJdW25hbWVdO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGlwV2luXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGlwTG9zZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9PSAxKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGlwV2luXCIpLm9wYWNpdHkgPSAyMjA7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpcExvc2VcIikub3BhY2l0eSA9IDIyMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPT0gMil7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpcFdpblwiKS5vcGFjaXR5ID0gMTAwO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXBMb3NlXCIpLm9wYWNpdHkgPSAxMDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID09IDMpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXBXaW5cIikub3BhY2l0eSA9IDUwO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXBMb3NlXCIpLm9wYWNpdHkgPSA1MDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPiAzKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGlwV2luXCIpLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXBMb3NlXCIpLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgIH1cclxuICBcclxuICAgIH1cclxuICAgIC8v5peL6L2s5YWl5rW35Y+j5ZKM5Ye65rW35Y+j55qEIOWbvueJh+S7peWPiuaWh+Wtl+inkuW6plxyXG4gICAgcm90YXRlVGFyZ2V0KGJnLG5hbWUscG9zLG1heCl7XHJcbiAgICAgICAgbGV0IHRhcmdldCA9IGJnLmdldENoaWxkQnlOYW1lKG5hbWUpO1xyXG4gICAgICAgIGlmKHBvcy55ID09IG1heC55LTEpe1xyXG4gICAgICAgICAgICBiZy5hbmdsZSA9IDA7XHJcbiAgICAgICAgICAgIGlmKG5hbWUgPT0gXCJlbmRcIikgdGFyZ2V0LmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5VSVtcIl9zcHJpdGVGcmFtZXNcIl1bXCJlbmRfeFwiXTtcclxuICAgICAgICAgICAgdGFyZ2V0LmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRhcmdldC5hbmdsZSA9IDA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihwb3MueSA9PSAwKXtcclxuICAgICAgICAgICAgYmcuYW5nbGUgPSAtMTgwO1xyXG4gICAgICAgICAgICBpZihuYW1lID09IFwiZW5kXCIpdGFyZ2V0LmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5VSVtcIl9zcHJpdGVGcmFtZXNcIl1bXCJlbmRfeFwiXTtcclxuICAgICAgICAgICAgdGFyZ2V0LmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRhcmdldC5hbmdsZSA9IC0xODA7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihwb3MueCA9PSBtYXgueC0xKXtcclxuICAgICAgICAgICAgYmcuYW5nbGUgPSA5MDtcclxuICAgICAgICAgICAgaWYobmFtZSA9PSBcInN0YXJ0XCIpdGFyZ2V0LmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5VSVtcIl9zcHJpdGVGcmFtZXNcIl1bXCJzdGFydF95XCJdO1xyXG4gICAgICAgICAgICBlbHNlIHRhcmdldC5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuVUlbXCJfc3ByaXRlRnJhbWVzXCJdW1wiZW5kX3lcIl07XHJcbiAgICAgICAgICAgIHRhcmdldC5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0YXJnZXQuYW5nbGUgPSAtOTA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYocG9zLnggPT0gMCl7XHJcbiAgICAgICAgICAgIGJnLmFuZ2xlID0gLTkwO1xyXG4gICAgICAgICAgICBpZihuYW1lID09IFwic3RhcnRcIil0YXJnZXQuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLlVJW1wiX3Nwcml0ZUZyYW1lc1wiXVtcInN0YXJ0X3lcIl07XHJcbiAgICAgICAgICAgIGVsc2UgdGFyZ2V0LmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5VSVtcIl9zcHJpdGVGcmFtZXNcIl1bXCJlbmRfeVwiXTtcclxuICAgICAgICAgICAgdGFyZ2V0LmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRhcmdldC5hbmdsZSA9IDkwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRQYXRoKHR5cGUpe1xyXG4gICAgICAgIHRoaXMucGF0aF9UeXBlID0gdHlwZTtcclxuICAgIH1cclxuICAgIC8v6K6+572u5oGv5aOk5Zyo6LW354K5XHJcbiAgICBzZXRfWGlfU29pbChkaXJlY3Rpb24sdHlwZSl7XHJcbiAgICAgICAgbGV0IHNwID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwic3BcIik7XHJcbiAgICAgICAgbGV0IHR1cm4gPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0dXJuU3RhcnRcIik7XHJcbiAgICAgICAgbGV0IHdhdGVyID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwid2F0ZXJTdGFydFwiKTtcclxuICAgIFxyXG4gICAgICAgIGlmKGRpcmVjdGlvbiA9PSBcImxlZnRcIiB8fCBkaXJlY3Rpb24gPT0gXCJyaWdodFwiKXtcclxuICAgICAgICAgICAgaWYoc3AuYW5nbGUgPT0gMCl7XHJcbiAgICAgICAgICAgICAgICB0dXJuLmFjdGl2ZSA9dHJ1ZTtcclxuICAgICAgICAgICAgICAgIHdhdGVyLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB3YXRlci5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgIGlmKHR5cGUpe1xyXG4gICAgICAgICAgICAgICAgICAgIHR1cm4uYW5nbGUgPSBkaXJlY3Rpb249PVwibGVmdFwiPzkwOjA7XHJcbiAgICAgICAgICAgICAgICAgICAgd2F0ZXIuYW5nbGUgPSBkaXJlY3Rpb249PVwibGVmdFwiPzkwOjA7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICB0dXJuLmFuZ2xlID0gZGlyZWN0aW9uPT1cImxlZnRcIj8wOjkwO1xyXG4gICAgICAgICAgICAgICAgICAgIHdhdGVyLmFuZ2xlID0gZGlyZWN0aW9uPT1cImxlZnRcIj8wOjkwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHNwLmFuZ2xlID09IC0xODApe1xyXG4gICAgICAgICAgICAgICAgdHVybi5hY3RpdmUgPXRydWU7XHJcbiAgICAgICAgICAgICAgICB3YXRlci5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgd2F0ZXIub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgICAgICBpZih0eXBlKXtcclxuICAgICAgICAgICAgICAgICAgICB0dXJuLmFuZ2xlID0gZGlyZWN0aW9uPT1cImxlZnRcIj8tMTgwOi05MDtcclxuICAgICAgICAgICAgICAgICAgICB3YXRlci5hbmdsZSA9IGRpcmVjdGlvbj09XCJsZWZ0XCI/LTE4MDotOTA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIHR1cm4uYW5nbGUgPSBkaXJlY3Rpb249PVwibGVmdFwiPzI3MDotMTgwO1xyXG4gICAgICAgICAgICAgICAgICAgIHdhdGVyLmFuZ2xlID0gZGlyZWN0aW9uPT1cImxlZnRcIj8yNzA6LTE4MDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZihzcC5hbmdsZSA9PSAtOTApe1xyXG4gICAgICAgICAgICAgICAgdHVybi5hY3RpdmUgPXRydWU7XHJcbiAgICAgICAgICAgICAgICB0dXJuLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5VSVtcIl9zcHJpdGVGcmFtZXNcIl1bXCJhMVwiXTtcclxuICAgICAgICAgICAgICAgIHR1cm4uYW5nbGUgPSA5MDtcclxuICAgICAgICAgICAgICAgIGlmKHR5cGUpe1xyXG4gICAgICAgICAgICAgICAgICAgIHdhdGVyLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgd2F0ZXIuYW5nbGUgPSA5MDtcclxuICAgICAgICAgICAgICAgICAgICB3YXRlci5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuVUlbXCJfc3ByaXRlRnJhbWVzXCJdW1wiYmxvY2sxXCJdO1xyXG4gICAgICAgICAgICAgICAgICAgIHdhdGVyLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHNwLmFuZ2xlID09IDkwKXtcclxuICAgICAgICAgICAgICAgIHR1cm4uYWN0aXZlID10cnVlO1xyXG4gICAgICAgICAgICAgICAgdHVybi5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuVUlbXCJfc3ByaXRlRnJhbWVzXCJdW1wiYTFcIl07XHJcbiAgICAgICAgICAgICAgICB0dXJuLmFuZ2xlID0gOTA7XHJcbiAgICAgICAgICAgICAgICBpZih0eXBlKXtcclxuICAgICAgICAgICAgICAgICAgICB3YXRlci5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHdhdGVyLmFuZ2xlID0gOTA7XHJcbiAgICAgICAgICAgICAgICAgICAgd2F0ZXIuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLlVJW1wiX3Nwcml0ZUZyYW1lc1wiXVtcImJsb2NrMVwiXTtcclxuICAgICAgICAgICAgICAgICAgICB3YXRlci5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKGRpcmVjdGlvbiA9PSBcInVwXCIgfHwgZGlyZWN0aW9uID09IFwiZG93blwiKXtcclxuICAgICAgICAgICAgbGV0IHNwID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwic3BcIik7XHJcbiAgICAgICAgICAgIGlmKHNwLmFuZ2xlID09IC05MCl7XHJcbiAgICAgICAgICAgICAgICB0dXJuLmFjdGl2ZSA9dHJ1ZTtcclxuICAgICAgICAgICAgICAgIHdhdGVyLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB3YXRlci5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgIGlmKHR5cGUpe1xyXG4gICAgICAgICAgICAgICAgICAgIHR1cm4uYW5nbGUgPSBkaXJlY3Rpb249PVwidXBcIj8tOTA6MDtcclxuICAgICAgICAgICAgICAgICAgICB3YXRlci5hbmdsZSA9IGRpcmVjdGlvbj09XCJ1cFwiPy05MDowO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICB0dXJuLmFuZ2xlID0gZGlyZWN0aW9uPT1cInVwXCI/LTkwOjA7XHJcbiAgICAgICAgICAgICAgICAgICAgd2F0ZXIuYW5nbGUgPSBkaXJlY3Rpb249PVwidXBcIj8tOTA6MDtcclxuICAgICAgICAgICAgICAgIH1cclxuIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYoc3AuYW5nbGUgPT0gOTApe1xyXG4gICAgICAgICAgICAgICAgdHVybi5hY3RpdmUgPXRydWU7XHJcbiAgICAgICAgICAgICAgICB3YXRlci5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgd2F0ZXIub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgICAgICBpZih0eXBlKXtcclxuICAgICAgICAgICAgICAgICAgICB0dXJuLmFuZ2xlID0gZGlyZWN0aW9uPT1cInVwXCI/OTA6MTgwO1xyXG4gICAgICAgICAgICAgICAgICAgIHdhdGVyLmFuZ2xlID0gZGlyZWN0aW9uPT1cInVwXCI/OTA6MTgwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICB0dXJuLmFuZ2xlID0gZGlyZWN0aW9uPT1cInVwXCI/MTgwOjkwO1xyXG4gICAgICAgICAgICAgICAgICAgIHdhdGVyLmFuZ2xlID0gZGlyZWN0aW9uPT1cInVwXCI/MTgwOjkwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYoc3AuYW5nbGUgPT0gMCl7XHJcbiAgICAgICAgICAgICAgICB0dXJuLmFjdGl2ZSA9dHJ1ZTtcclxuICAgICAgICAgICAgICAgIHR1cm4uZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLlVJW1wiX3Nwcml0ZUZyYW1lc1wiXVtcImExXCJdO1xyXG4gICAgICAgICAgICAgICAgdHVybi5hbmdsZSA9IDA7XHJcbiAgICAgICAgICAgICAgICBpZih0eXBlKXtcclxuICAgICAgICAgICAgICAgICAgICB3YXRlci5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHdhdGVyLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5VSVtcIl9zcHJpdGVGcmFtZXNcIl1bXCJibG9jazFcIl07XHJcbiAgICAgICAgICAgICAgICAgICAgd2F0ZXIub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZihzcC5hbmdsZSA9PSAtMTgwKXtcclxuICAgICAgICAgICAgICAgIHR1cm4uYWN0aXZlID10cnVlO1xyXG4gICAgICAgICAgICAgICAgdHVybi5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuVUlbXCJfc3ByaXRlRnJhbWVzXCJdW1wiYTFcIl07XHJcbiAgICAgICAgICAgICAgICB0dXJuLmFuZ2xlID0gMDtcclxuICAgICAgICAgICAgICAgIGlmKHR5cGUpe1xyXG4gICAgICAgICAgICAgICAgICAgIHdhdGVyLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgd2F0ZXIuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLlVJW1wiX3Nwcml0ZUZyYW1lc1wiXVtcImJsb2NrMVwiXTtcclxuICAgICAgICAgICAgICAgICAgICB3YXRlci5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRfWGlfU29pbFR5cGUoZGlyZWN0aW9uLGVuZCxuYW1lKXtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuaBr+WjpFwiLGRpcmVjdGlvbixuYW1lLHRoaXMuYmxvY2tfVHlwZSk7XHJcbiAgICAgICAgaWYodGhpcy5ibG9ja19UeXBlID09IGNjLkVudW0oQmxvY2tUeXBlKS5TdGFydCl7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0X1hpX1NvaWwoZGlyZWN0aW9uLGZhbHNlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYodGhpcy5ibG9ja19UeXBlID09IGNjLkVudW0oQmxvY2tUeXBlKS5OdW5qYSl7XHJcbiAgICAgICAgICAgIHRoaXMuYmxvY2tfVHlwZSA9IGNjLkVudW0oQmxvY2tUeXBlKS5Ob21hbDtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiYmdcIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSAgdGhpcy5VSVtcIl9zcHJpdGVGcmFtZXNcIl1bXCJibG9ja19CZ1wiXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoZW5kICE9IG51bGwpe1xyXG4gICAgICAgICAgICBpZih0aGlzLmJsb2NrX1R5cGUgPT0gY2MuRW51bShCbG9ja1R5cGUpLkVuZCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbmlzaGkgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRfWGlfU29pbChkaXJlY3Rpb24sdHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZihuYW1lID09IFwid2F0ZXJcIikgY2MuZnguTm90aWZpY2F0aW9ucy5lbWl0KGNjLmZ4Lk1lc3NhZ2UubmV4dFdhdGVyLChlbmQrMSkpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5uZXh0LChlbmQrMSkpO1xyXG4gICAgICAgICAgICB9LCA0MDApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYodGhpcy5ibG9ja19UeXBlICE9IGNjLkVudW0oQmxvY2tUeXBlKS5FbmQgJiYgdGhpcy5ibG9ja19UeXBlICE9IGNjLkVudW0oQmxvY2tUeXBlKS5TdGFydCl7XHJcbiAgICAgICAgICAgIHRoaXMuYmxvY2tfVHlwZSA9IGNjLkVudW0oQmxvY2tUeXBlKS5YaV9Tb2lsO1xyXG4gICAgICAgIH0gXHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHRhcmdldCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlhpX1NvaWxcIik7IFxyXG4gICAgICAgIHRoaXMucGF0aF9UeXBlID0gZGlyZWN0aW9uO1xyXG4gICAgICAgIHRhcmdldC5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRhcmdldC5vcGFjaXR5ID0gMDtcclxuICAgICAgICBjYy50d2Vlbih0YXJnZXQpXHJcbiAgICAgICAgLnRvKDAuMSx7b3BhY2l0eToyNTV9KVxyXG4gICAgICAgIC50bygwLjEse29wYWNpdHk6MH0pXHJcbiAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgIGlmKGRpcmVjdGlvbiAhPSBudWxsICYmIGVuZCA9PSBudWxsKXtcclxuICAgICAgICAgICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOjAsXHJcbiAgICAgICAgICAgICAgICAgICAgdGltZTpjYy5meC5HYW1lQ29uZmlnLlRJTUVfSU5GTy53YXRlclNwZWVkWzBdLFxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6MCxcclxuICAgICAgICAgICAgICAgICAgICBjaXJjdWxhdGU6ZmFsc2VcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBpZihuYW1lID09IFwid2F0ZXJcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ydW5XYXRlcihkYXRhKTtcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICBlbHNlIHRoaXMucnVuUm9hZChkYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVwZWF0Um9hZCh0eXBlKXtcclxuICAgICAgICAvL+WmguaenOWPjOWQkemDveWNoOeUqOS6hui/mOi/m+adpeWwseeul+atu+S6hi0gXHJcbiAgICAgICAgdmFyIGpnID0gZmFsc2U7XHJcbiAgICAgICAgaWYodGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidmVydGljYWwyXCIpLmFjdGl2ZSA9PSB0cnVlICYmIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImhvcml6b250YWwyXCIpLmFjdGl2ZSA9PSB0cnVlKXtcclxuICAgICAgICAgICAgLy8gYWxlcnQoXCLmsrvmsLTlpLHotKVcIik7XHJcbiAgICAgICAgICAgIGpnID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYodHlwZSl7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5zaG93UmVzdWx0LFwibG9zZVwiKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMuZW1pdChjYy5meC5NZXNzYWdlLnNldERhdGEsZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIGlmKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInR1cm4yXCIpLmFjdGl2ZSA9PSB0cnVlICYmIHRoaXMuYmxvY2tfVHlwZSAhPSBjYy5FbnVtKEJsb2NrVHlwZSkuWGlfU29pbCl7XHJcbiAgICAgICAgICAgIC8vIGFsZXJ0KFwi5rK75rC05aSx6LSlXCIpO1xyXG4gICAgICAgICAgICBqZyA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmKHR5cGUpe1xyXG4gICAgICAgICAgICAgICAgY2MuZnguTm90aWZpY2F0aW9ucy5lbWl0KGNjLmZ4Lk1lc3NhZ2Uuc2hvd1Jlc3VsdCxcImxvc2VcIik7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5zZXREYXRhLGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG4gICAgLy/kv67nrZHot6/nur/miafooYxcclxuICAgIHJ1blJvYWQoZGF0YSl7XHJcbiAgICAgICAgaWYodGhpcy5wYXRoX1R5cGUgPT0gXCJlcnJcIil7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYoZGF0YS5jaXJjdWxhdGUpXHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguTm90aWZpY2F0aW9ucy5lbWl0KGNjLmZ4Lk1lc3NhZ2UubmV4dCxvcmRlcik7XHJcbiAgICAgICAgICAgIH0sIGRhdGEudGltZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGpnID0gdGhpcy5yZXBlYXRSb2FkKHRydWUpO1xyXG4gICAgICAgIGlmKGpnID09IHRydWUpIHJldHVybjtcclxuICAgICAgICB2YXIgdGFyZ2V0ID0gbnVsbDtcclxuICAgICAgICB2YXIgcHJvZ3Jlc3MgPSAxO1xyXG4gICAgICAgIHZhciB0aW1lID0gZGF0YS50aW1lO1xyXG4gICAgICAgIHZhciBvcmRlciA9IGRhdGEub3JkZXIgKyAxO1xyXG4gICAgICAgIHZhciByYW5kb20gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqNCArIDEpO1xyXG4gICAgICAgIHRhcmdldCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInZlcnRpY2FsMlwiKTtcclxuICAgICAgICBpZih0YXJnZXQubmFtZSA9PSBcInZlcnRpY2FsXCIpe1xyXG4gICAgICAgICAgICBsZXQgd2F0ZXIxID0gdGFyZ2V0LmdldENoaWxkQnlOYW1lKFwid2F2ZVwiKS5nZXRDaGlsZEJ5TmFtZShcIndhdGVyMVwiKTtcclxuICAgICAgICAgICAgbGV0IHdhdGVyMiA9IHRhcmdldC5nZXRDaGlsZEJ5TmFtZShcIndhdmVcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ3YXRlcjJcIik7XHJcbiAgICAgICAgICAgIGxldCB3YXRlcjMgPSB0YXJnZXQuZ2V0Q2hpbGRCeU5hbWUoXCJ3YXZlXCIpLmdldENoaWxkQnlOYW1lKFwid2F0ZXIzXCIpO1xyXG4gICAgICAgICAgICBsZXQgdGltZURlbGF5ID0gMC4xNTtcclxuICAgICAgICAgICAgd2F0ZXIxLnJ1bkFjdGlvbihjYy5zZXF1ZW5jZShjYy5tb3ZlVG8oMC42LGNjLnYyKHdhdGVyMS54LDEyMCkpLGNjLmRlbGF5VGltZSh0aW1lRGVsYXkpLFxyXG4gICAgICAgICAgICBjYy5jYWxsRnVuYygoKT0+e1xyXG4gICAgICAgICAgICAgICAgd2F0ZXIxLnkgPSAtMTIwXHJcbiAgICAgICAgICAgIH0pKS5yZXBlYXRGb3JldmVyKCkpO1xyXG4gICAgICAgICAgICB3YXRlcjIucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLm1vdmVUbygwLjYsY2MudjIod2F0ZXIyLngsMTIwKSksY2MuZGVsYXlUaW1lKHRpbWVEZWxheSksXHJcbiAgICAgICAgICAgIGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB3YXRlcjIueSA9IC0xMjBcclxuICAgICAgICAgICAgfSkpLnJlcGVhdEZvcmV2ZXIoKSk7XHJcbiAgICAgICAgICAgIHdhdGVyMy5ydW5BY3Rpb24oY2Muc2VxdWVuY2UoY2MubW92ZVRvKDAuNixjYy52Mih3YXRlcjMueCwxMjApKSxjYy5kZWxheVRpbWUodGltZURlbGF5KSxcclxuICAgICAgICAgICAgY2MuY2FsbEZ1bmMoKCk9PntcclxuICAgICAgICAgICAgICAgIHdhdGVyMy55ID0gLTEyMFxyXG4gICAgICAgICAgICB9KSkucmVwZWF0Rm9yZXZlcigpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBuYW1lID0gXCJhXCIgKyByYW5kb207XHJcbiAgICAgICAgaWYodGhpcy5ibG9ja19UeXBlICE9IGNjLkVudW0oQmxvY2tUeXBlKS5SZWluZm9yY2UpdGFyZ2V0LmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5VSVtcIl9zcHJpdGVGcmFtZXNcIl1bbmFtZV07XHJcblxyXG4gICAgICAgIGlmKHRhcmdldC5hY3RpdmUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIHRhcmdldCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImhvcml6b250YWwyXCIpO1xyXG4gICAgICAgICAgICBuYW1lID0gXCJiXCIgKyByYW5kb207XHJcbiAgICAgICAgICAgIGlmKHRoaXMuYmxvY2tfVHlwZSAhPSBjYy5FbnVtKEJsb2NrVHlwZSkuUmVpbmZvcmNlKSB0YXJnZXQuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLlVJW1wiX3Nwcml0ZUZyYW1lc1wiXVtuYW1lXTtcclxuICAgICAgICB9IFxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMucGF0aF9UeXBlLGRhdGEub3JkZXIpO1xyXG4gICAgICAgIGlmKHRoaXMucGF0aF9UeXBlID09IGNjLkVudW0oUGF0aFR5cGUpLnVwKXtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZih0aGlzLnBhdGhfVHlwZSA9PSBjYy5FbnVtKFBhdGhUeXBlKS5kb3duKXtcclxuICAgICAgICAgICAgdGFyZ2V0LmFuZ2xlID0gMTgwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMucGF0aF9UeXBlID09IGNjLkVudW0oUGF0aFR5cGUpLmxlZnQpe1xyXG4gICAgICAgICAgICB0YXJnZXQuYW5nbGUgPSA5MDtcclxuICAgICAgICAgICAgbmFtZSA9IFwiYlwiICsgcmFuZG9tO1xyXG4gICAgICAgICAgICBpZih0aGlzLmJsb2NrX1R5cGUgIT0gY2MuRW51bShCbG9ja1R5cGUpLlJlaW5mb3JjZSkgdGFyZ2V0LmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5VSVtcIl9zcHJpdGVGcmFtZXNcIl1bbmFtZV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodGhpcy5wYXRoX1R5cGUgPT0gY2MuRW51bShQYXRoVHlwZSkucmlnaHQpe1xyXG4gICAgICAgICAgICB0YXJnZXQuYW5nbGUgPSAyNzA7XHJcbiAgICAgICAgICAgIG5hbWUgPSBcImJcIiArIHJhbmRvbTtcclxuICAgICAgICAgICAgaWYodGhpcy5ibG9ja19UeXBlICE9IGNjLkVudW0oQmxvY2tUeXBlKS5SZWluZm9yY2UpIHRhcmdldC5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuVUlbXCJfc3ByaXRlRnJhbWVzXCJdW25hbWVdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0YXJnZXQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0dXJuMlwiKTtcclxuICAgICAgICAgICAgaWYodGFyZ2V0Lm5hbWUgPT0gXCJ0dXJuXCIpe1xyXG4gICAgICAgICAgICAgICAgbGV0IHdhdGVyID0gdGFyZ2V0LmdldENoaWxkQnlOYW1lKFwid2F2ZVwiKS5nZXRDaGlsZEJ5TmFtZShcIndhdGVyXCIpO1xyXG4gICAgICAgICAgICAgICAgd2F0ZXIub3BhY2l0eSA9IDBcclxuICAgICAgICAgICAgICAgIHdhdGVyLnJ1bkFjdGlvbihjYy5zZXF1ZW5jZShjYy5yb3RhdGVUbyg3LjIsLTEwODApLGNjLmRlbGF5VGltZSgwKSkucmVwZWF0Rm9yZXZlcigpKTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHdhdGVyLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICB9LCAyMDApO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAgIG5hbWUgPSBcImNcIiArIHJhbmRvbTtcclxuICAgICAgICAgICAgaWYodGhpcy5ibG9ja19UeXBlICE9IGNjLkVudW0oQmxvY2tUeXBlKS5SZWluZm9yY2UpdGFyZ2V0LmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5VSVtcIl9zcHJpdGVGcmFtZXNcIl1bbmFtZV07XHJcbiAgICAgICAgICAgIHByb2dyZXNzID0gMC4yNTtcclxuICAgICAgICAgICAgaWYodGhpcy5wYXRoX1R5cGUgPT0gY2MuRW51bShQYXRoVHlwZSkudXBfbGVmdCl7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2V0UG9zaXRpb24oLXRoaXMucG9zX1NoaWZ0aW5nLC10aGlzLnBvc19TaGlmdGluZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZih0aGlzLnBhdGhfVHlwZSA9PSBjYy5FbnVtKFBhdGhUeXBlKS51cF9yaWdodCl7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2NhbGVYID0gLTE7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2V0UG9zaXRpb24odGhpcy5wb3NfU2hpZnRpbmcsLXRoaXMucG9zX1NoaWZ0aW5nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHRoaXMucGF0aF9UeXBlID09IGNjLkVudW0oUGF0aFR5cGUpLmRvd25fbGVmdCl7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuYW5nbGUgPSAxODA7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2NhbGVYID0gLTE7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2V0UG9zaXRpb24oLXRoaXMucG9zX1NoaWZ0aW5nLHRoaXMucG9zX1NoaWZ0aW5nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHRoaXMucGF0aF9UeXBlID09IGNjLkVudW0oUGF0aFR5cGUpLmRvd25fcmlnaHQpe1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LmFuZ2xlID0gMTgwO1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNldFBvc2l0aW9uKHRoaXMucG9zX1NoaWZ0aW5nLHRoaXMucG9zX1NoaWZ0aW5nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHRoaXMucGF0aF9UeXBlID09IGNjLkVudW0oUGF0aFR5cGUpLmxlZnRfdXApe1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LmFuZ2xlID0gLTkwO1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNjYWxlWSA9IC0xO1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNldFBvc2l0aW9uKHRoaXMucG9zX1NoaWZ0aW5nLHRoaXMucG9zX1NoaWZ0aW5nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHRoaXMucGF0aF9UeXBlID09IGNjLkVudW0oUGF0aFR5cGUpLmxlZnRfZG93bil7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuYW5nbGUgPSA5MDtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5zZXRQb3NpdGlvbigtdGhpcy5wb3NfU2hpZnRpbmcsLXRoaXMucG9zX1NoaWZ0aW5nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHRoaXMucGF0aF9UeXBlID09IGNjLkVudW0oUGF0aFR5cGUpLnJpZ2h0X3VwKXtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5hbmdsZSA9IC05MDtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5zZXRQb3NpdGlvbigtdGhpcy5wb3NfU2hpZnRpbmcsdGhpcy5wb3NfU2hpZnRpbmcpO1xyXG4gICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYodGhpcy5wYXRoX1R5cGUgPT0gY2MuRW51bShQYXRoVHlwZSkucmlnaHRfZG93bil7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuYW5nbGUgPSAtOTA7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2NhbGVYID0gLTE7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2V0UG9zaXRpb24oLXRoaXMucG9zX1NoaWZ0aW5nLC10aGlzLnBvc19TaGlmdGluZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodGhpcy5wYXRoX1R5cGUgPT0gXCJSZWluZm9yY2VcIil7XHJcbiAgICAgICAgICAgIHRhcmdldCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlJlaW5mb3JjZVwiKTtcclxuICAgICAgICAgICAgaWYodGhpcy5ibG9ja19UeXBlICE9IGNjLkVudW0oQmxvY2tUeXBlKS5FbmQpdGhpcy5ibG9ja19UeXBlID0gY2MuRW51bShCbG9ja1R5cGUpLlJlaW5mb3JjZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidmVydGljYWwyXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5VSVtcIl9zcHJpdGVGcmFtZXNcIl1bXCJlMVwiXTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidHVybjJcIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLlVJW1wiX3Nwcml0ZUZyYW1lc1wiXVtcImUzXCJdO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJob3Jpem9udGFsMlwiKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuVUlbXCJfc3ByaXRlRnJhbWVzXCJdW1wiZTJcIl07XHJcbiAgICAgICAgICAgIHRhcmdldC5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0YXJnZXQub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgIHByb2dyZXNzID0gMTtcclxuICAgICAgICAgICAgY2MudHdlZW4odGFyZ2V0KVxyXG4gICAgICAgICAgICAudG8oY2MuZnguR2FtZUNvbmZpZy5USU1FX0lORk8uUmVpbmZvcmNlU3BlZWQse29wYWNpdHk6MjU1fSlcclxuICAgICAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgICAgICBpZihkYXRhLmNpcmN1bGF0ZSlcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5jaGFuZ2VNYXAsb3JkZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMuZW1pdChjYy5meC5NZXNzYWdlLm5leHQsb3JkZXIpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZih0aGlzLnBhdGhfVHlwZSA9PSBcIlhpX1NvaWxcIil7XHJcbiAgICAgICAgICAgIHRhcmdldC5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYodGhpcy5ibG9ja19UeXBlICE9IGNjLkVudW0oQmxvY2tUeXBlKS5FbmQgJiYgdGhpcy5ibG9ja19UeXBlICE9IGNjLkVudW0oQmxvY2tUeXBlKS5TdGFydClcclxuICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tfVHlwZSA9IGNjLkVudW0oQmxvY2tUeXBlKS5YaV9Tb2lsO1xyXG4gICAgICAgICAgICB0YXJnZXQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJYaV9Tb2lsXCIpOyBcclxuICAgICAgICAgICAgdGFyZ2V0LmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRhcmdldC5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgY2MudHdlZW4odGFyZ2V0KVxyXG4gICAgICAgICAgICAudG8oMC4wMSx7b3BhY2l0eToxfSlcclxuICAgICAgICAgICAgLnRvKDAuMDEse29wYWNpdHk6MH0pXHJcbiAgICAgICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICAgICAgaWYoZGF0YS5jaXJjdWxhdGUpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMuZW1pdChjYy5meC5NZXNzYWdlLm5leHQsb3JkZXIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMucGF0aF9UeXBlID09IFwiRW5kXCIpe1xyXG4gICAgICAgICAgICB0YXJnZXQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuYmxvY2tfVHlwZSAhPSBjYy5FbnVtKEJsb2NrVHlwZSkuRW5kICYmIHRoaXMuYmxvY2tfVHlwZSAhPSBjYy5FbnVtKEJsb2NrVHlwZSkuU3RhcnQpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX1R5cGUgPSBjYy5FbnVtKEJsb2NrVHlwZSkuWGlfU29pbDtcclxuICAgICAgICAgICAgbGV0IHBvc1RlbXAgPSBkYXRhLmxhc3Q7XHJcbiAgICAgICAgICAgIHZhciBkaXJlY3Rpb24gPSBcInVwXCI7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucG9zLnggLSBwb3NUZW1wLnggPj0gMSl7XHJcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSBcInJpZ2h0XCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZih0aGlzLnBvcy54IC0gcG9zVGVtcC54IDw9IC0xKXtcclxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IFwibGVmdFwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYodGhpcy5wb3MueSAtIHBvc1RlbXAueSA+PSAxKXtcclxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IFwiZG93blwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi57uT5p2f5pa55ZCROlwiLGRpcmVjdGlvbik7XHJcbiAgICAgICAgICAgIGlmKCF0aGlzLmZpbmlzaGkpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5maW5pc2hpID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0X1hpX1NvaWwoZGlyZWN0aW9uLHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRhcmdldC5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZih0aGlzLmJsb2NrX1R5cGUgIT0gY2MuRW51bShCbG9ja1R5cGUpLlhpX1NvaWwpe1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LmdldENvbXBvbmVudChjYy5TcHJpdGUpLmZpbGxSYW5nZSA9IDA7XHJcbiAgICAgICAgICAgICAgICBjYy50d2Vlbih0YXJnZXQuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkpXHJcbiAgICAgICAgICAgICAgICAudG8odGltZSx7ZmlsbFJhbmdlOnByb2dyZXNzfSlcclxuICAgICAgICAgICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGRhdGEuY2lyY3VsYXRlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5uZXh0LG9yZGVyKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0Lm9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LmdldENvbXBvbmVudChjYy5TcHJpdGUpLmZpbGxSYW5nZSA9IDE7XHJcbiAgICAgICAgICAgICAgICBjYy50d2Vlbih0YXJnZXQpXHJcbiAgICAgICAgICAgICAgICAudG8odGltZSx7b3BhY2l0eToyNTV9KVxyXG4gICAgICAgICAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZGF0YS5jaXJjdWxhdGUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMuZW1pdChjYy5meC5NZXNzYWdlLm5leHQsb3JkZXIpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcblxyXG4gICAgLy/mtKrls7DmiafooYxcclxuICAgIHJ1bldhdGVyKGRhdGEpe1xyXG4gICAgICAgIGlmKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIndhdGVyU3RhcnRcIikuYWN0aXZlID09IHRydWUgJiYgdGhpcy5ibG9ja19UeXBlID09IGNjLkVudW0oQmxvY2tUeXBlKS5TdGFydCl7XHJcbiAgICAgICAgICAgIC8vIHNwLmdldENoaWxkQnlOYW1lKFwid2F0ZXJTdGFydFwiKS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ3YXRlclN0YXJ0XCIpKVxyXG4gICAgICAgICAgICAudG8oMC4yLHtvcGFjaXR5OjI1NX0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIGlmKHRoaXMucGF0aF9UeXBlID09IFwiZXJyXCIpe1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmKGRhdGEuY2lyY3VsYXRlKVxyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMuZW1pdChjYy5meC5NZXNzYWdlLm5leHRXYXRlcixvcmRlcik7XHJcbiAgICAgICAgICAgIH0sIGRhdGEudGltZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy/lpoLmnpzlj4zlkJHpg73ljaDnlKjkuobov5jov5vmnaXlsLHnrpfmrbvkuoYtIFxyXG4gICAgICAgIGlmKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInZlcnRpY2FsXCIpLmFjdGl2ZSA9PSB0cnVlICYmIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImhvcml6b250YWxcIikuYWN0aXZlID09IHRydWUpe1xyXG4gICAgICAgICAgICAvLyBhbGVydChcIuayu+awtOWksei0pVwiKTtcclxuICAgICAgICAgICAgY2MuZnguTm90aWZpY2F0aW9ucy5lbWl0KGNjLmZ4Lk1lc3NhZ2Uuc2hvd1Jlc3VsdCxcImxvc2VcIik7XHJcbiAgICAgICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMuZW1pdChjYy5meC5NZXNzYWdlLnNldERhdGEsZmFsc2UpO1xyXG4gICAgICAgICAgICAvLyBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgaWYodGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidHVyblwiKS5hY3RpdmUgPT0gdHJ1ZSAmJiB0aGlzLmJsb2NrX1R5cGUgIT0gY2MuRW51bShCbG9ja1R5cGUpLlhpX1NvaWwpe1xyXG4gICAgICAgICAgICAvLyBhbGVydChcIuayu+awtOWksei0pVwiKTtcclxuICAgICAgICAgICAgY2MuZnguTm90aWZpY2F0aW9ucy5lbWl0KGNjLmZ4Lk1lc3NhZ2Uuc2hvd1Jlc3VsdCxcImxvc2VcIik7XHJcbiAgICAgICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMuZW1pdChjYy5meC5NZXNzYWdlLnNldERhdGEsZmFsc2UpO1xyXG4gICAgICAgICAgICAvLyBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHRhcmdldCA9IG51bGw7XHJcbiAgICAgICAgdmFyIHByb2dyZXNzID0gMTtcclxuICAgICAgICB2YXIgdGltZSA9IGRhdGEudGltZTtcclxuICAgICAgICB2YXIgb3JkZXIgPSBkYXRhLm9yZGVyICsgMTtcclxuICAgICAgICB2YXIgcmFuZG9tID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjQgKyAxKTtcclxuICAgICAgICB0YXJnZXQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ2ZXJ0aWNhbFwiKTtcclxuICAgICAgICBpZih0YXJnZXQubmFtZSA9PSBcInZlcnRpY2FsXCIpe1xyXG4gICAgICAgICAgICBsZXQgd2F0ZXIxID0gdGFyZ2V0LmdldENoaWxkQnlOYW1lKFwid2F2ZVwiKS5nZXRDaGlsZEJ5TmFtZShcIndhdGVyMVwiKTtcclxuICAgICAgICAgICAgbGV0IHdhdGVyMiA9IHRhcmdldC5nZXRDaGlsZEJ5TmFtZShcIndhdmVcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ3YXRlcjJcIik7XHJcbiAgICAgICAgICAgIGxldCB3YXRlcjMgPSB0YXJnZXQuZ2V0Q2hpbGRCeU5hbWUoXCJ3YXZlXCIpLmdldENoaWxkQnlOYW1lKFwid2F0ZXIzXCIpO1xyXG4gICAgICAgICAgICBsZXQgdGltZURlbGF5ID0gMC4xNTtcclxuICAgICAgICAgICAgd2F0ZXIxLnJ1bkFjdGlvbihjYy5zZXF1ZW5jZShjYy5tb3ZlVG8oMC42LGNjLnYyKHdhdGVyMS54LDEyMCkpLGNjLmRlbGF5VGltZSh0aW1lRGVsYXkpLFxyXG4gICAgICAgICAgICBjYy5jYWxsRnVuYygoKT0+e1xyXG4gICAgICAgICAgICAgICAgd2F0ZXIxLnkgPSAtMTIwXHJcbiAgICAgICAgICAgIH0pKS5yZXBlYXRGb3JldmVyKCkpO1xyXG4gICAgICAgICAgICB3YXRlcjIucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLm1vdmVUbygwLjYsY2MudjIod2F0ZXIyLngsMTIwKSksY2MuZGVsYXlUaW1lKHRpbWVEZWxheSksXHJcbiAgICAgICAgICAgIGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB3YXRlcjIueSA9IC0xMjBcclxuICAgICAgICAgICAgfSkpLnJlcGVhdEZvcmV2ZXIoKSk7XHJcbiAgICAgICAgICAgIHdhdGVyMy5ydW5BY3Rpb24oY2Muc2VxdWVuY2UoY2MubW92ZVRvKDAuNixjYy52Mih3YXRlcjMueCwxMjApKSxjYy5kZWxheVRpbWUodGltZURlbGF5KSxcclxuICAgICAgICAgICAgY2MuY2FsbEZ1bmMoKCk9PntcclxuICAgICAgICAgICAgICAgIHdhdGVyMy55ID0gLTEyMFxyXG4gICAgICAgICAgICB9KSkucmVwZWF0Rm9yZXZlcigpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBuYW1lID0gXCJhXCIgKyByYW5kb207XHJcbiAgICAgICAgLy8gaWYodGhpcy5ibG9ja19UeXBlICE9IGNjLkVudW0oQmxvY2tUeXBlKS5SZWluZm9yY2UpdGFyZ2V0LmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5VSVtcIl9zcHJpdGVGcmFtZXNcIl1bbmFtZV07XHJcblxyXG4gICAgICAgIGlmKHRhcmdldC5hY3RpdmUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIHRhcmdldCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImhvcml6b250YWxcIik7XHJcbiAgICAgICAgICAgIGxldCB3YXRlcjEgPSB0YXJnZXQuZ2V0Q2hpbGRCeU5hbWUoXCJ3YXZlXCIpLmdldENoaWxkQnlOYW1lKFwid2F0ZXIxXCIpO1xyXG4gICAgICAgICAgICBsZXQgd2F0ZXIyID0gdGFyZ2V0LmdldENoaWxkQnlOYW1lKFwid2F2ZVwiKS5nZXRDaGlsZEJ5TmFtZShcIndhdGVyMlwiKTtcclxuICAgICAgICAgICAgbGV0IHdhdGVyMyA9IHRhcmdldC5nZXRDaGlsZEJ5TmFtZShcIndhdmVcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ3YXRlcjNcIik7XHJcbiAgICAgICAgICAgIGxldCB0aW1lRGVsYXkgPSAwLjE1O1xyXG4gICAgICAgICAgICB3YXRlcjEucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLm1vdmVUbygwLjYsY2MudjIod2F0ZXIxLngsMTIwKSksY2MuZGVsYXlUaW1lKHRpbWVEZWxheSksXHJcbiAgICAgICAgICAgIGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB3YXRlcjEueSA9IC0xMjBcclxuICAgICAgICAgICAgfSkpLnJlcGVhdEZvcmV2ZXIoKSk7XHJcbiAgICAgICAgICAgIHdhdGVyMi5ydW5BY3Rpb24oY2Muc2VxdWVuY2UoY2MubW92ZVRvKDAuNixjYy52Mih3YXRlcjIueCwxMjApKSxjYy5kZWxheVRpbWUodGltZURlbGF5KSxcclxuICAgICAgICAgICAgY2MuY2FsbEZ1bmMoKCk9PntcclxuICAgICAgICAgICAgICAgIHdhdGVyMi55ID0gLTEyMFxyXG4gICAgICAgICAgICB9KSkucmVwZWF0Rm9yZXZlcigpKTtcclxuICAgICAgICAgICAgd2F0ZXIzLnJ1bkFjdGlvbihjYy5zZXF1ZW5jZShjYy5tb3ZlVG8oMC42LGNjLnYyKHdhdGVyMy54LDEyMCkpLGNjLmRlbGF5VGltZSh0aW1lRGVsYXkpLFxyXG4gICAgICAgICAgICBjYy5jYWxsRnVuYygoKT0+e1xyXG4gICAgICAgICAgICAgICAgd2F0ZXIzLnkgPSAtMTIwXHJcbiAgICAgICAgICAgIH0pKS5yZXBlYXRGb3JldmVyKCkpO1xyXG4gICAgICAgICAgICBuYW1lID0gXCJiXCIgKyByYW5kb207XHJcbiAgICAgICAgICAgIC8vaWYodGhpcy5ibG9ja19UeXBlICE9IGNjLkVudW0oQmxvY2tUeXBlKS5SZWluZm9yY2UpIHRhcmdldC5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuVUlbXCJfc3ByaXRlRnJhbWVzXCJdW25hbWVdO1xyXG4gICAgICAgIH0gXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5wYXRoX1R5cGUsZGF0YS5vcmRlcik7XHJcbiAgICAgICAgaWYodGhpcy5wYXRoX1R5cGUgPT0gY2MuRW51bShQYXRoVHlwZSkudXApe1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMucGF0aF9UeXBlID09IGNjLkVudW0oUGF0aFR5cGUpLmRvd24pe1xyXG4gICAgICAgICAgICB0YXJnZXQuYW5nbGUgPSAxODA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodGhpcy5wYXRoX1R5cGUgPT0gY2MuRW51bShQYXRoVHlwZSkubGVmdCl7XHJcbiAgICAgICAgICAgIHRhcmdldC5hbmdsZSA9IDkwO1xyXG4gICAgICAgICAgICBuYW1lID0gXCJiXCIgKyByYW5kb207XHJcbiAgICAgICAgICAgIC8vaWYodGhpcy5ibG9ja19UeXBlICE9IGNjLkVudW0oQmxvY2tUeXBlKS5SZWluZm9yY2UpIHRhcmdldC5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuVUlbXCJfc3ByaXRlRnJhbWVzXCJdW25hbWVdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMucGF0aF9UeXBlID09IGNjLkVudW0oUGF0aFR5cGUpLnJpZ2h0KXtcclxuICAgICAgICAgICAgdGFyZ2V0LmFuZ2xlID0gMjcwO1xyXG4gICAgICAgICAgICBuYW1lID0gXCJiXCIgKyByYW5kb207XHJcbiAgICAgICAgICAgIC8vaWYodGhpcy5ibG9ja19UeXBlICE9IGNjLkVudW0oQmxvY2tUeXBlKS5SZWluZm9yY2UpIHRhcmdldC5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuVUlbXCJfc3ByaXRlRnJhbWVzXCJdW25hbWVdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0YXJnZXQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0dXJuXCIpO1xyXG4gICAgICAgICAgICBpZih0YXJnZXQubmFtZSA9PSBcInR1cm5cIil7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2F0ZXIgPSB0YXJnZXQuZ2V0Q2hpbGRCeU5hbWUoXCJ3YXZlXCIpLmdldENoaWxkQnlOYW1lKFwid2F0ZXJcIik7XHJcbiAgICAgICAgICAgICAgICB3YXRlci5vcGFjaXR5ID0gMFxyXG4gICAgICAgICAgICAgICAgd2F0ZXIucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnJvdGF0ZVRvKDcuMiwtMTA4MCksY2MuZGVsYXlUaW1lKDApKS5yZXBlYXRGb3JldmVyKCkpO1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgd2F0ZXIub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbmFtZSA9IFwiY1wiICsgcmFuZG9tO1xyXG4gICAgICAgICAgICAvL2lmKHRoaXMuYmxvY2tfVHlwZSAhPSBjYy5FbnVtKEJsb2NrVHlwZSkuUmVpbmZvcmNlKXRhcmdldC5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuVUlbXCJfc3ByaXRlRnJhbWVzXCJdW25hbWVdO1xyXG4gICAgICAgICAgICBwcm9ncmVzcyA9IDAuMjU7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucGF0aF9UeXBlID09IGNjLkVudW0oUGF0aFR5cGUpLnVwX2xlZnQpe1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNldFBvc2l0aW9uKC10aGlzLnBvc19TaGlmdGluZywtdGhpcy5wb3NfU2hpZnRpbmcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYodGhpcy5wYXRoX1R5cGUgPT0gY2MuRW51bShQYXRoVHlwZSkudXBfcmlnaHQpe1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNjYWxlWCA9IC0xO1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNldFBvc2l0aW9uKHRoaXMucG9zX1NoaWZ0aW5nLC10aGlzLnBvc19TaGlmdGluZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZih0aGlzLnBhdGhfVHlwZSA9PSBjYy5FbnVtKFBhdGhUeXBlKS5kb3duX2xlZnQpe1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LmFuZ2xlID0gMTgwO1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNjYWxlWCA9IC0xO1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNldFBvc2l0aW9uKC10aGlzLnBvc19TaGlmdGluZyx0aGlzLnBvc19TaGlmdGluZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZih0aGlzLnBhdGhfVHlwZSA9PSBjYy5FbnVtKFBhdGhUeXBlKS5kb3duX3JpZ2h0KXtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5hbmdsZSA9IDE4MDtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5zZXRQb3NpdGlvbih0aGlzLnBvc19TaGlmdGluZyx0aGlzLnBvc19TaGlmdGluZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZih0aGlzLnBhdGhfVHlwZSA9PSBjYy5FbnVtKFBhdGhUeXBlKS5sZWZ0X3VwKXtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5hbmdsZSA9IC05MDtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5zY2FsZVkgPSAtMTtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5zZXRQb3NpdGlvbih0aGlzLnBvc19TaGlmdGluZyx0aGlzLnBvc19TaGlmdGluZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZih0aGlzLnBhdGhfVHlwZSA9PSBjYy5FbnVtKFBhdGhUeXBlKS5sZWZ0X2Rvd24pe1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LmFuZ2xlID0gOTA7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2V0UG9zaXRpb24oLXRoaXMucG9zX1NoaWZ0aW5nLC10aGlzLnBvc19TaGlmdGluZyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZih0aGlzLnBhdGhfVHlwZSA9PSBjYy5FbnVtKFBhdGhUeXBlKS5yaWdodF91cCl7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuYW5nbGUgPSAtOTA7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2V0UG9zaXRpb24oLXRoaXMucG9zX1NoaWZ0aW5nLHRoaXMucG9zX1NoaWZ0aW5nKTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHRoaXMucGF0aF9UeXBlID09IGNjLkVudW0oUGF0aFR5cGUpLnJpZ2h0X2Rvd24pe1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LmFuZ2xlID0gLTkwO1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNjYWxlWCA9IC0xO1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNldFBvc2l0aW9uKC10aGlzLnBvc19TaGlmdGluZywtdGhpcy5wb3NfU2hpZnRpbmcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGlmKHRoaXMucGF0aF9UeXBlID09IFwiUmVpbmZvcmNlXCIpe1xyXG4gICAgICAgIC8vICAgICB0YXJnZXQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJSZWluZm9yY2VcIik7XHJcbiAgICAgICAgLy8gICAgIHRoaXMuYmxvY2tfVHlwZSA9IGNjLkVudW0oQmxvY2tUeXBlKS5SZWluZm9yY2U7XHJcbiAgICAgICAgLy8gICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInZlcnRpY2FsXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5VSVtcIl9zcHJpdGVGcmFtZXNcIl1bXCJlMVwiXTtcclxuICAgICAgICAvLyAgICAgLy8gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidHVyblwiKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuVUlbXCJfc3ByaXRlRnJhbWVzXCJdW1wiZTNcIl07XHJcbiAgICAgICAgLy8gICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImhvcml6b250YWxcIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLlVJW1wiX3Nwcml0ZUZyYW1lc1wiXVtcImUyXCJdO1xyXG4gICAgICAgIC8vICAgICB0YXJnZXQuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAvLyAgICAgdGFyZ2V0Lm9wYWNpdHkgPSAwO1xyXG4gICAgICAgIC8vICAgICBwcm9ncmVzcyA9IDE7XHJcbiAgICAgICAgLy8gICAgIGNjLnR3ZWVuKHRhcmdldClcclxuICAgICAgICAvLyAgICAgLnRvKGNjLmZ4LkdhbWVDb25maWcuVElNRV9JTkZPLlJlaW5mb3JjZVNwZWVkLHtvcGFjaXR5OjI1NX0pXHJcbiAgICAgICAgLy8gICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgIC8vICAgICAgICAgaWYoZGF0YS5jaXJjdWxhdGUpXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgY2MuZnguTm90aWZpY2F0aW9ucy5lbWl0KGNjLmZ4Lk1lc3NhZ2UuY2hhbmdlTWFwLG9yZGVyKTtcclxuICAgICAgICAvLyAgICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5uZXh0V2F0ZXIsb3JkZXIpO1xyXG4gICAgICAgIC8vICAgICB9KVxyXG4gICAgICAgIC8vICAgICAuc3RhcnQoKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gZWxzZSBpZih0aGlzLnBhdGhfVHlwZSA9PSBcIlhpX1NvaWxcIil7XHJcbiAgICAgICAgLy8gICAgIHRhcmdldC5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAvLyAgICAgdGhpcy5ibG9ja19UeXBlID0gY2MuRW51bShCbG9ja1R5cGUpLlhpX1NvaWw7XHJcbiAgICAgICAgLy8gICAgIHRhcmdldCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlhpX1NvaWxcIik7IFxyXG4gICAgICAgIC8vICAgICB0YXJnZXQuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAvLyAgICAgdGFyZ2V0Lm9wYWNpdHkgPSAwO1xyXG4gICAgICAgIC8vICAgICBjYy50d2Vlbih0YXJnZXQpXHJcbiAgICAgICAgLy8gICAgIC50bygwLjAxLHtvcGFjaXR5OjF9KVxyXG4gICAgICAgIC8vICAgICAudG8oMC4wMSx7b3BhY2l0eTowfSlcclxuICAgICAgICAvLyAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgLy8gICAgICAgICBpZihkYXRhLmNpcmN1bGF0ZSl7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgY2MuZnguTm90aWZpY2F0aW9ucy5lbWl0KGNjLmZ4Lk1lc3NhZ2UubmV4dFdhdGVyLG9yZGVyKTtcclxuICAgICAgICAvLyAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAvLyAgICAgfSlcclxuICAgICAgICAvLyAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIGlmKHRoaXMucGF0aF9UeXBlID09IFwiRW5kXCIpe1xyXG4gICAgICAgICAgICB0YXJnZXQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuYmxvY2tfVHlwZSA9PSBjYy5FbnVtKEJsb2NrVHlwZSkuRW5kKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIndhdGVyU3RhcnRcIikuYWN0aXZlID09IHRydWUgJiYgdGhpcy5ibG9ja19UeXBlID09IGNjLkVudW0oQmxvY2tUeXBlKS5FbmQpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIndhdGVyU3RhcnRcIikpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRvKDAuMix7b3BhY2l0eToyNTV9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5jYWxsKCgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFsZXJ0KFwi5rK75rC05oiQ5YqfXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5zaG93UmVzdWx0LFwid2luXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5zZXREYXRhLHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsIDwgNyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgKz0gMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkdhbWVTY2VuZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIHRhcmdldCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkVuZFwiKTsgXHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5vcGFjaXR5ID0gMDtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zVGVtcCA9IGRhdGEubGFzdDtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMucG9zLnggLSBwb3NUZW1wLnggPj0gMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmFuZ2xlID0gLTkwO1xyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYodGhpcy5wb3MueCAtIHBvc1RlbXAueCA8PSAtMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmFuZ2xlID0gOTA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKHRoaXMucG9zLnkgLSBwb3NUZW1wLnkgPj0gMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmFuZ2xlID0gMTgwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHRhcmdldClcclxuICAgICAgICAgICAgICAgIC50bygwLjUse29wYWNpdHk6MjU1fSlcclxuICAgICAgICAgICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFsZXJ0KFwi5rK75rC05aSx6LSlXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguTm90aWZpY2F0aW9ucy5lbWl0KGNjLmZ4Lk1lc3NhZ2Uuc2hvd1Jlc3VsdCxcImxvc2VcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguTm90aWZpY2F0aW9ucy5lbWl0KGNjLmZ4Lk1lc3NhZ2Uuc2V0RGF0YSxmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGFyZ2V0LmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRhcmdldC5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5maWxsUmFuZ2UgPSAwO1xyXG4gICAgICAgICAgICBjYy50d2Vlbih0YXJnZXQuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkpXHJcbiAgICAgICAgICAgIC50byh0aW1lLHtmaWxsUmFuZ2U6cHJvZ3Jlc3N9KVxyXG4gICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgIGlmKGRhdGEuY2lyY3VsYXRlKVxyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMuZW1pdChjYy5meC5NZXNzYWdlLm5leHRXYXRlcixvcmRlcik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= //------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; }; NewClass.prototype.setPosition = function (tip) { tip.setPosition(30, -35); 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, -35 - 48 * posY); } }; NewClass.prototype.removeAllTip = function () { if (!this.canTouch) return; if (this.tipArray.length > 0) { 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"); } }; NewClass.prototype.back_Click = function () { if (!this.canTouch) return; if (this.tipArray.length > 0) { 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"); } }; //点击事件 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); } if (!this.canTouch) return; var prefab = this.tip; if (data == "reinforce" || data == "soil") { prefab = this[data]; } 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); cc.fx.Notifications.emit(cc.fx.Message.control, data); }; NewClass.prototype.start_Click = function () { if (!this.canTouch) return; this.canTouch = false; 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxDb250cm9sTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQStHQztRQTVHRyxTQUFHLEdBQVksSUFBSSxDQUFDO1FBRXBCLFNBQUcsR0FBYyxJQUFJLENBQUM7UUFFdEIsZUFBUyxHQUFjLElBQUksQ0FBQztRQUU1QixVQUFJLEdBQWMsSUFBSSxDQUFDOztRQXFHdkIsaUJBQWlCO0lBQ3JCLENBQUM7SUFoR0csd0JBQXdCO0lBRXhCLGVBQWU7SUFFZix3QkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUVELDhCQUFXLEdBQVgsVUFBWSxHQUFHO1FBQ1gsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QixJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUN4QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUM7WUFDcEMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLElBQUksSUFBSSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMs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OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld0NsYXNzIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIE1hcDogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuUHJlZmFiKVxyXG4gICAgdGlwOiBjYy5QcmVmYWIgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLlByZWZhYilcclxuICAgIHJlaW5mb3JjZTogY2MuUHJlZmFiID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5QcmVmYWIpXHJcbiAgICBzb2lsOiBjYy5QcmVmYWIgPSBudWxsO1xyXG4gICAgXHJcblxyXG4gICAgdGlwQXJyYXk6YW55O1xyXG4gICAgY29udHJvbEFycmF5OmFueTtcclxuICAgIGNhblRvdWNoOmJvb2xlYW47XHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgdGhpcy50aXBBcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMuY29udHJvbEFycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5jYW5Ub3VjaCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0UG9zaXRpb24odGlwKXtcclxuICAgICAgICB0aXAuc2V0UG9zaXRpb24oMzAsLTM1KTtcclxuICAgICAgICBpZih0aGlzLnRpcEFycmF5Lmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICBsZXQgbGVuZ3RoID0gdGhpcy50aXBBcnJheS5sZW5ndGgrMTtcclxuICAgICAgICAgICAgbGV0IHBvc1kgPSBNYXRoLmNlaWwobGVuZ3RoLzgpIC0gMTtcclxuICAgICAgICAgICAgbGV0IHBvc1ggPSBsZW5ndGggLSBNYXRoLmZsb29yKHBvc1kpKjggLSAxO1xyXG4gICAgICAgICAgICB0aXAuc2V0UG9zaXRpb24oMzAgKyA0OCpwb3NYLC0zNSAtNDgqcG9zWSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZUFsbFRpcCgpe1xyXG4gICAgICAgIGlmKCF0aGlzLmNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgaWYodGhpcy50aXBBcnJheS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy50aXBBcnJheS5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgIGxldCB0aXAgPSB0aGlzLnRpcEFycmF5W2ldO1xyXG4gICAgICAgICAgICAgICAgdGlwLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGlwLnJlbW92ZUZyb21QYXJlbnQodGhpcy5NYXApO1xyXG4gICAgICAgICAgICAgICAgdGlwID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnRpcEFycmF5ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbEFycmF5ID0gW107XHJcbiAgICAgICAgICAgIHZhciBkcmF3aW5nUmVzZXQgPSBjYy5meC5HYW1lQ29uZmlnLkNMSUNLX0RBVEEuZHJhd2luZ1Jlc2V0ICsgMTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5DTElDS19TRVQoXCJkcmF3aW5nUmVzZXRcIixkcmF3aW5nUmVzZXQpO1xyXG4gICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5yZW1vdmVUaXAsXCJyZW1vdmVcIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGJhY2tfQ2xpY2soKXtcclxuICAgICAgICBpZighdGhpcy5jYW5Ub3VjaCkgcmV0dXJuO1xyXG4gICAgICAgIGlmKHRoaXMudGlwQXJyYXkubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgIGxldCB0aXAgPSB0aGlzLnRpcEFycmF5W3RoaXMudGlwQXJyYXkubGVuZ3RoLTFdO1xyXG4gICAgICAgICAgICB0aXAuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRpcC5yZW1vdmVGcm9tUGFyZW50KHRoaXMuTWFwKTtcclxuICAgICAgICAgICAgdGlwID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy50aXBBcnJheS5wb3AoKTtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sQXJyYXkucG9wKCk7XHJcbiAgICAgICAgICAgIHZhciBkcmF3aW5nQmFjayA9IGNjLmZ4LkdhbWVDb25maWcuQ0xJQ0tfREFUQS5kcmF3aW5nQmFjayArIDE7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuQ0xJQ0tfU0VUKFwiZHJhd2luZ0JhY2tcIixkcmF3aW5nQmFjayk7XHJcbiAgICAgICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMuZW1pdChjYy5meC5NZXNzYWdlLnJlbW92ZVRpcCxcImJhY2tcIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v54K55Ye75LqL5Lu2XHJcbiAgICBidG5fQ2xpY2sodGFyZ2V0LGRhdGEpe1xyXG4gICAgICAgIHZhciBHYW1lTWFuYWdlciA9IHRoaXMubm9kZS5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiR2FtZU1hbmFnZXJcIik7XHJcbiAgICAgICAgaWYoR2FtZU1hbmFnZXIuYnRuQ2xpY2sgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIEdhbWVNYW5hZ2VyLmJ0bkNsaWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMuZW1pdChjYy5meC5NZXNzYWdlLmd1aWRlTmV4dCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZighdGhpcy5jYW5Ub3VjaCkgcmV0dXJuO1xyXG4gICAgICAgIGxldCBwcmVmYWIgPSB0aGlzLnRpcDtcclxuICAgICAgICBpZihkYXRhID09IFwicmVpbmZvcmNlXCIgfHwgZGF0YSA9PSBcInNvaWxcIil7XHJcbiAgICAgICAgICAgIHByZWZhYiA9IHRoaXNbZGF0YV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB0aXAgPSBjYy5pbnN0YW50aWF0ZShwcmVmYWIpO1xyXG4gICAgICAgIGlmKGRhdGEgPT0gXCJ1cFwiKSB0aXAuYW5nbGUgPSAxODA7XHJcbiAgICAgICAgaWYoZGF0YSA9PSBcImxlZnRcIikgdGlwLmFuZ2xlID0gLTkwO1xyXG4gICAgICAgIGlmKGRhdGEgPT0gXCJyaWdodFwiKSB0aXAuYW5nbGUgPSA5MDtcclxuICAgICAgICB0aXAucGFyZW50ID0gdGhpcy5NYXA7XHJcbiAgICBcclxuICAgICAgICBpZih0aGlzLmNvbnRyb2xBcnJheVt0aGlzLmNvbnRyb2xBcnJheS5sZW5ndGgtMV0gPT0gXCJyZWluZm9yY2VcIiB8fCBcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sQXJyYXlbdGhpcy5jb250cm9sQXJyYXkubGVuZ3RoLTFdID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgICAgIGlmKGRhdGEgPT0gXCJyZWluZm9yY2VcIiB8fCBkYXRhID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpcEFycmF5W3RoaXMudGlwQXJyYXkubGVuZ3RoLTFdLnJlbW92ZUZyb21QYXJlbnQoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpcEFycmF5W3RoaXMudGlwQXJyYXkubGVuZ3RoLTFdID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpcEFycmF5LnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbEFycmF5LnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldFBvc2l0aW9uKHRpcCk7XHJcblxyXG4gICAgICAgIHRoaXMudGlwQXJyYXkucHVzaCh0aXApO1xyXG4gICAgICAgIHRoaXMuY29udHJvbEFycmF5LnB1c2goZGF0YSk7XHJcbiAgICAgICAgY2MuZnguTm90aWZpY2F0aW9ucy5lbWl0KGNjLmZ4Lk1lc3NhZ2UuY29udHJvbCxkYXRhKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgc3RhcnRfQ2xpY2soKXtcclxuICAgICAgICBpZighdGhpcy5jYW5Ub3VjaCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuY2FuVG91Y2ggPSBmYWxzZTtcclxuXHJcbiAgICAgICAgY2MuZnguTm90aWZpY2F0aW9ucy5lbWl0KGNjLmZ4Lk1lc3NhZ2Uuc3RhcnRHYW1lLHRoaXMuY29udHJvbEFycmF5KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== //------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/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.baishao_audio = null; _this.cha_audio = null; _this.chixiaodou_audio = null; _this.danggui_audio = null; _this.danshen_audio = null; _this.dazao_audio = null; _this.gancao_audio = null; _this.ganjiang_audio = null; _this.gouqi_audio = null; _this.jingjie_audio = null; _this.jinju_audio = null; _this.lizhi_audio = null; _this.lizi_audio = null; _this.longyan_audio = null; _this.moli_audio = null; _this.muchai_audio = null; _this.mudan_audio = null; _this.mulan_audio = null; _this.pugongying_audio = null; _this.putao_audio = null; _this.renshen_audio = null; _this.taozi_audio = null; _this.zhuye_audio = null; _this.err = null; _this.yes = 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); 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 (this[name]) return this.play(this[name], false, callback, this.mEffectSwitch); }; AudioManager.prototype.playMusic = function (key, callback, loop) { loop = typeof loop == 'undefined' || loop ? true : false; this.stopMusic(); this.mMusicKey = this.play(key, loop, callback, true); }; /** * 游戏背景音乐 */ AudioManager.prototype.playMusicGame = function () { this.playMusic(this.audioGameBgm0, {}, true); }; /** * 停止背景音乐播放 */ AudioManager.prototype.stopMusic = function () { // cc.wwx.OutPut.log('stopMusic audio effect wx: ' + this.mMusicKey); var context = this.mAudioMap[this.mMusicKey]; if (typeof (context) != 'undefined') { if (cc.sys.isBrowser) { cc.audioEngine.stop(context); } else { context.stop(); } cc.audioEngine.stop(context); } }; /* * 游戏开始音效 * */ 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, "baishao_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "cha_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "chixiaodou_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "danggui_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "danshen_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "dazao_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "gancao_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "ganjiang_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "gouqi_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "jingjie_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "jinju_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "lizhi_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "lizi_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "longyan_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "moli_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "muchai_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "mudan_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "mulan_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "pugongying_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "putao_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "renshen_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "taozi_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "zhuye_audio", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "err", void 0); __decorate([ property(cc.AudioClip) ], AudioManager.prototype, "yes", 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXE11c2ljXFxBdWRpb01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRU0sSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFFMUM7SUFBMEMsZ0NBQVk7SUFBdEQ7UUFBQSxxRUEyUUM7UUF6UUcsTUFBTTtRQUVOLG1CQUFhLEdBQWlCLElBQUksQ0FBQztRQUduQyxtQkFBYSxHQUFpQixJQUFJLENBQUM7UUFFbkMsZUFBUyxHQUFpQixJQUFJLENBQUM7UUFFL0Isc0JBQWdCLEdBQWlCLElBQUksQ0FBQztRQUV0QyxtQkFBYSxHQUFpQixJQUFJLENBQUM7UUFFbkMsbUJBQWEsR0FBaUIsSUFBSSxDQUFDO1FBRW5DLGlCQUFXLEdBQWlCLElBQUksQ0FBQztRQUVqQyxrQkFBWSxHQUFpQixJQUFJLENBQUM7UUFFbEMsb0JBQWMsR0FBaUIsSUFBSSxDQUFDO1FBRXBDLGlCQUFXLEdBQWlCLElBQUksQ0FBQztRQUVqQyxtQkFBYSxHQUFpQixJQUFJLENBQUM7UUFFbkMsaUJBQVcsR0FBaUIsSUFBSSxDQUFDO1FBRWpDLGlCQUFXLEdBQWlCLElBQUksQ0FBQztRQUVqQyxnQkFBVSxHQUFpQixJQUFJLENBQUM7UUFFaEMsbUJBQWEsR0FBaUIsSUFBSSxDQUFDO1FBRW5DLGdCQUFVLEdBQWlCLElBQUksQ0FBQztRQUVoQyxrQkFBWSxHQUFpQixJQUFJLENBQUM7UUFFbEMsaUJBQVcsR0FBaUIsSUFBSSxDQUFDO1FBRWpDLGlCQUFXLEdBQWlCLElBQUksQ0FBQztRQUVqQyxzQkFBZ0IsR0FBaUIsSUFBSSxDQUFDO1FBRXRDLGlCQUFXLEdBQWlCLElBQUksQ0FBQztRQUVqQyxtQkFBYSxHQUFpQixJQUFJLENBQUM7UUFFbkMsaUJBQVcsR0FBaUIsSUFBSSxDQUFDO1FBRWpDLGlC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UUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0RBQ1M7SUFFaEM7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQztzREFDVztJQUVsQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO3FEQUNVO0lBRWpDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7cURBQ1U7SUFFakM7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQzswREFDZTtJQUV0QztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO3FEQUNVO0lBRWpDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7dURBQ1k7SUFFbkM7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQztxREFDVTtJQUVqQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO3FEQUNVO0lBRWpDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7NkNBQ0U7SUFFekI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQzs2Q0FDRTtJQXZEUixZQUFZO1FBRGhDLE9BQU87T0FDYSxZQUFZLENBMlFoQztJQUFELG1CQUFDO0NBM1FELEFBMlFDLENBM1F5QyxFQUFFLENBQUMsU0FBUyxHQTJRckQ7a0JBM1FvQixZQUFZO0FBMlFoQyxDQUFDO0FBRUYsMkJBQTJCIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiXG5cbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xuQGNjY2xhc3NcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF1ZGlvTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XG4gICAgc3RhdGljIF9pbnN0YW5jZTogYW55O1xuICAgIC8v6IOM5pmv6Z+z5LmQXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBhdWRpb0dhbWVCZ20wOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBiYWlzaGFvX2F1ZGlvOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgY2hhX2F1ZGlvOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgY2hpeGlhb2RvdV9hdWRpbzogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIGRhbmdndWlfYXVkaW86IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBkYW5zaGVuX2F1ZGlvOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgZGF6YW9fYXVkaW86IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBnYW5jYW9fYXVkaW86IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBnYW5qaWFuZ19hdWRpbzogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIGdvdXFpX2F1ZGlvOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgamluZ2ppZV9hdWRpbzogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIGppbmp1X2F1ZGlvOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgbGl6aGlfYXVkaW86IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBsaXppX2F1ZGlvOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgbG9uZ3lhbl9hdWRpbzogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIG1vbGlfYXVkaW86IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBtdWNoYWlfYXVkaW86IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBtdWRhbl9hdWRpbzogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIG11bGFuX2F1ZGlvOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgcHVnb25neWluZ19hdWRpbzogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIHB1dGFvX2F1ZGlvOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgcmVuc2hlbl9hdWRpbzogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIHRhb3ppX2F1ZGlvOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgemh1eWVfYXVkaW86IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBlcnI6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICB5ZXM6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG5cblxuICAgIG1BdWRpb01hcDoge307XG4gICAgYmdNdXNpY1ZvbHVtZTogbnVtYmVyO1xuICAgIGVmZmVjdE11c2ljVm9sdW1lOiBudW1iZXI7XG4gICAgbU11c2ljU3dpdGNoOiBudW1iZXI7XG4gICAgbUVmZmVjdFN3aXRjaDogbnVtYmVyO1xuICAgIGJyaWNrU291bmQ6IGFueTtcbiAgICByZXdhcmQ6IGJvb2xlYW47XG4gICAgZmluaXNoOiBib29sZWFuO1xuICAgIHJld2FyZENvdW50OiBudW1iZXI7XG4gICAgbU11c2ljS2V5OiBhbnk7XG5cbiAgICBvbkxvYWQoKSB7XG4gICAgICAgIGlmIChBdWRpb01hbmFnZXIuX2luc3RhbmNlID09IG51bGwpIHtcbiAgICAgICAgICAgIEF1ZGlvTWFuYWdlci5faW5zdGFuY2UgPSB0aGlzO1xuICAgICAgICAgICAgY2MuZ2FtZS5hZGRQZXJzaXN0Um9vdE5vZGUodGhpcy5ub2RlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJld2FyZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZpbmlzaCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJld2FyZENvdW50ID0gMDtcbiAgICAgICAgdGhpcy5jdG9yKCk7XG5cbiAgICAgICAgdGhpcy5wcmVsb2FkKCk7XG4gICAgfVxuXG4gICAgY3RvciAoKSB7XG4gICAgICAgIHRoaXMubUF1ZGlvTWFwID0ge307XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDpu5jorqTpn7Pph4/lpKflsI9cbiAgICAgICAgICogQHR5cGUge251bWJlcn1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuYmdNdXNpY1ZvbHVtZSA9IDAuMTtcbiAgICAgICAgdGhpcy5lZmZlY3RNdXNpY1ZvbHVtZSA9IDE7XG5cbiAgICAgICAgdGhpcy5tTXVzaWNTd2l0Y2ggPSAxO1xuICAgICAgICB0aGlzLm1FZmZlY3RTd2l0Y2ggPSAxO1xuICAgIH1cbiAgICBwbGF5IChhdWRpb1NvdXJjZSwgbG9vcCwgY2FsbGJhY2ssIGlzQmdNdXNpYykge1xuICAgICAgICAvLyBpZiAoaXNCZ011c2ljICYmICF0aGlzLm1NdXNpY1N3aXRjaCkgcmV0dXJuO1xuICAgICAgICAvLyBpZiAoIWlzQmdNdXNpYyAmJiAhdGhpcy5tRWZmZWN0U3dpdGNoKSByZXR1cm47XG4gICAgICAgIHZhciB2b2x1bWUgPSBpc0JnTXVzaWMgPyB0aGlzLmJnTXVzaWNWb2x1bWUgOiB0aGlzLmVmZmVjdE11c2ljVm9sdW1lO1xuXG4gICAgICAgIC8vIGlmIChjYy5zeXMuaXNCcm93c2VyKSB7XG4gICAgICAgICAgICAvLyBpZihhdWRpb1NvdXJjZSA9PSB0aGlzLmJyaWNrU291bmQpe1xuICAgICAgICAgICAgLy8gICAgIHZvbHVtZSA9IDAuMTtcbiAgICAgICAgICAgIC8vIH0gXG4gICAgICAgICAgICB2b2x1bWUgPSAxO1xuICAgICAgICAgICAgY2MuYXVkaW9FbmdpbmUuc2V0RWZmZWN0c1ZvbHVtZSgxKTtcbiAgICAgICAgICAgIGNjLmF1ZGlvRW5naW5lLnNldE11c2ljVm9sdW1lKDEpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICB2YXIgY29udGV4dCA9IGNjLmF1ZGlvRW5naW5lLnBsYXlFZmZlY3QoYXVkaW9Tb3VyY2UsIGxvb3ApO1xuICAgICAgICAgICAgaWYgKGNhbGxiYWNrKXtcbiAgICAgICAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zZXRGaW5pc2hDYWxsYmFjayhjb250ZXh0LCBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBjYy53d3guT3V0UHV0LmxvZygncGxheSBhdWRpbyBlZmZlY3QgaXNCcm93c2VyOiAnICsgY29udGV4dC5zcmMpO1xuXG4gICAgICAgICAgICB0aGlzLm1BdWRpb01hcFthdWRpb1NvdXJjZV0gPSBjb250ZXh0O1xuICAgICAgICAgICAgcmV0dXJuIGF1ZGlvU291cmNlO1xuICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgcmV0dXJuIGF1ZGlvU291cmNlO1xuICAgICAgICAvLyB9XG4gICAgfVxuXG4gICAgc2F2ZSAoKSB7XG4gICAgICAgIC8vIGNjLnd3eC5TdG9yYWdlLnNldEl0ZW0oY2Mud3d4LlN0b3JhZ2UuS2V5X1NldHRpbmdfTXVzaWNfVm9sdW1lLCB0aGlzLm1NdXNpY1N3aXRjaCk7XG4gICAgICAgIC8vIGNjLnd3eC5TdG9yYWdlLnNldEl0ZW0oY2Mud3d4LlN0b3JhZ2UuS2V5X1NldHRpbmdfRWZmZWN0X1ZvbHVtZSwgdGhpcy5tRWZmZWN0U3dpdGNoKTtcbiAgICB9XG5cbiAgICAvLyBzdGF0aWMgZ2V0IEluc3RhbmNlKClcbiAgICAvLyB7XG4gICAgLy8gICAgIGlmICh0aGlzLl9pbnN0YW5jZSA9PSBudWxsKVxuICAgIC8vICAgICB7XG4gICAgLy8gICAgICAgICB0aGlzLl9pbnN0YW5jZSA9IG5ldyBBdWRpb01hbmFnZXIoKTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2U7XG4gICAgLy8gfVxuXG4gICAgcHJlbG9hZCAoKSB7XG4gICAgICAgIGlmICghKGNjLnN5cy5wbGF0Zm9ybSA9PT0gY2Muc3lzLldFQ0hBVF9HQU1FKSkgeyByZXR1cm47IH1cblxuICAgICAgICB2YXIgbXVzaWNzID0gW1xuICAgICAgICAgICAgdGhpcy5hdWRpb0dhbWVCZ20wLFxuICAgICAgICBdO1xuICAgICAgICBtdXNpY3MuZm9yRWFjaChmdW5jdGlvbihwYXRoKSB7XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZ2V0QXVkaW9NdXNpY1N3aXRjaCgpXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5tTXVzaWNTd2l0Y2g7XG5cbiAgICB9XG4gICAgZ2V0QXVkaW9FZmZlY3RTd2l0Y2goKVxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubUVmZmVjdFN3aXRjaDtcbiAgICB9XG4gICAgdHJ1bkF1ZGlvU291bmQob24pXG4gICAge1xuICAgICAgICB0aGlzLnN3aXRjaE11c2ljKG9uKTtcbiAgICAgICAgdGhpcy5zd2l0Y2hFZmZlY3Qob24pXG4gICAgfVxuICAgIHN3aXRjaE11c2ljIChvbikge1xuICAgICAgICBpZiAodGhpcy5tTXVzaWNTd2l0Y2ggIT0gKG9uPzE6MCkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRoaXMubU11c2ljU3dpdGNoID0gMS10aGlzLm1NdXNpY1N3aXRjaDtcbiAgICAgICAgICAgIC8vIHRoaXMuc2F2ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmKG9uKVxuICAgICAgICB7XG4gICAgICAgICAgICB0aGlzLnBsYXlNdXNpY0dhbWUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcE11c2ljKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3dpdGNoRWZmZWN0IChvbikge1xuICAgICAgICBpZiAodGhpcy5tRWZmZWN0U3dpdGNoICE9IChvbj8xOjApKXtcbiAgICAgICAgICAgIHRoaXMubUVmZmVjdFN3aXRjaCA9IDEtdGhpcy5tRWZmZWN0U3dpdGNoO1xuICAgICAgICAgICAgLy8gdGhpcy5zYXZlKCk7XG5cbiAgICAgICAgfVxuICAgIH1cbiAgICBvbkhpZGUgKCkge1xuICAgICAgICBjYy5hdWRpb0VuZ2luZS5wYXVzZUFsbCgpO1xuICAgIH1cblxuICAgIG9uU2hvdyAoKSB7XG4gICAgICAgIGNjLmF1ZGlvRW5naW5lLnJlc3VtZUFsbCgpO1xuICAgIH1cblxuICAgIC8v5pKt5pS+6Z+z5pWIXG4gICAgcGxheUVmZmVjdChuYW1lLGNhbGxiYWNrKXtcbiAgICAgICAgaWYodGhpc1tuYW1lXSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBsYXkodGhpc1tuYW1lXSwgZmFsc2UsY2FsbGJhY2ssdGhpcy5tRWZmZWN0U3dpdGNoKTtcbiAgICB9XG4gICAgcGxheU11c2ljIChrZXksIGNhbGxiYWNrLCBsb29wKSB7XG4gICAgICAgIGxvb3AgPSB0eXBlb2YgbG9vcCA9PSAndW5kZWZpbmVkJyAgfHwgbG9vcCA/IHRydWUgOiBmYWxzZTtcbiAgICAgICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICAgICAgdGhpcy5tTXVzaWNLZXkgPSB0aGlzLnBsYXkoa2V5LCBsb29wLCBjYWxsYmFjaywgdHJ1ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOa4uOaIj+iDjOaZr+mfs+S5kFxuICAgICAqL1xuICAgIHBsYXlNdXNpY0dhbWUgKCkge1xuICAgICAgICB0aGlzLnBsYXlNdXNpYyh0aGlzLmF1ZGlvR2FtZUJnbTAse30sdHJ1ZSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOWBnOatouiDjOaZr+mfs+S5kOaSreaUvlxuICAgICAqL1xuICAgIHN0b3BNdXNpYyAoKSB7XG4gICAgICAgIC8vIGNjLnd3eC5PdXRQdXQubG9nKCdzdG9wTXVzaWMgYXVkaW8gZWZmZWN0IHd4OiAnICsgdGhpcy5tTXVzaWNLZXkpO1xuXG4gICAgICAgIHZhciBjb250ZXh0ID0gdGhpcy5tQXVkaW9NYXBbdGhpcy5tTXVzaWNLZXldO1xuXG4gICAgICAgIGlmICh0eXBlb2YoY29udGV4dCkgIT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGlmIChjYy5zeXMuaXNCcm93c2VyKSB7XG4gICAgICAgICAgICAgICAgY2MuYXVkaW9FbmdpbmUuc3RvcChjb250ZXh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zdG9wKGNvbnRleHQpO1xuXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKlxuICAgICog5ri45oiP5byA5aeL6Z+z5pWIXG4gICAgKlxuICAgICovXG4gICAgcGxheUdhbWVTdGFydCgpXG4gICAge1xuICAgIFxuICAgIH1cbiAgICAvKlxuICAgICog5aSx6LSl55qE5ri45oiP57uT5p2fXG4gICAgKi9cbiAgICBwbGF5R2FtZU92ZXIoKVxuICAgIHtcblxuICAgIH1cbiAgICAvKlxuICAgICAgICAqIOaIkOWKn+eahOa4uOaIj+e7k+adn1xuICAgICAgICAqL1xuICAgIHBsYXlHYW1lUmVzdWx0RmFpbGVkKClcbiAgICB7XG5cbiAgICB9XG4gICAgLypcbiAgICAqIOaIkOWKn+eahOa4uOaIj+e7k+adn1xuICAgICovXG4gICAgcGxheUdhbWVSZXN1bHRTdWNjZXNzKClcbiAgICB7XG5cbiAgICB9XG4gICAgLyoqXG4gICAgICog5oql6K2m55qE6Z+z5pWIXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiDmjInpkq5cbiAgICAgKi9cbiAgICBwbGF5QXVkaW9CdXR0b24gKCkge1xuICAgICAgICAvLyByZXR1cm4gdGhpcy5wbGF5KHRoaXMuYXVkaW9CdXR0b25DbGljaywgZmFsc2UsbnVsbCx0aGlzLm1FZmZlY3RTd2l0Y2gpO1xuICAgIH1cbn07XG5cbi8vIGV4cG9ydCB7IEF1ZGlvTWFuYWdlciB9O1xuIl19 //------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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vT2JqZWN0R3JvdXAuanMiXSwibmFtZXMiOlsiVG1vU3ByaXRlIiwicmVxdWlyZSIsImNjIiwiQ2xhc3MiLCJUaWxlZE9iamVjdEdyb3VwIiwiX2luaXQiLCJncm91cEluZm8iLCJtYXBJbmZvIiwidGV4R3JpZHMiLCJ0aWxlZE1hcCIsIlRpbGVkTWFwIiwiVE1YT2JqZWN0VHlwZSIsIk9yaWVudGF0aW9uIiwiU3RhZ2dlckF4aXMiLCJUaWxlRmxhZyIsIkZMSVBQRURfTUFTSyIsIkZMQUdfSE9SSVpPTlRBTCIsIkhPUklaT05UQUwiLCJGTEFHX1ZFUlRJQ0FMIiwiVkVSVElDQUwiLCJfZ3JvdXBOYW1lIiwibmFtZSIsIl9wb3NpdGlvbk9mZnNldCIsIm9mZnNldCIsIl9tYXBJbmZvIiwiX3Byb3BlcnRpZXMiLCJnZXRQcm9wZXJ0aWVzIiwiX29mZnNldCIsInYyIiwieCIsInkiLCJfb3BhY2l0eSIsIm1hcFNpemUiLCJfbWFwU2l6ZSIsInRpbGVTaXplIiwiX3RpbGVTaXplIiwid2lkdGgiLCJoZWlnaHQiLCJvcmllbnRhdGlvbiIsIkhFWCIsImdldFN0YWdnZXJBeGlzIiwiU1RBR0dFUkFYSVNfWCIsImdldEhleFNpZGVMZW5ndGgiLCJNYXRoIiwiZmxvb3IiLCJJU08iLCJ3aCIsIm5vZGUiLCJzZXRDb250ZW50U2l6ZSIsImxlZnRUb3BYIiwiYW5jaG9yWCIsImxlZnRUb3BZIiwiYW5jaG9yWSIsIm9iamVjdHMiLCJfb2JqZWN0cyIsImFsaXZlTm9kZXMiLCJ0ZXh0dXJlSW5kZXhNYXAiLCJNYXAiLCJvYmplY3RUZXh0dXJlcyIsImdldE9iamVjdFRleHR1cmVzIiwiZm9yRWFjaCIsInRleHR1cmUiLCJpZHgiLCJzZXQiLCJpIiwibCIsImxlbmd0aCIsIm9iamVjdCIsIm9ialR5cGUiLCJ0eXBlIiwicG9pbnRzIiwicG9seWxpbmVQb2ludHMiLCJwaSIsInBvc0lkeFgiLCJwb3NJZHhZIiwiVEVYVCIsInRleHROYW1lIiwiaWQiLCJ0ZXh0Tm9kZSIsImdldENoaWxkQnlOYW1lIiwiTm9kZSIsImFjdGl2ZSIsInZpc2libGUiLCJhbmdsZSIsInJvdGF0aW9uIiwicGFyZW50IiwiY29sb3IiLCJvcGFjaXR5Iiwic2V0U2libGluZ0luZGV4IiwibGFiZWwiLCJnZXRDb21wb25lbnQiLCJMYWJlbCIsImFkZENvbXBvbmVudCIsIm92ZXJmbG93IiwiT3ZlcmZsb3ciLCJTSFJJTksiLCJsaW5lSGVpZ2h0Iiwic3RyaW5nIiwidGV4dCIsImhvcml6b250YWxBbGlnbiIsImhhbGlnbiIsInZlcnRpY2FsQWxpZ24iLCJ2YWxpZ24iLCJmb250U2l6ZSIsInBpeGVsc2l6ZSIsIklNQUdFIiwiZ2lkIiwiZ3JpZCIsInRpbGVzZXQiLCJpbWdOYW1lIiwiaW1nTm9kZSIsImltZ1dpZHRoIiwiaW1nSGVpZ2h0IiwidGlsZU9mZnNldFgiLCJ0aWxlT2Zmc2V0IiwidGlsZU9mZnNldFkiLCJQcml2YXRlTm9kZSIsInJlbW92ZUZyb21QYXJlbnQiLCJkZXN0cm95IiwiX3RpbGVkTWFwIiwic3AiLCJzcGYiLCJzcHJpdGVGcmFtZSIsIlNwcml0ZUZyYW1lIiwic2V0RmxpcFgiLCJzZXRGbGlwWSIsInNvdXJjZUltYWdlIiwic2V0VGV4dHVyZSIsInJlY3QiLCJzZXRWZXJ0c0RpcnR5IiwiaGFzIiwicHVzaCIsInRleHR1cmVJbmRleCIsImdldCIsInNldFRleHR1cmVJZHgiLCJjaGlsZHJlbiIsInVzZWxlc3NFeHAiLCJuIiwiYyIsImNOYW1lIiwiX25hbWUiLCJpc1VzZWxlc3MiLCJ0ZXN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLElBQU1BLFNBQVMsR0FBR0MsT0FBTyxDQUFDLGFBQUQsQ0FBekI7O2VBRWVDLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTO0FBQ3BCLGFBQVNELEVBQUUsQ0FBQ0UsZ0JBRFE7QUFH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QyxFQUFpRDtBQUM3QyxVQUFJMEUsQ0FBQyxHQUFHSCxRQUFRLENBQUN2RSxFQUFELENBQWhCO0FBQ0EsVUFBSTJFLEtBQUssR0FBR0QsQ0FBQyxDQUFDRSxLQUFkO0FBQ0EsVUFBSUMsU0FBUyxHQUFHTCxVQUFVLENBQUNNLElBQVgsQ0FBZ0JILEtBQWhCLENBQWhCO0FBQ0EsVUFBSUUsU0FBUyxJQUFJLENBQUN0RixVQUFVLENBQUNvRixLQUFELENBQTVCLEVBQXFDRCxDQUFDLENBQUNwQixPQUFGO0FBQ3hDO0FBRUo7QUEvTW1CLENBQVQiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIGNjLkNsYXNzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9jbGFzcy5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuY29uc3QgVG1vU3ByaXRlID0gcmVxdWlyZShcIi4vVG1vU3ByaXRlXCIpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2MuQ2xhc3Moe1xyXG4gICAgZXh0ZW5kczogY2MuVGlsZWRPYmplY3RHcm91cCxcclxuXHJcbiAgICBfaW5pdChncm91cEluZm8sIG1hcEluZm8sIHRleEdyaWRzLCB0aWxlZE1hcCkge1xyXG4gICAgICAgIGNvbnN0IFRpbGVkTWFwID0gY2MuVGlsZWRNYXA7XHJcbiAgICAgICAgY29uc3QgVE1YT2JqZWN0VHlwZSA9IFRpbGVkTWFwLlRNWE9iamVjdFR5cGU7XHJcbiAgICAgICAgY29uc3QgT3JpZW50YXRpb24gPSBUaWxlZE1hcC5PcmllbnRhdGlvbjtcclxuICAgICAgICBjb25zdCBTdGFnZ2VyQXhpcyA9IFRpbGVkTWFwLlN0YWdnZXJBeGlzO1xyXG4gICAgICAgIGNvbnN0IFRpbGVGbGFnID0gVGlsZWRNYXAuVGlsZUZsYWc7XHJcbiAgICAgICAgY29uc3QgRkxJUFBFRF9NQVNLID0gVGlsZUZsYWcuRkxJUFBFRF9NQVNLO1xyXG4gICAgICAgIGNvbnN0IEZMQUdfSE9SSVpPTlRBTCA9IFRpbGVGbGFnLkhPUklaT05UQUw7XHJcbiAgICAgICAgY29uc3QgRkxBR19WRVJUSUNBTCA9IFRpbGVGbGFnLlZFUlRJQ0FMO1xyXG5cclxuICAgICAgICB0aGlzLl9ncm91cE5hbWUgPSBncm91cEluZm8ubmFtZTtcclxuICAgICAgICB0aGlzLl9wb3NpdGlvbk9mZnNldCA9IGdyb3VwSW5mby5vZmZzZXQ7XHJcbiAgICAgICAgdGhpcy5fbWFwSW5mbyA9IG1hcEluZm87XHJcbiAgICAgICAgdGhpcy5fcHJvcGVydGllcyA9IGdyb3VwSW5mby5nZXRQcm9wZXJ0aWVzKCk7XHJcbiAgICAgICAgdGhpcy5fb2Zmc2V0ID0gY2MudjIoZ3JvdXBJbmZvLm9mZnNldC54LCAtZ3JvdXBJbmZvLm9mZnNldC55KTtcclxuICAgICAgICB0aGlzLl9vcGFjaXR5ID0gZ3JvdXBJbmZvLl9vcGFjaXR5O1xyXG5cclxuICAgICAgICBsZXQgbWFwU2l6ZSA9IG1hcEluZm8uX21hcFNpemU7XHJcbiAgICAgICAgbGV0IHRpbGVTaXplID0gbWFwSW5mby5fdGlsZVNpemU7XHJcbiAgICAgICAgbGV0IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDtcclxuICAgICAgICBpZiAobWFwSW5mby5vcmllbnRhdGlvbiA9PT0gT3JpZW50YXRpb24uSEVYKSB7XHJcbiAgICAgICAgICAgIGlmIChtYXBJbmZvLmdldFN0YWdnZXJBeGlzKCkgPT09IFN0YWdnZXJBeGlzLlNUQUdHRVJBWElTX1gpIHtcclxuICAgICAgICAgICAgICAgIGhlaWdodCA9IHRpbGVTaXplLmhlaWdodCAqIChtYXBTaXplLmhlaWdodCArIDAuNSk7XHJcbiAgICAgICAgICAgICAgICB3aWR0aCA9ICh0aWxlU2l6ZS53aWR0aCArIG1hcEluZm8uZ2V0SGV4U2lkZUxlbmd0aCgpKSAqIE1hdGguZmxvb3IobWFwU2l6ZS53aWR0aCAvIDIpICsgdGlsZVNpemUud2lkdGggKiAobWFwU2l6ZS53aWR0aCAlIDIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgd2lkdGggPSB0aWxlU2l6ZS53aWR0aCAqIChtYXBTaXplLndpZHRoICsgMC41KTtcclxuICAgICAgICAgICAgICAgIGhlaWdodCA9ICh0aWxlU2l6ZS5oZWlnaHQgKyBtYXBJbmZvLmdldEhleFNpZGVMZW5ndGgoKSkgKiBNYXRoLmZsb29yKG1hcFNpemUuaGVpZ2h0IC8gMikgKyB0aWxlU2l6ZS5oZWlnaHQgKiAobWFwU2l6ZS5oZWlnaHQgJSAyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAobWFwSW5mby5vcmllbnRhdGlvbiA9PT0gT3JpZW50YXRpb24uSVNPKSB7XHJcbiAgICAgICAgICAgIGxldCB3aCA9IG1hcFNpemUud2lkdGggKyBtYXBTaXplLmhlaWdodDtcclxuICAgICAgICAgICAgd2lkdGggPSB0aWxlU2l6ZS53aWR0aCAqIDAuNSAqIHdoO1xyXG4gICAgICAgICAgICBoZWlnaHQgPSB0aWxlU2l6ZS5oZWlnaHQgKiAwLjUgKiB3aDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB3aWR0aCA9IG1hcFNpemUud2lkdGggKiB0aWxlU2l6ZS53aWR0aDtcclxuICAgICAgICAgICAgaGVpZ2h0ID0gbWFwU2l6ZS5oZWlnaHQgKiB0aWxlU2l6ZS5oZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZS5zZXRDb250ZW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxuXHJcbiAgICAgICAgbGV0IGxlZnRUb3BYID0gd2lkdGggKiB0aGlzLm5vZGUuYW5jaG9yWDtcclxuICAgICAgICBsZXQgbGVmdFRvcFkgPSBoZWlnaHQgKiAoMSAtIHRoaXMubm9kZS5hbmNob3JZKTtcclxuXHJcbiAgICAgICAgbGV0IG9iamVjdHMgPSBncm91cEluZm8uX29iamVjdHM7XHJcbiAgICAgICAgbGV0IGFsaXZlTm9kZXMgPSB7fTtcclxuXHJcbiAgICAgICAgLy8g55Sf5oiQ5pig5bCETWFwICAgeyBUZXh0dXJlMkQ6IHRleHR1cmVJbmRleCB9XHJcbiAgICAgICAgbGV0IHRleHR1cmVJbmRleE1hcCA9IG5ldyBNYXAoKTtcclxuICAgICAgICBsZXQgb2JqZWN0VGV4dHVyZXMgPSB0aWxlZE1hcC5nZXRPYmplY3RUZXh0dXJlcygpO1xyXG4gICAgICAgIG9iamVjdFRleHR1cmVzLmZvckVhY2goKHRleHR1cmUsIGlkeCkgPT4gdGV4dHVyZUluZGV4TWFwLnNldCh0ZXh0dXJlLCBpZHgpKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBvYmplY3RzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgb2JqZWN0ID0gb2JqZWN0c1tpXTtcclxuICAgICAgICAgICAgbGV0IG9ialR5cGUgPSBvYmplY3QudHlwZTtcclxuICAgICAgICAgICAgb2JqZWN0Lm9mZnNldCA9IGNjLnYyKG9iamVjdC54LCBvYmplY3QueSk7XHJcblxyXG4gICAgICAgICAgICBsZXQgcG9pbnRzID0gb2JqZWN0LnBvaW50cyB8fCBvYmplY3QucG9seWxpbmVQb2ludHM7XHJcbiAgICAgICAgICAgIGlmIChwb2ludHMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IHBpID0gMDsgcGkgPCBwb2ludHMubGVuZ3RoOyBwaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzW3BpXS55ICo9IC0xO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoT3JpZW50YXRpb24uSVNPICE9PSBtYXBJbmZvLm9yaWVudGF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBvYmplY3QueSA9IGhlaWdodCAtIG9iamVjdC55O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvc0lkeFggPSBvYmplY3QueCAvIHRpbGVTaXplLmhlaWdodDtcclxuICAgICAgICAgICAgICAgIGxldCBwb3NJZHhZID0gb2JqZWN0LnkgLyB0aWxlU2l6ZS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICBvYmplY3QueCA9IHRpbGVTaXplLndpZHRoICogMC41ICogKG1hcFNpemUuaGVpZ2h0ICsgcG9zSWR4WCAtIHBvc0lkeFkpO1xyXG4gICAgICAgICAgICAgICAgb2JqZWN0LnkgPSB0aWxlU2l6ZS5oZWlnaHQgKiAwLjUgKiAobWFwU2l6ZS53aWR0aCArIG1hcFNpemUuaGVpZ2h0IC0gcG9zSWR4WCAtIHBvc0lkeFkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAob2JqVHlwZSA9PT0gVE1YT2JqZWN0VHlwZS5URVhUKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGV4dE5hbWUgPSBcInRleHRcIiArIG9iamVjdC5pZDtcclxuICAgICAgICAgICAgICAgIGFsaXZlTm9kZXNbdGV4dE5hbWVdID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgdGV4dE5vZGUgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUodGV4dE5hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0ZXh0Tm9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRleHROb2RlID0gbmV3IGNjLk5vZGUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0ZXh0Tm9kZS5hY3RpdmUgPSBvYmplY3QudmlzaWJsZTtcclxuICAgICAgICAgICAgICAgIHRleHROb2RlLmFuY2hvclggPSAwO1xyXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUuYW5jaG9yWSA9IDE7XHJcbiAgICAgICAgICAgICAgICB0ZXh0Tm9kZS5hbmdsZSA9IC1vYmplY3Qucm90YXRpb247XHJcbiAgICAgICAgICAgICAgICB0ZXh0Tm9kZS54ID0gb2JqZWN0LnggLSBsZWZ0VG9wWDtcclxuICAgICAgICAgICAgICAgIHRleHROb2RlLnkgPSBvYmplY3QueSAtIGxlZnRUb3BZO1xyXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUubmFtZSA9IHRleHROYW1lO1xyXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUuY29sb3IgPSBvYmplY3QuY29sb3I7XHJcbiAgICAgICAgICAgICAgICB0ZXh0Tm9kZS5vcGFjaXR5ID0gdGhpcy5fb3BhY2l0eTtcclxuICAgICAgICAgICAgICAgIHRleHROb2RlLnNldFNpYmxpbmdJbmRleChpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgbGFiZWwgPSB0ZXh0Tm9kZS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFsYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gdGV4dE5vZGUuYWRkQ29tcG9uZW50KGNjLkxhYmVsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBsYWJlbC5vdmVyZmxvdyA9IGNjLkxhYmVsLk92ZXJmbG93LlNIUklOSztcclxuICAgICAgICAgICAgICAgIGxhYmVsLmxpbmVIZWlnaHQgPSBvYmplY3QuaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgbGFiZWwuc3RyaW5nID0gb2JqZWN0LnRleHQ7XHJcbiAgICAgICAgICAgICAgICBsYWJlbC5ob3Jpem9udGFsQWxpZ24gPSBvYmplY3QuaGFsaWduO1xyXG4gICAgICAgICAgICAgICAgbGFiZWwudmVydGljYWxBbGlnbiA9IG9iamVjdC52YWxpZ247XHJcbiAgICAgICAgICAgICAgICBsYWJlbC5mb250U2l6ZSA9IG9iamVjdC5waXhlbHNpemU7XHJcblxyXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUud2lkdGggPSBvYmplY3Qud2lkdGg7XHJcbiAgICAgICAgICAgICAgICB0ZXh0Tm9kZS5oZWlnaHQgPSBvYmplY3QuaGVpZ2h0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAob2JqVHlwZSA9PT0gVE1YT2JqZWN0VHlwZS5JTUFHRSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGdpZCA9IG9iamVjdC5naWQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgZ3JpZCA9IHRleEdyaWRzWyhnaWQgJiBGTElQUEVEX01BU0spID4+PiAwXTtcclxuICAgICAgICAgICAgICAgIGlmICghZ3JpZCkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGlsZXNldCA9IGdyaWQudGlsZXNldDtcclxuICAgICAgICAgICAgICAgIGxldCBpbWdOYW1lID0gXCJpbWdcIiArIG9iamVjdC5pZDtcclxuICAgICAgICAgICAgICAgIGFsaXZlTm9kZXNbaW1nTmFtZV0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgbGV0IGltZ05vZGUgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoaW1nTmFtZSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgaW1nV2lkdGggPSBvYmplY3Qud2lkdGggfHwgZ3JpZC53aWR0aDtcclxuICAgICAgICAgICAgICAgIGxldCBpbWdIZWlnaHQgPSBvYmplY3QuaGVpZ2h0IHx8IGdyaWQuaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgbGV0IHRpbGVPZmZzZXRYID0gdGlsZXNldC50aWxlT2Zmc2V0Lng7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGlsZU9mZnNldFkgPSB0aWxlc2V0LnRpbGVPZmZzZXQueTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBEZWxldGUgaW1hZ2Ugbm9kZXMgaW1wbGVtZW50ZWQgYXMgcHJpdmF0ZSBub2Rlc1xyXG4gICAgICAgICAgICAgICAgLy8gVXNlIGNjLk5vZGUgdG8gaW1wbGVtZW50IG5vZGUtbGV2ZWwgcmVxdWlyZW1lbnRzXHJcbiAgICAgICAgICAgICAgICBpZiAoaW1nTm9kZSBpbnN0YW5jZW9mIGNjLlByaXZhdGVOb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZS5yZW1vdmVGcm9tUGFyZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCFpbWdOb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZSA9IG5ldyBjYy5Ob2RlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKE9yaWVudGF0aW9uLklTTyA9PSBtYXBJbmZvLm9yaWVudGF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZS5hbmNob3JYID0gMC41ICsgdGlsZU9mZnNldFggLyBpbWdXaWR0aDtcclxuICAgICAgICAgICAgICAgICAgICBpbWdOb2RlLmFuY2hvclkgPSB0aWxlT2Zmc2V0WSAvIGltZ0hlaWdodDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZS5hbmNob3JYID0gdGlsZU9mZnNldFggLyBpbWdXaWR0aDtcclxuICAgICAgICAgICAgICAgICAgICBpbWdOb2RlLmFuY2hvclkgPSB0aWxlT2Zmc2V0WSAvIGltZ0hlaWdodDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGltZ05vZGUuYWN0aXZlID0gb2JqZWN0LnZpc2libGU7XHJcbiAgICAgICAgICAgICAgICBpbWdOb2RlLmFuZ2xlID0gLW9iamVjdC5yb3RhdGlvbjtcclxuICAgICAgICAgICAgICAgIGltZ05vZGUueCA9IG9iamVjdC54IC0gbGVmdFRvcFg7XHJcbiAgICAgICAgICAgICAgICBpbWdOb2RlLnkgPSBvYmplY3QueSAtIGxlZnRUb3BZO1xyXG4gICAgICAgICAgICAgICAgaW1nTm9kZS5uYW1lID0gaW1nTmFtZTtcclxuICAgICAgICAgICAgICAgIGltZ05vZGUucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgaW1nTm9kZS5vcGFjaXR5ID0gdGhpcy5fb3BhY2l0eTtcclxuICAgICAgICAgICAgICAgIGltZ05vZGUuc2V0U2libGluZ0luZGV4KGkpO1xyXG4gICAgICAgICAgICAgICAgaW1nTm9kZS5fdGlsZWRNYXAgPSB0aWxlZE1hcDtcclxuXHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHNwID0gaW1nTm9kZS5nZXRDb21wb25lbnQoVG1vU3ByaXRlKTtcclxuICAgICAgICAgICAgICAgIGlmICghc3ApIHtcclxuICAgICAgICAgICAgICAgICAgICBzcCA9IGltZ05vZGUuYWRkQ29tcG9uZW50KFRtb1Nwcml0ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgc3BmID0gc3Auc3ByaXRlRnJhbWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXNwZikge1xyXG4gICAgICAgICAgICAgICAgICAgIHNwZiA9IG5ldyBjYy5TcHJpdGVGcmFtZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICgoZ2lkICYgRkxBR19IT1JJWk9OVEFMKSA+Pj4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNwZi5zZXRGbGlwWCh0cnVlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3BmLnNldEZsaXBYKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoKGdpZCAmIEZMQUdfVkVSVElDQUwpID4+PiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3BmLnNldEZsaXBZKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBzcGYuc2V0RmxpcFkoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBzb3VyY2VJbWFnZSA9IGdyaWQudGlsZXNldC5zb3VyY2VJbWFnZTtcclxuICAgICAgICAgICAgICAgIHNwZi5zZXRUZXh0dXJlKHNvdXJjZUltYWdlLCBjYy5yZWN0KGdyaWQpKTtcclxuICAgICAgICAgICAgICAgIHNwLnNwcml0ZUZyYW1lID0gc3BmO1xyXG4gICAgICAgICAgICAgICAgc3Auc2V0VmVydHNEaXJ0eSgpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIG9iamVjdCBncm91cCBtYXkgaGFzIG5vIHdpZHRoIG9yIGhlaWdodCBpbmZvXHJcbiAgICAgICAgICAgICAgICBpbWdOb2RlLndpZHRoID0gaW1nV2lkdGg7XHJcbiAgICAgICAgICAgICAgICBpbWdOb2RlLmhlaWdodCA9IGltZ0hlaWdodDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyDmlLbpm4blm77pm4Yg5pu05pawdGV4dHVyZUluZGV4TWFwXHJcbiAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmVJbmRleE1hcC5oYXMoc291cmNlSW1hZ2UpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUluZGV4TWFwLnNldChzb3VyY2VJbWFnZSwgb2JqZWN0VGV4dHVyZXMubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgICBvYmplY3RUZXh0dXJlcy5wdXNoKHNvdXJjZUltYWdlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyDorr7nva50ZXh0dXJlSW5kZXhcclxuICAgICAgICAgICAgICAgIGxldCB0ZXh0dXJlSW5kZXggPSB0ZXh0dXJlSW5kZXhNYXAuZ2V0KHNvdXJjZUltYWdlKTtcclxuICAgICAgICAgICAgICAgIHNwLnNldFRleHR1cmVJZHgodGV4dHVyZUluZGV4ICsgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fb2JqZWN0cyA9IG9iamVjdHM7XHJcblxyXG5cclxuICAgICAgICAvLyBkZXN0cm95IHVzZWxlc3Mgbm9kZVxyXG4gICAgICAgIGxldCBjaGlsZHJlbiA9IHRoaXMubm9kZS5jaGlsZHJlbjtcclxuICAgICAgICBsZXQgdXNlbGVzc0V4cCA9IC9eKD86aW1nfHRleHQpXFxkKyQvO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBuID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBjID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgIGxldCBjTmFtZSA9IGMuX25hbWU7XHJcbiAgICAgICAgICAgIGxldCBpc1VzZWxlc3MgPSB1c2VsZXNzRXhwLnRlc3QoY05hbWUpO1xyXG4gICAgICAgICAgICBpZiAoaXNVc2VsZXNzICYmICFhbGl2ZU5vZGVzW2NOYW1lXSkgYy5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxufSk7XHJcbiJdfQ== //------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 "use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.WeChat = void 0; var shareConfig = { gameId: "100010", shareLine: "zDLsruVI", EK: "hui231%1" }; // 微信操作类 var WeChat = /** @class */ (function () { function WeChat() { } WeChat.setShare = function (url) { var urlTemp = this.removeQueryParams(url); shareConfig.shareLine = urlTemp; WeChat.getSignature(url); }; WeChat.getResult = function (res) { if (res) { var data = res.data; wx.config({ debug: false, appId: data.appId, timestamp: data.timestamp, nonceStr: data.nonceStr, signature: data.signature, jsApiList: ['onMenuShareTimeline', 'updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareAppMessage'] }); wx.checkJsApi({ jsApiList: ['updateAppMessageShareData'], success: function (res) { setTimeout(function () { WeChat.changeShare(); }, 100); setTimeout(function () { WeChat.changeShare(); }, 200); } }); } }; WeChat.changeShare = function () { wx.ready(function () { wx.updateAppMessageShareData({ title: '记忆力认知测评', desc: '你的认知灵活性和选择注意有问题吗', link: shareConfig.shareLine, imgUrl: 'https://static.sparkus.cn/public/shennong.jpg', success: function () { // 设置成功 console.log("分享好友成功回调"); } }); wx.updateTimelineShareData({ title: '记忆力认知测评', link: shareConfig.shareLine, imgUrl: 'https://static.sparkus.cn/public/shennong.jpg', success: function () { // 设置成功 console.log("分享朋友圈成功回调"); } }); }); }; WeChat.getSignature = function (url) { return new Promise(function (resolve) { WeChat.getShareInfo((encodeURIComponent(url)), WeChat.getResult); }); }; WeChat.getShareInfo = function (shareUrl, callback) { return __awaiter(this, void 0, Promise, function () { var time, url; return __generator(this, function (_a) { time = Math.floor((new Date().getTime()) / 1000); url = cc.fx.HttpUtil.apiSign("/api/share/cfg?gameId=" + shareConfig.gameId + "&time=" + time + "&url=" + shareUrl, {}); return [2 /*return*/, cc.fx.HttpUtil.get(url, callback)]; }); }); }; WeChat.containsNanana = function (str) { return /test/i.test(str); }; WeChat.removeQueryParams = function (url) { return url.replace(/\?.*$/, ''); }; return WeChat; }()); exports.WeChat = WeChat; 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFNoYXJlXFxzaGFyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFJLFdBQVcsR0FBRztJQUNkLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLFNBQVMsRUFBRSxVQUFVO0lBQ3JCLEVBQUUsRUFBQyxVQUFVO0NBQ2QsQ0FBQztBQVdKLFFBQVE7QUFDUjtJQUFBO0lBNEVBLENBQUM7SUEzRVUsZUFBUSxHQUFmLFVBQWdCLEdBQUc7UUFDZixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7UUFDaEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sZ0JBQVMsR0FBaEIsVUFBaUIsR0FBRztRQUNoQixJQUFHLEdBQUcsRUFBQztZQUNILElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDcEIsRUFBRSxDQUFDLE1BQU0sQ0FBQztnQkFDTixLQUFLLEVBQUUsS0FBSztnQkFDWixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDekIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7Z0JBQ3pCLFNBQVMsRUFBRSxDQUFDLHFCQUFxQixFQUFDLDJCQUEyQixFQUFFLHlCQUF5QixFQUFFLHVCQUF1QixDQUFDO2FBQ3JILENBQUMsQ0FBQztZQUNILEVBQUUsQ0FBQyxVQUFVLENBQUM7Z0JBQ1YsU0FBUyxFQUFFLENBQUMsMkJBQTJCLENBQUM7Z0JBQ3hDLE9BQU8sRUFBRSxVQUFTLEdBQUc7b0JBQ2pCLFVBQVUsQ0FBQzt3QkFDUCxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3pCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDUixVQUFVLENBQUM7d0JBQ1AsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUN6QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ1osQ0FBQzthQUNKLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztJQUVNLGtCQUFXLEdBQWxCO1FBQ0ksRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNMLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztnQkFDekIsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLElBQUksRUFBRSxrQkFBa0I7Z0JBQ3hCLElBQUksRUFBRSxXQUFXLENBQUMsU0FBUztnQkFDM0IsTUFBTSxFQUFFLCtDQUErQztnQkFDdkQsT0FBTyxFQUFFO29CQUNQLE9BQU87b0JBQ1AsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDMUIsQ0FBQzthQUNKLENBQUMsQ0FBQztZQUNILEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztnQkFDdkIsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLElBQUksRUFBRSxXQUFXLENBQUMsU0FBUztnQkFDM0IsTUFBTSxFQUFFLCtDQUErQztnQkFDdkQsT0FBTyxFQUFFO29CQUNQLE9BQU87b0JBQ1AsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDM0IsQ0FBQzthQUNGLENBQUMsQ0FBQTtRQUNSLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLG1CQUFZLEdBQW5CLFVBQW9CLEdBQVc7UUFDM0IsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFDLE9BQU87WUFDdkIsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNZLG1CQUFZLEdBQXpCLFVBQTBCLFFBQWdCLEVBQUUsUUFBaUI7dUNBQUcsT0FBTzs7O2dCQUM3RCxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtnQkFDaEQsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQywyQkFBeUIsV0FBVyxDQUFDLE1BQU0sY0FBUyxJQUFJLGFBQVEsUUFBVSxFQUFDLEVBQUUsQ0FBQyxDQUFBO2dCQUNqSCxzQkFBTyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFDLFFBQVEsQ0FBQyxFQUFBOzs7S0FDMUM7SUFHTSxxQkFBYyxHQUFyQixVQUFzQixHQUFHO1FBQ3JCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sd0JBQWlCLEdBQXhCLFVBQXlCLEdBQUc7UUFDeEIsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUwsYUFBQztBQUFELENBNUVBLEFBNEVDLElBQUE7QUE1RVksd0JBQU0iLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJcblxudmFyIHNoYXJlQ29uZmlnID0ge1xuICAgIGdhbWVJZDogXCIxMDAwMTBcIixcbiAgICBzaGFyZUxpbmU6IFwiekRMc3J1VklcIixcbiAgICBFSzpcImh1aTIzMSUxXCJcbiAgfTtcblxuLy8g5a6a5LmJ5b6u5L+h6YWN572u5pWw5o2u55qE5o6l5Y+jXG5pbnRlcmZhY2UgSVdlQ2hhdENvbmZpZyB7XG4gICAgYXBwSWQ6IHN0cmluZztcbiAgICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgICBub25jZVN0cjogc3RyaW5nO1xuICAgIHNpZ25hdHVyZTogc3RyaW5nO1xuICAgIGpzQXBpTGlzdDogW107XG59XG5cbi8vIOW+ruS/oeaTjeS9nOexu1xuZXhwb3J0IGNsYXNzIFdlQ2hhdCB7XG4gICAgc3RhdGljIHNldFNoYXJlKHVybCkge1xuICAgICAgICB2YXIgdXJsVGVtcCA9IHRoaXMucmVtb3ZlUXVlcnlQYXJhbXModXJsKTtcbiAgICAgICAgc2hhcmVDb25maWcuc2hhcmVMaW5lID0gdXJsVGVtcDtcbiAgICAgICAgV2VDaGF0LmdldFNpZ25hdHVyZSh1cmwpO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRSZXN1bHQocmVzKXtcbiAgICAgICAgaWYocmVzKXtcbiAgICAgICAgICAgIHZhciBkYXRhID0gcmVzLmRhdGE7XG4gICAgICAgICAgICB3eC5jb25maWcoe1xuICAgICAgICAgICAgICAgIGRlYnVnOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBhcHBJZDogZGF0YS5hcHBJZCxcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGRhdGEudGltZXN0YW1wLFxuICAgICAgICAgICAgICAgIG5vbmNlU3RyOiBkYXRhLm5vbmNlU3RyLFxuICAgICAgICAgICAgICAgIHNpZ25hdHVyZTogZGF0YS5zaWduYXR1cmUsXG4gICAgICAgICAgICAgICAganNBcGlMaXN0OiBbJ29uTWVudVNoYXJlVGltZWxpbmUnLCd1cGRhdGVBcHBNZXNzYWdlU2hhcmVEYXRhJywgJ3VwZGF0ZVRpbWVsaW5lU2hhcmVEYXRhJywgJ29uTWVudVNoYXJlQXBwTWVzc2FnZSddXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHd4LmNoZWNrSnNBcGkoe1xuICAgICAgICAgICAgICAgIGpzQXBpTGlzdDogWyd1cGRhdGVBcHBNZXNzYWdlU2hhcmVEYXRhJ10sIC8vIOmcgOimgeajgOa1i+eahEpT5o6l5Y+j5YiX6KGo77yM5omA5pyJSlPmjqXlj6PliJfooajop4HpmYTlvZUyLFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgIFxuICAgICAgICAgICAgICAgICAgICAgICAgV2VDaGF0LmNoYW5nZVNoYXJlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgV2VDaGF0LmNoYW5nZVNoYXJlKCk7XG4gICAgICAgICAgICAgICAgICAgIH0sIDIwMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgY2hhbmdlU2hhcmUoKXtcbiAgICAgICAgd3gucmVhZHkoKCkgPT4ge1xuICAgICAgICAgICAgd3gudXBkYXRlQXBwTWVzc2FnZVNoYXJlRGF0YSh7IFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn6K6w5b+G5Yqb6K6k55+l5rWL6K+EJywgLy8g5YiG5Lqr5qCH6aKYXG4gICAgICAgICAgICAgICAgZGVzYzogJ+S9oOeahOiupOefpeeBtea0u+aAp+WSjOmAieaLqeazqOaEj+aciemXrumimOWQlycsIC8vIOWIhuS6q+aPj+i/sFxuICAgICAgICAgICAgICAgIGxpbms6IHNoYXJlQ29uZmlnLnNoYXJlTGluZSwgLy8g5YiG5Lqr6ZO+5o6l77yM6K+l6ZO+5o6l5Z+f5ZCN5oiW6Lev5b6E5b+F6aG75LiO5b2T5YmN6aG16Z2i5a+55bqU55qE5YWs5LyX5Y+3SlPlronlhajln5/lkI3kuIDoh7RcbiAgICAgICAgICAgICAgICBpbWdVcmw6ICdodHRwczovL3N0YXRpYy5zcGFya3VzLmNuL3B1YmxpYy9zaGVubm9uZy5qcGcnLCAvLyDliIbkuqvlm77moIdcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAvLyDorr7nva7miJDlip9cbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5YiG5Lqr5aW95Y+L5oiQ5Yqf5Zue6LCDXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgd3gudXBkYXRlVGltZWxpbmVTaGFyZURhdGEoeyBcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+iusOW/huWKm+iupOefpea1i+ivhCcsIC8vIOWIhuS6q+agh+mimFxuICAgICAgICAgICAgICAgIGxpbms6IHNoYXJlQ29uZmlnLnNoYXJlTGluZSwgLy8g5YiG5Lqr6ZO+5o6l77yM6K+l6ZO+5o6l5Z+f5ZCN5oiW6Lev5b6E5b+F6aG75LiO5b2T5YmN6aG16Z2i5a+55bqU55qE5YWs5LyX5Y+3SlPlronlhajln5/lkI3kuIDoh7RcbiAgICAgICAgICAgICAgICBpbWdVcmw6ICdodHRwczovL3N0YXRpYy5zcGFya3VzLmNuL3B1YmxpYy9zaGVubm9uZy5qcGcnLCAvLyDliIbkuqvlm77moIdcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAvLyDorr7nva7miJDlip9cbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5YiG5Lqr5pyL5Y+L5ZyI5oiQ5Yqf5Zue6LCDXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgfSk7IFxuICAgIH1cblxuICAgIHN0YXRpYyBnZXRTaWduYXR1cmUodXJsOiBzdHJpbmcpOiBQcm9taXNlPElXZUNoYXRDb25maWc+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBXZUNoYXQuZ2V0U2hhcmVJbmZvKChlbmNvZGVVUklDb21wb25lbnQodXJsKSksV2VDaGF0LmdldFJlc3VsdCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzdGF0aWMgYXN5bmMgZ2V0U2hhcmVJbmZvKHNoYXJlVXJsOiBzdHJpbmcsIGNhbGxiYWNrOkZ1bmN0aW9uKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgY29uc3QgdGltZSA9IE1hdGguZmxvb3IoKG5ldyBEYXRlKCkuZ2V0VGltZSgpKSAvIDEwMDApXG4gICAgICAgIGNvbnN0IHVybCA9IGNjLmZ4Lkh0dHBVdGlsLmFwaVNpZ24oYC9hcGkvc2hhcmUvY2ZnP2dhbWVJZD0ke3NoYXJlQ29uZmlnLmdhbWVJZH0mdGltZT0ke3RpbWV9JnVybD0ke3NoYXJlVXJsfWAse30pXG4gICAgICAgIHJldHVybiBjYy5meC5IdHRwVXRpbC5nZXQodXJsLGNhbGxiYWNrKVxuICAgIH1cblxuICAgIFxuICAgIHN0YXRpYyBjb250YWluc05hbmFuYShzdHIpIHtcbiAgICAgICAgcmV0dXJuIC90ZXN0L2kudGVzdChzdHIpO1xuICAgIH1cblxuICAgIHN0YXRpYyByZW1vdmVRdWVyeVBhcmFtcyh1cmwpIHtcbiAgICAgICAgcmV0dXJuIHVybC5yZXBsYWNlKC9cXD8uKiQvLCAnJyk7XG4gICAgfVxuXG59XG4iXX0= //------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 () { 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFJhbmtMaXN0XFxJdGVtUmVuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdNLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXdDLDhCQUFZO0lBQXBEO1FBQUEscUVBcUVDO1FBcEVHLFFBQVE7UUFDRCxVQUFJLEdBQU8sSUFBSSxDQUFDO1FBQ3ZCLGNBQWM7UUFDUCxlQUFTLEdBQVUsQ0FBQyxDQUFDOztJQWlFaEMsQ0FBQztJQS9ERyxhQUFhO0lBQ04sZ0NBQVcsR0FBbEI7UUFDSSxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3hGLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN4RixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNyRixJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMs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LENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFDLEdBQUcsRUFBQyxNQUFNLEVBQUMsRUFBQyxVQUFDLEdBQUcsRUFBRSxPQUFvQjtZQUNuRSxJQUFHLE9BQU8sRUFBQztnQkFDUCxLQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFFLElBQUksQ0FBQztnQkFDbkUsSUFBSSxNQUFNLEdBQUcsS0FBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzNGLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNqRCw0Q0FBNEM7YUFDL0M7aUJBQ0c7Z0JBQ0EsNkJBQTZCO2dCQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBQyxPQUFPLENBQUMsQ0FBQTthQUMzQjtRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQWxFZ0IsVUFBVTtRQUQ5QixPQUFPO09BQ2EsVUFBVSxDQXFFOUI7SUFBRCxpQkFBQztDQXJFRCxBQXFFQyxDQXJFdUMsRUFBRSxDQUFDLFNBQVMsR0FxRW5EO2tCQXJFb0IsVUFBVSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgTGlzdCwgeyBMaXN0VHlwZSB9IGZyb20gXCIuL0xpc3RcIjtcclxuXHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJdGVtUmVuZGVyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIC8qKuaVsOaNriAqL1xyXG4gICAgcHVibGljIGRhdGE6YW55ID0gbnVsbDtcclxuICAgIC8qKue0ouW8lSAw6KGo56S656ys5LiA6aG5Ki9cclxuICAgIHB1YmxpYyBpdGVtSW5kZXg6bnVtYmVyID0gMDsgICAgXHJcblxyXG4gICAgLyoq5pWw5o2u5pS55Y+Y5pe26LCD55SoICovXHJcbiAgICBwdWJsaWMgZGF0YUNoYW5nZWQoKXtcclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5zdWJOYW1lKHRoaXMuZGF0YS5uYW1lLDYpO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLmRhdGEucmFuayArIFwiXCI7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibmFtZUxhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuZGF0YS5uYW1lICsgXCJcIjtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0b3RhbExhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuZGF0YS50b3RhbDtcclxuICAgICAgICBsZXQgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lU2hlbk5vbmcodGhpcy5kYXRhLnRpbWUpO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aW1lVGVtcCArIFwiXCI7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcIm9uZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidHdvXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aHJlZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBpZih0aGlzLmRhdGEucmFuayA9PSAxKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcIm9uZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMuZGF0YS5yYW5rID09IDIpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidHdvXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodGhpcy5kYXRhLnJhbmsgPT0gMyl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aHJlZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0UGljKCk7XHJcbiAgICB9ICAgXHJcbiAgICBcclxuICAgIHB1YmxpYyBzZXRQaWMoKXtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5hY3RpdmU9IGZhbHNlO1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICBsZXQgdXJsID0gdGhpcy5kYXRhLnBpYztcclxuICAgICAgICBmZXRjaCh1cmwpXHJcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ0NvbnRlbnQtTGVuZ3RoJyk7XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgLnRoZW4oZXJyTm8gPT4ge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmRhdGEucmFuaywnWC1JbmZvOicsIGVyck5vKTsgLy8g6L6T5Ye6WC1FcnJOb+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/Crypto/HttpUtil.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, '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; }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; 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_1 = HttpUtil; HttpUtil.getShareInfo = function (shareUrl) { return __awaiter(this, void 0, Promise, function () { var time, url; return __generator(this, function (_a) { console.log("设置分享链接:", shareUrl); time = Math.floor((new Date().getTime()) / 1000); url = HttpUtil_1.apiSign("/api/share/cfg?gameId=" + config.gameId + "&time=" + time + "&url=" + shareUrl, {}); return [2 /*return*/, this.post(url, null, null)]; }); }); }; //排行榜 HttpUtil.rankData = function (type, callback, data) { return __awaiter(this, void 0, Promise, function () { var time, url; return __generator(this, function (_a) { time = Math.floor((new Date().getTime()) / 1000); url = HttpUtil_1.apiSign("/api/get/rank/data?gameId=" + config.gameId + "&dataType=" + type + "&time=" + time, data); this.post(url, data, callback); return [2 /*return*/]; }); }); }; HttpUtil.uploadUserLogData = function (data, callback) { return __awaiter(this, void 0, Promise, function () { var url; return __generator(this, function (_a) { url = '/log/collect/data'; this.post(url, data, callback); return [2 /*return*/]; }); }); }; //暂时用不到 HttpUtil.getUserRecord = function (data, callback) { return __awaiter(this, void 0, Promise, function () { var time, url; return __generator(this, function (_a) { time = Math.floor((new Date().getTime()) / 1000); url = HttpUtil_1.apiSign("/api/get/user/data?gameId=" + config.gameId + "&time=" + time, data); this.post(url, data, callback); return [2 /*return*/]; }); }); }; HttpUtil.post = function (url, data, callback) { return __awaiter(this, void 0, void 0, function () { var response; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.fetchData(url, data, 'POST')]; case 1: response = _a.sent(); callback && callback(response); return [2 /*return*/]; } }); }); }; HttpUtil.get = function (url, callback) { return __awaiter(this, void 0, void 0, function () { var response; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this.fetchData(url, null, 'GET')]; case 1: response = _a.sent(); callback && callback(response); return [2 /*return*/]; } }); }); }; HttpUtil.fetchData = function (url, data, method) { return __awaiter(this, void 0, void 0, function () { var fullUrl, headers, options, response, error_1; return __generator(this, function (_a) { switch (_a.label) { case 0: fullUrl = "" + BASE_URL + url; headers = { 'Content-Type': 'application/json' }; options = { method: method, headers: headers, body: data ? JSON.stringify(data) : null, }; _a.label = 1; case 1: _a.trys.push([1, 4, , 5]); return [4 /*yield*/, fetch(fullUrl, options)]; case 2: response = _a.sent(); if (!response.ok) { throw new Error("HTTP error! status: " + response.status); } return [4 /*yield*/, response.json()]; case 3: return [2 /*return*/, _a.sent()]; case 4: error_1 = _a.sent(); console.error('Fetch error:', error_1); return [2 /*return*/, null]; case 5: return [2 /*return*/]; } }); }); }; /** * * @param url {string} 接口地址 * @param params {object} 需要加密的参数对象 */ HttpUtil.apiSign = function (url, params) { if (params === void 0) { params = {}; } var convertUrl = url.trim(); if (convertUrl.indexOf('?') === -1) { convertUrl += '?'; } // 传入参数转换拼接字符串 var postStr = getQueryString(params); var signedStr = genSignStr(convertUrl, postStr); var encryptStr = "sign=" + signedStr; var encryptSignStr = fxCry.encryptByDES(encryptStr, config.secretKey); encryptSignStr = encodeURIComponent(encryptSignStr); return urlencode(convertUrl) + "&_p=" + encryptSignStr; }; var HttpUtil_1; HttpUtil = HttpUtil_1 = __decorate([ ccclass ], HttpUtil); return HttpUtil; }(cc.Component)); exports.default = HttpUtil; function responseHandler(response) { return response.data; } // 响应拦截器 // 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(); function isEmpty(data) { return data === "" || data === null || data === undefined || data.length === 0 || JSON.stringify(data) == "{}"; } function getQueryString(obj) { // 首先对对象的键进行排序并过滤空值 var sortedKeys = Object.keys(obj).sort(); var sortedObj = {}; for (var i = 0; i < sortedKeys.length; i++) { if (isEmpty(obj[sortedKeys[i]])) { continue; } sortedObj[sortedKeys[i]] = obj[sortedKeys[i]]; } // 然后将排序后的对象转换为查询字符串 var params = []; for (var key in sortedObj) { params.push(encodeURIComponent(key) + "=" + encodeURIComponent(sortedObj[key])); } return params.join('&'); } /** * 组装签名字符串 * @param string url: 请求地址 * @param string postStr: post参数的a=1&b=2 * @returns */ function genSignStr(url, postStr) { var lessUrl = url.replace('?', ''); lessUrl = lessUrl + "&" + postStr; return encodeURIComponent(fxCry.hmacSha256(lessUrl)); } // 对参数进行统一urlencode function urlencode(url) { var _a = url.split("?", 2), baseUrl = _a[0], queryString = _a[1]; var params = new URLSearchParams(queryString); return baseUrl + "?" + params.toString(); } 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXENyeXB0b1xcSHR0cFV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ00sSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFDMUMsNkNBQWdELENBQUUsV0FBVztBQUU3RCxJQUFNLFFBQVEsR0FBRyx3QkFBd0IsQ0FBQztBQUMxQywwQ0FBMEM7QUFFMUM7SUFBc0MsNEJBQVk7SUFBbEQ7O0lBOEVBLENBQUM7aUJBOUVvQixRQUFRO0lBQ1gscUJBQVksR0FBMUIsVUFBMkIsUUFBZ0I7dUNBQUcsT0FBTzs7O2dCQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBQyxRQUFRLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7Z0JBQ2hELEdBQUcsR0FBRyxVQUFRLENBQUMsT0FBTyxDQUFDLDJCQUF5QixNQUFNLENBQUMsTUFBTSxjQUFTLElBQUksYUFBUSxRQUFVLEVBQUMsRUFBRSxDQUFDLENBQUE7Z0JBQ3RHLHNCQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFDLElBQUksRUFBQyxJQUFJLENBQUMsRUFBQzs7O0tBQ2pDO0lBQ0QsS0FBSztJQUNRLGlCQUFRLEdBQXJCLFVBQXNCLElBQUksRUFBQyxRQUFRLEVBQUMsSUFBSTt1Q0FBRyxPQUFPOzs7Z0JBQzFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO2dCQUNoRCxHQUFHLEdB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VyxDQUFDLENBQUM7SUFDaEQsT0FBVSxPQUFPLFNBQUksTUFBTSxDQUFDLFFBQVEsRUFBSSxDQUFDO0FBQzNDLENBQUMiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJcclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcbmltcG9ydCBDcnlwdG9KUyA9IHJlcXVpcmUoJy4vY3J5cHRvLWpzLm1pbi5qcycpOyAgLy/lvJXnlKhBRVPmupDnoIFqc1xyXG5cclxuY29uc3QgQkFTRV9VUkwgPSBcImh0dHBzOi8vYXBpLnNwYXJrdXMuY25cIjtcclxuLy/lj6rotJ/otKPnvZHnu5zmjqXlj6Mg5qyh57G75Y+q6LSf6LSj5ZKM5ZCO56uv5Lqk5LqS77yM5LiN6LSf6LSj5aSE55CG5pWw5o2uIOaVsOaNruWkhOeQhuWcqEdhbWVUb29sXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEh0dHBVdGlsIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBhc3luYyAgZ2V0U2hhcmVJbmZvKHNoYXJlVXJsOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhcIuiuvue9ruWIhuS6q+mTvuaOpTpcIixzaGFyZVVybCk7XHJcbiAgICAgIGNvbnN0IHRpbWUgPSBNYXRoLmZsb29yKChuZXcgRGF0ZSgpLmdldFRpbWUoKSkgLyAxMDAwKVxyXG4gICAgICBjb25zdCB1cmwgPSBIdHRwVXRpbC5hcGlTaWduKGAvYXBpL3NoYXJlL2NmZz9nYW1lSWQ9JHtjb25maWcuZ2FtZUlkfSZ0aW1lPSR7dGltZX0mdXJsPSR7c2hhcmVVcmx9YCx7fSlcclxuICAgICAgcmV0dXJuIHRoaXMucG9zdCh1cmwsbnVsbCxudWxsKTtcclxuICAgIH1cclxuICAgIC8v5o6S6KGM5qacXHJcbiAgICBzdGF0aWMgYXN5bmMgcmFua0RhdGEodHlwZSxjYWxsYmFjayxkYXRhKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgY29uc3QgdGltZSA9IE1hdGguZmxvb3IoKG5ldyBEYXRlKCkuZ2V0VGltZSgpKSAvIDEwMDApXHJcbiAgICAgIGNvbnN0IHVybCA9IEh0dHBVdGlsLmFwaVNpZ24oYC9hcGkvZ2V0L3JhbmsvZGF0YT9nYW1lSWQ9JHtjb25maWcuZ2FtZUlkfSZkYXRhVHlwZT0ke3R5cGV9JnRpbWU9JHt0aW1lfWAsIGRhdGEpXHJcbiAgICAgIHRoaXMucG9zdCh1cmwsZGF0YSxjYWxsYmFjayk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBzdGF0aWMgYXN5bmMgdXBsb2FkVXNlckxvZ0RhdGEoZGF0YSxjYWxsYmFjayk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgIGNvbnN0IHVybCA9ICcvbG9nL2NvbGxlY3QvZGF0YSc7XHJcbiAgICAgIHRoaXMucG9zdCh1cmwsZGF0YSxjYWxsYmFjayk7XHJcbiAgICB9XHJcbiAgICAvL+aaguaXtueUqOS4jeWIsFxyXG4gICAgc3RhdGljIGFzeW5jIGdldFVzZXJSZWNvcmQoZGF0YSxjYWxsYmFjayk6IFByb21pc2U8YW55PiB7XHJcbiAgICAgIGNvbnN0IHRpbWUgPSBNYXRoLmZsb29yKChuZXcgRGF0ZSgpLmdldFRpbWUoKSkgLyAxMDAwKVxyXG4gICAgICBjb25zdCB1cmwgPSBIdHRwVXRpbC5hcGlTaWduKGAvYXBpL2dldC91c2VyL2RhdGE/Z2FtZUlkPSR7Y29uZmlnLmdhbWVJZH0mdGltZT0ke3RpbWV9YCwgZGF0YSlcclxuICAgICAgdGhpcy5wb3N0KHVybCxkYXRhLGNhbGxiYWNrKTtcclxuICAgIH1cclxuICBzdGF0aWMgYXN5bmMgcG9zdCh1cmwsIGRhdGEsIGNhbGxiYWNrKSB7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZmV0Y2hEYXRhKHVybCwgZGF0YSwgJ1BPU1QnKTtcclxuICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKHJlc3BvbnNlKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBhc3luYyBnZXQodXJsLCBjYWxsYmFjaykge1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmZldGNoRGF0YSh1cmwsIG51bGwsICdHRVQnKTtcclxuICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKHJlc3BvbnNlKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBhc3luYyBmZXRjaERhdGEodXJsLCBkYXRhLCBtZXRob2QpIHtcclxuICAgIGNvbnN0IGZ1bGxVcmwgPSBgJHtCQVNFX1VSTH0ke3VybH1gO1xyXG4gICAgY29uc3QgaGVhZGVycyA9IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9O1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kLFxyXG4gICAgICBoZWFkZXJzLFxyXG4gICAgICBib2R5OiBkYXRhID8gSlNPTi5zdHJpbmdpZnkoZGF0YSkgOiBudWxsLFxyXG4gICAgfTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGZ1bGxVcmwsIG9wdGlvbnMpO1xyXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBIVFRQIGVycm9yISBzdGF0dXM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBhd2FpdCByZXNwb25zZS5qc29uKCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdGZXRjaCBlcnJvcjonLCBlcnJvcik7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIFxyXG4gKiBAcGFyYW0gdXJsIHtzdHJpbmd9IOaOpeWPo+WcsOWdgFxyXG4gKiBAcGFyYW0gcGFyYW1zIHtvYmplY3R9IOmcgOimgeWKoOWvhueahOWPguaVsOWvueixoVxyXG4gKi9cclxuICBzdGF0aWMgYXBpU2lnbih1cmw6IHN0cmluZywgcGFyYW1zID0ge30pIHtcclxuXHJcbiAgICBsZXQgY29udmVydFVybCA9IHVybC50cmltKClcclxuICAgIGlmIChjb252ZXJ0VXJsLmluZGV4T2YoJz8nKSA9PT0gLTEpIHtcclxuICAgICAgY29udmVydFVybCArPSAnPydcclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8g5Lyg5YWl5Y+C5pWw6L2s5o2i5ou85o6l5a2X56ym5LiyXHJcbiAgICBsZXQgcG9zdFN0ciA9ICBnZXRRdWVyeVN0cmluZyhwYXJhbXMpXHJcbiAgXHJcbiAgICBjb25zdCBzaWduZWRTdHIgPSBnZW5TaWduU3RyKGNvbnZlcnRVcmwsIHBvc3RTdHIpXHJcbiAgICBjb25zdCBlbmNyeXB0U3RyID0gYHNpZ249JHtzaWduZWRTdHJ9YFxyXG5cclxuICAgIGxldCBlbmNyeXB0U2lnblN0ciA9IGZ4Q3J5LmVuY3J5cHRCeURFUyhlbmNyeXB0U3RyLCBjb25maWcuc2VjcmV0S2V5KVxyXG4gICAgZW5jcnlwdFNpZ25TdHIgPSBlbmNvZGVVUklDb21wb25lbnQoZW5jcnlwdFNpZ25TdHIpXHJcblxyXG4gICAgcmV0dXJuIGAke3VybGVuY29kZShjb252ZXJ0VXJsKX0mX3A9JHtlbmNyeXB0U2lnblN0cn1gXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiByZXNwb25zZUhhbmRsZXIocmVzcG9uc2U6IHsgZGF0YTogYW55IH0pIHtcclxuICByZXR1cm4gcmVzcG9uc2UuZGF0YVxyXG59XHJcbi8vIOWTjeW6lOaLpuaIquWZqFxyXG4vLyBScS5pbnRlcmNlcHRvcnMucmVzcG9uc2UudXNlKHJlc3BvbnNlSGFuZGxlcilcclxuY29uc3QgY29uZmlnID0ge1xyXG4gIGdhbWVJZDogXCIxMDAwMTJcIixcclxuICBzZWNyZXRLZXk6IFwib25uZlBLSldcIixcclxuICBFSzpcImh1aTIzMSUxXCJcclxufTtcclxuXHJcbmludGVyZmFjZSBDcnlwb3RvVHlwZSB7XHJcbiAgZW5jcnlwdEJ5REVTOiBhbnlcclxuICBkZWNyeXB0QnlERVM6IGFueVxyXG4gIGhtYWNTaGEyNTY6IGFueVxyXG59XHJcbiBcclxuY2xhc3MgQ3J5cG90byBpbXBsZW1lbnRzIENyeXBvdG9UeXBlIHtcclxuICAgIC8vIOWKoOWvhueahOWQkeaYjuWAvO+8jOiHquW3seagueaNrumhueebruWunumZheaDheWGteWumu+8jOmcgOimgei3n+WQjuerr+W8gOWPkeS/neaMgeS4gOiHtFxyXG4gICAgcHJpdmF0ZSBrZXlIZXggPSB0aGlzLmdldEhldEtleSgpXHJcbiAgICBwcml2YXRlIGdldEhldEtleSgpIHtcclxuICAgICAgICByZXR1cm4gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoY29uZmlnLkVLKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogREVT5Yqg5a+GICovXHJcbiAgICBlbmNyeXB0QnlERVMobWVzc2FnZTogc3RyaW5nLCBzZWNyZXQ/OiBzdHJpbmcpIHtcclxuICAgICAgaWYoIW1lc3NhZ2UpIHtcclxuICAgICAgICByZXR1cm4gbWVzc2FnZVxyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGtleSA9IHNlY3JldD8gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2Uoc2VjcmV0KTogdGhpcy5rZXlIZXhcclxuICAgICAgY29uc3QgZW5jcnlwdGVkID0gQ3J5cHRvSlMuREVTLmVuY3J5cHQobWVzc2FnZSwga2V5LCB7XHJcbiAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5FQ0IsXHJcbiAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gZW5jcnlwdGVkLnRvU3RyaW5nKClcclxuICAgIH1cclxuXHJcbiAgICAvKiogREVT6Kej5a+GICovXHJcbiAgICBkZWNyeXB0QnlERVMobWVzc2FnZTogc3RyaW5nLCBzZWNyZXQ/OiBzdHJpbmcpIHtcclxuICAgICAgY29uc3Qga2V5ID0gc2VjcmV0PyBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShzZWNyZXQpOiB0aGlzLmtleUhleFxyXG5cclxuICAgICAgY29uc3QgZGVjcnlwdGVkID0gQ3J5cHRvSlMuREVTLmRlY3J5cHQoe1xyXG4gICAgICAgIGNpcGhlcnRleHQ6IENyeXB0b0pTLmVuYy5CYXNlNjQucGFyc2UobWVzc2FnZSlcclxuICAgICAgfSwga2V5LCB7XHJcbiAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5FQ0IsXHJcbiAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XHJcbiAgICAgIH0pXHJcblxyXG4gICAgICByZXR1cm4gZGVjcnlwdGVkLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBobWFjU0hBMjU25Yqg5a+GICovXHJcbiAgICBobWFjU2hhMjU2KG1lc3NhZ2U6IHN0cmluZywgc2VjcmV0Pzogc3RyaW5nKSB7XHJcbiAgICAgIGNvbnN0IGtleUhleCA9IHNlY3JldD8gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2Uoc2VjcmV0KTogdGhpcy5rZXlIZXhcclxuICAgICAgXHJcbiAgICAgIGNvbnN0IGhhc2ggPSBDcnlwdG9KUy5IbWFjU0hBMjU2KG1lc3NhZ2UsIGtleUhleCk7XHJcbiAgICAgIHJldHVybiBoYXNoLnRvU3RyaW5nKClcclxuICAgIH1cclxuXHJcbiAgICAvKiogaG1hY1NIQTI1NumqjOivgSAqL1xyXG4gICAgdmVyaWZ5SG1hY1NoYTI1NihtZXNzYWdlOiBzdHJpbmcsIHNpZ25hdHVyZTogc3RyaW5nKSB7XHJcbiAgICAgIGNvbnN0IGhhc2ggPSBDcnlwdG9KUy5IbWFjU0hBMjU2KG1lc3NhZ2UsIHRoaXMua2V5SGV4KTtcclxuICAgICAgcmV0dXJuIGhhc2gudG9TdHJpbmcoKSA9PT0gc2lnbmF0dXJlXHJcbiAgICB9XHJcbiBcclxuICAgIC8qKiBDQkPliqDlr4YgKi9cclxuICAgIGVuY3J5cHRDQkMod29yZDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKCF3b3JkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB3b3JkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzcmNzID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2Uod29yZCk7XHJcbiAgICAgICAgY29uc3QgZW5jcnlwdGVkID0gQ3J5cHRvSlMuQUVTLmVuY3J5cHQoc3JjcywgdGhpcy5rZXlIZXgsIHtcclxuICAgICAgICAgICAgaXY6IHRoaXMua2V5SGV4LFxyXG4gICAgICAgICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkNCQyxcclxuICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlplcm9QYWRkaW5nXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGVuY3J5cHRlZC50b1N0cmluZygpOyBcclxuICAgIH1cclxuIFxyXG4gICAgLyoqIENCQ+ino+WvhiAqL1xyXG4gICAgZGVjcnlwdENCQyh3b3JkOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoIXdvcmQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHdvcmQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGVuY3J5cHRlZEhleFN0ciA9IENyeXB0b0pTLmVuYy5IZXgucGFyc2Uod29yZCk7XHJcbiAgICAgICAgY29uc3Qgc3JjcyA9IENyeXB0b0pTLmVuYy5CYXNlNjQuc3RyaW5naWZ5KGVuY3J5cHRlZEhleFN0cik7XHJcbiAgICAgICAgY29uc3QgZGVjcnlwdCA9IENyeXB0b0pTLkFFUy5kZWNyeXB0KHNyY3MsIHRoaXMua2V5SGV4LCB7XHJcbiAgICAgICAgICAgIGl2OiB0aGlzLmtleUhleCxcclxuICAgICAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsXHJcbiAgICAgICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5aZXJvUGFkZGluZ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IGRlY3J5cHRlZFN0ciA9IGRlY3J5cHQudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpO1xyXG4gICAgICAgIHJldHVybiBkZWNyeXB0ZWRTdHIudG9TdHJpbmcoKTtcclxuICAgIH1cclxufVxyXG5jb25zdCBmeENyeSA9IG5ldyBDcnlwb3RvKCk7XHJcblxyXG5mdW5jdGlvbiBpc0VtcHR5KGRhdGEpIHtcclxuICByZXR1cm4gZGF0YSA9PT0gXCJcIiB8fCBkYXRhID09PSBudWxsIHx8IGRhdGEgPT09IHVuZGVmaW5lZCB8fCBkYXRhLmxlbmd0aCA9PT0gMCB8fCBKU09OLnN0cmluZ2lmeShkYXRhKSA9PSBcInt9XCJcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0UXVlcnlTdHJpbmcob2JqKSB7XHJcbiAgLy8g6aaW5YWI5a+55a+56LGh55qE6ZSu6L+b6KGM5o6S5bqP5bm26L+H5ruk56m65YC8XHJcbiAgY29uc3Qgc29ydGVkS2V5cyA9IE9iamVjdC5rZXlzKG9iaikuc29ydCgpO1xyXG4gIGNvbnN0IHNvcnRlZE9iaiA9IHt9O1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydGVkS2V5cy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKGlzRW1wdHkob2JqW3NvcnRlZEtleXNbaV1dKSkge1xyXG4gICAgICBjb250aW51ZTtcclxuICAgIH1cclxuICAgIHNvcnRlZE9ialtzb3J0ZWRLZXlzW2ldXSA9IG9ialtzb3J0ZWRLZXlzW2ldXTtcclxuICB9XHJcbiAgXHJcbiAgLy8g54S25ZCO5bCG5o6S5bqP5ZCO55qE5a+56LGh6L2s5o2i5Li65p+l6K+i5a2X56ym5LiyXHJcbiAgY29uc3QgcGFyYW1zID0gW107XHJcbiAgZm9yIChjb25zdCBrZXkgaW4gc29ydGVkT2JqKSB7XHJcbiAgICBwYXJhbXMucHVzaChgJHtlbmNvZGVVUklDb21wb25lbnQoa2V5KX09JHtlbmNvZGVVUklDb21wb25lbnQoc29ydGVkT2JqW2tleV0pfWApO1xyXG4gIH1cclxuICByZXR1cm4gcGFyYW1zLmpvaW4oJyYnKTtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiDnu4Too4Xnrb7lkI3lrZfnrKbkuLJcclxuICogQHBhcmFtIHN0cmluZyB1cmw6IOivt+axguWcsOWdgCBcclxuICogQHBhcmFtIHN0cmluZyBwb3N0U3RyOiBwb3N05Y+C5pWw55qEYT0xJmI9MiBcclxuICogQHJldHVybnMgXHJcbiAqL1xyXG5cclxuZnVuY3Rpb24gZ2VuU2lnblN0cih1cmw6IHN0cmluZywgcG9zdFN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICBsZXQgbGVzc1VybCA9IHVybC5yZXBsYWNlKCc/JywgJycpXHJcbiAgbGVzc1VybCA9IGxlc3NVcmwgKyBcIiZcIiArIHBvc3RTdHJcclxuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGZ4Q3J5LmhtYWNTaGEyNTYobGVzc1VybCkpXHJcbn1cclxuLy8g5a+55Y+C5pWw6L+b6KGM57uf5LiAdXJsZW5jb2RlXHJcbmZ1bmN0aW9uIHVybGVuY29kZSh1cmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgY29uc3QgW2Jhc2VVcmwsIHF1ZXJ5U3RyaW5nXSA9IHVybC5zcGxpdChcIj9cIiwgMik7XHJcbiAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhxdWVyeVN0cmluZyk7XHJcbiAgcmV0dXJuIGAke2Jhc2VVcmx9PyR7cGFyYW1zLnRvU3RyaW5nKCl9YDtcclxufVxyXG5cclxuXHJcblxyXG4iXX0= //------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 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 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); } }, //埋点上传 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, "matchId": matchId, "data": data }; console.log("上传数据:", data); 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, function (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+"; } } 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; }, //获取时间戳 getTime: function () { var timestamp = Math.floor((new Date().getTime()) / 1000); return timestamp; }, pushLister: function () { }, removeAllLister: function () { }, }; 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFRvb2xcXEdhbWVUb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLCtCQUErQjtBQUMvQixJQUFJLFFBQVEsR0FBRztJQUNYLFVBQVUsRUFBRSxDQUFDO0lBQ2IsUUFBUSxFQUFFLENBQUM7SUFDWCxVQUFVLEVBQUUsQ0FBQztJQUNiLFVBQVU7SUFDVixjQUFjO1FBQ1YsSUFBSSxJQUFJLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDckQsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbEQsSUFBRyxJQUFJLElBQUksVUFBVSxJQUFJLElBQUksSUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsRUFBQztZQUM5QyxJQUFJLEdBQUcsR0FBRyw4RUFBOEUsR0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ3ZHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztTQUM5QjthQUNHO1lBQ0EsRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsQ0FBQztZQUMzQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDM0Q7SUFDTCxDQUFDO0lBRUQsTUFBTTtJQUNOLFdBQVc7UUFDUCxvQkFBb0I7UUFDcEIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNoQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFF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QixDQUFDO0lBRUQsT0FBTztJQUNQLE9BQU87UUFDSCxJQUFNLFNBQVMsR0FBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO1FBQzVELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFDRCxVQUFVLEVBQUM7SUFFWCxDQUFDO0lBQ0QsZUFBZSxFQUFDO0lBRWhCLENBQUM7Q0FFSixDQUFDO0FBQ08sNEJBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJcclxuLy/mnIDlpKflt6XlhbfnsbsgIOWQhOenjeWFrOWFseaWueazle+8jOS7peWPiuWkhOeQhuS4iuS8oO+8jOiOt+WPluWQjuerr+aOpeWPo+aVsOaNrlxyXG52YXIgR2FtZVRvb2wgPSB7XHJcbiAgICBfc3RhcnRUaW1lOiAwLFxyXG4gICAgX2VuZFRpbWU6IDAsXHJcbiAgICBfdG90YWxUaW1lOiAwLFxyXG4gICAgLy/ojrflj5Z1c2VySWRcclxuICAgIEF1dGhlbnRpY2F0aW9uKCl7XHJcbiAgICAgICAgbGV0IG5hbWUgPSBcInVzZXJfXCIgKyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZ2FtZUlkO1xyXG4gICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShuYW1lKSk7XHJcbiAgICAgICAgaWYoZGF0YSA9PSBcInVuZGlmZW5kXCIgfHwgZGF0YT09bnVsbCB8fCBkYXRhID09IFwiXCIpe1xyXG4gICAgICAgICAgICBsZXQgdXJsID0gXCJodHRwczovL2FwaS5zcGFya3VzLmNuL2FwaS91c2VyL2F1dGgvbG9naW4/ZG9tYWluPWh1aTMyNTc5V2RZUHNnWXEmY2FsbGJhY2s9XCIrbG9jYXRpb24uaHJlZjtcclxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UobmFtZSxkYXRhKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJJZCA9IHBhcnNlSW50KGRhdGEudXNlcklkKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIC8v5Z+L54K55LiK5LygXHJcbiAgICBzZXRHYW1lRGF0YSgpe1xyXG4gICAgICAgIC8vR0FNRV9EQVRBIOWIneWni+WMliDmr4/mrKHmuIXpm7ZcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdBTUVfREFUQSA9IFtdO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR0FNRV9EQVRBLnB1c2goY2MuZnguR2FtZUNvbmZpZy5DTElDS19EQVRBKTtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkNMSUNLX2luaXQoKTtcclxuICAgICAgICBsZXQgZGF0YSA9IGNjLmZ4LkdhbWVDb25maWcuR0FNRV9EQVRBO1xyXG4gICAgICAgIGxldCBtYXRjaElkID0gdGhpcy5nZXRNYXRjaElkKCk7XHJcbiAgICAgICAgbGV0IHBvc3REYXRhID0ge1xyXG4gICAgICAgICAgICBcImdhbWVJZFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lSWQsXHJcbiAgICAgICAgICAgIFwidXNlcklkXCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJJZCxcclxuICAgICAgICAgICAgXCJtYXRjaElkXCI6bWF0Y2hJZCxcclxuICAgICAgICAgICAgXCJkYXRhXCI6IGRhdGFcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjb25zb2xlLmxvZyhcIuS4iuS8oOaVsOaNrjpcIixkYXRhKTtcclxuICAgICAgICBjYy5meC5IdHRwVXRpbC51cGxvYWRVc2VyTG9nRGF0YShwb3N0RGF0YSxmdW5jdGlvbigpe30pXHJcbiAgICB9LFxyXG4gICAgLy/kuIrkvKDmjpLooYzmppwgIHR5cGXkuLoxXHJcbiAgICBzZXRSYW5rKGRhdGEpe1xyXG4gICAgICAgIC8vR0FNRV9EQVRBIOWIneWni+WMliDmr4/mrKHmuIXpm7ZcclxuICAgICAgICBsZXQgcG9zdERhdGEgPSB7XHJcbiAgICAgICAgICAgIFwiZ2FtZUlkXCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmdhbWVJZCxcclxuICAgICAgICAgICAgXCJ1c2VySWRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcklkLFxyXG4gICAgICAgICAgICBcInR5cGVcIjoxLFxyXG4gICAgICAgICAgICBcInNjb3JlXCI6IGRhdGEuc2NvcmUsXHJcbiAgICAgICAgICAgIFwiYWNjdXJhY3lcIjogZGF0YS5kYXRlLFxyXG4gICAgICAgICAgICBcInN1Y2Nlc3NcIjogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnN1Y2Nlc3NcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNjLmZ4Lkh0dHBVdGlsLnJhbmtEYXRhKDEsZnVuY3Rpb24oKXt9LHBvc3REYXRhKTtcclxuICAgIH0sXHJcbiAgICAvL+iOt+WPluaOkuihjOamnCB0eXBl5Li6MlxyXG4gICAgZ2V0UmFuayhkYXRhLGNhbGxiYWNrKXtcclxuICAgICAgICBsZXQgcmFua0xlbmd0aCA9IGRhdGEubGVuZ3RoO1xyXG4gICAgICAgIGxldCBwb3N0RGF0YSA9IHtcclxuICAgICAgICAgICAgXCJnYW1lSWRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZ2FtZUlkLFxyXG4gICAgICAgICAgICBcInVzZXJJZFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy51c2VySWQsXHJcbiAgICAgICAgICAgIFwicGFnZVwiOjEsXHJcbiAgICAgICAgICAgIFwicGFnZVNpemVcIjpyYW5rTGVuZ3RoXHJcbiAgICAgICAgfTsgXHJcbiAgICAgICAgLy/lm57osIPov5tnZXRSYW5rRGF0YVxyXG4gICAgICAgIGNjLmZ4Lkh0dHBVdGlsLnJhbmtEYXRhKDIsZGF0YSA9PntjYWxsYmFjayhkYXRhKX0scG9zdERhdGEpO1xyXG4gICAgfSxcclxuICAgIC8v6I635Y+WbWF0Y2hJZCAg55So5LqO5LiK5Lyg5q+P5qyh54K55Ye75pWw5o2u6YeM6Z2i6K6w5b2VaWTmlrnkvr/mn6Xor6JcclxuICAgIGdldE1hdGNoSWQgKCl7XHJcbiAgICAgICAgbGV0IG1hdGNoSWQgPSBjYy5zeXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJtYXRjaElkXCIpO1xyXG4gICAgICAgIGxldCB0ZW1wSWQgPSBtYXRjaElkO1xyXG4gICAgICAgIGlmKG1hdGNoSWQgPT0gXCJ1bmRpZmVuZFwiIHx8IG1hdGNoSWQ9PW51bGwpe1xyXG4gICAgICAgICAgICBtYXRjaElkID0gIHRoaXMuc2V0TWF0Y2hJZCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBpZih0aGlzLmNvbnRhaW5zTmFuYW5hKG1hdGNoSWQpID09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgbWF0Y2hJZCA9ICB0aGlzLnNldE1hdGNoSWQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgbGV0IGNoYXIgPSBwYXJzZUludCh0ZW1wSWQuc3Vic3RyaW5nKDEwLHRlbXBJZC5sZW5ndGgpKTtcclxuICAgICAgICAgICAgICAgIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9PSAxKXtcclxuICAgICAgICAgICAgICAgICAgICBjaGFyICs9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hJZCAgPSB0ZW1wSWQuc2xpY2UoMCwgMTApICsgY2hhciArIFwiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5jb250YWluc05hbmFuYShtYXRjaElkKSkgbWF0Y2hJZCA9IHRoaXMuc2V0TWF0Y2hJZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYXRjaElkID0gbWF0Y2hJZDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5zeXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJtYXRjaElkXCIsbWF0Y2hJZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKHRoaXMuY29udGFpbnNOYW5hbmEobWF0Y2hJZCkgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIG1hdGNoSWQgPSAgdGhpcy5zZXRNYXRjaElkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtYXRjaElkO1xyXG4gICAgfSxcclxuICAgIC8v5qOA5rWLbWF0Y2hJZCDlpoLmnpzmnInnvJPlrZjku6XliY3nmoRuYW5hbmHmlbDmja7muIXpmaRcclxuICAgIGNvbnRhaW5zTmFuYW5hKHN0cikge1xyXG4gICAgICAgIHJldHVybiAvbmEvaS50ZXN0KHN0cik7XHJcbiAgICB9LFxyXG4gICAgLy/ph43mlrDorr7nva5NYXRjaElkXHJcbiAgICBzZXRNYXRjaElkICgpe1xyXG4gICAgICAgIC8vIOWumuS5ieWMheWQq+WPr+eUqOWtl+espueahOWtl+espumbhlxyXG4gICAgICAgIGNvbnN0IGNoYXJhY3RlcnMgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODknO1xyXG4gICAgICAgIC8vIOWIm+W7uuS4gOS4quaVsOe7hOS7peS/neWtmOmaj+acuuWtl+esplxyXG4gICAgICAgIGNvbnN0IHV1aWRBcnJheSA9IFtdO1xyXG4gICAgICAgIC8vIOW+queOrzEw5qyhIOeUn+aIkDEw5L2N55qEVVVJRFxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgLy8g55Sf5oiQ6ZqP5py657Si5byV77yM6IyD5Zu05piv5a2X56ym6ZuG55qE6ZW/5bqmXHJcbiAgICAgICAgICAgIGNvbnN0IHJhbmRvbUluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcmFjdGVycy5sZW5ndGgpO1xyXG4gICAgICAgICAgICAvLyDku47lrZfnrKbpm4bkuK3ojrflj5bpmo/mnLrlrZfnrKZcclxuICAgICAgICAgICAgY29uc3QgcmFuZG9tQ2hhciA9IGNoYXJhY3RlcnMuY2hhckF0KHJhbmRvbUluZGV4KTtcclxuICAgICAgICAgICAgLy8g5bCG5a2X56ym5re75Yqg5Yiw5pWw57uE5LitXHJcbiAgICAgICAgICAgIHV1aWRBcnJheS5wdXNoKHJhbmRvbUNoYXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZGF0YSA9ICB1dWlkQXJyYXkuam9pbignJykgKyAxICsgXCJcIjtcclxuICAgICAgICBjYy5zeXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJtYXRjaE51bWJlclwiLDEpO1xyXG4gICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIm1hdGNoSWRcIixkYXRhKTtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWF0Y2hJZCA9IGRhdGE7XHJcbiAgICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICB9LFxyXG4gICAgLy/miKrlj5blkI3lrZdcclxuICAgIHN1Yk5hbWUobmFtZSxsZW5ndGgpe1xyXG4gICAgICAgIGlmKG5hbWUubGVuZ3RoID4gbGVuZ3RoKXtcclxuICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyaW5nKDAsbGVuZ3RoKSArIFwiLi4uXCJcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5hbWU7XHJcbiAgICB9LFxyXG4gICAgLy/orr7nva7lpLTlg49cclxuICAgIHNldFBpYyhub2RlLHBpYyl7XHJcbiAgICAgICAgbm9kZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBsZXQgdXJsID0gcGljO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBmZXRjaCh1cmwpXHJcbiAgICAgICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5oZWFkZXJzLmdldCgnQ29udGVudC1MZW5ndGgnKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnRoZW4oZXJyTm8gPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYoZXJyTm8gPT0gXCI1MDkzXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgIG5vZGUuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIFgtSW5mbzonLCBlcnJvcik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sIDEwMCk7XHJcbiAgICAgICAgY2MuYXNzZXRNYW5hZ2VyLmxvYWRSZW1vdGUodXJsLCB7ZXh0OicucG5nJ30sKGVyciwgdGV4dHVyZTpjYy5UZXh0dXJlMkQpID0+IHtcclxuICAgICAgICAgICAgaWYodGV4dHVyZSl7XHJcbiAgICAgICAgICAgICAgICBub2RlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBub2RlLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gbmV3IGNjLlNwcml0ZUZyYW1lKHRleHR1cmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIsdGV4dHVyZSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgLy/nrKzkuIDkuKrlj4LmlbDmiornm67moIfluKbov5vmnaXlpITnkIbvvIznrKzkuozkuKrlj4LmlbDkuLrlkI3lrZfplb/luqbvvIzkuI3lkIzlnLrmma/kuI3lkIzpnIDmsYJcclxuICAgIC8v5ZCN5a2XNOefre+8jOWwj+aOkuihjO+8jOWQjeWtlzbplb/vvIzlpKfmjpLooYxcclxuICAgIGdldFJhbmtEYXRhKGRhdGEsdGFyZ2V0LG5hbWVMZW5ndGgpe1xyXG4gICAgICAgIHRhcmdldC5saXN0RGF0YSA9IGRhdGEuZGF0YS5saXN0O1xyXG4gICAgICAgIHRhcmdldC5zZWxmRGF0YSA9IGRhdGEuZGF0YS5pbmZvO1xyXG4gICAgICAgIGxldCByYW5rRGF0YSA9IFtdO1xyXG4gICAgICAgIGxldCBzZWxmID0gZmFsc2U7XHJcbiAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFBpYyh0YXJnZXQuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLHRhcmdldC5zZWxmRGF0YS5waWMpO1xyXG4gICAgICAgIGZvcihsZXQgaT0wO2k8PXRhcmdldC5saXN0RGF0YS5sZW5ndGgtMTtpKyspe1xyXG4gICAgICAgICAgICByYW5rRGF0YS5wdXNoKHtyYW5rOihpKzEpLCBuYW1lOnRhcmdldC5saXN0RGF0YVtpXS5uaWNrTmFtZSwgdG90YWw6dGFyZ2V0Lmxpc3REYXRhW2ldLnNjb3JlLHRpbWU6bnVsbCwgcGljOnRhcmdldC5saXN0RGF0YVtpXS5waWN9KTtcclxuICAgICAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJJZCA9PSB0YXJnZXQubGlzdERhdGFbaV0udXNlcklkKXtcclxuICAgICAgICAgICAgICAgIHNlbGYgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnJhbmtOdW1iZXIgPSBpO1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9KGkrMSkgKyBcIlwiOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihpID09ICh0YXJnZXQubGlzdERhdGEubGVuZ3RoLTEpICYmIHNlbGYgPT0gZmFsc2Upe1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnJhbmtOdW1iZXIgPSBpO1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IFwiOTkrXCI7IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgICBjYy5meC5HYW1lVG9vbC5zdWJOYW1lKHRhcmdldC5zZWxmRGF0YS5uaWNrTmFtZSxuYW1lTGVuZ3RoKTtcclxuICAgICAgICB0YXJnZXQuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJuYW1lTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGFyZ2V0LnNlbGZEYXRhLm5pY2tOYW1lO1xyXG4gICAgICAgIHRhcmdldC5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInRvdGFsTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGFyZ2V0LnNlbGZEYXRhLnNjb3JlO1xyXG4gICAgICAgIGxldCB0aW1lVGVtcCA9IGNjLmZ4LkdhbWVUb29sLmdldFRpbWVTaGVuTm9uZyh0YXJnZXQuc2VsZkRhdGEudG90bGVUaW1lcyk7XHJcbiAgICAgICAgLy8gdGFyZ2V0LnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwidGltZUxhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRpbWVUZW1wICsgXCJcIjtcclxuICAgICAgICBzd2l0Y2godGFyZ2V0LnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyl7XHJcbiAgICAgICAgICAgIGNhc2UgXCIxXCI6XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwib25lXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcIjJcIjpcclxuICAgICAgICAgICAgICAgIHRhcmdldC5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0d29cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwiM1wiOlxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcInRocmVlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8g5aSn5o6S6KGMXHJcbiAgICAgICAgaWYobmFtZUxlbmd0aCA9PSA2KXtcclxuICAgICAgICAgICAgdGFyZ2V0LnJhbmtMaXN0LnNldERhdGEocmFua0RhdGEpO1xyXG4gICAgICAgICAgICB0YXJnZXQuc2VsZk5vZGUub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgaWYodGFyZ2V0LnNlbGZEYXRhLnRvdGFsU3VuQ291bnQgPT0gMCkgdGFyZ2V0LnNlbGZOb2RlLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgZ2V0U2VlZFJhbmRvbTogZnVuY3Rpb24gKG1pbiwgbWF4KSB7Ly/ljIXlkKttaW4g5LiN5YyF5ZCrbWF4XHJcbiAgICAgICAgY29uc29sZS5sb2coXCLpmo/mnLrmlbA6XCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmN1cnJTZWVkKTtcclxuICAgICAgICBtYXggPSBtYXggfHwgMTtcclxuICAgICAgICBtaW4gPSBtaW4gfHwgMDtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY3VyclNlZWQgPSAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmN1cnJTZWVkICogOTMwMSArIDQ5Mjk3KSAlIDIzMzI4MDtcclxuICAgICAgICBsZXQgcm5kID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmN1cnJTZWVkICAvIDIzMzI4MC4wO1xyXG4gICAgICAgIGxldCB0bXAgPSBtaW4gKyBybmQgKiAobWF4IC0gbWluKTtcclxuICAgICAgICByZXR1cm4gcGFyc2VJbnQodG1wKTtcclxuICAgIH0sXHJcbiAgICAvL+iOt+WPluWFs+WNoemFjee9rueahOmCo+S4quWFs+WNoeaVsFxyXG4gICAgZ2V0Q3VzdG9tKHR5cGUpe1xyXG4gICAgICAgIGxldCBjdXN0b20gPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKGNjLmZ4LnN0b3JhZ2VUeXBlLnN0b3JhZ2VUeXBlQ3VzdG9tKTtcclxuICAgICAgICBpZihjdXN0b20gPT0gXCJ1bmRpZmVuZFwiIHx8IGN1c3RvbT09bnVsbCB8fCBjdXN0b20gPT0gXCJcIil7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Q3VzdG9tKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GT19TRVQoXCJjdXN0b21cIixjdXN0b21bMF0pO1xyXG4gICAgICAgICAgICBpZihjdXN0b21bMF0gIT0gMCB8fCB0eXBlID09ICB0cnVlKXtcclxuICAgICAgICAgICAgICAgIGN1c3RvbS5zaGlmdCgpO1xyXG4gICAgICAgICAgICAgICAgaWYoY3VzdG9tLmxlbmd0aCA9PSAwKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEN1c3RvbSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKGNjLmZ4LnN0b3JhZ2VUeXBlLnN0b3JhZ2VUeXBlQ3VzdG9tLGN1c3RvbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgLy/mnKzlnLDmsqHmnInlrZjlgqjliLDphY3nva7vvIzmiJbogIXphY3nva7nlKjlrozvvIzph43mlrDliJvlu7rphY3nva5cclxuICAgIHNldEN1c3RvbSgpe1xyXG4gICAgICAgIGxldCBhcnJheUxlbmd0aCA9IGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GTy5sZW5ndGg7XHJcbiAgICAgICAgbGV0IGFycmF5TGlzdCA9IFtdO1xyXG4gICAgICAgIGZvcihsZXQgaT0xOyBpPGFycmF5TGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGFycmF5TGlzdC5wdXNoKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhcnJheUxpc3Quc29ydCgoKSA9PiBNYXRoLnJhbmRvbSgpIC0gMC41KTtcclxuICAgICAgICBhcnJheUxpc3QudW5zaGlmdCgwKVxyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GT19TRVQoXCJjdXN0b21cIixhcnJheUxpc3RbMF0pO1xyXG4gICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoY2MuZnguc3RvcmFnZVR5cGUuc3RvcmFnZVR5cGVDdXN0b20sYXJyYXlMaXN0KTtcclxuICAgIH0sXHJcblxyXG5cclxuICAgIGdldFNldFNjcmVlblJlc29sdXRpb25GbGFnOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgbGV0IHNpemUgPSBjYy53aW5TaXplO1xyXG4gICAgICAgIGxldCB3aWR0aCA9IHNpemUud2lkdGg7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IHNpemUuaGVpZ2h0O1xyXG4gICAgICAgIGlmICgoaGVpZ2h0IC8gd2lkdGgpID4gKDE2LjIgLyA5KSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSxcclxuICAgIC8v5Yik5pat5YWo6Z2i5bGP6YCC6YWNXHJcbiAgICBzZXRGaXQ6IGZ1bmN0aW9uIChjYW52YXMpIHtcclxuICAgICAgICBsZXQgZmxhZyA9ICBjYy5meC5HYW1lVG9vbC5nZXRTZXRTY3JlZW5SZXNvbHV0aW9uRmxhZygpO1xyXG4gICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgXHQvLyBjb25zb2xlLmxvZyhcIuS4jeaYr+WFqOmdouWxj1wiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgIFx0Ly8gY29uc29sZS5sb2coXCLmmK/lhajpnaLlsY9cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmbGFnO1xyXG4gICAgfSxcclxuICAgIC8v6I635Y+W5ri45oiP5L+h5oGvXHJcbiAgICBnZXRHYW1lSW5mbzogZnVuY3Rpb24obm9kZSl7XHJcbiAgICAgICAgdmFyIGpnID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgfSxcclxuICAgIC8v6K6+572u5ri45oiP5L+h5oGvXHJcbiAgICBzZXRHYW1lSW5mbzogZnVuY3Rpb24ocGQpe1xyXG4gICBcclxuICAgIH0sXHJcblxyXG4gICAgLy/miZPlrZfmnLrmlYjmnpxcclxuICAgIHR5cGluZ0FuaShsYWJlbCx0ZXh0LGNiLHRhcmdldCl7XHJcbiAgICAgICAgdmFyIHNlbGYgPSB0YXJnZXQ7XHJcbiAgICAgICAgdmFyIGh0bWwgPSAnJztcclxuICAgICAgICB2YXIgYXJyID0gdGV4dC5zcGxpdCgnJyk7XHJcbiAgICAgICAgdmFyIGxlbiA9IGFyci5sZW5ndGg7XHJcbiAgICAgICAgdmFyIHN0ZXAgPSAwO1xyXG4gICAgICAgIHNlbGYuZnVuYyA9ICgpPT57XHJcbiAgICAgICAgICAgIGh0bWwgKz0gYXJyW3N0ZXBdO1xyXG4gICAgICAgICAgICBsYWJlbC5zdHJpbmcgPSBodG1sO1xyXG4gICAgICAgICAgICBpZiAoKytzdGVwID09IGxlbikge1xyXG4gICAgICAgICAgICAgICAgc2VsZi51bnNjaGVkdWxlKHNlbGYuZnVuYyk7XHJcbiAgICAgICAgICAgICAgICBjYiAmJiBjYigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNlbGYuc2NoZWR1bGUoc2VsZi5mdW5jLDAuMSwgY2MubWFjcm8uUkVQRUFUX0ZPUkVWRVIsIDApXHJcbiAgICB9LFxyXG5cclxuICAgIC8v6L6T5YWl56eSLOi/lOWbnumcgOimgeWxleekuuaXtumXtOagvOW8j1xyXG4gICAgZ2V0VGltZU1hcmdpbjooc2Vjb25kKSA9PiB7XHJcbiAgICAgICAgbGV0IHRvdGFsID0gMDtcclxuICAgICAgICB0b3RhbCA9IHNlY29uZDtcclxuICAgICAgICBsZXQgaG91ciA9IDA7XHJcbiAgICAgICAgaG91ciA9IHBhcnNlSW50KCh0b3RhbCAvIDM2MDApICsgXCJcIik7Ly/orqHnrpfmlbTmlbDlsI/ml7bmlbBcclxuICAgICAgICBsZXQgYWZ0ZXJIb3VyID0gdG90YWwgLSBob3VyICogNjAgKiA2MDsvL+WPluW+l+eul+WHuuWwj+aXtuaVsOWQjuWJqeS9meeahOenkuaVsFxyXG4gICAgICAgIGxldCBtaW4gPSBwYXJzZUludCgoYWZ0ZXJIb3VyIC8gNjApK1wiXCIpOy8v6K6h566X5pW05pWw5YiGXHJcbiAgICAgICAgbGV0IG0gPSBcIlwiICsgbWluOyAgXHJcbiAgICAgICAgaWYobWluIDwgMTApIG0gPSBcIjBcIittaW47XHJcbiAgICAgICAgbGV0IGFmdGVyTWluID0gdG90YWwgLSBob3VyICogNjAgKiA2MCAtIG1pbiAqIDYwOy8v5Y+W5b6X566X5Ye65YiG5ZCO5Ymp5L2Z55qE56eS5pWwXHJcbiAgICAgICAgbGV0IG1pYW8gPSBhZnRlck1pbiArIFwiXCI7XHJcbiAgICAgICAgaWYoYWZ0ZXJNaW4gPCAxMCkgbWlhbyA9IFwiMFwiICsgYWZ0ZXJNaW47XHJcbiAgICAgICAgcmV0dXJuIG0gKyAnOicgKyBtaWFvXHJcbiAgICB9LFxyXG5cclxuICAgIC8v6L6T5YWl56eSLOi/lOWbnumcgOimgeWxleekuuaXtumXtOagvOW8j1xyXG4gICAgZ2V0VGltZVNoZW5Ob25nOihzZWNvbmQpID0+IHtcclxuICAgICAgICBzZWNvbmQgPSBwYXJzZUludChzZWNvbmQvMTAwMCtcIlwiKTtcclxuICAgICAgICBsZXQgdG90YWwgPSAwO1xyXG4gICAgICAgIHRvdGFsID0gc2Vjb25kO1xyXG4gICAgICAgIGxldCBtaW4gPSAwO1xyXG4gICAgICAgIGlmKHRvdGFsID4gNjApe1xyXG4gICAgICAgICAgICBtaW4gPSBwYXJzZUludCgodG90YWwgLyA2MCkrXCJcIik7Ly/orqHnrpfmlbTmlbDliIZcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG0gPSAgbWluICsgXCInXCI7ICBcclxuXHJcbiAgICAgICAgbGV0IGFmdGVyTWluID0gdG90YWwgLSBtaW4gKiA2MDsvL+WPluW+l+eul+WHuuWIhuWQjuWJqeS9meeahOenkuaVsFxyXG4gICAgICAgIGxldCBtaWFvID0gYWZ0ZXJNaW4gKyBcIicnXCI7XHJcbiAgICAgICAgcmV0dXJuIG0gKyBtaWFvXHJcbiAgICB9LFxyXG5cclxuICAgIC8v6I635Y+W5pe26Ze05oizXHJcbiAgICBnZXRUaW1lKCl7XHJcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gIE1hdGguZmxvb3IoKG5ldyBEYXRlKCkuZ2V0VGltZSgpKSAvIDEwMDApXHJcbiAgICAgICAgcmV0dXJuIHRpbWVzdGFtcDtcclxuICAgIH0sXHJcbiAgICBwdXNoTGlzdGVyOmZ1bmN0aW9uICgpIHtcclxuICAgICAgICBcclxuICAgIH0sXHJcbiAgICByZW1vdmVBbGxMaXN0ZXI6ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIFxyXG4gICAgfSxcclxuXHJcbn07XHJcbmV4cG9ydCB7IEdhbWVUb29sIH07Il19 //------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'; 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, '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) { this.CLICK_init(); this.LEVEL_INFO_init(); this.GM_INFO_init(); var self = this; // cc.resources.load('Json/CLICK_DATA', (err: any, res: cc.JsonAsset) => { // if (err) { // return; // } // let jsonData: object = res.json!; // self.CLICK_DATA = jsonData["data"]; // }) // cc.resources.load('Json/LEVEL_INFO', (err: any, res: cc.JsonAsset) => { // if (err) { // return; // } // let jsonData: object = res.json!; // self.LEVEL_INFO = jsonData["data"]; // }) // cc.resources.load('Json/GM_INFO', (err: any, res: cc.JsonAsset) => { // if (err) { // if(!Authentication) self.Authentication(); // return; // } // let jsonData: object = res.json!; // self.GM_INFO = jsonData["data"]; // cc.fx.GameTool.getCustom(false); // if(!Authentication) self.Authentication(); // }) //GAME_DATA 废弃了,暂时不删除以防后面修改回 一整局传一次 this.GAME_DATA = []; this.CUSTOM_INFO = [ //第一难度 { moveSpeed: 0, waitTime: 20, fastPath: 5 //最短路径 }, //第二难度 { moveSpeed: 0, waitTime: 20, fastPath: 5 //最短路径 }, //第三难度 { moveSpeed: 0, waitTime: 20, fastPath: 5 //最短路径 }, //第四难度 { moveSpeed: 0, waitTime: 20, fastPath: 5 //最短路径 }, //第五难度 { moveSpeed: 0, waitTime: 20, fastPath: 5 //最短路径 }, //第六难度 { moveSpeed: 0, waitTime: 20, fastPath: 5 //最短路径 }, //第七难度 { moveSpeed: 0, waitTime: 20, fastPath: 5 //最短路径 }, //第八难度 { moveSpeed: 0, waitTime: 20, fastPath: 5 //最短路径 }, //第九难度 { moveSpeed: 0, waitTime: 20, fastPath: 5 //最短路径 }, //第十难度 { moveSpeed: 0, waitTime: 20, fastPath: 5 //最短路径 } ]; }; //数据备用 GameConfig.GM_INFO_init = function () { this.GM_INFO = { // isEnd: false, mean_Time: 0, total: 0, currSeed: 200000, gameId: "100010", userId: 0, guide: true, url: "https://api.sparkus.cn", success: false, matchId: null, custom: 0, round: 0, level: 0, stepTimeList: 0, successList: [], fen: 0, score: 0, igniteCount: 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: 0, submitTime: 0, duration: 0, drawingBack: 0, drawingReset: 0, timer: 0, }; }; GameConfig.CLICK_SET = function (key, value) { this.CLICK_DATA[key] = value; }; GameConfig.LEVEL_INFO_init = function () { this.TIME_INFO = { waterSpeed: [0.3, 0.25, 0.2, 0.18, 0.16, 0.14, 0.12, 0.1], totalTime: 120, waterTime: [10, 12, 14, 16, 18, 20, 20, 20], roadSpeed: 0.2, ReinforceSpeed: 0.2, Xi_SoilSpeed: 0.2, }; /* moveSpeed: 0, //洪峰移动速度 waitTime: 20, //洪峰冲击倒计时 fastPath: 5 //最短路径 */ // this.LEVEL_INFO = [ // [ // { // "id": 1001, // "map": [ // [0,0,0,0,0,0], // [0,0,0,0,0,4], // [0,0,3,0,3,0], // [0,0,0,0,0,0], // [0,0,0,3,0,0], // [0,0,0,0,0,0], // [0,0,2,0,0,0], // [0,0,0,0,0,0], // [1,0,0,0,0,0] // ] // }, // { // "id": 1002, // "map": [ // [0,0,0,0,0,0,0,0,4], // [0,0,0,0,0,0,0,0,0], // [0,0,0,0,0,0,0,0,0], // [0,0,0,0,0,0,0,0,0], // [0,0,0,0,0,0,0,0,0], // [0,1,0,0,0,0,0,0,0] // ] // } // ], // ] this.LEVEL_INFO = [[{ "id": "1001", "map": [[0, 4, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 1, 0]], "min_steps": 4 }, { "id": "1002", "map": [[1, 0, 0, 0], [0, 0, 0, 4], [0, 0, 0, 0], [0, 0, 0, 0]], "min_steps": 4 }, { "id": "1003", "map": [[1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 4]], "min_steps": 6 }, { "id": "1004", "map": [[1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 4, 0, 0]], "min_steps": 4 }, { "id": "1005", "map": [[1, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 4], [0, 0, 0, 0]], "min_steps": 5 }, { "id": "1006", "map": [[4, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 1, 0, 0]], "min_steps": 4 }, { "id": "1007", "map": [[0, 4, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 1]], "min_steps": 5 }, { "id": "1008", "map": [[0, 0, 0, 4], [0, 0, 0, 0], [0, 0, 0, 0], [1, 0, 0, 0]], "min_steps": 6 }], [{ "id": "2001", "map": [[0, 0, 0, 0, 1], [0, 0, 0, 0, 0], [0, 0, 3, 0, 3], [0, 0, 0, 0, 0], [4, 0, 0, 0, 3]], "min_steps": 8 }, { "id": "2002", "map": [[0, 1, 0, 0, 0], [0, 0, 0, 0, 0], [3, 3, 0, 0, 4], [0, 0, 0, 0, 0], [3, 0, 0, 0, 0]], "min_steps": 8 }, { "id": "2003", "map": [[1, 0, 0, 3, 0], [0, 0, 3, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 3, 0, 4, 0]], "min_steps": 7 }, { "id": "2004", "map": [[1, 0, 0, 0, 0], [0, 0, 0, 0, 3], [3, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 3, 4]], "min_steps": 8 }, { "id": "2005", "map": [[0, 3, 0, 0, 0], [1, 0, 0, 0, 0], [0, 0, 0, 3, 0], [0, 0, 0, 0, 0], [0, 3, 0, 4, 0]], "min_steps": 6 }, { "id": "2006", "map": [[0, 1, 0, 0, 0], [0, 0, 0, 0, 3], [0, 0, 0, 0, 3], [0, 0, 0, 0, 0], [0, 0, 0, 3, 4]], "min_steps": 7 }, { "id": "2007", "map": [[3, 0, 0, 0, 1], [0, 0, 0, 0, 3], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [4, 3, 0, 0, 0]], "min_steps": 8 }, { "id": "2008", "map": [[3, 4, 0, 0, 0], [0, 0, 0, 0, 3], [0, 0, 0, 3, 1], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]], "min_steps": 7 }], [{ "id": "3001", "map": [[0, 0, 2, 0, 2, 4], [0, 2, 0, 0, 0, 0], [0, 0, 2, 0, 0, 0], [1, 2, 2, 0, 0, 0], [0, 0, 0, 0, 2, 0], [0, 2, 2, 0, 0, 2]], "min_steps": 4 }, { "id": "3002", "map": [[0, 2, 0, 0, 2, 0], [0, 0, 0, 0, 0, 0], [0, 2, 0, 0, 2, 1], [0, 2, 0, 0, 0, 0], [0, 0, 0, 0, 0, 2], [2, 0, 2, 4, 2, 2]], "min_steps": 4 }], [{ "id": "4001", "map": [[3, 0, 2, 3, 4], [0, 0, 0, 2, 2], [2, 3, 3, 3, 3], [0, 0, 2, 0, 2], [1, 0, 2, 3, 0]], "min_steps": 5 }, { "id": "4002", "map": [[3, 0, 3, 2, 0], [1, 2, 0, 3, 2], [2, 3, 0, 0, 4], [2, 0, 2, 2, 0], [3, 3, 0, 3, 0]], "min_steps": 5 }, { "id": "4003", "map": [[0, 2, 3, 3, 4], [2, 2, 0, 0, 0], [1, 3, 3, 3, 2], [2, 2, 3, 2, 3], [0, 0, 0, 0, 0]], "min_steps": 5 }, { "id": "4004", "map": [[3, 2, 2, 1, 0], [0, 0, 3, 2, 2], [3, 0, 2, 3, 0], [3, 0, 0, 3, 3], [0, 2, 4, 0, 2]], "min_steps": 5 }, { "id": "4005", "map": [[3, 0, 3, 0, 0], [2, 3, 0, 0, 1], [0, 2, 2, 2, 3], [4, 2, 0, 0, 2], [3, 3, 0, 3, 2]], "min_steps": 5 }, { "id": "4006", "map": [[2, 0, 2, 2, 0], [1, 2, 3, 0, 0], [3, 3, 0, 3, 2], [3, 0, 0, 3, 2], [2, 0, 3, 0, 4]], "min_steps": 6 }, { "id": "4007", "map": [[1, 2, 0, 3, 3], [2, 2, 0, 2, 0], [2, 3, 2, 0, 3], [0, 3, 2, 0, 4], [0, 0, 3, 0, 3]], "min_steps": 6 }, { "id": "4008", "map": [[3, 3, 3, 0, 1], [0, 0, 0, 0, 3], [2, 2, 3, 2, 2], [0, 2, 3, 0, 3], [4, 2, 2, 0, 0]], "min_steps": 5 }, { "id": "4009", "map": [[1, 0, 3, 3, 2], [3, 0, 2, 0, 0], [0, 3, 3, 2, 4], [0, 0, 3, 0, 2], [2, 2, 2, 0, 3]], "min_steps": 5 }, { "id": "4010", "map": [[3, 0, 2, 0, 4], [1, 2, 3, 0, 3], [2, 0, 3, 2, 0], [0, 3, 0, 0, 3], [2, 0, 2, 3, 2]], "min_steps": 5 }], [{ "id": "5001", "map": [[1, 3, 0, 0, 2, 0], [0, 3, 0, 0, 2, 0], [0, 0, 2, 0, 3, 4], [0, 0, 0, 2, 0, 0], [3, 3, 0, 0, 2, 0, 3], [0, 0, 2, 2, 2, 0]], "min_steps": 5 }, { "id": "5002", "map": [[0, 2, 2, 2, 2, 0], [1, 0, 0, 0, 2, 0], [0, 0, 0, 0, 0, 3], [0, 0, 0, 0, 2, 0], [0, 3, 3, 0, 2, 0], [3, 0, 0, 4, 2, 0]], "min_steps": 5 }, { "id": "5003", "map": [[0, 0, 0, 0, 0, 0], [2, 0, 0, 0, 0, 2], [0, 3, 3, 3, 2, 4], [0, 3, 0, 3, 2, 0], [0, 0, 0, 0, 0, 3], [0, 0, 2, 3, 0, 1]], "min_steps": 6 }, { "id": "5004", "map": [[2, 0, 3, 0, 0, 4], [0, 2, 3, 3, 0, 0], [0, 3, 0, 0, 0, 0], [3, 0, 0, 0, 2, 2], [3, 0, 0, 2, 0, 0], [1, 0, 0, 3, 0, 0]], "min_steps": 6 }, { "id": "5005", "map": [[1, 0, 0, 0, 0, 2], [0, 0, 0, 2, 0, 0], [3, 2, 0, 0, 0, 0], [0, 3, 0, 0, 2, 3], [0, 0, 3, 3, 0, 0], [3, 0, 0, 2, 3, 4]], "min_steps": 8 }, { "id": "5006", "map": [[4, 3, 0, 3, 0, 0], [0, 2, 0, 3, 0, 0], [3, 0, 0, 0, 3, 2], [0, 3, 0, 0, 2, 1], [0, 0, 2, 0, 0, 0], [0, 0, 0, 0, 2, 3]], "min_steps": 7 }, { "id": "5007", "map": [[4, 2, 2, 0, 2, 0], [0, 3, 0, 2, 0, 0], [0, 2, 3, 0, 3, 0], [0, 0, 3, 0, 0, 3], [0, 0, 3, 0, 0, 0], [0, 0, 0, 3, 0, 1]], "min_steps": 7 }, { "id": "5008", "map": [[0, 0, 2, 3, 0, 0], [0, 3, 0, 2, 3, 2], [3, 0, 0, 0, 0, 0], [0, 3, 0, 0, 3, 4], [0, 0, 0, 0, 0, 3], [0, 2, 0, 2, 0, 1]], "min_steps": 8 }, { "id": "5009", "map": [[0, 3, 3, 0, 0, 4], [2, 0, 0, 3, 0, 0], [2, 0, 0, 3, 0, 0], [1, 0, 0, 0, 3, 0], [0, 0, 2, 3, 0, 2], [2, 3, 0, 0, 0, 0]], "min_steps": 8 }, { "id": "5010", "map": [[0, 0, 1, 3, 2, 0], [3, 0, 0, 0, 3, 2], [3, 0, 0, 0, 0, 3], [2, 0, 0, 0, 0, 0], [0, 2, 0, 0, 3, 0], [0, 2, 0, 3, 4, 0]], "min_steps": 8 }, { "id": "5011", "map": [[1, 0, 0, 0, 0, 0], [3, 3, 0, 0, 0, 2], [0, 0, 0, 3, 0, 2], [2, 0, 3, 0, 3, 0], [2, 0, 3, 0, 0, 3], [4, 0, 0, 0, 0, 2]], "min_steps": 8 }, { "id": "5012", "map": [[2, 2, 3, 0, 2, 0], [0, 3, 0, 0, 0, 0], [0, 0, 0, 0, 3, 4], [0, 2, 0, 3, 0, 3], [0, 0, 0, 0, 0, 0], [0, 0, 2, 3, 3, 1]], "min_steps": 9 }, { "id": "5013", "map": [[0, 0, 0, 0, 3, 0], [4, 2, 0, 3, 0, 0], [3, 2, 0, 0, 0, 0], [1, 3, 0, 3, 0, 0], [2, 0, 0, 2, 0, 0], [3, 0, 0, 3, 2, 0]], "min_steps": 9 }, { "id": "5014", "map": [[0, 0, 3, 0, 2, 2], [0, 2, 3, 0, 0, 1], [0, 3, 3, 0, 0, 3], [0, 2, 0, 0, 0, 0], [0, 0, 0, 3, 3, 0], [2, 0, 4, 0, 0, 0]], "min_steps": 7 }, { "id": "5015", "map": [[2, 0, 0, 0, 0, 0], [0, 0, 0, 0, 3, 1], [3, 0, 2, 0, 0, 3], [2, 0, 0, 2, 3, 0], [3, 0, 3, 0, 0, 0], [2, 0, 0, 3, 4, 0]], "min_steps": 7 }, { "id": "5016", "map": [[0, 0, 3, 0, 0, 1], [2, 3, 0, 0, 3, 0], [2, 0, 0, 0, 0, 2], [0, 3, 0, 0, 0, 0], [0, 3, 0, 0, 2, 0], [0, 4, 3, 0, 2, 3]], "min_steps": 8 }, { "id": "5017", "map": [[1, 2, 3, 0, 3, 2], [3, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 3], [3, 3, 0, 3, 2, 0], [0, 2, 0, 0, 0, 0], [4, 0, 0, 2, 0, 0]], "min_steps": 8 }, { "id": "5018", "map": [[0, 0, 1, 0, 2, 0], [0, 0, 0, 0, 0, 0], [0, 0, 3, 2, 3, 0], [3, 0, 0, 3, 0, 0], [2, 3, 0, 2, 0, 0], [4, 2, 0, 3, 3, 0]], "min_steps": 8 }], [{ "id": "6001", "map": [[1, 0, 0, 0, 0, 0], [0, 2, 2, 3, 0, 2], [3, 2, 0, 0, 3, 3], [0, 0, 0, 0, 0, 4], [0, 0, 0, 2, 2, 0], [3, 0, 2, 2, 0, 0]], "min_steps": 7 }, { "id": "6002", "map": [[0, 0, 0, 0, 4, 3], [3, 2, 3, 0, 0, 0], [0, 2, 0, 2, 3, 0], [2, 2, 0, 0, 0, 0], [3, 2, 0, 0, 0, 0], [3, 0, 0, 2, 0, 3], [2, 0, 0, 3, 0, 1]], "min_steps": 7 }, { "id": "6003", "map": [[0, 0, 1, 3, 0, 2], [0, 3, 3, 0, 0, 0], [0, 0, 3, 2, 0, 0], [0, 0, 3, 0, 0, 0], [3, 0, 0, 0, 2, 2], [0, 0, 2, 3, 0, 0], [0, 2, 0, 3, 0, 4]], "min_steps": 10 }, { "id": "6004", "map": [[0, 3, 3, 2, 3, 0], [2, 0, 2, 0, 3, 0], [1, 0, 3, 2, 0, 0], [3, 3, 0, 0, 0, 2], [0, 0, 0, 0, 0, 0], [0, 2, 0, 0, 0, 0], [0, 0, 0, 3, 4, 0]], "min_steps": 8 }, { "id": "6005", "map": [[0, 0, 0, 0, 0, 1], [0, 0, 2, 0, 2, 0], [3, 2, 2, 0, 0, 0], [3, 0, 0, 3, 0, 0], [3, 3, 0, 0, 0, 3], [4, 3, 0, 0, 0, 0], [2, 0, 0, 2, 3, 0]], "min_steps": 8 }, { "id": "6006", "map": [[0, 3, 0, 0, 0, 0], [1, 0, 0, 0, 3, 0], [0, 0, 3, 2, 0, 0], [3, 0, 0, 2, 2, 0], [0, 3, 0, 3, 3, 0], [0, 2, 0, 0, 0, 0], [4, 0, 3, 0, 2, 2]], "min_steps": 9 }, { "id": "6007", "map": [[0, 2, 0, 3, 0, 0], [1, 2, 0, 2, 0, 0], [0, 3, 0, 3, 0, 0], [3, 0, 0, 0, 0, 3], [0, 0, 3, 2, 0, 2], [4, 0, 0, 3, 0, 3], [0, 2, 0, 0, 0, 0]], "min_steps": 9 }, { "id": "6008", "map": [[3, 0, 3, 2, 0, 4], [0, 3, 0, 2, 0, 2], [0, 0, 3, 0, 0, 0], [2, 0, 0, 2, 0, 0], [0, 0, 3, 0, 0, 0], [0, 0, 0, 3, 0, 0], [3, 2, 1, 3, 0, 0]], "min_steps": 8 }, { "id": "6009", "map": [[0, 2, 0, 0, 0, 3], [0, 0, 3, 3, 3, 4], [0, 3, 0, 0, 0, 0], [0, 3, 2, 0, 0, 0], [1, 2, 3, 2, 0, 3], [2, 0, 0, 0, 0, 0], [0, 0, 0, 0, 2, 0]], "min_steps": 10 }, { "id": "6010", "map": [[0, 3, 1, 0, 0, 0], [0, 2, 3, 3, 0, 0], [0, 2, 0, 3, 0, 0], [0, 2, 0, 2, 0, 3], [0, 2, 0, 0, 3, 0], [0, 3, 0, 0, 0, 0], [0, 2, 4, 0, 0, 3]], "min_steps": 9 }, { "id": "6011", "map": [[1, 0, 3, 0, 3, 0], [0, 2, 0, 0, 0, 0], [2, 0, 2, 0, 3, 0], [0, 3, 2, 0, 0, 0], [3, 0, 0, 0, 0, 2], [4, 0, 3, 0, 0, 0], [3, 2, 0, 0, 0, 3]], "min_steps": 9 }, { "id": "6012", "map": [[2, 3, 0, 2, 0, 1], [2, 0, 0, 0, 0, 0], [2, 0, 0, 3, 0, 2], [3, 0, 3, 0, 0, 3], [0, 0, 0, 0, 3, 3], [3, 0, 0, 0, 2, 0], [0, 0, 0, 0, 0, 4]], "min_steps": 8 }, { "id": "6013", "map": [[0, 0, 2, 1, 2, 0], [0, 3, 0, 0, 0, 0], [2, 0, 0, 0, 0, 0], [0, 0, 0, 3, 0, 0], [3, 0, 0, 2, 3, 0], [3, 3, 3, 2, 0, 2], [0, 0, 4, 0, 0, 3]], "min_steps": 8 }, { "id": "6014", "map": [[0, 1, 0, 0, 0, 0], [2, 0, 2, 0, 0, 2], [2, 3, 0, 3, 0, 0], [0, 3, 0, 0, 0, 3], [0, 0, 0, 2, 0, 3], [0, 0, 3, 0, 3, 0], [2, 0, 3, 0, 0, 4]], "min_steps": 9 }, { "id": "6015", "map": [[1, 2, 3, 2, 2, 0], [3, 0, 0, 0, 0, 3], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 2], [0, 3, 0, 3, 2, 0], [0, 0, 0, 0, 0, 0], [0, 2, 0, 4, 0, 3]], "min_steps": 7 }, { "id": "6016", "map": [[3, 0, 1, 0, 0, 0], [0, 2, 0, 2, 0, 0], [0, 2, 0, 2, 0, 3], [0, 0, 0, 0, 0, 0], [0, 2, 0, 0, 3, 3], [0, 0, 0, 0, 2, 3], [0, 0, 0, 3, 0, 4]], "min_steps": 7 }, { "id": "6017", "map": [[0, 0, 0, 0, 0, 0], [1, 2, 3, 0, 0, 2], [0, 0, 2, 0, 0, 2], [3, 0, 2, 3, 0, 0], [0, 3, 3, 0, 2, 0], [0, 0, 0, 0, 0, 0], [4, 0, 3, 0, 0, 0]], "min_steps": 9 }, { "id": "6018", "map": [[0, 2, 0, 1, 0, 0], [2, 0, 0, 3, 0, 0], [0, 0, 0, 0, 0, 0], [3, 0, 0, 0, 0, 0], [2, 3, 0, 2, 3, 3], [2, 0, 0, 0, 0, 2], [4, 3, 0, 0, 0, 0]], "min_steps": 8 }, { "id": "6019", "map": [[1, 3, 0, 2, 3, 0], [0, 0, 0, 0, 0, 2], [0, 0, 0, 0, 0, 0], [0, 0, 2, 0, 0, 2], [3, 3, 0, 3, 0, 2], [4, 0, 2, 0, 0, 0], [0, 0, 0, 3, 0, 0]], "min_steps": 8 }, { "id": "6020", "map": [[0, 0, 0, 2, 0, 0], [0, 3, 0, 0, 0, 3], [0, 2, 0, 0, 3, 0], [2, 0, 0, 2, 3, 4], [0, 2, 3, 0, 0, 0], [0, 0, 0, 3, 0, 0], [3, 2, 0, 1, 3, 0]], "min_steps": 11 }], [{ "id": "7001", "map": [[0, 0, 3, 3, 4, 2], [0, 0, 0, 2, 0, 0], [2, 3, 3, 2, 0, 0], [0, 3, 0, 0, 0, 2], [0, 0, 0, 3, 2, 2], [2, 0, 0, 3, 0, 2], [1, 3, 2, 0, 0, 0], [0, 0, 0, 3, 0, 0]], "min_steps": 9 }, { "id": "7002", "map": [[0, 0, 3, 3, 4, 2], [0, 0, 0, 2, 0, 0], [2, 3, 3, 2, 0, 0], [0, 3, 0, 0, 0, 2], [0, 0, 0, 3, 2, 2], [2, 0, 0, 3, 0, 2], [1, 3, 2, 0, 0, 0], [0, 0, 0, 3, 0, 0]], "min_steps": 11 }, { "id": "7003", "map": [[0, 2, 2, 0, 0, 4], [0, 3, 3, 0, 0, 0], [3, 2, 0, 0, 0, 0], [0, 3, 0, 0, 3, 3], [0, 2, 0, 3, 0, 0], [2, 3, 0, 0, 0, 0], [0, 2, 3, 0, 0, 0], [1, 2, 3, 0, 2, 0]], "min_steps": 12 }, { "id": "7004", "map": [[0, 3, 0, 2, 2, 0], [0, 0, 0, 0, 0, 2], [3, 0, 0, 0, 0, 0], [0, 3, 0, 0, 0, 0], [0, 3, 3, 0, 3, 0], [2, 0, 0, 0, 3, 2], [2, 0, 0, 0, 3, 1], [4, 3, 0, 2, 3, 2]], "min_steps": 13 }, { "id": "7005", "map": [[2, 2, 4, 2, 3, 0], [0, 3, 3, 2, 0, 0], [3, 0, 0, 3, 0, 2], [3, 0, 2, 3, 3, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 2, 3], [3, 2, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0]], "min_steps": 13 }, { "id": "7006", "map": [[1, 0, 2, 0, 0, 3], [0, 0, 0, 0, 3, 0], [3, 0, 0, 3, 2, 0], [2, 3, 0, 0, 0, 3], [0, 0, 3, 2, 0, 3], [0, 2, 0, 3, 0, 0], [2, 3, 0, 2, 0, 0], [0, 4, 0, 2, 0, 0]], "min_steps": 11 }, { "id": "7007", "map": [[3, 2, 0, 0, 3, 4], [0, 2, 0, 0, 3, 0], [0, 0, 2, 0, 2, 0], [2, 0, 0, 3, 0, 3], [0, 0, 2, 0, 3, 2], [0, 2, 3, 3, 0, 1], [0, 0, 0, 0, 0, 3], [0, 0, 0, 3, 0, 0]], "min_steps": 13 }, { "id": "7008", "map": [[0, 0, 2, 0, 3, 4], [3, 3, 2, 3, 0, 0], [0, 0, 0, 0, 0, 3], [0, 0, 2, 3, 2, 0], [0, 0, 2, 0, 3, 2], [3, 3, 0, 0, 0, 2], [0, 3, 0, 0, 0, 0], [2, 1, 0, 0, 0, 0]], "min_steps": 10 }, { "id": "7009", "map": [[4, 3, 0, 0, 3, 0], [0, 0, 0, 0, 0, 0], [3, 3, 0, 2, 0, 2], [3, 0, 0, 2, 2, 0], [2, 3, 2, 0, 0, 0], [1, 3, 3, 0, 0, 0], [2, 0, 0, 0, 0, 0], [3, 3, 0, 0, 0, 2]], "min_steps": 11 }, { "id": "7010", "map": [[0, 3, 1, 0, 0, 0], [0, 2, 3, 3, 0, 0], [2, 0, 0, 3, 0, 0], [0, 2, 0, 0, 3, 2], [3, 0, 0, 0, 0, 2], [3, 2, 0, 0, 0, 0], [4, 0, 0, 3, 2, 0], [0, 3, 0, 3, 2, 0]], "min_steps": 13 }, { "id": "7011", "map": [[3, 0, 2, 2, 3, 2], [1, 0, 0, 0, 0, 3], [0, 0, 3, 2, 3, 0], [3, 0, 3, 0, 0, 0], [4, 3, 2, 3, 0, 2], [0, 0, 2, 0, 2, 3], [2, 0, 0, 0, 0, 3], [0, 0, 0, 2, 0, 3]], "min_steps": 12 }, { "id": "7012", "map": [[3, 0, 0, 0, 2, 0], [0, 3, 0, 3, 0, 0], [0, 3, 0, 0, 0, 3], [2, 0, 0, 3, 2, 0], [3, 2, 2, 2, 0, 0], [3, 0, 2, 0, 3, 0], [1, 2, 3, 0, 2, 0], [2, 3, 0, 0, 3, 4]], "min_steps": 9 }, { "id": "7013", "map": [[3, 0, 0, 2, 2, 0], [0, 2, 0, 3, 0, 2], [0, 0, 3, 2, 3, 0], [0, 3, 0, 0, 3, 0], [2, 2, 3, 2, 0, 0], [0, 0, 3, 3, 0, 0], [0, 2, 0, 3, 2, 0], [4, 3, 3, 0, 1, 0]], "min_steps": 10 }, { "id": "7014", "map": [[4, 3, 0, 0, 0, 0], [0, 2, 2, 2, 3, 0], [0, 3, 0, 0, 0, 0], [2, 3, 2, 3, 0, 0], [3, 3, 0, 0, 0, 3], [0, 0, 0, 2, 3, 0], [0, 3, 2, 0, 2, 2], [2, 3, 3, 0, 0, 1]], "min_steps": 12 }, { "id": "7015", "map": [[4, 0, 0, 0, 2, 3], [0, 0, 3, 0, 0, 3], [2, 2, 3, 2, 0, 0], [3, 0, 0, 0, 3, 2], [2, 3, 0, 3, 0, 2], [0, 0, 3, 0, 2, 3], [0, 0, 0, 0, 0, 3], [1, 2, 2, 3, 0, 0]], "min_steps": 14 }, { "id": "7016", "map": [[0, 0, 1, 0, 2, 3], [0, 3, 2, 0, 2, 0], [3, 3, 3, 3, 0, 0], [3, 0, 0, 0, 0, 0], [2, 2, 3, 0, 3, 3], [0, 0, 2, 0, 2, 0], [0, 2, 0, 2, 0, 3], [3, 0, 2, 0, 0, 4]], "min_steps": 9 }, { "id": "7017", "map": [[4, 0, 0, 0, 0, 3], [0, 3, 3, 0, 0, 0], [3, 0, 2, 2, 0, 0], [3, 0, 2, 3, 3, 2], [3, 2, 0, 2, 3, 3], [2, 0, 2, 0, 0, 0], [0, 0, 0, 0, 0, 3], [2, 3, 0, 2, 0, 1]], "min_steps": 10 }, { "id": "7018", "map": [[2, 3, 0, 0, 2, 3], [2, 0, 0, 3, 0, 4], [2, 0, 0, 0, 0, 0], [0, 3, 2, 0, 2, 3], [0, 0, 0, 0, 0, 3], [2, 0, 3, 3, 2, 3], [0, 0, 0, 3, 2, 0], [2, 3, 1, 3, 0, 0]], "min_steps": 11 }, { "id": "7019", "map": [[4, 0, 0, 0, 2, 3], [0, 0, 3, 0, 0, 3], [2, 2, 3, 2, 0, 0], [3, 0, 0, 0, 3, 2], [2, 3, 0, 3, 0, 2], [0, 0, 3, 0, 2, 3], [0, 0, 0, 0, 0, 3], [1, 2, 2, 3, 0, 0]], "min_steps": 14 }, { "id": "7020", "map": [[3, 2, 0, 0, 0, 0], [4, 0, 2, 0, 2, 0], [3, 3, 0, 0, 2, 2], [0, 0, 3, 0, 2, 0], [0, 0, 0, 0, 2, 3], [0, 2, 3, 3, 0, 0], [2, 3, 0, 0, 3, 3], [1, 3, 3, 2, 0, 0]], "min_steps": 12 }, { "id": "7021", "map": [[4, 3, 0, 0, 0, 0], [0, 2, 2, 2, 3, 0], [0, 3, 0, 0, 0, 0], [2, 3, 2, 3, 0, 0], [3, 3, 0, 0, 0, 3], [0, 0, 0, 2, 3, 0], [0, 3, 2, 0, 2, 2], [2, 3, 3, 0, 0, 1]], "min_steps": 12 }], [{ "id": "8001", "map": [[0, 2, 0, 0, 2, 0], [3, 3, 0, 2, 0, 4], [0, 0, 0, 0, 0, 3], [0, 0, 0, 0, 3, 2], [0, 0, 0, 0, 0, 2], [3, 3, 0, 0, 0, 2], [0, 3, 3, 2, 2, 0], [0, 3, 2, 2, 0, 3], [1, 2, 0, 0, 2, 0]], "min_steps": 9 }, { "id": "8002", "map": [[1, 0, 3, 2, 0, 2], [0, 3, 0, 0, 0, 2], [0, 2, 0, 3, 2, 2], [0, 3, 0, 0, 0, 0], [0, 2, 0, 3, 3, 0], [3, 2, 2, 0, 0, 3], [0, 3, 2, 3, 0, 2], [0, 0, 0, 0, 0, 0], [2, 0, 0, 2, 3, 4]], "min_steps": 11 }, { "id": "8003", "map": [[1, 3, 2, 0, 0, 0], [0, 0, 0, 2, 0, 0], [0, 3, 0, 2, 0, 0], [3, 3, 3, 2, 0, 3], [2, 3, 3, 0, 3, 0], [0, 0, 0, 0, 0, 2], [3, 0, 2, 2, 3, 2], [4, 2, 0, 0, 2, 0], [0, 0, 2, 0, 0, 2]], "min_steps": 10 }, { "id": "8004", "map": [[2, 0, 0, 2, 0, 0], [0, 3, 0, 0, 0, 1], [0, 2, 0, 0, 0, 0], [0, 0, 0, 0, 2, 0], [0, 0, 3, 3, 3, 2], [0, 0, 0, 3, 2, 3], [0, 0, 2, 0, 0, 3], [0, 2, 3, 2, 2, 4], [3, 2, 2, 0, 3, 0]], "min_steps": 13 }, { "id": "8005", "map": [[0, 0, 0, 0, 0, 0], [0, 0, 0, 3, 2, 4], [0, 3, 0, 0, 3, 3], [3, 3, 0, 2, 0, 3], [0, 2, 2, 0, 3, 2], [0, 0, 3, 0, 2, 0], [0, 2, 0, 2, 0, 0], [3, 0, 0, 2, 2, 0], [0, 0, 2, 2, 0, 1]], "min_steps": 11 }, { "id": "8006", "map": [[0, 0, 0, 0, 2, 3], [3, 2, 0, 0, 0, 0], [0, 2, 0, 3, 3, 4], [0, 0, 0, 2, 2, 3], [2, 0, 0, 0, 0, 0], [0, 0, 0, 0, 3, 0], [3, 0, 3, 3, 0, 2], [3, 0, 2, 2, 0, 2], [0, 0, 2, 2, 0, 1]], "min_steps": 11 }, { "id": "8007", "map": [[2, 0, 2, 0, 2, 0], [0, 0, 2, 0, 3, 2], [0, 0, 0, 3, 3, 0], [0, 2, 0, 0, 3, 2], [3, 0, 0, 2, 0, 0], [3, 3, 0, 0, 0, 2], [0, 2, 0, 3, 2, 0], [0, 2, 3, 0, 0, 0], [4, 3, 0, 0, 1, 0]], "min_steps": 11 }, { "id": "8008", "map": [[1, 0, 0, 0, 2, 0], [3, 3, 2, 0, 3, 0], [3, 0, 3, 0, 0, 0], [0, 0, 3, 0, 0, 3], [2, 2, 0, 3, 0, 3], [2, 0, 2, 0, 0, 0], [2, 0, 2, 0, 0, 2], [2, 0, 0, 2, 0, 0], [4, 3, 0, 0, 0, 2]], "min_steps": 12 }, { "id": "8009", "map": [[4, 0, 3, 1, 0, 2], [0, 2, 3, 3, 3, 0], [0, 2, 3, 2, 2, 0], [3, 0, 3, 0, 0, 2], [0, 0, 0, 0, 0, 0], [3, 2, 0, 0, 2, 0], [3, 2, 0, 0, 2, 0], [0, 0, 2, 2, 2, 0], [0, 0, 0, 0, 3, 0]], "min_steps": 13 }, { "id": "8010", "map": [[4, 3, 0, 3, 1, 0], [0, 0, 3, 3, 0, 0], [0, 3, 0, 0, 2, 2], [2, 0, 3, 0, 0, 2], [3, 2, 0, 2, 3, 0], [0, 0, 0, 0, 0, 0], [0, 2, 0, 2, 2, 0], [0, 2, 0, 3, 0, 2], [0, 2, 0, 0, 0, 3]], "min_steps": 12 }, { "id": "8011", "map": [[0, 1, 0, 0, 2, 0], [3, 0, 3, 3, 2, 3], [0, 3, 3, 2, 0, 0], [0, 0, 2, 0, 3, 3], [2, 3, 2, 0, 0, 0], [3, 2, 2, 3, 3, 0], [2, 0, 2, 2, 0, 4], [0, 2, 0, 3, 0, 0], [0, 0, 0, 3, 0, 3]], "min_steps": 14 }, { "id": "8012", "map": [[1, 3, 3, 3, 0, 0], [0, 3, 0, 2, 0, 0], [0, 0, 0, 3, 0, 2], [3, 0, 0, 3, 2, 3], [0, 0, 2, 0, 0, 3], [0, 0, 2, 3, 2, 0], [2, 2, 3, 2, 3, 2], [0, 3, 0, 2, 0, 2], [0, 3, 4, 3, 0, 0]], "min_steps": 17 }, { "id": "8013", "map": [[0, 1, 0, 0, 3, 3], [0, 2, 0, 3, 0, 0], [2, 3, 0, 0, 0, 0], [0, 0, 0, 3, 0, 3], [0, 3, 0, 2, 3, 2], [2, 0, 3, 3, 2, 0], [0, 2, 2, 3, 0, 2], [2, 3, 2, 0, 3, 0], [0, 3, 3, 0, 2, 4]], "min_steps": 17 }, { "id": "8014", "map": [[3, 4, 2, 3, 0, 0], [2, 3, 0, 3, 0, 0], [0, 2, 2, 0, 0, 0], [0, 3, 3, 0, 3, 3], [0, 0, 0, 0, 0, 0], [3, 2, 0, 0, 2, 2], [2, 2, 2, 2, 0, 3], [0, 0, 3, 3, 0, 3], [1, 2, 0, 3, 3, 0]], "min_steps": 13 }, { "id": "8015", "map": [[2, 3, 4, 0, 3, 0], [1, 2, 3, 2, 3, 0], [0, 0, 3, 0, 2, 0], [2, 0, 0, 3, 0, 0], [2, 2, 0, 2, 0, 3], [0, 0, 2, 0, 0, 0], [3, 0, 0, 3, 3, 0], [0, 0, 3, 0, 2, 3], [3, 0, 3, 2, 3, 2]], "min_steps": 13 }, { "id": "8016", "map": [[2, 3, 4, 0, 0, 3], [0, 3, 2, 2, 3, 1], [0, 2, 2, 3, 0, 0], [3, 0, 3, 0, 2, 0], [3, 0, 0, 0, 2, 2], [0, 0, 3, 3, 0, 0], [0, 3, 0, 3, 2, 0], [0, 0, 3, 0, 3, 2], [0, 2, 2, 3, 0, 0]], "min_steps": 12 }, { "id": "8017", "map": [[2, 0, 0, 3, 0, 3], [4, 3, 0, 2, 0, 3], [3, 0, 0, 0, 3, 0], [2, 0, 0, 2, 0, 0], [3, 0, 0, 3, 0, 0], [2, 3, 0, 2, 2, 2], [1, 3, 3, 0, 2, 2], [0, 3, 0, 0, 3, 0], [0, 2, 0, 3, 3, 2]], "min_steps": 14 }, { "id": "8018", "map": [[0, 0, 0, 0, 0, 2], [1, 0, 3, 3, 0, 2], [3, 3, 0, 3, 2, 3], [0, 3, 0, 2, 0, 0], [0, 3, 0, 0, 2, 2], [3, 0, 0, 2, 3, 0], [0, 3, 3, 3, 0, 0], [2, 0, 3, 0, 0, 2], [2, 4, 2, 0, 3, 2]], "min_steps": 17 }, { "id": "8019", "map": [[0, 3, 0, 2, 3, 1], [0, 3, 0, 2, 0, 2], [0, 2, 2, 0, 3, 3], [0, 0, 3, 2, 0, 3], [0, 0, 3, 2, 2, 0], [2, 2, 3, 0, 2, 2], [0, 3, 0, 0, 3, 0], [3, 0, 0, 3, 3, 0], [0, 0, 0, 3, 0, 4]], "min_steps": 14 }, { "id": "8020", "map": [[2, 3, 0, 4, 3, 3], [3, 3, 0, 0, 3, 0], [0, 2, 0, 3, 2, 0], [0, 3, 0, 0, 0, 2], [3, 2, 0, 0, 0, 0], [0, 0, 3, 2, 0, 3], [0, 3, 0, 3, 2, 0], [3, 2, 2, 0, 0, 2], [0, 0, 2, 1, 3, 2]], "min_steps": 12 }, { "id": "8021", "map": [[0, 0, 0, 0, 2, 4], [3, 0, 2, 0, 0, 0], [3, 0, 2, 3, 3, 3], [2, 0, 3, 3, 3, 0], [2, 0, 0, 0, 2, 3], [3, 3, 0, 0, 0, 2], [1, 0, 3, 0, 2, 2], [2, 2, 0, 2, 0, 0], [0, 0, 3, 3, 0, 3]], "min_steps": 14 }, { "id": "8022", "map": [[4, 0, 0, 0, 0, 0], [0, 0, 0, 0, 3, 2], [3, 3, 2, 3, 3, 2], [2, 0, 0, 0, 0, 2], [0, 0, 3, 0, 3, 3], [2, 0, 2, 3, 2, 1], [3, 2, 3, 0, 0, 3], [2, 0, 0, 3, 2, 2], [3, 3, 0, 0, 0, 0]], "min_steps": 15 }, { "id": "8023", "map": [[3, 2, 0, 2, 0, 1], [0, 3, 3, 2, 3, 3], [0, 3, 3, 0, 3, 0], [0, 2, 2, 2, 0, 3], [0, 3, 2, 0, 0, 3], [0, 0, 0, 0, 2, 0], [2, 2, 2, 3, 0, 0], [2, 0, 3, 0, 3, 0], [0, 0, 3, 0, 0, 4]], "min_steps": 9 }, { "id": "8024", "map": [[1, 3, 2, 0, 0, 3], [2, 3, 2, 0, 0, 0], [0, 2, 3, 0, 3, 3], [3, 0, 0, 2, 0, 3], [2, 3, 0, 0, 0, 3], [3, 3, 0, 0, 0, 0], [2, 0, 3, 0, 0, 2], [0, 0, 2, 0, 2, 2], [4, 2, 3, 0, 3, 0]], "min_steps": 12 }, { "id": "8025", "map": [[2, 3, 1, 0, 3, 3], [0, 0, 2, 3, 2, 0], [0, 2, 0, 0, 0, 3], [0, 3, 0, 0, 0, 3], [2, 0, 0, 3, 2, 0], [0, 0, 2, 3, 0, 2], [2, 0, 3, 2, 0, 3], [3, 3, 0, 0, 3, 3], [2, 4, 0, 2, 0, 0]], "min_steps": 13 }, { "id": "8026", "map": [[2, 4, 2, 0, 0, 0], [0, 3, 3, 0, 3, 0], [3, 3, 3, 0, 0, 3], [2, 0, 3, 0, 0, 2], [0, 2, 2, 3, 0, 3], [1, 0, 2, 0, 2, 0], [3, 3, 0, 0, 0, 0], [2, 0, 0, 0, 3, 2], [2, 0, 3, 2, 3, 0]], "min_steps": 11 }, { "id": "8027", "map": [[2, 0, 0, 0, 0, 2], [0, 0, 3, 3, 2, 3], [0, 0, 3, 0, 0, 1], [0, 3, 0, 3, 3, 3], [0, 0, 0, 0, 0, 2], [3, 3, 2, 0, 0, 2], [3, 3, 0, 2, 0, 3], [0, 3, 2, 2, 2, 0], [0, 3, 4, 2, 2, 0]], "min_steps": 11 }, { "id": "8028", "map": [[0, 2, 1, 3, 0, 2], [0, 3, 3, 3, 0, 2], [0, 0, 0, 3, 0, 2], [3, 0, 0, 3, 2, 4], [2, 0, 0, 3, 2, 2], [2, 2, 3, 0, 0, 3], [0, 2, 0, 0, 0, 0], [0, 3, 3, 3, 2, 0], [0, 3, 0, 3, 0, 0]], "min_steps": 16 }, { "id": "8029", "map": [[0, 0, 1, 0, 0, 0], [3, 3, 0, 0, 3, 2], [3, 0, 0, 0, 2, 0], [0, 2, 0, 2, 2, 0], [2, 3, 3, 3, 0, 3], [3, 2, 2, 3, 0, 0], [2, 0, 3, 0, 0, 3], [3, 2, 0, 0, 0, 3], [4, 2, 0, 0, 3, 2]], "min_steps": 11 }, { "id": "8030", "map": [[2, 0, 1, 2, 0, 0], [0, 2, 3, 3, 0, 2], [2, 3, 3, 3, 0, 2], [3, 0, 0, 2, 2, 0], [0, 3, 0, 3, 2, 0], [0, 0, 2, 0, 2, 3], [3, 3, 0, 3, 3, 2], [4, 3, 0, 0, 0, 0], [0, 0, 0, 0, 0, 3]], "min_steps": 13 }, { "id": "8031", "map": [[0, 2, 2, 3, 4, 2], [3, 3, 0, 0, 2, 2], [0, 0, 0, 3, 2, 0], [0, 3, 0, 0, 3, 3], [0, 2, 0, 2, 3, 0], [2, 3, 0, 0, 0, 0], [3, 3, 0, 3, 0, 2], [0, 0, 2, 3, 3, 3], [1, 0, 2, 0, 0, 0]], "min_steps": 13 }, { "id": "8032", "map": [[0, 0, 0, 0, 3, 4], [0, 0, 3, 3, 3, 2], [2, 2, 3, 3, 0, 0], [0, 0, 3, 2, 0, 0], [0, 2, 0, 2, 3, 2], [0, 2, 3, 0, 0, 3], [2, 3, 3, 0, 0, 2], [1, 0, 3, 0, 3, 2], [0, 0, 3, 0, 0, 2]], "min_steps": 12 }, { "id": "8033", "map": [[1, 0, 0, 3, 0, 3], [3, 3, 2, 0, 2, 0], [0, 3, 3, 2, 0, 2], [3, 2, 0, 3, 0, 0], [4, 2, 2, 2, 0, 0], [0, 3, 0, 0, 0, 0], [3, 3, 3, 0, 0, 2], [3, 0, 3, 2, 0, 3], [2, 0, 0, 0, 0, 2]], "min_steps": 12 }, { "id": "8034", "map": [[1, 0, 0, 3, 2, 0], [0, 2, 2, 3, 3, 0], [3, 0, 0, 2, 0, 3], [2, 3, 2, 2, 0, 3], [0, 0, 3, 0, 0, 3], [3, 0, 0, 0, 3, 0], [2, 3, 0, 3, 2, 4], [0, 3, 0, 0, 0, 3], [0, 2, 0, 0, 2, 2]], "min_steps": 16 }, { "id": "8035", "map": [[3, 0, 0, 2, 0, 4], [3, 0, 2, 3, 3, 3], [0, 0, 2, 3, 0, 2], [3, 0, 3, 3, 3, 0], [2, 2, 0, 0, 0, 0], [2, 2, 3, 0, 0, 0], [0, 0, 2, 3, 0, 0], [0, 2, 0, 3, 2, 3], [0, 0, 3, 1, 2, 0]], "min_steps": 12 }, { "id": "8036", "map": [[2, 3, 1, 0, 0, 2], [0, 3, 0, 0, 0, 0], [2, 0, 2, 0, 0, 3], [0, 0, 3, 3, 0, 3], [0, 2, 2, 0, 0, 3], [0, 3, 2, 3, 3, 0], [0, 3, 2, 0, 0, 2], [0, 3, 2, 0, 2, 3], [2, 0, 3, 3, 4, 0]], "min_steps": 12 }, { "id": "8037", "map": [[2, 0, 0, 0, 0, 3], [0, 2, 3, 0, 2, 2], [0, 0, 3, 0, 2, 0], [0, 2, 2, 0, 0, 0], [3, 2, 3, 0, 0, 3], [0, 0, 3, 3, 0, 3], [3, 2, 3, 0, 0, 3], [0, 0, 3, 3, 2, 0], [4, 3, 1, 2, 0, 2]], "min_steps": 12 }, { "id": "8038", "map": [[4, 2, 3, 3, 2, 3], [0, 3, 0, 2, 3, 0], [0, 0, 0, 2, 0, 2], [3, 3, 2, 3, 0, 0], [0, 3, 0, 3, 2, 3], [0, 2, 2, 2, 0, 0], [1, 3, 0, 0, 3, 0], [2, 0, 0, 0, 3, 2], [0, 0, 3, 0, 0, 0]], "min_steps": 13 }, { "id": "8039", "map": [[2, 0, 3, 3, 2, 0], [0, 0, 0, 0, 2, 3], [1, 3, 0, 0, 0, 2], [0, 2, 3, 2, 2, 2], [0, 0, 3, 0, 0, 0], [0, 3, 0, 0, 3, 0], [3, 0, 0, 2, 3, 2], [2, 0, 3, 0, 2, 3], [0, 4, 3, 0, 3, 3]], "min_steps": 12 }, { "id": "8040", "map": [[0, 2, 3, 3, 4, 0], [0, 2, 0, 0, 3, 2], [0, 0, 3, 0, 2, 0], [3, 0, 2, 0, 0, 3], [2, 0, 0, 3, 0, 3], [3, 3, 0, 2, 2, 0], [2, 2, 3, 0, 2, 0], [1, 3, 0, 0, 2, 3], [0, 0, 0, 3, 0, 3]], "min_steps": 12 }, { "id": "8041", "map": [[3, 3, 0, 2, 3, 1], [0, 3, 3, 2, 0, 2], [0, 2, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [3, 3, 3, 2, 3, 0], [0, 3, 3, 2, 3, 2], [4, 0, 3, 0, 2, 0], [2, 2, 2, 0, 0, 0], [0, 3, 2, 0, 3, 0]], "min_steps": 12 }]]; this.LEVEL_INFO.unshift([{ "id": "0001", "map": [[3, 2, 2, 0, 2], [0, 0, 3, 3, 0], [1, 3, 0, 3, 2], [3, 0, 2, 3, 4], [3, 2, 3, 3, 2]], "min_steps": 4 }]); }; 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(); } 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXENvbmZpZ1xcR2FtZUNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJTSxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUU1QztJQUFBO0lBa1NBLENBQUM7bUJBbFNZLFVBQVU7SUFvRW5CLHNCQUFXLHNCQUFRO1FBSm5CLE9BQU87YUFJUDtZQUVJLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQzFCO2dCQUNJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxZQUFVLEVBQUUsQ0FBQzthQUNyQztZQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMxQixDQUFDOzs7T0FBQTtJQUNELGVBQWU7SUFDUixlQUFJLEdBQVgsVUFBWSxjQUFjO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztRQUNoQiwwRUFBMEU7UUFDMUUsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixRQUFRO1FBQ1Isd0NBQXdDO1FBQ3hDLDBDQUEwQztRQUMxQyxLQUFLO1FBQ0wsMEVBQTBFO1FBQzFFLGlCQUFpQjtRQUNqQixrQkFBa0I7UUFDbEIsUUFBUTtRQUVSLHdDQUF3QztRQUN4QywwQ0FBMEM7UUFDMUMsS0FBSztRQUNMLHVFQUF1RTtRQUN2RSxpQkFBaUI7UUFDakIscURBQXFEO1FBQ3JELGtCQUFrQjtRQUNsQixRQUFRO1FBRVIsd0NBQXdDO1FBQ3hDLHVDQUF1QztRQUN2Qyx1Q0FBdUM7UUFDdkMsaURBQWlEO1FBQ2pELEtBQUs7UUFFTCxtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUNoQixDQUFBO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRztZQUNmLE1BQU07WUFDTjtnQkFDSSxTQUFTLEVBQUUsQ0FBQztnQkFDWixRQUFRLEVBQUUsRUFBRTtnQkFDWixRQUFRLEVBQUUsQ0FBQyxDQUFHLE1BQU07YUFDdkI7WUFDRCxNQUFNO1lBQ047Z0JBQ0ksU0FBUyxFQUFFLENBQUM7Z0JBQ1osUUFBUSxFQUFFLEVBQUU7Z0JBQ1osUUFBUSxFQUFFLENBQUMsQ0FBRyxNQUFNO2FBQ3ZCO1lBQ0QsTUFBTTtZQUNOO2dCQUNJLFNBQVMsRUFBRSxDQUFDO2dCQUNaLFFBQVEsRUFBRSxFQUFFO2dCQUNaLFFBQVEsRUFBRSxDQUFDLENBQUcsTUFBTTthQUN2QjtZQUNELE1BQU07WUFDTjtnQkFDSSxTQUFTLEVBQUUsQ0FBQztnQkFDWixRQUFRLEVBQUUsRUFBRTtnQkFDWixRQUFRLEVBQUUsQ0FBQyxDQUFHLE1BQU07YUFDdkI7WUFDRCxNQUFNO1lBQ047Z0JBQ0ksU0FBUyxFQUFFLENBQUM7Z0JBQ1osUUFBUSxFQUFFLEVBQUU7Z0JBQ1osUUFBUSxFQUFFLENBQUMsQ0FBRyxNQUFNO2FBQ3ZCO1lBQ0EsTUFBTTtZQUNQO2dCQUNJLFNBQVMsRUFBRSxDQUFDO2dCQUNaLFFBQVEsRUFBRSxFQUFFO2dCQUNaLFFBQVEsRUFBRSxDQUFDLENBQUcsTUFBTTthQUN2QjtZQUNELGdCQUFnQjtZQUNoQjtnQkFDSSxTQUFTLEVBQUUsQ0FBQztnQkFDWixRQUFRLEVBQUUsRUFBRTtnQkFDWixRQUFRLEVBQUUsQ0FBQyxDQUFHLE1BQU07YUFDdkI7WUFDRCxNQUFNO1lBQ047Z0JBQ0ksU0FBUyxFQUFFLENBQUM7Z0JBQ1osUUFBUSxFQUFFLEVBQUU7Z0JBQ1osUUFBUSxFQUFFLENBQUMsQ0FBRyxNQUFNO2FBQ3ZCO1lBQ0QsTUFBTTtZQUNOO2dCQUNJLFNBQVMsRUFBRSxDQUFDO2dCQUNaLFFBQVEsRUFBRSxFQUFFO2dCQUNaLFFBQVEsRUFBRSxDQUFDLENBQUcsTUFBTTthQUN2QjtZQUNELE1BQU07WUFDTjtnQkFDSSxTQUFTLEVBQUUsQ0FBQztnQkFDWixRQUFRLEVBQUUsRUFBRTtnQkFDWixRQUFRLEVBQUUsQ0FBQyxDQUFHLE1BQU07YUFDdkI7U0FDSixDQUFBO0lBQ0wsQ0FBQztJQUVELE1BQU07SUFDQyx1QkFBWSxHQUFuQjtRQUNJLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDWCxnQkFBZ0I7WUFDaEIsU0FBUyxFQUFFLENBQUM7WUFDWixLQUFLLEVBQUUsQ0FBQztZQUNSLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE1BQU0sRUFBRSxDQUFDO1lBQ1QsS0FBSyxFQUFFLElBQUk7WUFDWCxHQUFHLEVBQUUsd0JBQXdCO1lBQzdCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsT0FBTyxFQUFFLElBQUk7WUFDYixNQUFNLEVBQUUsQ0FBQztZQUNULEtBQUssRUFBQyxDQUFDO1lBQ1AsS0FBSyxFQUFFLENBQUM7WUFDUixZQUFZLEVBQUMsQ0FBQztZQUNkLFdBQVcsRUFBQyxFQUFFO1lBQ2QsR0FBRyxFQUFDLENBQUM7WUFDTCxLQUFLLEVBQUMsQ0FBQztZQUNQLFdBQVcsRUFBRSxDQUFDO1NBQ2pCLENBQUM7SUFFTixDQUFDO0lBQ00sc0JBQVcsR0FBbEIsVUFBbUIsR0FBRyxFQUFDLEtBQUs7UUFFeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUNNLHFCQUFVLEdBQWpCO1FBQ0ksSUFBSSxDQUFDLFVBQVU7WUFDZjtnQkFDSSxJQUFJLEVBQUUsQ0FBQztnQkFDUCxPQUFPLEVBQUUsS0FBSztnQkFDZCxLQUFLLEVBQUUsQ0FBQztnQkFDUixRQUFRLEVBQUUsQ0FBQztnQkFDWCxlQUFlLEVBQUUsQ0FBQztnQkFDbEIsS0FBSyxFQUFFLEVBQUU7Z0JBQ1QsVUFBVSxFQUFFLENBQUM7Z0JBQ2IsY0FBYyxFQUFFLENBQUM7Z0JBQ2pCLFNBQVMsRUFBRSxDQUFDO2dCQUNaLFFBQVEsRUFBRSxFQUFFO2dCQUNaLFNBQVMsRUFBQyxDQUFDO2dCQUNYLFVBQVUsRUFBQyxDQUFDO2dCQUNaLFFBQVEsRUFBQyxDQUFDO2dCQUNWLFdBQVcsRUFBQyxDQUFDO2dCQUNiLFlBQVksRUFBQyxDQUFDO2dCQUNkLEtBQUssRUFBRSxDQUFDO2FBQ1gsQ0FBQTtJQUNMLENBQUM7SUFFTSxvQkFBUyxHQUFoQixVQUFpQixHQUFHLEVBQUMsS0FBSztRQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNqQyxDQUFDO0lBRU0sMEJBQWUsR0FBdEI7UUFDSSxJQUFJLENBQUMsU0FBUyxHQUFHO1lBQ2IsVUFBVSxFQUFDLENBQUMsR0FBRyxFQUFDLElBQUksRUFBQyxHQUFHLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLEdBQUcsQ0FBQztZQUNqRCxTQUFTLEVBQUMsR0FBRztZQUNiLFNBQVMsRUFBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUM7WUFDbkMsU0FBUyxFQUFDLEdBQUc7WUFDYixjQUFjLEVBQUMsR0FBRztZQUNsQixZQUFZLEVBQUMsR0FBRztTQUNuQixDQUFBO1FBQ0Q7Ozs7VUFJRTtRQUNGLHNCQUFzQjtRQUN0QixTQUFTO1FBQ1QsWUFBWTtRQUNaLDBCQUEwQjtRQUMxQix1QkFBdUI7UUFDdkIsaUNBQWlDO1FBQ2pDLGlDQUFpQztRQUNqQyxpQ0FBaUM7UUFDakMsaUNBQWlDO1FBQ2pDLGlDQUFpQztRQUNqQyxpQ0FBaUM7UUFDakMsaUNBQWlDO1FBQ2pDLGlDQUFpQztRQUNqQyxnQ0FBZ0M7UUFDaEMsZ0JBQWdCO1FBQ2hCLGFBQWE7UUFDYixZQUFZO1FBQ1osMEJBQTBCO1FBQzFCLHVCQUF1QjtRQUN2Qix1Q0FBdUM7UUFDdkMsdUNBQXVDO1FBQ3ZDLHVDQUF1QztRQUN2Qyx1Q0FBdUM7UUFDdkMsdUNBQXVDO1FBQ3ZDLHNDQUFzQztRQUN0QyxnQkFBZ0I7UUFDaEIsWUFBWTtRQUNaLFNBQVM7UUFHVCxJQUFJO1FBRUosSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLEVBQUUsRUFBQyxFQUFDLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxFQUFFLEVBQUMsRUFBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFBO1FBR2oyaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO0lBS25KLENBQUM7SUFHTSx5QkFBYyxHQUFyQjtRQUNJLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3BDLENBQUM7O0lBaFNELDBCQUEwQjtJQUNYLG9CQUFTLEdBQWdCLElBQUksQ0FBQztJQUZwQyxVQUFVO1FBRHRCLE9BQU8sQ0FBQyxZQUFZLENBQUM7T0FDVCxVQUFVLENBa1N0QjtJQUFELGlCQUFDO0NBbFNELEFBa1NDLElBQUE7QUFsU1ksZ0NBQVUiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXZUNoYXQgfSBmcm9tIFwiLi4vU2hhcmUvc2hhcmVcIjtcclxuaW1wb3J0IHsgR2FtZVRvb2wgfSBmcm9tIFwiLi4vVG9vbC9HYW1lVG9vbFwiO1xyXG5cclxuXHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcbkBjY2NsYXNzKCdHYW1lQ29uZmlnJylcclxuZXhwb3J0IGNsYXNzIEdhbWVDb25maWcgIHtcclxuICAgIC8v5omA5pyJ5o6n5Yi25L+h5oGv6YO96YCa6L+HR2FtZUFwcFN0YXJ05YaF5o6n5Yi2XHJcbiAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2UgOiBHYW1lQ29uZmlnID0gbnVsbDtcclxuXHJcbiAgICBzdGF0aWMgR0FNRV9EQVRBOiBhbnlbXTtcclxuICAgIC8v5YWz5Y2h5pWw5o2uXHJcblxyXG5cclxuICAgIHN0YXRpYyBMRVZFTF9JTkZPOiB7IGlkOiBzdHJpbmc7IG1hcDogbnVtYmVyW11bXTsgbWluX3N0ZXBzOiBudW1iZXJ9W11bXTtcclxuICAgIHN0YXRpYyBDVVNUT01fSU5GTzoge1xyXG4gICAgICAgIG1vdmVTcGVlZDogbnVtYmVyOyAvL+a0quWzsOenu+WKqOmAn+W6plxyXG4gICAgICAgIHdhaXRUaW1lOiBudW1iZXI7IC8v5rSq5bOw5Yay5Ye75YCS6K6h5pe2XHJcbiAgICAgICAgZmFzdFBhdGg6IG51bWJlcjsgLy/mnIDnn63ot6/lvoRcclxuICAgIH1bXTtcclxuICAgIHN0YXRpYyBUSU1FX0lORk86IHtcclxuICAgICAgICB3YXRlclNwZWVkOiBudW1iZXJbXTsgLy/mtKrls7DpgJ/luqZcclxuICAgICAgICB0b3RhbFRpbWU6IG51bWJlcjsgLy/muLjmiI/mgLvml7bplb9cclxuICAgICAgICB3YXRlclRpbWU6IG51bWJlcltdOyAvL+a0quWzsOadpeeahOWAkuiuoeaXtlxyXG4gICAgICAgIHJvYWRTcGVlZDogbnVtYmVyOyAvL+ays+mBk+S/ruetkemAn+W6plxyXG4gICAgICAgIFJlaW5mb3JjZVNwZWVkOiBudW1iZXI7IC8v5Yqg5Zu65pe26Ze06YCf5bqmXHJcbiAgICAgICAgWGlfU29pbFNwZWVkOiBudW1iZXI7XHJcbiAgICB9O1xyXG4gICAgLy/nlKjkuo7nm5vmlL7ln4vngrnmlbDmja7kuIrkvKDvvIzmr4/mrKHkuIrkvKDlkI7muIXnqbpcclxuICAgIHN0YXRpYyBDTElDS19EQVRBOiB7XHJcbiAgICAgICAgdHlwZTogbnVtYmVyOyAvL+S4iuS8oOaVsOaNruexu+Wei1xyXG4gICAgICAgIHN1Y2Nlc3M6IGJvb2xlYW47IC8v5q2k5bGA5ri45oiP5q2j56Gu5LiO5ZCmXHJcbiAgICAgICAgcm91bmQ6IG51bWJlcjsgLy/lm57lkIjmlbDova7mrKFcclxuICAgICAgICBnZXRTY29yZTogbnVtYmVyOyAvL+acrOi9ruW+l+WIhu+8jOWksei0peS4ujDliIZcclxuICAgICAgICBjdW11bGF0aXZlU2NvcmU6IG51bWJlcjsgLy/mnKzliafmuLjmiI/mgLvorqHlvpfliIZcclxuICAgICAgICBtYXBJZDogc3RyaW5nOyAvL+WcsOWbvklEXHJcbiAgICAgICAgZGlmZmljdWx0eTogbnVtYmVyOyAvL+WcsOWbvumavuW6plxyXG4gICAgICAgIG9wdGltaXplZFN0ZXBzOiBudW1iZXI7IC8v5YWz5Y2h5pyA55+t5q2l5pWwXHJcbiAgICAgICAgdXNlZFN0ZXBzOiBudW1iZXI7IC8v546p5a625L+u5bu65oC75q2l5pWwXHJcbiAgICAgICAgc3RlcExpc3Q6IGFueVtdOyAvL1XjgIFE44CBTOOAgVIgICBYIOaBr+WjpCAgIEYg5Yqg5Zu6XHJcbiAgICAgICAgc3RhcnRUaW1lOiBudW1iZXI7IC8v5LuO5ri45oiP5byA5aeL5Yiw546p5a625pON5L2c55qE56ys5LiA5q2l5oiq5q2i5pe26Ze0ICDljZXkvY3mr6vnp5JcclxuICAgICAgICBzdWJtaXRUaW1lOiBudW1iZXI7IC8v5LuO56ys5LiA5q2l5pON5L2c5Yiw5o+Q5Lqk5pe26Ze077yM5aaC5p6c5pyq5o+Q5Lqk5Li6LTEg5Y2V5L2N5q+r56eSXHJcbiAgICAgICAgZHVyYXRpb246IG51bWJlcjsgLy/muLjmiI/mgLvnlKjml7bvvIjmiKrmraLliLDmj5DkuqTvvIkg5Y2V5L2N5q+r56eSXHJcbiAgICAgICAgZHJhd2luZ0JhY2s6IG51bWJlcjsgLy/lkI7pgIDmrKHmlbBcclxuICAgICAgICBkcmF3aW5nUmVzZXQ6IG51bWJlcjsgLy/muIXnqbrmrKHmlbBcclxuICAgICAgICB0aW1lcjogbnVtYmVyOyAgLy/muLjmiI/lgJLorqHml7bliankvZnml7bplb8g56eSXHJcbiAgICB9O1xyXG4gICAgc3RhdGljIEdNX0lORk86IHtcclxuICAgICAgICAvLyBpc0VuZDogZmFsc2UsXHJcbiAgICAgICAgbWVhbl9UaW1lOiBudW1iZXI7IC8v5bmz5Z2H5pS+566t6YCf5bqmXHJcbiAgICAgICAgdG90YWw6IG51bWJlcjsgLy/mgLvlhbHlr7nnmoTkuKrmlbBcclxuICAgICAgICBjdXJyU2VlZDogbnVtYmVyOyAvL+eUqOS6jumaj+acuuaVsOenjeWtkFxyXG4gICAgICAgIGdhbWVJZDogc3RyaW5nOyAvL+a4uOaIj0lEXHJcbiAgICAgICAgdXNlcklkOiBudW1iZXI7IC8v55So5oi3SURcclxuICAgICAgICBndWlkZTogYm9vbGVhbjsgLy/mmK/lkKbmnInlvJXlr7xcclxuICAgICAgICB1cmw6IHN0cmluZzsgLy/orr/pl67ln5/lkI1cclxuICAgICAgICBzdWNjZXNzOiBib29sZWFuOyAvL+eUqOaIt+a4uOaIj+aIkOWKn+S4juWQplxyXG4gICAgICAgIG1hdGNoSWQ6IGFueTsgLy/nlKjkuo7ln4vngrnkuIrkvKDnmoRJRFxyXG4gICAgICAgIGN1c3RvbTogbnVtYmVyOyAvL+eUqOS6jua1i+ivlei3s+WFs+WNoVxyXG4gICAgICAgIHJvdW5kOiBudW1iZXI7IC8v5Zue5ZCI5pWwXHJcbiAgICAgICAgbGV2ZWw6IG51bWJlcjsgLy/lhbfkvZPmuLjmiI/lhoXov5vooYzliLDnrKzlh6DmraUgXHJcbiAgICAgICAgc3RlcFRpbWVMaXN0OiBudW1iZXI7IC8v5pW05bGA5ri45oiP55So5pe277yM55Sx5LqO5raJ5Y+K5Zy65pmv5YiH5o2i77yM5pWw5o2u6ZyA6KaB5L+d55WZXHJcbiAgICAgICAgc3VjY2Vzc0xpc3Q6IGFueVtdOyAvL+aVtOWxgOiDnOi0n1xyXG4gICAgICAgIGZlbjogbnVtYmVyOyAvL+Wwj+WxgOW+l+WIhlxyXG4gICAgICAgIHNjb3JlOiBudW1iZXI7IC8v5oC75b6X5YiGXHJcbiAgICAgICAgaWduaXRlQ291bnQ6IG51bWJlcjtcclxuICAgIH07XHJcblxyXG5cclxuXHJcbiAgICAvL+a4uOaIj+WGheS/oeaBr1xyXG5cclxuXHJcblxyXG4gICAgc3RhdGljIGdldCBJbnN0YW5jZSgpXHJcbiAgICB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2luc3RhbmNlID09IG51bGwpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLl9pbnN0YW5jZSA9IG5ldyBHYW1lQ29uZmlnKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZTtcclxuICAgIH1cclxuICAgIC8vZ2V0U2VlZFJhbmRvbVxyXG4gICAgc3RhdGljIGluaXQoQXV0aGVudGljYXRpb24pe1xyXG4gICAgICAgIHRoaXMuQ0xJQ0tfaW5pdCgpO1xyXG4gICAgICAgIHRoaXMuTEVWRUxfSU5GT19pbml0KCk7XHJcbiAgICAgICAgdGhpcy5HTV9JTkZPX2luaXQoKTtcclxuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgLy8gY2MucmVzb3VyY2VzLmxvYWQoJ0pzb24vQ0xJQ0tfREFUQScsIChlcnI6IGFueSwgcmVzOiBjYy5Kc29uQXNzZXQpID0+IHtcclxuICAgICAgICAvLyAgICAgaWYgKGVycikge1xyXG4gICAgICAgIC8vICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gICAgIGxldCBqc29uRGF0YTogb2JqZWN0ID0gcmVzLmpzb24hO1xyXG4gICAgICAgIC8vICAgICBzZWxmLkNMSUNLX0RBVEEgPSBqc29uRGF0YVtcImRhdGFcIl07XHJcbiAgICAgICAgLy8gfSlcclxuICAgICAgICAvLyBjYy5yZXNvdXJjZXMubG9hZCgnSnNvbi9MRVZFTF9JTkZPJywgKGVycjogYW55LCByZXM6IGNjLkpzb25Bc3NldCkgPT4ge1xyXG4gICAgICAgIC8vICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgLy8gICAgICAgICByZXR1cm47XHJcbiAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgLy8gICAgIGxldCBqc29uRGF0YTogb2JqZWN0ID0gcmVzLmpzb24hO1xyXG4gICAgICAgIC8vICAgICBzZWxmLkxFVkVMX0lORk8gPSBqc29uRGF0YVtcImRhdGFcIl07XHJcbiAgICAgICAgLy8gfSlcclxuICAgICAgICAvLyBjYy5yZXNvdXJjZXMubG9hZCgnSnNvbi9HTV9JTkZPJywgKGVycjogYW55LCByZXM6IGNjLkpzb25Bc3NldCkgPT4ge1xyXG4gICAgICAgIC8vICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgLy8gICAgICAgICBpZighQXV0aGVudGljYXRpb24pIHNlbGYuQXV0aGVudGljYXRpb24oKTtcclxuICAgICAgICAvLyAgICAgICAgIHJldHVybjtcclxuICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgICAgIFxyXG4gICAgICAgIC8vICAgICBsZXQganNvbkRhdGE6IG9iamVjdCA9IHJlcy5qc29uITtcclxuICAgICAgICAvLyAgICAgc2VsZi5HTV9JTkZPID0ganNvbkRhdGFbXCJkYXRhXCJdO1xyXG4gICAgICAgIC8vICAgICBjYy5meC5HYW1lVG9vbC5nZXRDdXN0b20oZmFsc2UpO1xyXG4gICAgICAgIC8vICAgICBpZighQXV0aGVudGljYXRpb24pIHNlbGYuQXV0aGVudGljYXRpb24oKTtcclxuICAgICAgICAvLyB9KVxyXG5cclxuICAgICAgICAvL0dBTUVfREFUQSDlup/lvIPkuobvvIzmmoLml7bkuI3liKDpmaTku6XpmLLlkI7pnaLkv67mlLnlm54g5LiA5pW05bGA5Lyg5LiA5qyhXHJcbiAgICAgICAgdGhpcy5HQU1FX0RBVEEgPSBbXHJcbiAgICAgICAgXVxyXG4gICAgICAgIHRoaXMuQ1VTVE9NX0lORk8gPSBbXHJcbiAgICAgICAgICAgIC8v56ys5LiA6Zq+5bqmXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDogMCwgICAgLy/mtKrls7Dnp7vliqjpgJ/luqZcclxuICAgICAgICAgICAgICAgIHdhaXRUaW1lOiAyMCwgICAvL+a0quWzsOWGsuWHu+WAkuiuoeaXtlxyXG4gICAgICAgICAgICAgICAgZmFzdFBhdGg6IDUgICAvL+acgOefrei3r+W+hFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvL+esrOS6jOmavuW6plxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6IDAsICAgIC8v5rSq5bOw56e75Yqo6YCf5bqmXHJcbiAgICAgICAgICAgICAgICB3YWl0VGltZTogMjAsICAgLy/mtKrls7DlhrLlh7vlgJLorqHml7ZcclxuICAgICAgICAgICAgICAgIGZhc3RQYXRoOiA1ICAgLy/mnIDnn63ot6/lvoRcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy/nrKzkuInpmr7luqZcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbW92ZVNwZWVkOiAwLCAgICAvL+a0quWzsOenu+WKqOmAn+W6plxyXG4gICAgICAgICAgICAgICAgd2FpdFRpbWU6IDIwLCAgIC8v5rSq5bOw5Yay5Ye75YCS6K6h5pe2XHJcbiAgICAgICAgICAgICAgICBmYXN0UGF0aDogNSAgIC8v5pyA55+t6Lev5b6EXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8v56ys5Zub6Zq+5bqmXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDogMCwgICAgLy/mtKrls7Dnp7vliqjpgJ/luqZcclxuICAgICAgICAgICAgICAgIHdhaXRUaW1lOiAyMCwgICAvL+a0quWzsOWGsuWHu+WAkuiuoeaXtlxyXG4gICAgICAgICAgICAgICAgZmFzdFBhdGg6IDUgICAvL+acgOefrei3r+W+hFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvL+esrOS6lOmavuW6plxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6IDAsICAgIC8v5rSq5bOw56e75Yqo6YCf5bqmXHJcbiAgICAgICAgICAgICAgICB3YWl0VGltZTogMjAsICAgLy/mtKrls7DlhrLlh7vlgJLorqHml7ZcclxuICAgICAgICAgICAgICAgIGZhc3RQYXRoOiA1ICAgLy/mnIDnn63ot6/lvoRcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgIC8v56ys5YWt6Zq+5bqmXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDogMCwgICAgLy/mtKrls7Dnp7vliqjpgJ/luqZcclxuICAgICAgICAgICAgICAgIHdhaXRUaW1lOiAyMCwgICAvL+a0quWzsOWGsuWHu+WAkuiuoeaXtlxyXG4gICAgICAgICAgICAgICAgZmFzdFBhdGg6IDUgICAvL+acgOefrei3r+W+hFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvL+esrOS4g+mavuW6piAgICAgICAgICBcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbW92ZVNwZWVkOiAwLCAgICAvL+a0quWzsOenu+WKqOmAn+W6plxyXG4gICAgICAgICAgICAgICAgd2FpdFRpbWU6IDIwLCAgIC8v5rSq5bOw5Yay5Ye75YCS6K6h5pe2XHJcbiAgICAgICAgICAgICAgICBmYXN0UGF0aDogNSAgIC8v5pyA55+t6Lev5b6EXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8v56ys5YWr6Zq+5bqmXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDogMCwgICAgLy/mtKrls7Dnp7vliqjpgJ/luqZcclxuICAgICAgICAgICAgICAgIHdhaXRUaW1lOiAyMCwgICAvL+a0quWzsOWGsuWHu+WAkuiuoeaXtlxyXG4gICAgICAgICAgICAgICAgZmFzdFBhdGg6IDUgICAvL+acgOefrei3r+W+hFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvL+esrOS5nemavuW6plxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6IDAsICAgIC8v5rSq5bOw56e75Yqo6YCf5bqmXHJcbiAgICAgICAgICAgICAgICB3YWl0VGltZTogMjAsICAgLy/mtKrls7DlhrLlh7vlgJLorqHml7ZcclxuICAgICAgICAgICAgICAgIGZhc3RQYXRoOiA1ICAgLy/mnIDnn63ot6/lvoRcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy/nrKzljYHpmr7luqZcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgbW92ZVNwZWVkOiAwLCAgICAvL+a0quWzsOenu+WKqOmAn+W6plxyXG4gICAgICAgICAgICAgICAgd2FpdFRpbWU6IDIwLCAgIC8v5rSq5bOw5Yay5Ye75YCS6K6h5pe2XHJcbiAgICAgICAgICAgICAgICBmYXN0UGF0aDogNSAgIC8v5pyA55+t6Lev5b6EXHJcbiAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgXVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvL+aVsOaNruWkh+eUqFxyXG4gICAgc3RhdGljIEdNX0lORk9faW5pdCgpIHtcclxuICAgICAgICB0aGlzLkdNX0lORk8gPSB7XHJcbiAgICAgICAgICAgIC8vIGlzRW5kOiBmYWxzZSxcclxuICAgICAgICAgICAgbWVhbl9UaW1lOiAwLCAgICAgICAgICAgICAgICAvL+W5s+Wdh+aUvueuremAn+W6plxyXG4gICAgICAgICAgICB0b3RhbDogMCwgICAgICAgICAgICAgICAgICAgIC8v5oC75YWx5a+555qE5Liq5pWwXHJcbiAgICAgICAgICAgIGN1cnJTZWVkOiAyMDAwMDAsICAgICAgICAgICAvL+eUqOS6jumaj+acuuaVsOenjeWtkFxyXG4gICAgICAgICAgICBnYW1lSWQ6IFwiMTAwMDEwXCIsICAgICAgICAgICAvL+a4uOaIj0lEXHJcbiAgICAgICAgICAgIHVzZXJJZDogMCwgICAgICAgICAgICAgIC8v55So5oi3SURcclxuICAgICAgICAgICAgZ3VpZGU6IHRydWUsICAgICAgICAgICAgICAgICAvL+aYr+WQpuacieW8leWvvFxyXG4gICAgICAgICAgICB1cmw6IFwiaHR0cHM6Ly9hcGkuc3Bhcmt1cy5jblwiLC8v6K6/6Zeu5Z+f5ZCNXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLCAgICAgICAgICAgICAvL+eUqOaIt+a4uOaIj+aIkOWKn+S4juWQplxyXG4gICAgICAgICAgICBtYXRjaElkOiBudWxsLCAgICAgICAgICAgICAgLy/nlKjkuo7ln4vngrnkuIrkvKDnmoRJRFxyXG4gICAgICAgICAgICBjdXN0b206IDAsICAgICAgICAgICAgICAgICAgLy/nlKjkuo7mtYvor5Xot7PlhbPljaFcclxuICAgICAgICAgICAgcm91bmQ6MCwgICAgICAgICAgICAgICAgICAgIC8v5Zue5ZCI5pWwXHJcbiAgICAgICAgICAgIGxldmVsOiAwLCAgICAgICAgICAgICAgICAgICAgLy/lhbfkvZPmuLjmiI/lhoXov5vooYzliLDnrKzlh6DmraUgXHJcbiAgICAgICAgICAgIHN0ZXBUaW1lTGlzdDowLCAgICAgICAgICAgICAvL+aVtOWxgOa4uOaIj+eUqOaXtu+8jOeUseS6jua2ieWPiuWcuuaZr+WIh+aNou+8jOaVsOaNrumcgOimgeS/neeVmVxyXG4gICAgICAgICAgICBzdWNjZXNzTGlzdDpbXSwgICAgICAgICAgICAgIC8v5pW05bGA6IOc6LSfXHJcbiAgICAgICAgICAgIGZlbjowLCAgICAgICAgICAgICAgICAgICAgICAvL+Wwj+WxgOW+l+WIhlxyXG4gICAgICAgICAgICBzY29yZTowLCAgICAgICAgICAgICAgICAgICAgLy/mgLvlvpfliIZcclxuICAgICAgICAgICAgaWduaXRlQ291bnQ6IDAsICAgICAgICAgICAgIC8v546p5a625oC76K6h5oiQ5Yqf54K554Gr5pWwXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICB9XHJcbiAgICBzdGF0aWMgR01fSU5GT19TRVQoa2V5LHZhbHVlKSB7XHJcblxyXG4gICAgICAgIHRoaXMuR01fSU5GT1trZXldID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBzdGF0aWMgQ0xJQ0tfaW5pdCgpIHtcclxuICAgICAgICB0aGlzLkNMSUNLX0RBVEEgPVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogMSwgICAgICAgICAgICAvL+S4iuS8oOaVsOaNruexu+Wei1xyXG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSwgICAgIC8v5q2k5bGA5ri45oiP5q2j56Gu5LiO5ZCmXHJcbiAgICAgICAgICAgIHJvdW5kOiAwLCAgICAgICAgICAgLy/lm57lkIjmlbDova7mrKFcclxuICAgICAgICAgICAgZ2V0U2NvcmU6IDAsICAgICAgICAvL+acrOi9ruW+l+WIhu+8jOWksei0peS4ujDliIZcclxuICAgICAgICAgICAgY3VtdWxhdGl2ZVNjb3JlOiAwLCAvL+acrOWJp+a4uOaIj+aAu+iuoeW+l+WIhlxyXG4gICAgICAgICAgICBtYXBJZDogXCJcIiwgICAgICAgICAgLy/lnLDlm75JRFxyXG4gICAgICAgICAgICBkaWZmaWN1bHR5OiAwLCAgICAgIC8v5Zyw5Zu+6Zq+5bqmXHJcbiAgICAgICAgICAgIG9wdGltaXplZFN0ZXBzOiAwLCAgLy/lhbPljaHmnIDnn63mraXmlbBcclxuICAgICAgICAgICAgdXNlZFN0ZXBzOiAwLCAgICAgICAvL+eOqeWutuS/ruW7uuaAu+atpeaVsFxyXG4gICAgICAgICAgICBzdGVwTGlzdDogW10sICAgICAgIC8vVeOAgUTjgIFM44CBUiAgIFgg5oGv5aOkICAgRiDliqDlm7pcclxuICAgICAgICAgICAgc3RhcnRUaW1lOjAsICAgICAgICAvL+S7jua4uOaIj+W8gOWni+WIsOeOqeWutuaTjeS9nOeahOesrOS4gOatpeaIquatouaXtumXtCAg5Y2V5L2N5q+r56eSXHJcbiAgICAgICAgICAgIHN1Ym1pdFRpbWU6MCwgICAgICAgLy/ku47nrKzkuIDmraXmk43kvZzliLDmj5DkuqTml7bpl7TvvIzlpoLmnpzmnKrmj5DkuqTkuLotMSDljZXkvY3mr6vnp5JcclxuICAgICAgICAgICAgZHVyYXRpb246MCwgICAgICAgICAvL+a4uOaIj+aAu+eUqOaXtu+8iOaIquatouWIsOaPkOS6pO+8iSDljZXkvY3mr6vnp5Ig5aaC5p6c5pyq5LuW56e75Lqk5YiZ5Li65pe26Ze05LiK6ZmQXHJcbiAgICAgICAgICAgIGRyYXdpbmdCYWNrOjAsICAgICAgLy/lkI7pgIDmrKHmlbBcclxuICAgICAgICAgICAgZHJhd2luZ1Jlc2V0OjAsICAgICAvL+a4heepuuasoeaVsFxyXG4gICAgICAgICAgICB0aW1lcjogMCwgICAgICAgICAgIC8v5rWL6K+E5YCS6K6h5pe25Ymp5L2Z5pe26Ze0IOWOu+enklxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgQ0xJQ0tfU0VUKGtleSx2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuQ0xJQ0tfREFUQVtrZXldID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIExFVkVMX0lORk9faW5pdCgpIHtcclxuICAgICAgICB0aGlzLlRJTUVfSU5GTyA9IHtcclxuICAgICAgICAgICAgd2F0ZXJTcGVlZDpbMC4zLDAuMjUsMC4yLDAuMTgsMC4xNiwwLjE0LDAuMTIsMC4xXSwgLy/mtKrls7DpgJ/luqZcclxuICAgICAgICAgICAgdG90YWxUaW1lOjEyMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy/muLjmiI/mgLvml7bplb9cclxuICAgICAgICAgICAgd2F0ZXJUaW1lOlsxMCwxMiwxNCwxNiwxOCwyMCwyMCwyMF0sICAgICAgICAgICAgLy/mtKrls7DmnaXnmoTlgJLorqHml7ZcclxuICAgICAgICAgICAgcm9hZFNwZWVkOjAuMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy/msrPpgZPkv67nrZHpgJ/luqZcclxuICAgICAgICAgICAgUmVpbmZvcmNlU3BlZWQ6MC4yLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy/liqDlm7rml7bpl7TpgJ/luqZcclxuICAgICAgICAgICAgWGlfU29pbFNwZWVkOjAuMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy/mga/lo6Tml7bpl7TpgJ/luqZcclxuICAgICAgICB9XHJcbiAgICAgICAgLypcclxuICAgICAgICBtb3ZlU3BlZWQ6IDAsICAgIC8v5rSq5bOw56e75Yqo6YCf5bqmXHJcbiAgICAgICAgd2FpdFRpbWU6IDIwLCAgIC8v5rSq5bOw5Yay5Ye75YCS6K6h5pe2XHJcbiAgICAgICAgZmFzdFBhdGg6IDUgICAvL+acgOefrei3r+W+hFxyXG4gICAgICAgICovIFxyXG4gICAgICAgIC8vIHRoaXMuTEVWRUxfSU5GTyA9IFtcclxuICAgICAgICAvLyAgICAgWyBcclxuICAgICAgICAvLyAgICAgICAgIHtcclxuICAgICAgICAvLyAgICAgICAgICAgICBcImlkXCI6IDEwMDEsXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJtYXBcIjogW1xyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICBbMCwwLDAsMCwwLDBdLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICBbMCwwLDAsMCwwLDRdLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICBbMCwwLDMsMCwzLDBdLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICBbMCwwLDAsMCwwLDBdLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICBbMCwwLDAsMywwLDBdLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICBbMCwwLDAsMCwwLDBdLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICBbMCwwLDIsMCwwLDBdLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICBbMCwwLDAsMCwwLDBdLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICBbMSwwLDAsMCwwLDBdXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgXVxyXG4gICAgICAgIC8vICAgICAgICAgfSxcclxuICAgICAgICAvLyAgICAgICAgIHtcclxuICAgICAgICAvLyAgICAgICAgICAgICBcImlkXCI6IDEwMDIsXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJtYXBcIjogW1xyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICBbMCwwLDAsMCwwLDAsMCwwLDRdLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICBbMCwwLDAsMCwwLDAsMCwwLDBdLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICBbMCwwLDAsMCwwLDAsMCwwLDBdLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICBbMCwwLDAsMCwwLDAsMCwwLDBdLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICBbMCwwLDAsMCwwLDAsMCwwLDBdLFxyXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICBbMCwxLDAsMCwwLDAsMCwwLDBdXHJcbiAgICAgICAgLy8gICAgICAgICAgICAgXVxyXG4gICAgICAgIC8vICAgICAgICAgfVxyXG4gICAgICAgIC8vICAgICBdLFxyXG5cclxuICAgICAgXHJcbiAgICAgICAgLy8gXVxyXG5cclxuICAgICAgICB0aGlzLkxFVkVMX0lORk8gPSBbW3tcImlkXCI6XCIxMDAxXCIsXCJtYXBcIjpbWzAsNCwwLDBdLFswLDAsMCwwXSxbMCwwLDAsMF0sWzAsMCwxLDBdXSxcIm1pbl9zdGVwc1wiOjR9LHtcImlkXCI6XCIxMDAyXCIsXCJtYXBcIjpbWzEsMCwwLDBdLFswLDAsMCw0XSxbMCwwLDAsMF0sWzAsMCwwLDBdXSxcIm1pbl9zdGVwc1wiOjR9LHtcImlkXCI6XCIxMDAzXCIsXCJtYXBcIjpbWzEsMCwwLDBdLFswLDAsMCwwXSxbMCwwLDAsMF0sWzAsMCwwLDRdXSxcIm1pbl9zdGVwc1wiOjZ9LHtcImlkXCI6XCIxMDA0XCIsXCJtYXBcIjpbWzEsMCwwLDBdLFswLDAsMCwwXSxbMCwwLDAsMF0sWzAsNCwwLDBdXSxcIm1pbl9zdGVwc1wiOjR9LHtcImlkXCI6XCIxMDA1XCIsXCJtYXBcIjpbWzEsMCwwLDBdLFswLDAsMCwwXSxbMCwwLDAsNF0sWzAsMCwwLDBdXSxcIm1pbl9zdGVwc1wiOjV9LHtcImlkXCI6XCIxMDA2XCIsXCJtYXBcIjpbWzQsMCwwLDBdLFswLDAsMCwwXSxbMCwwLDAsMF0sWzAsMSwwLDBdXSxcIm1pbl9zdGVwc1wiOjR9LHtcImlkXCI6XCIxMDA3XCIsXCJtYXBcIjpbWzAsNCwwLDBdLFswLDAsMCwwXSxbMCwwLDAsMF0sWzAsMCwwLDFdXSxcIm1pbl9zdGVwc1wiOjV9LHtcImlkXCI6XCIxMDA4XCIsXCJtYXBcIjpbWzAsMCwwLDRdLFswLDAsMCwwXSxbMCwwLDAsMF0sWzEsMCwwLDBdXSxcIm1pbl9zdGVwc1wiOjZ9XSxbe1wiaWRcIjpcIjIwMDFcIixcIm1hcFwiOltbMCwwLDAsMCwxXSxbMCwwLDAsMCwwXSxbMCwwLDMsMCwzXSxbMCwwLDAsMCwwXSxbNCwwLDAsMCwzXV0sXCJtaW5fc3RlcHNcIjo4fSx7XCJpZFwiOlwiMjAwMlwiLFwibWFwXCI6W1swLDEsMCwwLDBdLFswLDAsMCwwLDBdLFszLDMsMCwwLDRdLFswLDAsMCwwLDBdLFszLDAsMCwwLDBdXSxcIm1pbl9zdGVwc1wiOjh9LHtcImlkXCI6XCIyMDAzXCIsXCJtYXBcIjpbWzEsMCwwLDMsMF0sWzAsMCwzLDAsMF0sWzAsMCwwLDAsMF0sWzAsMCwwLDAsMF0sWzAsMywwLDQsMF1dLFwibWluX3N0ZXBzXCI6N30se1wiaWRcIjpcIjIwMDRcIixcIm1hcFwiOltbMSwwLDAsMCwwXSxbMCwwLDAsMCwzXSxbMywwLDAsMCwwXSxbMCwwLDAsMCwwXSxbMCwwLDAsMyw0XV0sXCJtaW5fc3RlcHNcIjo4fSx7XCJpZFwiOlwiMjAwNVwiLFwibWFwXCI6W1swLDMsMCwwLDBdLFsxLDAsMCwwLDBdLFswLDAsMCwzLDBdLFswLDAsMCwwLDBdLFswLDMsMCw0LDBdXSxcIm1pbl9zdGVwc1wiOjZ9LHtcImlkXCI6XCIyMDA2XCIsXCJtYXBcIjpbWzAsMSwwLDAsMF0sWzAsMCwwLDAsM10sWzAsMCwwLDAsM10sWzAsMCwwLDAsMF0sWzAsMCwwLDMsNF1dLFwibWluX3N0ZXBzXCI6N30se1wiaWRcIjpcIjIwMDdcIixcIm1hcFwiOltbMywwLDAsMCwxXSxbMCwwLDAsMCwzXSxbMCwwLDAsMCwwXSxbMCwwLDAsMCwwXSxbNCwzLDAsMCwwXV0sXCJtaW5fc3RlcHNcIjo4fSx7XCJpZFwiOlwiMjAwOFwiLFwibWFwXCI6W1szLDQsMCwwLDBdLFswLDAsMCwwLDNdLFswLDAsMCwzLDFdLFswLDAsMCwwLDBdLFswLDAsMCwwLDBdXSxcIm1pbl9zdGVwc1wiOjd9XSxbe1wiaWRcIjpcIjMwMDFcIixcIm1hcFwiOltbMCwwLDIsMCwyLDRdLFswLDIsMCwwLDAsMF0sWzAsMCwyLDAsMCwwXSxbMSwyLDIsMCwwLDBdLFswLDAsMCwwLDIsMF0sWzAsMiwyLDAsMCwyXV0sXCJtaW5fc3RlcHNcIjo0fSx7XCJpZFwiOlwiMzAwMlwiLFwibWFwXCI6W1swLDIsMCwwLDIsMF0sWzAsMCwwLDAsMCwwXSxbMCwyLDAsMCwyLDFdLFswLDIsMCwwLDAsMF0sWzAsMCwwLDAsMCwyXSxbMiwwLDIsNCwyLDJdXSxcIm1pbl9zdGVwc1wiOjR9XSxbe1wiaWRcIjpcIjQwMDFcIixcIm1hcFwiOltbMywwLDIsMyw0XSxbMCwwLDAsMiwyXSxbMiwzLDMsMywzXSxbMCwwLDIsMCwyXSxbMSwwLDIsMywwXV0sXCJtaW5fc3RlcHNcIjo1fSx7XCJpZFwiOlwiNDAwMlwiLFwibWFwXCI6W1szLDAsMywyLDBdLFsxLDIsMCwzLDJdLFsyLDMsMCwwLDRdLFsyLDAsMiwyLDBdLFszLDMsMCwzLDBdXSxcIm1pbl9zdGVwc1wiOjV9LHtcImlkXCI6XCI0MDAzXCIsXCJtYXBcIjpbWzAsMiwzLDMsNF0sWzIsMiwwLDAsMF0sWzEsMywzLDMsMl0sWzIsMiwzLDIsM10sWzAsMCwwLDAsMF1dLFwibWluX3N0ZXBzXCI6NX0se1wiaWRcIjpcIjQwMDRcIixcIm1hcFwiOltbMywyLDIsMSwwXSxbMCwwLDMsMiwyXSxbMywwLDIsMywwXSxbMywwLDAsMywzXSxbMCwyLDQsMCwyXV0sXCJtaW5fc3RlcHNcIjo1fSx7XCJpZFwiOlwiNDAwNVwiLFwibWFwXCI6W1szLDAsMywwLDBdLFsyLDMsMCwwLDFdLFswLDIsMiwyLDNdLFs0LDIsMCwwLDJdLFszLDMsMCwzLDJdXSxcIm1pbl9zdGVwc1wiOjV9LHtcImlkXCI6XCI0MDA2XCIsXCJtYXBcIjpbWzIsMCwyLDIsMF0sWzEsMiwzLDAsMF0sWzMsMywwLDMsMl0sWzMsMCwwLDMsMl0sWzIsMCwzLDAsNF1dLFwibWluX3N0ZXBzXCI6Nn0se1wiaWRcIjpcIjQwMDdcIixcIm1hcFwiOltbMSwyLDAsMywzXSxbMiwyLDAsMiwwXSxbMiwzLDIsMCwzXSxbMCwzLDIsMCw0XSxbMCwwLDMsMCwzXV0sXCJtaW5fc3RlcHNcIjo2fSx7XCJpZFwiOlwiNDAwOFwiLFwibWFwXCI6W1szLDMsMywwLDFdLFswLDAsMCwwLDNdLFsyLDIsMywyLDJdLFswLDIsMywwLDNdLFs0LDIsMiwwLDBdXSxcIm1pbl9zdGVwc1wiOjV9LHtcImlkXCI6XCI0MDA5XCIsXCJtYXBcIjpbWzEsMCwzLDMsMl0sWzMsMCwyLDAsMF0sWzAsMywzLDIsNF0sWzAsMCwzLDAsMl0sWzIsMiwyLDAsM11dLFwibWluX3N0ZXBzXCI6NX0se1wiaWRcIjpcIjQwMTBcIixcIm1hcFwiOltbMywwLDIsMCw0XSxbMSwyLDMsMCwzXSxbMiwwLDMsMiwwXSxbMCwzLDAsMCwzXSxbMiwwLDIsMywyXV0sXCJtaW5fc3RlcHNcIjo1fV0sW3tcImlkXCI6XCI1MDAxXCIsXCJtYXBcIjpbWzEsMywwLDAsMiwwXSxbMCwzLDAsMCwyLDBdLFswLDAsMiwwLDMsNF0sWzAsMCwwLDIsMCwwXSxbMywzLDAsMCwyLDAsM10sWzAsMCwyLDIsMiwwXV0sXCJtaW5fc3RlcHNcIjo1fSx7XCJpZFwiOlwiNTAwMlwiLFwibWFwXCI6W1swLDIsMiwyLDIsMF0sWzEsMCwwLDAsMiwwXSxbMCwwLDAsMCwwLDNdLFswLDAsMCwwLDIsMF0sWzAsMywzLDAsMiwwXSxbMywwLDAsNCwyLDBdXSxcIm1pbl9zdGVwc1wiOjV9LHtcImlkXCI6XCI1MDAzXCIsXCJtYXBcIjpbWzAsMCwwLDAsMCwwXSxbMiwwLDAsMCwwLDJdLFswLDMsMywzLDIsNF0sWzAsMywwLDMsMiwwXSxbMCwwLDAsMCwwLDNdLFswLDAsMiwzLDAsMV1dLFwibWluX3N0ZXBzXCI6Nn0se1wiaWRcIjpcIjUwMDRcIixcIm1hcFwiOltbMiwwLDMsMCwwLDRdLFswLDIsMywzLDAsMF0sWzAsMywwLDAsMCwwXSxbMywwLDAsMCwyLDJdLFszLDAsMCwyLDAsMF0sWzEsMCwwLDMsMCwwXV0sXCJtaW5fc3RlcHNcIjo2fSx7XCJpZFwiOlwiNTAwNVwiLFwibWFwXCI6W1sxLDAsMCwwLDAsMl0sWzAsMCwwLDIsMCwwXSxbMywyLDAsMCwwLDBdLFswLDMsMCwwLDIsM10sWzAsMCwzLDMsMCwwXSxbMywwLDAsMiwzLDRdXSxcIm1pbl9zdGVwc1wiOjh9LHtcImlkXCI6XCI1MDA2XCIsXCJtYXBcIjpbWzQsMywwLDMsMCwwXSxbMCwyLDAsMywwLDBdLFszLDAsMCwwLDMsMl0sWzAsMywwLDAsMiwxXSxbMCwwLDIsMCwwLDBdLFswLDAsMCwwLDIsM11dLFwibWluX3N0ZXBzXCI6N30se1wiaWRcIjpcIjUwMDdcIixcIm1hcFwiOltbNCwyLDIsMCwyLDBdLFswLDMsMCwyLDAsMF0sWzAsMiwzLDAsMywwXSxbMCwwLDMsMCwwLDNdLFswLDAsMywwLDAsMF0sWzAsMCwwLDMsMCwxXV0sXCJtaW5fc3RlcHNcIjo3fSx7XCJpZFwiOlwiNTAwOFwiLFwibWFwXCI6W1swLDAsMiwzLDAsMF0sWzAsMywwLDIsMywyXSxbMywwLDAsMCwwLDBdLFswLDMsMCwwLDMsNF0sWzAsMCwwLDAsMCwzXSxbMCwyLDAsMiwwLDFdXSxcIm1pbl9zdGVwc1wiOjh9LHtcImlkXCI6XCI1MDA5XCIsXCJtYXBcIjpbWzAsMywzLDAsMCw0XSxbMiwwLDAsMywwLDBdLFsyLDAsMCwzLDAsMF0sWzEsMCwwLDAsMywwXSxbMCwwLDIsMywwLDJdLFsyLDMsMCwwLDAsMF1dLFwibWluX3N0ZXBzXCI6OH0se1wiaWRcIjpcIjUwMTBcIixcIm1hcFwiOltbMCwwLDEsMywyLDBdLFszLDAsMCwwLDMsMl0sWzMsMCwwLDAsMCwzXSxbMiwwLDAsMCwwLDBdLFswLDIsMCwwLDMsMF0sWzAsMiwwLDMsNCwwXV0sXCJtaW5fc3RlcHNcIjo4fSx7XCJpZFwiOlwiNTAxMVwiLFwibWFwXCI6W1sxLDAsMCwwLDAsMF0sWzMsMywwLDAsMCwyXSxbMCwwLDAsMywwLDJdLFsyLDAsMywwLDMsMF0sWzIsMCwzLDAsMCwzXSxbNCwwLDAsMCwwLDJdXSxcIm1pbl9zdGVwc1wiOjh9LHtcImlkXCI6XCI1MDEyXCIsXCJtYXBcIjpbWzIsMiwzLDAsMiwwXSxbMCwzLDAsMCwwLDBdLFswLDAsMCwwLDMsNF0sWzAsMiwwLDMsMCwzXSxbMCwwLDAsMCwwLDBdLFswLDAsMiwzLDMsMV1dLFwibWluX3N0ZXBzXCI6OX0se1wiaWRcIjpcIjUwMTNcIixcIm1hcFwiOltbMCwwLDAsMCwzLDBdLFs0LDIsMCwzLDAsMF0sWzMsMiwwLDAsMCwwXSxbMSwzLDAsMywwLDBdLFsyLDAsMCwyLDAsMF0sWzMsMCwwLDMsMiwwXV0sXCJtaW5fc3RlcHNcIjo5fSx7XCJpZFwiOlwiNTAxNFwiLFwibWFwXCI6W1swLDAsMywwLDIsMl0sWzAsMiwzLDAsMCwxXSxbMCwzLDMsMCwwLDNdLFswLDIsMCwwLDAsMF0sWzAsMCwwLDMsMywwXSxbMiwwLDQsMCwwLDBdXSxcIm1pbl9zdGVwc1wiOjd9LHtcImlkXCI6XCI1MDE1XCIsXCJtYXBcIjpbWzIsMCwwLDAsMCwwXSxbMCwwLDAsMCwzLDFdLFszLDAsMiwwLDAsM10sWzIsMCwwLDIsMywwXSxbMywwLDMsMCwwLDBdLFsyLDAsMCwzLDQsMF1dLFwibWluX3N0ZXBzXCI6N30se1wiaWRcIjpcIjUwMTZcIixcIm1hcFwiOltbMCwwLDMsMCwwLDFdLFsyLDMsMCwwLDMsMF0sWzIsMCwwLDAsMCwyXSxbMCwzLDAsMCwwLDBdLFswLDMsMCwwLDIsMF0sWzAsNCwzLDAsMiwzXV0sXCJtaW5fc3RlcHNcIjo4fSx7XCJpZFwiOlwiNTAxN1wiLFwibWFwXCI6W1sxLDIsMywwLDMsMl0sWzMsMCwwLDAsMCwwXSxbMCwwLDAsMCwwLDNdLFszLDMsMCwzLDIsMF0sWzAsMiwwLDAsMCwwXSxbNCwwLDAsMiwwLDBdXSxcIm1pbl9zdGVwc1wiOjh9LHtcImlkXCI6XCI1MDE4XCIsXCJtYXBcIjpbWzAsMCwxLDAsMiwwXSxbMCwwLDAsMCwwLDBdLFswLDAsMywyLDMsMF0sWzMsMCwwLDMsMCwwXSxbMiwzLDAsMiwwLDBdLFs0LDIsMCwzLDMsMF1dLFwibWluX3N0ZXBzXCI6OH1dLFt7XCJpZFwiOlwiNjAwMVwiLFwibWFwXCI6W1sxLDAsMCwwLDAsMF0sWzAsMiwyLDMsMCwyXSxbMywyLDAsMCwzLDNdLFswLDAsMCwwLDAsNF0sWzAsMCwwLDIsMiwwXSxbMywwLDIsMiwwLDBdXSxcIm1pbl9zdGVwc1wiOjd9LHtcImlkXCI6XCI2MDAyXCIsXCJtYXBcIjpbWzAsMCwwLDAsNCwzXSxbMywyLDMsMCwwLDBdLFswLDIsMCwyLDMsMF0sWzIsMiwwLDAsMCwwXSxbMywyLDAsMCwwLDBdLFszLDAsMCwyLDAsM10sWzIsMCwwLDMsMCwxXV0sXCJtaW5fc3RlcHNcIjo3fSx7XCJpZFwiOlwiNjAwM1wiLFwibWFwXCI6W1swLDAsMSwzLDAsMl0sWzAsMywzLDAsMCwwXSxbMCwwLDMsMiwwLDBdLFswLDAsMywwLDAsMF0sWzMsMCwwLDAsMiwyXSxbMCwwLDIsMywwLDBdLFswLDIsMCwzLDAsNF1dLFwibWluX3N0ZXBzXCI6MTB9LHtcImlkXCI6XCI2MDA0XCIsXCJtYXBcIjpbWzAsMywzLDIsMywwXSxbMiwwLDIsMCwzLDBdLFsxLDAsMywyLDAsMF0sWzMsMywwLDAsMCwyXSxbMCwwLDAsMCwwLDBdLFswLDIsMCwwLDAsMF0sWzAsMCwwLDMsNCwwXV0sXCJtaW5fc3RlcHNcIjo4fSx7XCJpZFwiOlwiNjAwNVwiLFwibWFwXCI6W1swLDAsMCwwLDAsMV0sWzAsMCwyLDAsMiwwXSxbMywyLDIsMCwwLDBdLFszLDAsMCwzLDAsMF0sWzMsMywwLDAsMCwzXSxbNCwzLDAsMCwwLDBdLFsyLDAsMCwyLDMsMF1dLFwibWluX3N0ZXBzXCI6OH0se1wiaWRcIjpcIjYwMDZcIixcIm1hcFwiOltbMCwzLDAsMCwwLDBdLFsxLDAsMCwwLDMsMF0sWzAsMCwzLDIsMCwwXSxbMywwLDAsMiwyLDBdLFswLDMsMCwzLDMsMF0sWzAsMiwwLDAsMCwwXSxbNCwwLDMsMCwyLDJdXSxcIm1pbl9zdGVwc1wiOjl9LHtcImlkXCI6XCI2MDA3XCIsXCJtYXBcIjpbWzAsMiwwLDMsMCwwXSxbMSwyLDAsMiwwLDBdLFswLDMsMCwzLDAsMF0sWzMsMCwwLDAsMCwzXSxbMCwwLDMsMiwwLDJdLFs0LDAsMCwzLDAsM10sWzAsMiwwLDAsMCwwXV0sXCJtaW5fc3RlcHNcIjo5fSx7XCJpZFwiOlwiNjAwOFwiLFwibWFwXCI6W1szLDAsMywyLDAsNF0sWzAsMywwLDIsMCwyXSxbMCwwLDMsMCwwLDBdLFsyLDAsMCwyLDAsMF0sWzAsMCwzLDAsMCwwXSxbMCwwLDAsMywwLDBdLFszLDIsMSwzLDAsMF1dLFwibWluX3N0ZXBzXCI6OH0se1wiaWRcIjpcIjYwMDlcIixcIm1hcFwiOltbMCwyLDAsMCwwLDNdLFswLDAsMywzLDMsNF0sWzAsMywwLDAsMCwwXSxbMCwzLDIsMCwwLDBdLFsxLDIsMywyLDAsM10sWzIsMCwwLDAsMCwwXSxbMCwwLDAsMCwyLDBdXSxcIm1pbl9zdGVwc1wiOjEwfSx7XCJpZFwiOlwiNjAxMFwiLFwibWFwXCI6W1swLDMsMSwwLDAsMF0sWzAsMiwzLDMsMCwwXSxbMCwyLDAsMywwLDBdLFswLDIsMCwyLDAsM10sWzAsMiwwLDAsMywwXSxbMCwzLDAsMCwwLDBdLFswLDIsNCwwLDAsM11dLFwibWluX3N0ZXBzXCI6OX0se1wiaWRcIjpcIjYwMTFcIixcIm1hcFwiOltbMSwwLDMsMCwzLDBdLFswLDIsMCwwLDAsMF0sWzIsMCwyLDAsMywwXSxbMCwzLDIsMCwwLDBdLFszLDAsMCwwLDAsMl0sWzQsMCwzLDAsMCwwXSxbMywyLDAsMCwwLDNdXSxcIm1pbl9zdGVwc1wiOjl9LHtcImlkXCI6XCI2MDEyXCIsXCJtYXBcIjpbWzIsMywwLDIsMCwxXSxbMiwwLDAsMCwwLDBdLFsyLDAsMCwzLDAsMl0sWzMsMCwzLDAsMCwzXSxbMCwwLDAsMCwzLDNdLFszLDAsMCwwLDIsMF0sWzAsMCwwLDAsMCw0XV0sXCJtaW5fc3RlcHNcIjo4fSx7XCJpZFwiOlwiNjAxM1wiLFwibWFwXCI6W1swLDAsMiwxLDIsMF0sWzAsMywwLDAsMCwwXSxbMiwwLDAsMCwwLDBdLFswLDAsMCwzLDAsMF0sWzMsMCwwLDIsMywwXSxbMywzLDMsMiwwLDJdLFswLDAsNCwwLDAsM11dLFwibWluX3N0ZXBzXCI6OH0se1wiaWRcIjpcIjYwMTRcIixcIm1hcFwiOltbMCwxLDAsMCwwLDBdLFsyLDAsMiwwLDAsMl0sWzIsMywwLDMsMCwwXSxbMCwzLDAsMCwwLDNdLFswLDAsMCwyLDAsM10sWzAsMCwzLDAsMywwXSxbMiwwLDMsMCwwLDRdXSxcIm1pbl9zdGVwc1wiOjl9LHtcImlkXCI6XCI2MDE1XCIsXCJtYXBcIjpbWzEsMiwzLDIsMiwwXSxbMywwLDAsMCwwLDNdLFswLDAsMCwwLDAsMF0sWzAsMCwwLDAsMCwyXSxbMCwzLDAsMywyLDBdLFswLDAsMCwwLDAsMF0sWzAsMiwwLDQsMCwzXV0sXCJtaW5fc3RlcHNcIjo3fSx7XCJpZFwiOlwiNjAxNlwiLFwibWFwXCI6W1szLDAsMSwwLDAsMF0sWzAsMiwwLDIsMCwwXSxbMCwyLDAsMiwwLDNdLFswLDAsMCwwLDAsMF0sWzAsMiwwLDAsMywzXSxbMCwwLDAsMCwyLDNdLFswLDAsMCwzLDAsNF1dLFwibWluX3N0ZXBzXCI6N30se1wiaWRcIjpcIjYwMTdcIixcIm1hcFwiOltbMCwwLDAsMCwwLDBdLFsxLDIsMywwLDAsMl0sWzAsMCwyLDAsMCwyXSxbMywwLDIsMywwLDBdLFswLDMsMywwLDIsMF0sWzAsMCwwLDAsMCwwXSxbNCwwLDMsMCwwLDBdXSxcIm1pbl9zdGVwc1wiOjl9LHtcImlkXCI6XCI2MDE4XCIsXCJtYXBcIjpbWzAsMiwwLDEsMCwwXSxbMiwwLDAsMywwLDBdLFswLDAsMCwwLDAsMF0sWzMsMCwwLDAsMCwwXSxbMiwzLDAsMiwzLDNdLFsyLDAsMCwwLDAsMl0sWzQsMywwLDAsMCwwXV0sXCJtaW5fc3RlcHNcIjo4fSx7XCJpZFwiOlwiNjAxOVwiLFwibWFwXCI6W1sxLDMsMCwyLDMsMF0sWzAsMCwwLDAsMCwyXSxbMCwwLDAsMCwwLDBdLFswLDAsMiwwLDAsMl0sWzMsMywwLDMsMCwyXSxbNCwwLDIsMCwwLDBdLFswLDAsMCwzLDAsMF1dLFwibWluX3N0ZXBzXCI6OH0se1wiaWRcIjpcIjYwMjBcIixcIm1hcFwiOltbMCwwLDAsMiwwLDBdLFswLDMsMCwwLDAsM10sWzAsMiwwLDAsMywwXSxbMiwwLDAsMiwzLDRdLFswLDIsMywwLDAsMF0sWzAsMCwwLDMsMCwwXSxbMywyLDAsMSwzLDBdXSxcIm1pbl9zdGVwc1wiOjExfV0sW3tcImlkXCI6XCI3MDAxXCIsXCJtYXBcIjpbWzAsMCwzLDMsNCwyXSxbMCwwLDAsMiwwLDBdLFsyLDMsMywyLDAsMF0sWzAsMywwLDAsMCwyXSxbMCwwLDAsMywyLDJdLFsyLDAsMCwzLDAsMl0sWzEsMywyLDAsMCwwXSxbMCwwLDAsMywwLDBdXSxcIm1pbl9zdGVwc1wiOjl9LHtcImlkXCI6XCI3MDAyXCIsXCJtYXBcIjpbWzAsMCwzLDMsNCwyXSxbMCwwLDAsMiwwLDBdLFsyLDMsMywyLDAsMF0sWzAsMywwLDAsMCwyXSxbMCwwLDAsMywyLDJdLFsyLDAsMCwzLDAsMl0sWzEsMywyLDAsMCwwXSxbMCwwLDAsMywwLDBdXSxcIm1pbl9zdGVwc1wiOjExfSx7XCJpZFwiOlwiNzAwM1wiLFwibWFwXCI6W1swLDIsMiwwLDAsNF0sWzAsMywzLDAsMCwwXSxbMywyLDAsMCwwLDBdLFswLDMsMCwwLDMsM10sWzAsMiwwLDMsMCwwXSxbMiwzLDAsMCwwLDBdLFswLDIsMywwLDAsMF0sWzEsMiwzLDAsMiwwXV0sXCJtaW5fc3RlcHNcIjoxMn0se1wiaWRcIjpcIjcwMDRcIixcIm1hcFwiOltbMCwzLDAsMiwyLDBdLFswLDAsMCwwLDAsMl0sWzMsMCwwLDAsMCwwXSxbMCwzLDAsMCwwLDBdLFswLDMsMywwLDMsMF0sWzIsMCwwLDAsMywyXSxbMiwwLDAsMCwzLDFdLFs0LDMsMCwyLDMsMl1dLFwibWluX3N0ZXBzXCI6MTN9LHtcImlkXCI6XCI3MDA1XCIsXCJtYXBcIjpbWzIsMiw0LDIsMywwXSxbMCwzLDMsMiwwLDBdLFszLDAsMCwzLDAsMl0sWzMsMCwyLDMsMywwXSxbMCwwLDAsMCwwLDBdLFswLDAsMCwwLDIsM10sWzMsMiwwLDAsMCwxXSxbMCwwLDAsMCwwLDBdXSxcIm1pbl9zdGVwc1wiOjEzfSx7XCJpZFwiOlwiNzAwNlwiLFwibWFwXCI6W1sxLDAsMiwwLDAsM10sWzAsMCwwLDAsMywwXSxbMywwLDAsMywyLDBdLFsyLDMsMCwwLDAsM10sWzAsMCwzLDIsMCwzXSxbMCwyLDAsMywwLDBdLFsyLDMsMCwyLDAsMF0sWzAsNCwwLDIsMCwwXV0sXCJtaW5fc3RlcHNcIjoxMX0se1wiaWRcIjpcIjcwMDdcIixcIm1hcFwiOltbMywyLDAsMCwzLDRdLFswLDIsMCwwLDMsMF0sWzAsMCwyLDAsMiwwXSxbMiwwLDAsMywwLDNdLFswLDAsMiwwLDMsMl0sWzAsMiwzLDMsMCwxXSxbMCwwLDAsMCwwLDNdLFswLDAsMCwzLDAsMF1dLFwibWluX3N0ZXBzXCI6MTN9LHtcImlkXCI6XCI3MDA4XCIsXCJtYXBcIjpbWzAsMCwyLDAsMyw0XSxbMywzLDIsMywwLDBdLFswLDAsMCwwLDAsM10sWzAsMCwyLDMsMiwwXSxbMCwwLDIsMCwzLDJdLFszLDMsMCwwLDAsMl0sWzAsMywwLDAsMCwwXSxbMiwxLDAsMCwwLDBdXSxcIm1pbl9zdGVwc1wiOjEwfSx7XCJpZFwiOlwiNzAwOVwiLFwibWFwXCI6W1s0LDMsMCwwLDMsMF0sWzAsMCwwLDAsMCwwXSxbMywzLDAsMiwwLDJdLFszLDAsMCwyLDIsMF0sWzIsMywyLDAsMCwwXSxbMSwzLDMsMCwwLDBdLFsyLDAsMCwwLDAsMF0sWzMsMywwLDAsMCwyXV0sXCJtaW5fc3RlcHNcIjoxMX0se1wiaWRcIjpcIjcwMTBcIixcIm1hcFwiOltbMCwzLDEsMCwwLDBdLFswLDIsMywzLDAsMF0sWzIsMCwwLDMsMCwwXSxbMCwyLDAsMCwzLDJdLFszLDAsMCwwLDAsMl0sWzMsMiwwLDAsMCwwXSxbNCwwLDAsMywyLDBdLFswLDMsMCwzLDIsMF1dLFwibWluX3N0ZXBzXCI6MTN9LHtcImlkXCI6XCI3MDExXCIsXCJtYXBcIjpbWzMsMCwyLDIsMywyXSxbMSwwLDAsMCwwLDNdLFswLDAsMywyLDMsMF0sWzMsMCwzLDAsMCwwXSxbNCwzLDIsMywwLDJdLFswLDAsMiwwLDIsM10sWzIsMCwwLDAsMCwzXSxbMCwwLDAsMiwwLDNdXSxcIm1pbl9zdGVwc1wiOjEyfSx7XCJpZFwiOlwiNzAxMlwiLFwibWFwXCI6W1szLDAsMCwwLDIsMF0sWzAsMywwLDMsMCwwXSxbMCwzLDAsMCwwLDNdLFsyLDAsMCwzLDIsMF0sWzMsMiwyLDIsMCwwXSxbMywwLDIsMCwzLDBdLFsxLDIsMywwLDIsMF0sWzIsMywwLDAsMyw0XV0sXCJtaW5fc3RlcHNcIjo5fSx7XCJpZFwiOlwiNzAxM1wiLFwibWFwXCI6W1szLDAsMCwyLDIsMF0sWzAsMiwwLDMsMCwyXSxbMCwwLDMsMiwzLDBdLFswLDMsMCwwLDMsMF0sWzIsMiwzLDIsMCwwXSxbMCwwLDMsMywwLDBdLFswLDIsMCwzLDIsMF0sWzQsMywzLDAsMSwwXV0sXCJtaW5fc3RlcHNcIjoxMH0se1wiaWRcIjpcIjcwMTRcIixcIm1hcFwiOltbNCwzLDAsMCwwLDBdLFswLDIsMiwyLDMsMF0sWzAsMywwLDAsMCwwXSxbMiwzLDIsMywwLDBdLFszLDMsMCwwLDAsM10sWzAsMCwwLDIsMywwXSxbMCwzLDIsMCwyLDJdLFsyLDMsMywwLDAsMV1dLFwibWluX3N0ZXBzXCI6MTJ9LHtcImlkXCI6XCI3MDE1XCIsXCJtYXBcIjpbWzQsMCwwLDAsMiwzXSxbMCwwLDMsMCwwLDNdLFsyLDIsMywyLDAsMF0sWzMsMCwwLDAsMywyXSxbMiwzLDAsMywwLDJdLFswLDAsMywwLDIsM10sWzAsMCwwLDAsMCwzXSxbMSwyLDIsMywwLDBdXSxcIm1pbl9zdGVwc1wiOjE0fSx7XCJpZFwiOlwiNzAxNlwiLFwibWFwXCI6W1swLDAsMSwwLDIsM10sWzAsMywyLDAsMiwwXSxbMywzLDMsMywwLDBdLFszLDAsMCwwLDAsMF0sWzIsMiwzLDAsMywzXSxbMCwwLDIsMCwyLDBdLFswLDIsMCwyLDAsM10sWzMsMCwyLDAsMCw0XV0sXCJtaW5fc3RlcHNcIjo5fSx7XCJpZFwiOlwiNzAxN1wiLFwibWFwXCI6W1s0LDAsMCwwLDAsM10sWzAsMywzLDAsMCwwXSxbMywwLDIsMiwwLDBdLFszLDAsMiwzLDMsMl0sWzMsMiwwLDIsMywzXSxbMiwwLDIsMCwwLDBdLFswLDAsMCwwLDAsM10sWzIsMywwLDIsMCwxXV0sXCJtaW5fc3RlcHNcIjoxMH0se1wiaWRcIjpcIjcwMThcIixcIm1hcFwiOltbMiwzLDAsMCwyLDNdLFsyLDAsMCwzLDAsNF0sWzIsMCwwLDAsMCwwXSxbMCwzLDIsMCwyLDNdLFswLDAsMCwwLDAsM10sWzIsMCwzLDMsMiwzXSxbMCwwLDAsMywyLDBdLFsyLDMsMSwzLDAsMF1dLFwibWluX3N0ZXBzXCI6MTF9LHtcImlkXCI6XCI3MDE5XCIsXCJtYXBcIjpbWzQsMCwwLDAsMiwzXSxbMCwwLDMsMCwwLDNdLFsyLDIsMywyLDAsMF0sWzMsMCwwLDAsMywyXSxbMiwzLDAsMywwLDJdLFswLDAsMywwLDIsM10sWzAsMCwwLDAsMCwzXSxbMSwyLDIsMywwLDBdXSxcIm1pbl9zdGVwc1wiOjE0fSx7XCJpZFwiOlwiNzAyMFwiLFwibWFwXCI6W1szLDIsMCwwLDAsMF0sWzQsMCwyLDAsMiwwXSxbMywzLDAsMCwyLDJdLFswLDAsMywwLDIsMF0sWzAsMCwwLDAsMiwzXSxbMCwyLDMsMywwLDBdLFsyLDMsMCwwLDMsM10sWzEsMywzLDIsMCwwXV0sXCJtaW5fc3RlcHNcIjoxMn0se1wiaWRcIjpcIjcwMjFcIixcIm1hcFwiOltbNCwzLDAsMCwwLDBdLFswLDIsMiwyLDMsMF0sWzAsMywwLDAsMCwwXSxbMiwzLDIsMywwLDBdLFszLDMsMCwwLDAsM10sWzAsMCwwLDIsMywwXSxbMCwzLDIsMCwyLDJdLFsyLDMsMywwLDAsMV1dLFwibWluX3N0ZXBzXCI6MTJ9XSxbe1wiaWRcIjpcIjgwMDFcIixcIm1hcFwiOltbMCwyLDAsMCwyLDBdLFszLDMsMCwyLDAsNF0sWzAsMCwwLDAsMCwzXSxbMCwwLDAsMCwzLDJdLFswLDAsMCwwLDAsMl0sWzMsMywwLDAsMCwyXSxbMCwzLDMsMiwyLDBdLFswLDMsMiwyLDAsM10sWzEsMiwwLDAsMiwwXV0sXCJtaW5fc3RlcHNcIjo5fSx7XCJpZFwiOlwiODAwMlwiLFwibWFwXCI6W1sxLDAsMywyLDAsMl0sWzAsMywwLDAsMCwyXSxbMCwyLDAsMywyLDJdLFswLDMsMCwwLDAsMF0sWzAsMiwwLDMsMywwXSxbMywyLDIsMCwwLDNdLFswLDMsMiwzLDAsMl0sWzAsMCwwLDAsMCwwXSxbMiwwLDAsMiwzLDRdXSxcIm1pbl9zdGVwc1wiOjExfSx7XCJpZFwiOlwiODAwM1wiLFwibWFwXCI6W1sxLDMsMiwwLDAsMF0sWzAsMCwwLDIsMCwwXSxbMCwzLDAsMiwwLDBdLFszLDMsMywyLDAsM10sWzIsMywzLDAsMywwXSxbMCwwLDAsMCwwLDJdLFszLDAsMiwyLDMsMl0sWzQsMiwwLDAsMiwwXSxbMCwwLDIsMCwwLDJdXSxcIm1pbl9zdGVwc1wiOjEwfSx7XCJpZFwiOlwiODAwNFwiLFwibWFwXCI6W1syLDAsMCwyLDAsMF0sWzAsMywwLDAsMCwxXSxbMCwyLDAsMCwwLDBdLFswLDAsMCwwLDIsMF0sWzAsMCwzLDMsMywyXSxbMCwwLDAsMywyLDNdLFswLDAsMiwwLDAsM10sWzAsMiwzLDIsMiw0XSxbMywyLDIsMCwzLDBdXSxcIm1pbl9zdGVwc1wiOjEzfSx7XCJpZFwiOlwiODAwNVwiLFwibWFwXCI6W1swLDAsMCwwLDAsMF0sWzAsMCwwLDMsMiw0XSxbMCwzLDAsMCwzLDNdLFszLDMsMCwyLDAsM10sWzAsMiwyLDAsMywyXSxbMCwwLDMsMCwyLDBdLFswLDIsMCwyLDAsMF0sWzMsMCwwLDIsMiwwXSxbMCwwLDIsMiwwLDFdXSxcIm1pbl9zdGVwc1wiOjExfSx7XCJpZFwiOlwiODAwNlwiLFwibWFwXCI6W1swLDAsMCwwLDIsM10sWzMsMiwwLDAsMCwwXSxbMCwyLDAsMywzLDRdLFswLDAsMCwyLDIsM10sWzIsMCwwLDAsMCwwXSxbMCwwLDAsMCwzLDBdLFszLDAsMywzLDAsMl0sWzMsMCwyLDIsMCwyXSxbMCwwLDIsMiwwLDFdXSxcIm1pbl9zdGVwc1wiOjExfSx7XCJpZFwiOlwiODAwN1wiLFwibWFwXCI6W1syLDAsMiwwLDIsMF0sWzAsMCwyLDAsMywyXSxbMCwwLDAsMywzLDBdLFswLDIsMCwwLDMsMl0sWzMsMCwwLDIsMCwwXSxbMywzLDAsMCwwLDJdLFswLDIsMCwzLDIsMF0sWzAsMiwzLDAsMCwwXSxbNCwzLDAsMCwxLDBdXSxcIm1pbl9zdGVwc1wiOjExfSx7XCJpZFwiOlwiODAwOFwiLFwibWFwXCI6W1sxLDAsMCwwLDIsMF0sWzMsMywyLDAsMywwXSxbMywwLDMsMCwwLDBdLFswLDAsMywwLDAsM10sWzIsMiwwLDMsMCwzXSxbMiwwLDIsMCwwLDBdLFsyLDAsMiwwLDAsMl0sWzIsMCwwLDIsMCwwXSxbNCwzLDAsMCwwLDJdXSxcIm1pbl9zdGVwc1wiOjEyfSx7XCJpZFwiOlwiODAwOVwiLFwibWFwXCI6W1s0LDAsMywxLDAsMl0sWzAsMiwzLDMsMywwXSxbMCwyLDMsMiwyLDBdLFszLDAsMywwLDAsMl0sWzAsMCwwLDAsMCwwXSxbMywyLDAsMCwyLDBdLFszLDIsMCwwLDIsMF0sWzAsMCwyLDIsMiwwXSxbMCwwLDAsMCwzLDBdXSxcIm1pbl9zdGVwc1wiOjEzfSx7XCJpZFwiOlwiODAxMFwiLFwibWFwXCI6W1s0LDMsMCwzLDEsMF0sWzAsMCwzLDMsMCwwXSxbMCwzLDAsMCwyLDJdLFsyLDAsMywwLDAsMl0sWzMsMiwwLDIsMywwXSxbMCwwLDAsMCwwLDBdLFswLDIsMCwyLDIsMF0sWzAsMiwwLDMsMCwyXSxbMCwyLDAsMCwwLDNdXSxcIm1pbl9zdGVwc1wiOjEyfSx7XCJpZFwiOlwiODAxMVwiLFwibWFwXCI6W1swLDEsMCwwLDIsMF0sWzMsMCwzLDMsMiwzXSxbMCwzLDMsMiwwLDBdLFswLDAsMiwwLDMsM10sWzIsMywyLDAsMCwwXSxbMywyLDIsMywzLDBdLFsyLDAsMiwyLDAsNF0sWzAsMiwwLDMsMCwwXSxbMCwwLDAsMywwLDNdXSxcIm1pbl9zdGVwc1wiOjE0fSx7XCJpZFwiOlwiODAxMlwiLFwibWFwXCI6W1sxLDMsMywzLDAsMF0sWzAsMywwLDIsMCwwXSxbMCwwLDAsMywwLDJdLFszLDAsMCwzLDIsM10sWzAsMCwyLDAsMCwzXSxbMCwwLDIsMywyLDBdLFsyLDIsMywyLDMsMl0sWzAsMywwLDIsMCwyXSxbMCwzLDQsMywwLDBdXSxcIm1pbl9zdGVwc1wiOjE3fSx7XCJpZFwiOlwiODAxM1wiLFwibWFwXCI6W1swLDEsMCwwLDMsM10sWzAsMiwwLDMsMCwwXSxbMiwzLDAsMCwwLDBdLFswLDAsMCwzLDAsM10sWzAsMywwLDIsMywyXSxbMiwwLDMsMywyLDBdLFswLDIsMiwzLDAsMl0sWzIsMywyLDAsMywwXSxbMCwzLDMsMCwyLDRdXSxcIm1pbl9zdGVwc1wiOjE3fSx7XCJpZFwiOlwiODAxNFwiLFwibWFwXCI6W1szLDQsMiwzLDAsMF0sWzIsMywwLDMsMCwwXSxbMCwyLDIsMCwwLDBdLFswLDMsMywwLDMsM10sWzAsMCwwLDAsMCwwXSxbMywyLDAsMCwyLDJdLFsyLDIsMiwyLDAsM10sWzAsMCwzLDMsMCwzXSxbMSwyLDAsMywzLDBdXSxcIm1pbl9zdGVwc1wiOjEzfSx7XCJpZFwiOlwiODAxNVwiLFwibWFwXCI6W1syLDMsNCwwLDMsMF0sWzEsMiwzLDIsMywwXSxbMCwwLDMsMCwyLDBdLFsyLDAsMCwzLDAsMF0sWzIsMiwwLDIsMCwzXSxbMCwwLDIsMCwwLDBdLFszLDAsMCwzLDMsMF0sWzAsMCwzLDAsMiwzXSxbMywwLDMsMiwzLDJdXSxcIm1pbl9zdGVwc1wiOjEzfSx7XCJpZFwiOlwiODAxNlwiLFwibWFwXCI6W1syLDMsNCwwLDAsM10sWzAsMywyLDIsMywxXSxbMCwyLDIsMywwLDBdLFszLDAsMywwLDIsMF0sWzMsMCwwLDAsMiwyXSxbMCwwLDMsMywwLDBdLFswLDMsMCwzLDIsMF0sWzAsMCwzLDAsMywyXSxbMCwyLDIsMywwLDBdXSxcIm1pbl9zdGVwc1wiOjEyfSx7XCJpZFwiOlwiODAxN1wiLFwibWFwXCI6W1syLDAsMCwzLDAsM10sWzQsMywwLDIsMCwzXSxbMywwLDAsMCwzLDBdLFsyLDAsMCwyLDAsMF0sWzMsMCwwLDMsMCwwXSxbMiwzLDAsMiwyLDJdLFsxLDMsMywwLDIsMl0sWzAsMywwLDAsMywwXSxbMCwyLDAsMywzLDJdXSxcIm1pbl9zdGVwc1wiOjE0fSx7XCJpZFwiOlwiODAxOFwiLFwibWFwXCI6W1swLDAsMCwwLDAsMl0sWzEsMCwzLDMsMCwyXSxbMywzLDAsMywyLDNdLFswLDMsMCwyLDAsMF0sWzAsMywwLDAsMiwyXSxbMywwLDAsMiwzLDBdLFswLDMsMywzLDAsMF0sWzIsMCwzLDAsMCwyXSxbMiw0LDIsMCwzLDJdXSxcIm1pbl9zdGVwc1wiOjE3fSx7XCJpZFwiOlwiODAxOVwiLFwibWFwXCI6W1swLDMsMCwyLDMsMV0sWzAsMywwLDIsMCwyXSxbMCwyLDIsMCwzLDNdLFswLDAsMywyLDAsM10sWzAsMCwzLDIsMiwwXSxbMiwyLDMsMCwyLDJdLFswLDMsMCwwLDMsMF0sWzMsMCwwLDMsMywwXSxbMCwwLDAsMywwLDRdXSxcIm1pbl9zdGVwc1wiOjE0fSx7XCJpZFwiOlwiODAyMFwiLFwibWFwXCI6W1syLDMsMCw0LDMsM10sWzMsMywwLDAsMywwXSxbMCwyLDAsMywyLDBdLFswLDMsMCwwLDAsMl0sWzMsMiwwLDAsMCwwXSxbMCwwLDMsMiwwLDNdLFswLDMsMCwzLDIsMF0sWzMsMiwyLDAsMCwyXSxbMCwwLDIsMSwzLDJdXSxcIm1pbl9zdGVwc1wiOjEyfSx7XCJpZFwiOlwiODAyMVwiLFwibWFwXCI6W1swLDAsMCwwLDIsNF0sWzMsMCwyLDAsMCwwXSxbMywwLDIsMywzLDNdLFsyLDAsMywzLDMsMF0sWzIsMCwwLDAsMiwzXSxbMywzLDAsMCwwLDJdLFsxLDAsMywwLDIsMl0sWzIsMiwwLDIsMCwwXSxbMCwwLDMsMywwLDNdXSxcIm1pbl9zdGVwc1wiOjE0fSx7XCJpZFwiOlwiODAyMlwiLFwibWFwXCI6W1s0LDAsMCwwLDAsMF0sWzAsMCwwLDAsMywyXSxbMywzLDIsMywzLDJdLFsyLDAsMCwwLDAsMl0sWzAsMCwzLDAsMywzXSxbMiwwLDIsMywyLDFdLFszLDIsMywwLDAsM10sWzIsMCwwLDMsMiwyXSxbMywzLDAsMCwwLDBdXSxcIm1pbl9zdGVwc1wiOjE1fSx7XCJpZFwiOlwiODAyM1wiLFwibWFwXCI6W1szLDIsMCwyLDAsMV0sWzAsMywzLDIsMywzXSxbMCwzLDMsMCwzLDBdLFswLDIsMiwyLDAsM10sWzAsMywyLDAsMCwzXSxbMCwwLDAsMCwyLDBdLFsyLDIsMiwzLDAsMF0sWzIsMCwzLDAsMywwXSxbMCwwLDMsMCwwLDRdXSxcIm1pbl9zdGVwc1wiOjl9LHtcImlkXCI6XCI4MDI0XCIsXCJtYXBcIjpbWzEsMywyLDAsMCwzXSxbMiwzLDIsMCwwLDBdLFswLDIsMywwLDMsM10sWzMsMCwwLDIsMCwzXSxbMiwzLDAsMCwwLDNdLFszLDMsMCwwLDAsMF0sWzIsMCwzLDAsMCwyXSxbMCwwLDIsMCwyLDJdLFs0LDIsMywwLDMsMF1dLFwibWluX3N0ZXBzXCI6MTJ9LHtcImlkXCI6XCI4MDI1XCIsXCJtYXBcIjpbWzIsMywxLDAsMywzXSxbMCwwLDIsMywyLDBdLFswLDIsMCwwLDAsM10sWzAsMywwLDAsMCwzXSxbMiwwLDAsMywyLDBdLFswLDAsMiwzLDAsMl0sWzIsMCwzLDIsMCwzXSxbMywzLDAsMCwzLDNdLFsyLDQsMCwyLDAsMF1dLFwibWluX3N0ZXBzXCI6MTN9LHtcImlkXCI6XCI4MDI2XCIsXCJtYXBcIjpbWzIsNCwyLDAsMCwwXSxbMCwzLDMsMCwzLDBdLFszLDMsMywwLDAsM10sWzIsMCwzLDAsMCwyXSxbMCwyLDIsMywwLDNdLFsxLDAsMiwwLDIsMF0sWzMsMywwLDAsMCwwXSxbMiwwLDAsMCwzLDJdLFsyLDAsMywyLDMsMF1dLFwibWluX3N0ZXBzXCI6MTF9LHtcImlkXCI6XCI4MDI3XCIsXCJtYXBcIjpbWzIsMCwwLDAsMCwyXSxbMCwwLDMsMywyLDNdLFswLDAsMywwLDAsMV0sWzAsMywwLDMsMywzXSxbMCwwLDAsMCwwLDJdLFszLDMsMiwwLDAsMl0sWzMsMywwLDIsMCwzXSxbMCwzLDIsMiwyLDBdLFswLDMsNCwyLDIsMF1dLFwibWluX3N0ZXBzXCI6MTF9LHtcImlkXCI6XCI4MDI4XCIsXCJtYXBcIjpbWzAsMiwxLDMsMCwyXSxbMCwzLDMsMywwLDJdLFswLDAsMCwzLDAsMl0sWzMsMCwwLDMsMiw0XSxbMiwwLDAsMywyLDJdLFsyLDIsMywwLDAsM10sWzAsMiwwLDAsMCwwXSxbMCwzLDMsMywyLDBdLFswLDMsMCwzLDAsMF1dLFwibWluX3N0ZXBzXCI6MTZ9LHtcImlkXCI6XCI4MDI5XCIsXCJtYXBcIjpbWzAsMCwxLDAsMCwwXSxbMywzLDAsMCwzLDJdLFszLDAsMCwwLDIsMF0sWzAsMiwwLDIsMiwwXSxbMiwzLDMsMywwLDNdLFszLDIsMiwzLDAsMF0sWzIsMCwzLDAsMCwzXSxbMywyLDAsMCwwLDNdLFs0LDIsMCwwLDMsMl1dLFwibWluX3N0ZXBzXCI6MTF9LHtcImlkXCI6XCI4MDMwXCIsXCJtYXBcIjpbWzIsMCwxLDIsMCwwXSxbMCwyLDMsMywwLDJdLFsyLDMsMywzLDAsMl0sWzMsMCwwLDIsMiwwXSxbMCwzLDAsMywyLDBdLFswLDAsMiwwLDIsM10sWzMsMywwLDMsMywyXSxbNCwzLDAsMCwwLDBdLFswLDAsMCwwLDAsM11dLFwibWluX3N0ZXBzXCI6MTN9LHtcImlkXCI6XCI4MDMxXCIsXCJtYXBcIjpbWzAsMiwyLDMsNCwyXSxbMywzLDAsMCwyLDJdLFswLDAsMCwzLDIsMF0sWzAsMywwLDAsMywzXSxbMCwyLDAsMiwzLDBdLFsyLDMsMCwwLDAsMF0sWzMsMywwLDMsMCwyXSxbMCwwLDIsMywzLDNdLFsxLDAsMiwwLDAsMF1dLFwibWluX3N0ZXBzXCI6MTN9LHtcImlkXCI6XCI4MDMyXCIsXCJtYXBcIjpbWzAsMCwwLDAsMyw0XSxbMCwwLDMsMywzLDJdLFsyLDIsMywzLDAsMF0sWzAsMCwzLDIsMCwwXSxbMCwyLDAsMiwzLDJdLFswLDIsMywwLDAsM10sWzIsMywzLDAsMCwyXSxbMSwwLDMsMCwzLDJdLFswLDAsMywwLDAsMl1dLFwibWluX3N0ZXBzXCI6MTJ9LHtcImlkXCI6XCI4MDMzXCIsXCJtYXBcIjpbWzEsMCwwLDMsMCwzXSxbMywzLDIsMCwyLDBdLFswLDMsMywyLDAsMl0sWzMsMiwwLDMsMCwwXSxbNCwyLDIsMiwwLDBdLFswLDMsMCwwLDAsMF0sWzMsMywzLDAsMCwyXSxbMywwLDMsMiwwLDNdLFsyLDAsMCwwLDAsMl1dLFwibWluX3N0ZXBzXCI6MTJ9LHtcImlkXCI6XCI4MDM0XCIsXCJtYXBcIjpbWzEsMCwwLDMsMiwwXSxbMCwyLDIsMywzLDBdLFszLDAsMCwyLDAsM10sWzIsMywyLDIsMCwzXSxbMCwwLDMsMCwwLDNdLFszLDAsMCwwLDMsMF0sWzIsMywwLDMsMiw0XSxbMCwzLDAsMCwwLDNdLFswLDIsMCwwLDIsMl1dLFwibWluX3N0ZXBzXCI6MTZ9LHtcImlkXCI6XCI4MDM1XCIsXCJtYXBcIjpbWzMsMCwwLDIsMCw0XSxbMywwLDIsMywzLDNdLFswLDAsMiwzLDAsMl0sWzMsMCwzLDMsMywwXSxbMiwyLDAsMCwwLDBdLFsyLDIsMywwLDAsMF0sWzAsMCwyLDMsMCwwXSxbMCwyLDAsMywyLDNdLFswLDAsMywxLDIsMF1dLFwibWluX3N0ZXBzXCI6MTJ9LHtcImlkXCI6XCI4MDM2XCIsXCJtYXBcIjpbWzIsMywxLDAsMCwyXSxbMCwzLDAsMCwwLDBdLFsyLDAsMiwwLDAsM10sWzAsMCwzLDMsMCwzXSxbMCwyLDIsMCwwLDNdLFswLDMsMiwzLDMsMF0sWzAsMywyLDAsMCwyXSxbMCwzLDIsMCwyLDNdLFsyLDAsMywzLDQsMF1dLFwibWluX3N0ZXBzXCI6MTJ9LHtcImlkXCI6XCI4MDM3XCIsXCJtYXBcIjpbWzIsMCwwLDAsMCwzXSxbMCwyLDMsMCwyLDJdLFswLDAsMywwLDIsMF0sWzAsMiwyLDAsMCwwXSxbMywyLDMsMCwwLDNdLFswLDAsMywzLDAsM10sWzMsMiwzLDAsMCwzXSxbMCwwLDMsMywyLDBdLFs0LDMsMSwyLDAsMl1dLFwibWluX3N0ZXBzXCI6MTJ9LHtcImlkXCI6XCI4MDM4XCIsXCJtYXBcIjpbWzQsMiwzLDMsMiwzXSxbMCwzLDAsMiwzLDBdLFswLDAsMCwyLDAsMl0sWzMsMywyLDMsMCwwXSxbMCwzLDAsMywyLDNdLFswLDIsMiwyLDAsMF0sWzEsMywwLDAsMywwXSxbMiwwLDAsMCwzLDJdLFswLDAsMywwLDAsMF1dLFwibWluX3N0ZXBzXCI6MTN9LHtcImlkXCI6XCI4MDM5XCIsXCJtYXBcIjpbWzIsMCwzLDMsMiwwXSxbMCwwLDAsMCwyLDNdLFsxLDMsMCwwLDAsMl0sWzAsMiwzLDIsMiwyXSxbMCwwLDMsMCwwLDBdLFswLDMsMCwwLDMsMF0sWzMsMCwwLDIsMywyXSxbMiwwLDMsMCwyLDNdLFswLDQsMywwLDMsM11dLFwibWluX3N0ZXBzXCI6MTJ9LHtcImlkXCI6XCI4MDQwXCIsXCJtYXBcIjpbWzAsMiwzLDMsNCwwXSxbMCwyLDAsMCwzLDJdLFswLDAsMywwLDIsMF0sWzMsMCwyLDAsMCwzXSxbMiwwLDAsMywwLDNdLFszLDMsMCwyLDIsMF0sWzIsMiwzLDAsMiwwXSxbMSwzLDAsMCwyLDNdLFswLDAsMCwzLDAsM11dLFwibWluX3N0ZXBzXCI6MTJ9LHtcImlkXCI6XCI4MDQxXCIsXCJtYXBcIjpbWzMsMywwLDIsMywxXSxbMCwzLDMsMiwwLDJdLFswLDIsMCwwLDAsMF0sWzAsMCwwLDAsMCwwXSxbMywzLDMsMiwzLDBdLFswLDMsMywyLDMsMl0sWzQsMCwzLDAsMiwwXSxbMiwyLDIsMCwwLDBdLFswLDMsMiwwLDMsMF1dLFwibWluX3N0ZXBzXCI6MTJ9XV1cclxuXHJcblxyXG4gICAgICAgIHRoaXMuTEVWRUxfSU5GTy51bnNoaWZ0KFt7XCJpZFwiOlwiMDAwMVwiLFwibWFwXCI6W1szLCAyLCAyLCAwLCAyXSxbMCwgMCwgMywgMywgMF0sWzEsIDMsIDAsIDMsIDJdLFszLCAwLCAyLCAzLCA0XSxbMywgMiwgMywgMywgMl1dLFwibWluX3N0ZXBzXCI6NH1dKTtcclxuICAgICAgICBcclxuXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIFxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzdGF0aWMgQXV0aGVudGljYXRpb24oKXtcclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5BdXRoZW50aWNhdGlvbigpO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0= //------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+lXG52YXIgTm90aWZpY2F0aW9ucyA9IHtcbiAgICBfZXZlbnRNYXA6IFtdLFxuICAgIG9uOiBmdW5jdGlvbiAobWFzZ0lkLCBjYWxsYmFjaywgdGFyZ2V0KSB7XG4gICAgICAgIGlmICh0aGlzLl9ldmVudE1hcFttYXNnSWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2V2ZW50TWFwW21hc2dJZF0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9ldmVudE1hcFttYXNnSWRdLnB1c2goeyBjYWxsYmFjazogY2FsbGJhY2ssIHRhcmdldDogdGFyZ2V0IH0pO1xuICAgIH0sXG5cbiAgICBlbWl0OiBmdW5jdGlvbiAobWFzZ0lkLCBwYXJhbWV0ZXIpIHtcbiAgICAgICAgbGV0IGFycmF5ID0gdGhpcy5fZXZlbnRNYXBbbWFzZ0lkXTtcbiAgICAgICAgaWYgKGFycmF5ID09PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IGFycmF5W2ldO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQpIGVsZW1lbnQuY2FsbGJhY2suY2FsbChlbGVtZW50LnRhcmdldCwgcGFyYW1ldGVyKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBvZmY6IGZ1bmN0aW9uIChtYXNnSWQsIGNhbGxiYWNrKSB7XG4gICAgICAgIGxldCBhcnJheSA9IHRoaXMuX2V2ZW50TWFwW21hc2dJZF07XG4gICAgICAgIGlmIChhcnJheSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gYXJyYXlbaV07XG4gICAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNhbGxiYWNrID09PSBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIG9mZk1hc2dJZDogZnVuY3Rpb24gKG1hc2dJZCkge1xuICAgICAgICB0aGlzLl9ldmVudE1hcFttYXNnSWRdID0gdW5kZWZpbmVkO1xuICAgIH0sXG5cbiAgICByZW1vdmVBbGxNc2c6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yIChsZXQgayBpbiB0aGlzLl9ldmVudE1hcCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2V2ZW50TWFwW2tdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vZmZNYXNnSWQoayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59O1xuZXhwb3J0IHsgTm90aWZpY2F0aW9ucyB9OyJdfQ== //------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 GameConfig_1 = require("../Config/GameConfig"); var HttpUtil_1 = require("../Crypto/HttpUtil"); var AudioManager_1 = require("../Music/AudioManager"); var Notification_1 = require("../Notification/Notification"); var Storage_1 = require("../Storage/Storage"); 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.GameConfig = GameConfig_1.GameConfig; cc.fx.HttpUtil = HttpUtil_1.default; cc.fx.GameTool = GameTool_1.GameTool; cc.fx.AudioManager = AudioManager_1.default; cc.fx.Notifications = Notification_1.Notifications; cc.fx.StorageMessage = Storage_1.StorageMessage; 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXEdhbWVTdGFydFxcR2FtZUFwcFN0YXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbURBQWtEO0FBQ2xELCtDQUEwQztBQUMxQyxzREFBaUQ7QUFDakQsNkRBQTZEO0FBQzdELDhDQUFvRDtBQUNwRCw2Q0FBNEM7QUFHNUMsTUFBTSxDQUFDLE9BQU8sR0FBRztJQUNiLElBQUcsRUFBRSxDQUFDLEVBQUUsRUFDUjtRQUNJLE9BQU87S0FDVjtJQUNELEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ1gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVwQixRQUFRO0lBQ1IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEdBQUc7UUFDZCxTQUFTLEVBQUUsSUFBSTtRQUNmLGdCQUFnQixFQUFFLElBQUk7UUFDdEIsV0FBVyxFQUFFLE1BQU07UUFDbkIsY0FBYyxFQUFFLElBQUksQ0FBTSxVQUFVO0tBQ3ZDLENBQUM7SUFFRixRQUFRO0lBQ1IsTUFBTTtJQUVOLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxHQUFHLHVCQUFVLENBQUM7SUFDOUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEdBQUcsa0JBQVEsQ0FBQztJQUMxQixFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsR0FBRyxtQkFBUSxDQUFDO0lBQzFCLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxHQUFHLHNCQUFZLENBQUM7SUFDbEMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEdBQUcsNEJBQWEsQ0FBQztJQUNwQyxFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsR0FBRyx3QkFBYyxDQUFDO0lBRXRDLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxHQUFHO1FBQ2QsT0FBTyxFQUFHLENBQUMsQ0FBQyxDQUFjLE1BQU07S0FDbkMsQ0FBQztJQUVGLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxHQUFHO1FBQ1osT0FBTyxFQUFFLE9BQU87UUFDaEIsU0FBUyxFQUFDLE9BQU87UUFDakIsSUFBSSxFQUFFLE9BQU87UUFDYixVQUFVLEVBQUUsT0FBTztRQUNuQixTQUFTLEVBQUUsT0FBTztRQUNsQixTQUFTLEVBQUUsT0FBTztRQUNsQixNQUFNLEVBQUUsT0FBTztRQUNmLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLFVBQVUsRUFBRSxPQUFPO1FBQ25CLFNBQVMsRUFBRSxPQUFPLENBQVUsaUJBQWlCO0tBQ2hELENBQUE7SUFFRDs7TUFFRTtJQUNGLEVBQUUsQ0FBQyxFQUFFLENBQUMsZUFBZSxHQUFHO1FBQ3BCLE9BQU8sRUFBRyxTQUFTO1FBQ25CLE1BQU0sRUFBRyxRQUFRO1FBRWpCLG1CQUFtQixFQUFDLGtCQUFrQjtRQUN0QyxpQkFBaUIsRUFBRyxlQUFlO1FBQ25DLGdCQUFnQixFQUFHLGNBQWM7UUFDakMscUJBQXFCLEVBQUUsY0FBYztRQUNyQyxzQkFBc0IsRUFBRSxnQkFBZ0I7UUFDeEMsbUJBQW1CLEVBQUUsWUFBWTtRQUNqQyxvQkFBb0IsRUFBRSxhQUFhO1FBRW5DLFdBQVcsRUFBRyxhQUFhO1FBQzNCLFNBQVMsRUFBRSxXQUFXO1FBQ3RCLFVBQVUsRUFBRSxZQUFZO1FBQ3hCLFdBQVcsRUFBRSxhQUFhO1FBQzFCLFdBQVcsRUFBRSxhQUFhO1FBQzFCLGdCQUFnQixFQUFFLGtCQUFrQjtRQUNwQyxjQUFjLEVBQUUsZ0JBQWdCO1FBQ2hDLFFBQVEsRUFBRyxVQUFVO1FBQ3JCLGlCQUFpQixFQUFFLG1CQUFtQjtRQUN0QyxtQkFBbUIsRUFBRSxxQkFBcUI7UUFDMUMsbUJBQW1CLEVBQUUscUJBQXFCO1FBQzFDLG1CQUFtQixFQUFFLHFCQUFxQjtLQUM3QyxDQUFDO0lBRUY7O09BRUc7SUFDSCxFQUFFLENBQUMsRUFBRSxDQUFDLGdCQUFnQixHQUFHO1FBQ3JCLEtBQUssRUFBRSxPQUFPO1FBQ2QsTUFBTSxFQUFHLFFBQVE7UUFDakIsR0FBRyxFQUFHLEtBQUs7S0FDZCxDQUFDO0lBRUYsV0FBVztJQUNYLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDM0IsaUJBQWlCLEVBQUUsT0FBTztLQUM3QixDQUFDLENBQUM7SUFFQSxpQkFBaUI7SUFDakIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztRQUNwQixNQUFNLEVBQUUsaURBQWlEO1FBQ3pELE1BQU0sRUFBRSxtREFBbUQ7UUFDM0QsU0FBUyxFQUFFLGlCQUFpQjtRQUM1QixTQUFTLEVBQUUsWUFBWTtRQUN2QixVQUFVLEVBQUUsb0JBQW9CO1FBQ2hDLFNBQVMsRUFBRSxvQkFBb0I7UUFDL0IsVUFBVSxFQUFFLDJCQUEyQjtLQUUxQyxDQUFDLENBQUM7QUFFUCxDQUFDLENBQUMiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHYW1lQ29uZmlnIH0gZnJvbSBcIi4uL0NvbmZpZy9HYW1lQ29uZmlnXCI7XHJcbmltcG9ydCBIdHRwVXRpbCBmcm9tIFwiLi4vQ3J5cHRvL0h0dHBVdGlsXCI7XHJcbmltcG9ydCBBdWRpb01hbmFnZXIgZnJvbSBcIi4uL011c2ljL0F1ZGlvTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25zIH0gZnJvbSBcIi4uL05vdGlmaWNhdGlvbi9Ob3RpZmljYXRpb25cIjtcclxuaW1wb3J0IHsgU3RvcmFnZU1lc3NhZ2UgfSBmcm9tIFwiLi4vU3RvcmFnZS9TdG9yYWdlXCI7XHJcbmltcG9ydCB7IEdhbWVUb29sIH0gZnJvbSBcIi4uL1Rvb2wvR2FtZVRvb2xcIjtcclxuXHJcblxyXG53aW5kb3cuaW5pdE1nciA9IGZ1bmN0aW9uKCkge1xyXG4gICAgaWYoY2MuZngpXHJcbiAgICB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY2MuZnggPSB7fTtcclxuICAgIGNvbnNvbGUubG9nKFwiMeWIneWni+WMllwiKTtcclxuXHJcbiAgICAvL+WfuuehgOeKtuaAgeS/oeaBr1xyXG4gICAgY2MuZnguU3RhdGVJbmZvID0ge1xyXG4gICAgICAgIGRlYnVnTW9kZTogdHJ1ZSxcclxuICAgICAgICBuZXR3b3JrQ29ubmVjdGVkOiB0cnVlLCAgIC8v572R57uc54q25oCBXHJcbiAgICAgICAgbmV0d29ya1R5cGU6ICdub25lJywgICAgICAvL+e9kee7nOexu+Wei1xyXG4gICAgICAgIGlzT25Gb3JlZ3JvdW5kOiB0cnVlICAgICAgLy/lvZPliY3mmK/lkKbmmK/lnKjliY3lj7BcclxuICAgIH07XHJcblxyXG4gICAgLy/lupTnlKjns7vnu5/kv6Hmga9cclxuICAgIC8v6YWN572u5paH5Lu2XHJcblxyXG4gICAgY2MuZnguR2FtZUNvbmZpZyA9IEdhbWVDb25maWc7XHJcbiAgICBjYy5meC5IdHRwVXRpbCA9IEh0dHBVdGlsO1xyXG4gICAgY2MuZnguR2FtZVRvb2wgPSBHYW1lVG9vbDtcclxuICAgIGNjLmZ4LkF1ZGlvTWFuYWdlciA9IEF1ZGlvTWFuYWdlcjtcclxuICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMgPSBOb3RpZmljYXRpb25zO1xyXG4gICAgY2MuZnguU3RvcmFnZU1lc3NhZ2UgPSBTdG9yYWdlTWVzc2FnZTtcclxuXHJcbiAgICBjYy5meC5TaGFyZUluZm8gPSB7XHJcbiAgICAgICAgcXVlcnlJZCA6IC0xICAgICAgICAgICAgICAvL+WIhuS6q2lkXHJcbiAgICB9O1xyXG5cclxuICAgIGNjLmZ4Lk1lc3NhZ2UgPSB7XHJcbiAgICAgICAgY29udHJvbDogXCIxMDAwMVwiLCAgICAgICAvL+S8oOmAkuaTjeS9nOaOp+WItlxyXG4gICAgICAgIHN0YXJ0R2FtZTpcIjEwMDAyXCIsICAgICAgLy/kvKDpgJLlvIDlp4vlu7rnrZFcclxuICAgICAgICBuZXh0OiBcIjEwMDAzXCIgLCAgICAgICAgICAvL+S8oOmAkuaJp+ihjOS4i+S4gOS4quagvOWtkOa0quawtOa1gei/h1xyXG4gICAgICAgIGNoYW5nZVBhdGg6IFwiMTAwMDRcIiwgICAgICAgLy/kvKDpgJLmk43kvZzmjqfliLZcclxuICAgICAgICBjaGFuZ2VNYXA6IFwiMTAwMDVcIiwgICAgICAgICAvL+aUueWPmOmCo+WcsOWbvlxyXG4gICAgICAgIG5leHRXYXRlcjogXCIxMDAwNlwiICwgICAgICAgICAgLy/kvKDpgJLmiafooYzkuIvkuIDkuKrmoLzlrZDmtKrmsLTmtYHov4dcclxuICAgICAgICBhZGRFbmQ6IFwiMTAwMDdcIiAsICAgICAgICAgIC8v5re75Yqg57uT5p2f54K5XHJcbiAgICAgICAgc2V0RGF0YTogXCIxMDAwOFwiICwgICAgICAgICAvL+S4iuS8oOWIhuaVsFxyXG4gICAgICAgIGd1aWRlTmV4dDogXCIxMDAwOVwiICwgICAgICAgIC8v5byV5a+86L+b5YWl5LiL5LiA5q2lXHJcbiAgICAgICAgc2hvd1Jlc3VsdDogXCIxMDAxMFwiLCAgICAgICAgICAvL+Wxleekuuayu+awtOe7k+aenFxyXG4gICAgICAgIHJlbW92ZVRpcDogXCIxMDAxMVwiICAgICAgICAgIC8v5omn6KGM5pKk5Zue5oiW6ICF5ZCO6YCA5Yqo5L2c77yM56e76Zmk5o+Q56S6XHJcbiAgICB9XHJcblxyXG4gICAgLypcclxuICAgICAgICAqIOWuouaIt+err+Wfi+eCueWIhuS6q+exu+Wei1xyXG4gICAgKi9cclxuICAgIGNjLmZ4LkJ1cmlhbFNoYXJlVHlwZSA9IHtcclxuICAgICAgICBEZWZhdWx0IDogXCJkZWZhdWx0XCIsICAgICAgICAvL+m7mOiupOWIhuS6q+exu+WeiyzliIbkuqvliLDnvqRcclxuICAgICAgICBJbnZpdGUgOiBcImludml0ZVwiLCAgICAgICAgICAvLyDpgoDor7flpb3lj4tcclxuXHJcbiAgICAgICAgRGFpbHlJbnZpdGVSb29tSm9pbjonaW52aXRlX2pvaW5fcm9vbScsIC8v6YKA6K+35aW95Y+L5Yqg5YWlXHJcbiAgICAgICAgRGFpbHlJbnZpdGVGcmllbmQgOiAnaW52aXRlX2ZyaWVuZCcsIC8vIOaXpeW4uOmCgOivt+WlveWPi1xyXG4gICAgICAgIERhaWx5SW52aXRlR3JvdXAgOiAnaW52YXRlX2dyb3VwJywgLy8g5pel5bi45YiG5Lqr576kXHJcbiAgICAgICAgRGFpbHlJbnZpdGVHcm91cEFsaXZlOiAnaW52YXRlX2FsaXZlJywgLy/ml6XluLjliIbkuqvnvqTlpI3mtLtcclxuICAgICAgICBEYWlseUludml0ZUdyb3VwUmV3YXJkOiAnaW52YXRlX3Jld2FyZWQnLC8v5YiG5Lqr5aWW5Yqx57+75YCNXHJcbiAgICAgICAgRGFpbHlJbnZpdGVHcm91cEJveDogJ2ludmF0ZV9ib3gnLCAgLy/lrp3nrrHliIbkuqvlpZblirFcclxuICAgICAgICBEYWlseUludml0ZUdyb3VwQmFsbDogJ2ludmF0ZV9iYWxsJywgIC8v5YiG5Lqr6aKG5Y+W55CD55CDXHJcblxyXG4gICAgICAgIE1hdGNoUmVzdWx0IDogJ21hdGNoUmVzdWx0JywgIC8vIOavlOi1m+e7k+eul+WIhuS6q1xyXG4gICAgICAgIE1hdGNoRml4NTogJ01hdGNoRml4NScsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA15YWD57qi5YyF6LWbXHJcbiAgICAgICAgTWF0Y2hGaXgyMDogJ01hdGNoRml4MjAnLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIw5YWD57qi5YyF6LWbXHJcbiAgICAgICAgTWF0Y2hGaXgxMDA6ICdNYXRjaEZpeDEwMCcsICAgICAgICAgICAgICAgICAgICAgIC8vIDEwMOWFg+e6ouWMhei1m1xyXG4gICAgICAgIE1hdGNoRml4NTAwOiAnTWF0Y2hGaXg1MDAnLCAgICAgICAgICAgICAgICAgICAgICAvLyA1MDDlhYPnuqLljIXotZtcclxuICAgICAgICBOZXdlclJlZEVudmVsb3BlOiAnbmV3ZXJSZWRFbnZlbG9wZScsICAgICAgICAgICAgLy8g5paw5omL57qi5YyFXHJcbiAgICAgICAgQ29pblJvb21SZXN1bHQ6ICdjb2luUm9vbVJlc3VsdCcsICAgICAgICAgICAgICAgIC8vIOmHkeW4geahjOe7k+eul1xyXG4gICAgICAgIEhpZ2hSYXRlIDogXCJoaWdoUmF0ZVwiLC8v6auY5YCN5YiG5LqrXHJcbiAgICAgICAgQ29pblJvb21XaW5TdHJlYWs6ICdjb2luUm9vbVdpblN0cmVhaycsICAgICAgICAgLy8g6L+e6IOcXHJcbiAgICAgICAgQ29pblJvb21CYW5rcnVwdGN5MTogJ2NvaW5Sb29tQmFua3J1cHRjeTEnLCAgICAgICAgIC8vIOmHkeW4geahjOegtOS6p1xyXG4gICAgICAgIENvaW5Sb29tQmFua3J1cHRjeTI6ICdjb2luUm9vbUJhbmtydXB0Y3kyJywgICAgICAgICAvLyDph5HluIHmoYznoLTkuqdcclxuICAgICAgICBDb2luUm9vbUJhbmtydXB0Y3kzOiAnY29pblJvb21CYW5rcnVwdGN5MycsICAgICAgICAgLy8g6YeR5biB5qGM56C05LqnXHJcbiAgICB9O1xyXG5cclxuICAgIC8qXHJcbiAgICAgKiDliIbkuqvliLDlk6rlhL/nu5nlpZblirEgZ3JvdXAgZnJpbmVkIGFsbFxyXG4gICAgICovXHJcbiAgICBjYy5meC5TaGFyZVdoZXJlUmV3YXJkID0ge1xyXG4gICAgICAgIEdyb3VwIDpcImdyb3VwXCIsIC8v5b6u5L+h576kXHJcbiAgICAgICAgRnJpZW5kIDogXCJmcmllbmRcIiwvL+WlveWPi1xyXG4gICAgICAgIEFsbCA6IFwiYWxsXCIsIC8v5LiN5Yy65YiGXHJcbiAgICB9O1xyXG5cclxuICAgIC8v55So5LqO5a2Y5YKo5raI5oGv55qESURcclxuICAgIGNjLmZ4LnN0b3JhZ2VUeXBlID0gY2MuRW51bSh7XHJcblx0ICAgIHN0b3JhZ2VUeXBlQ3VzdG9tOiAxMDAwMTAxLCAvL+eUqOS6juWtmOWCqOWFs+WNoeetiee6p1xyXG5cdH0pO1xyXG5cclxuICAgIC8v55So5LqO5a2Y5YKo5o+Q56S66K+tICDmjInnhafmraXpqqTmj5DnpLpcclxuICAgIGNjLmZ4LnRpcFR5cGUgPSBjYy5FbnVtKHtcclxuICAgICAgICB0aXBPbmU6ICfnpZ7lhpzmsI/lm57liLDlrrbkuK3vvIzlvIDlp4vmlbTnkIbku4rlpKnmlLbpm4bmnaXnmoTnianlk4HjgILlvZPku5bnrKzkuIDmrKHmi7/lh7rmiJbor7Tlh7rkuIDnp43mpI3nianml7bvvIzor7flkYror4nku5bov5nmmK/mlrDmpI3nianjgIInLFxyXG4gICAgICAgIHRpcFR3bzogJ+WmguaenOS7luaLv+WHuuaIluivtOWHuueahOakjeeJqeS9oOS7iuWkqeeci+WIsOi/h++8jOivt+WRiuivieS7luS4iuasoeaYr+eci+WIsOeahO+8m+WmguaenOS9oOWQrOS7luivtOi/h++8jOWImeivt+WRiuivieS7luS4iuasoeaYr+WQrOWIsOeahOOAgicsIC8v55So5LqO5a2Y5YKo5YWz5Y2h562J57qnXHJcbiAgICAgICAgdGlwRXJyTmV3OiAn6L+Z5piv6L+Z5bGA5ri45oiP56ys5LiA5qyh5Ye6546we+akjeeJqX0nLFxyXG4gICAgICAgIHRpcEVyck9sZDogJ3vmpI3nial95Yia5omN5Ye6546w6L+H5ZGiJyxcclxuICAgICAgICB0aXBFcnJIZWFyOiAn5LiK5qyh6YGH5Yiwe+akjeeJqX3ml7bvvIzkvLzkuY7kuI3mmK/lkKzliLDnmoTlkKcnLFxyXG4gICAgICAgIHRpcEVyclNlZTogJ+S4iuasoemBh+WIsHvmpI3nial95pe277yM5Ly85LmO5LiN5piv55yL5Yiw55qE5ZCnJyxcclxuICAgICAgICB0aXBFcnJMYXN0OiAn5LmL5YmN56Gu5a6e55yL5Yiw6L+He+akjeeJqX3vvIzkvYbmnIDov5HkuIDmrKHkvLzkuY7kuI3mmK/nnIvliLDnmoTlkaInLFxyXG5cclxuICAgIH0pO1xyXG5cclxufTsiXX0= //------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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFN0b3JhZ2VcXFN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBUztBQUNULElBQUksY0FBYyxHQUFHO0lBQ2pCLFVBQVUsRUFBRyxVQUFTLEdBQUc7UUFDckIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFDO1lBQ2xDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMvQztRQUVELElBQUcsTUFBTSxFQUFDO1lBQ1IsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDN0I7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBQ0QsVUFBVSxFQUFHLFVBQVMsR0FBRyxFQUFDLEtBQUs7UUFDM0IsVUFBVTtRQUNWLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0lBQ0QsYUFBYSxFQUFHLFVBQVMsR0FBRztRQUMxQixVQUFVO1FBQ1YsSUFBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUM7WUFDbEMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQ3BDO0lBQ0gsQ0FBQztDQUNKLENBQUM7QUFFTyx3Q0FBYyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8v57yT5a2Y5rWP6KeI5Zmo5pWw5o2uXG52YXIgU3RvcmFnZU1lc3NhZ2UgPSB7XG4gICAgZ2V0U3RvcmFnZSA6IGZ1bmN0aW9uKGtleSl7XG4gICAgICAgIHZhciByZXN1bHQgPSBudWxsO1xuICAgICAgICBpZihjYy5zeXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSl7XG4gICAgICAgICAgdmFyIHJlc3VsdCA9IGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZihyZXN1bHQpe1xuICAgICAgICAgIHJlc3VsdCA9IEpTT04ucGFyc2UocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gICAgc2V0U3RvcmFnZSA6IGZ1bmN0aW9uKGtleSx2YWx1ZSl7XG4gICAgICAgIC8v5Li75Yqo5ouJ6LW35YiG5Lqr5o6l5Y+jXG4gICAgICAgIHZhciB0ZW1wID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgICAgICBjYy5zeXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB0ZW1wKVxuICAgIH0sXG4gICAgcmVtb3ZlU3RvcmFnZSA6IGZ1bmN0aW9uKGtleSl7XG4gICAgICAvL+S4u+WKqOWIoOmZpOa2iOaBr+aOpeWPo1xuICAgICAgaWYoY2Muc3lzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpe1xuICAgICAgICBjYy5zeXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KVxuICAgICAgfVxuICAgIH0sXG59O1xuXG5leHBvcnQgeyBTdG9yYWdlTWVzc2FnZSB9OyJdfQ== //------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/module/Crypto/crypto-js.min.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, '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; }); //# sourceMappingURL=crypto-js.min.js.map 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXENyeXB0b1xcY3J5cHRvLWpzLm1pbi5qcyJdLCJuYW1lcyI6WyJ0IiwiciIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJDcnlwdG9KUyIsImUiLCJPYmplY3QiLCJjcmVhdGUiLCJwcm90b3R5cGUiLCJpIiwibiIsImxpYiIsIm8iLCJCYXNlIiwiZXh0ZW5kIiwibWl4SW4iLCJoYXNPd25Qcm9wZXJ0eSIsImluaXQiLCIkc3VwZXIiLCJhcHBseSIsImFyZ3VtZW50cyIsInRvU3RyaW5nIiwiY2xvbmUiLCJzIiwiV29yZEFycmF5Iiwid29yZHMiLCJzaWdCeXRlcyIsImxlbmd0aCIsImMiLCJzdHJpbmdpZnkiLCJjb25jYXQiLCJjbGFtcCIsImNlaWwiLCJjYWxsIiwic2xpY2UiLCJyYW5kb20iLCJhIiwicHVzaCIsImVuYyIsIkhleCIsImpvaW4iLCJwYXJzZSIsInBhcnNlSW50Iiwic3Vic3RyIiwiaCIsIkxhdGluMSIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsImNoYXJDb2RlQXQiLCJsIiwiVXRmOCIsImRlY29kZVVSSUNvbXBvbmVudCIsImVzY2FwZSIsIkVycm9yIiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJmIiwiQnVmZmVyZWRCbG9ja0FsZ29yaXRobSIsInJlc2V0IiwiX2RhdGEiLCJfbkRhdGFCeXRlcyIsIl9hcHBlbmQiLCJfcHJvY2VzcyIsImJsb2NrU2l6ZSIsIm1heCIsIl9taW5CdWZmZXJTaXplIiwibWluIiwiX2RvUHJvY2Vzc0Jsb2NrIiwidSIsInNwbGljZSIsIkhhc2hlciIsImNmZyIsIl9kb1Jlc2V0IiwidXBkYXRlIiwiZmluYWxpemUiLCJfZG9GaW5hbGl6ZSIsIl9jcmVhdGVIZWxwZXIiLCJfY3JlYXRlSG1hY0hlbHBlciIsIkhNQUMiLCJhbGdvIiwiTWF0aCIsIkJhc2U2NCIsIl9tYXAiLCJjaGFyQXQiLCJfcmV2ZXJzZU1hcCIsImluZGV4T2YiLCJhYnMiLCJzaW4iLCJNRDUiLCJfaGFzaCIsImQiLCJ2IiwicCIsIl8iLCJ5IiwiZyIsIkIiLCJ3IiwiayIsIlMiLCJtIiwieCIsImIiLCJIIiwieiIsIkEiLCJDIiwiRCIsImZsb29yIiwiSG1hY01ENSIsIlNIQTEiLCJIbWFjU0hBMSIsInNxcnQiLCJwb3ciLCJTSEEyNTYiLCJIbWFjU0hBMjU2IiwiVXRmMTYiLCJVdGYxNkJFIiwiVXRmMTZMRSIsIkFycmF5QnVmZmVyIiwiVWludDhBcnJheSIsIkludDhBcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiSW50MzJBcnJheSIsIlVpbnQzMkFycmF5IiwiRmxvYXQzMkFycmF5IiwiRmxvYXQ2NEFycmF5IiwiYnVmZmVyIiwiYnl0ZU9mZnNldCIsImJ5dGVMZW5ndGgiLCJSSVBFTUQxNjAiLCJSIiwiRSIsIk0iLCJGIiwiSG1hY1JJUEVNRDE2MCIsIl9oYXNoZXIiLCJfb0tleSIsIl9pS2V5IiwiUEJLREYyIiwia2V5U2l6ZSIsImhhc2hlciIsIml0ZXJhdGlvbnMiLCJjb21wdXRlIiwiRXZwS0RGIiwiU0hBMjI0IiwiSG1hY1NIQTIyNCIsIng2NCIsIldvcmQiLCJoaWdoIiwibG93IiwidG9YMzIiLCJTSEEzIiwib3V0cHV0TGVuZ3RoIiwiX3N0YXRlIiwiSG1hY1NIQTMiLCJTSEE1MTIiLCJQIiwiVyIsIk8iLCJVIiwiSSIsIksiLCJYIiwiTCIsImoiLCJOIiwiVCIsIloiLCJxIiwiRyIsIkoiLCIkIiwiUSIsIlYiLCJZIiwidHQiLCJydCIsImV0IiwiaXQiLCJudCIsIm90Iiwic3QiLCJhdCIsImN0IiwiaHQiLCJsdCIsImZ0IiwidXQiLCJkdCIsInZ0IiwicHQiLCJfdCIsInl0IiwiZ3QiLCJCdCIsInd0Iiwia3QiLCJTdCIsIm10IiwieHQiLCJidCIsIkhtYWNTSEE1MTIiLCJTSEEzODQiLCJIbWFjU0hBMzg0IiwiQ2lwaGVyIiwiY3JlYXRlRW5jcnlwdG9yIiwiX0VOQ19YRk9STV9NT0RFIiwiY3JlYXRlRGVjcnlwdG9yIiwiX0RFQ19YRk9STV9NT0RFIiwiX3hmb3JtTW9kZSIsIl9rZXkiLCJwcm9jZXNzIiwiaXZTaXplIiwiZW5jcnlwdCIsImRlY3J5cHQiLCJTdHJlYW1DaXBoZXIiLCJtb2RlIiwiQmxvY2tDaXBoZXJNb2RlIiwiRW5jcnlwdG9yIiwiRGVjcnlwdG9yIiwiX2NpcGhlciIsIl9pdiIsIkNCQyIsIl9wcmV2QmxvY2siLCJwcm9jZXNzQmxvY2siLCJlbmNyeXB0QmxvY2siLCJkZWNyeXB0QmxvY2siLCJwYWQiLCJQa2NzNyIsInVucGFkIiwiQmxvY2tDaXBoZXIiLCJwYWRkaW5nIiwiaXYiLCJfbW9kZSIsIl9fY3JlYXRvciIsIkNpcGhlclBhcmFtcyIsImZvcm1hdHRlciIsImZvcm1hdCIsIk9wZW5TU0wiLCJjaXBoZXJ0ZXh0Iiwic2FsdCIsIlNlcmlhbGl6YWJsZUNpcGhlciIsImtleSIsImFsZ29yaXRobSIsIl9wYXJzZSIsImtkZiIsImV4ZWN1dGUiLCJQYXNzd29yZEJhc2VkQ2lwaGVyIiwiQ0ZCIiwiRUNCIiwiQW5zaVg5MjMiLCJJc28xMDEyNiIsIklzbzk3OTcxIiwiWmVyb1BhZGRpbmciLCJPRkIiLCJfa2V5c3RyZWFtIiwiTm9QYWRkaW5nIiwiQUVTIiwiX25Sb3VuZHMiLCJfa2V5UHJpb3JSZXNldCIsIl9rZXlTY2hlZHVsZSIsIl9pbnZLZXlTY2hlZHVsZSIsIl9kb0NyeXB0QmxvY2siLCJfbEJsb2NrIiwiX3JCbG9jayIsIkRFUyIsIl9zdWJLZXlzIiwiX2ludlN1YktleXMiLCJUcmlwbGVERVMiLCJfZGVzMSIsIl9kZXMyIiwiX2RlczMiLCJfUyIsIl9pIiwiX2oiLCJSQzQiLCJSQzREcm9wIiwiZHJvcCIsIkNUUkdsYWRtYW4iLCJfY291bnRlciIsIl9YIiwiX0MiLCJfYiIsIlJhYmJpdCIsIkNUUiIsIlJhYmJpdExlZ2FjeSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxDQUFDLFVBQVNBLENBQVQsRUFBV0MsQ0FBWCxFQUFhO0FBQUMs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RUFBYSxDQUFiLEVBQWUsQ0FBZixFQUFpQixDQUFqQixFQUFtQixDQUFuQixFQUFxQixFQUFyQixFQUF3QixFQUF4QixFQUEyQixFQUEzQixFQUE4QixFQUE5QixFQUFpQyxDQUFqQyxFQUFtQyxDQUFuQyxFQUFxQyxDQUFyQyxFQUF1QyxDQUF2QyxFQUF5QyxDQUF6QyxFQUEyQyxDQUEzQyxFQUE2QyxDQUE3QyxFQUErQyxFQUEvQyxFQUFrRCxFQUFsRCxFQUFxRCxDQUFyRCxFQUF1RCxDQUF2RCxFQUF5RCxFQUF6RCxFQUE0RCxDQUE1RCxFQUE4RCxFQUE5RCxFQUFpRSxFQUFqRSxFQUFvRSxDQUFwRSxFQUFzRSxFQUF0RSxFQUF5RSxDQUF6RSxFQUEyRSxFQUEzRSxFQUE4RSxFQUE5RSxFQUFpRixFQUFqRixFQUFvRixFQUFwRixFQUF1RixDQUF2RixFQUF5RixDQUF6RixFQUEyRixFQUEzRixFQUE4RixDQUE5RixFQUFnRyxFQUFoRyxFQUFtRyxFQUFuRyxFQUFzRyxFQUF0RyxFQUF5RyxDQUF6RyxFQUEyRyxFQUEzRyxFQUE4RyxDQUE5RyxFQUFnSCxDQUFoSCxFQUFrSCxFQUFsSCxFQUFxSCxDQUFySCxFQUF1SCxDQUF2SCxFQUF5SCxFQUF6SCxFQUE0SCxFQUE1SCxFQUErSCxFQUEvSCxFQUFrSSxFQUFsSSxFQUFxSSxFQUFySSxFQUF3SSxFQUF4SSxFQUEySSxDQUEzSSxFQUE2SSxDQUE3SSxFQUErSSxDQUEvSSxFQUFpSixFQUFqSixFQUFvSixDQUFwSixFQUFzSixDQUF0SixFQUF3SixDQUF4SixFQUEwSixDQUExSixFQUE0SixDQUE1SixFQUE4SixFQUE5SixFQUFpSyxDQUFqSyxFQUFtSyxFQUFuSyxFQUFzSyxDQUF0SyxFQUF3SyxFQUF4SyxFQUEySyxDQUEzSyxFQUE2SyxDQUE3SyxFQUErSyxFQUEvSyxFQUFrTCxFQUFsTCxFQUFxTCxDQUFyTCxFQUF1TCxFQUF2TCxFQUEwTCxFQUExTCxFQUE2TCxFQUE3TCxFQUFnTSxFQUFoTSxFQUFtTSxDQUFuTSxFQUFxTSxDQUFyTSxFQUF1TSxDQUF2TSxDQUFULENBQTVjO0FBQUEsUUFBZ3FCc0YsQ0FBQyxHQUFDNUMsQ0FBQyxDQUFDMUMsTUFBRixDQUFTLENBQUMsQ0FBRCxFQUFHLENBQUgsRUFBSyxDQUFMLEVBQU8sRUFBUCxFQUFVLEVBQVYsRUFBYSxFQUFiLEVBQWdCLEVBQWhCLEVBQW1CLENBQW5CLEVBQXFCLENBQXJCLEVBQXVCLENBQXZCLEVBQXlCLENBQXpCLEVBQTJCLEVBQTNCLEVBQThCLEVBQTlCLEVBQWlDLEVBQWpDLEVBQW9DLEVBQXBDLEVBQXVDLENBQXZDLEVBQXlDLENBQXpDLEVBQTJDLEVBQTNDLEVBQThDLEVBQTlDLEVBQWlELENBQWpELEVBQW1ELEVBQW5ELEVBQXNELENBQXRELEVBQXdELENBQXhELEVBQTBELEVBQTFELEVBQTZELENBQTdELEVBQStELENBQS9ELEVBQWlFLEVBQWpFLEVBQW9FLENBQXBFLEVBQXNFLENBQXRFLEVBQXdFLEVBQXhFLEVBQTJFLEVBQTNFLEVBQThFLEVBQTlFLEVBQWlGLENBQWpGLEVBQW1GLENBQW5GLEVBQXFGLEVBQXJGLEVBQXdGLEVBQXhGLEVBQTJGLENBQTNGLEVBQTZGLENBQTdGLEVBQStGLENBQS9GLEVBQWlHLEVBQWpHLEVBQW9HLEVBQXBHLEVBQXVHLEVBQXZHLEVBQTBHLENBQTFHLEVBQTRHLEVBQTVHLEVBQStHLEVBQS9HLEVBQWtILEVBQWxILEVBQXFILENBQXJILEVBQXVILENBQXZILEVBQXlILEVBQXpILEVBQTRILENBQTVILEVBQThILENBQTlILEVBQWdJLEVBQWhJLEVBQW1JLEVBQW5JLEVBQXNJLEVBQXRJLEVBQXlJLENBQXpJLEVBQTJJLEVBQTNJLEVBQThJLENBQTlJLEVBQWdKLENBQWhKLEVBQWtKLEVBQWxKLEVBQXFKLENBQXJKLEVBQXVKLEVBQXZKLEVBQTBKLENBQTFKLEVBQTRKLEVBQTVKLEVBQStKLENBQS9KLEVBQWlLLENBQWpLLEVBQW1LLENBQW5LLEVBQXFLLEVBQXJLLEVBQXdLLENBQXhLLEVBQTBLLEVBQTFLLEVBQTZLLENBQTdLLEVBQStLLEVBQS9LLEVBQWtMLENBQWxMLEVBQW9MLENBQXBMLEVBQXNMLEVBQXRMLEVBQXlMLENBQXpMLEVBQTJMLENBQTNMLEVBQTZMLEVBQTdMLEVBQWdNLEVBQWhNLEVBQW1NLEVBQW5NLEVBQXNNLEVBQXRNLENBQVQsQ0FBbHFCO0FBQUEsUUFBczNCdUYsQ0FBQyxHQUFDN0MsQ0FBQyxDQUFDMUMsTUFBRixDQUFTLENBQUMsQ0FBRCxFQUFHLFVBQUgsRUFBYyxVQUFkLEVBQXlCLFVBQXpCLEVBQW9DLFVBQXBDLENBQVQsQ0FBeDNCO0FBQUEsUUFBazdCd0YsQ0FBQyxHQUFDOUMsQ0FBQyxDQUFDMUMsTUFBRixDQUFTLENBQUMsVUFBRCxFQUFZLFVBQVosRUFBdUIsVUFBdkIsRUFBa0MsVUFBbEMsRUFBNkMsQ0FBN0MsQ0FBVCxDQUFwN0I7QUFBQSxRQUE4K0J5RixDQUFDLEdBQUM1QixDQUFDLENBQUNnRSxTQUFGLEdBQVk1RSxDQUFDLENBQUMxQyxNQUFGLENBQVM7QUFBQzBELE1BQUFBLFFBQVEsRUFBQyxvQkFBVTtBQUFDLGFBQUtpQixLQUFMLEdBQVd4QyxDQUFDLENBQUMxQyxNQUFGLENBQVMsQ0FBQyxVQUFELEVBQVksVUFBWixFQUF1QixVQUF2QixFQUFrQyxTQUFsQyxFQUE0QyxVQUE1QyxDQUFULENBQVg7QUFBNkUsT0FBbEc7QUFBbUc0RCxNQUFBQSxlQUFlLEVBQUMseUJBQVNyRSxDQUFULEVBQVdDLENBQVgsRUFBYTtBQUFDLGFBQUksSUFBSTZCLENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQyxFQUFkLEVBQWlCQSxDQUFDLEVBQWxCLEVBQXFCO0FBQUMsY0FBSWdCLENBQUMsR0FBQzdDLENBQUMsR0FBQzZCLENBQVI7QUFBQSxjQUFVcUIsQ0FBQyxHQUFDbkQsQ0FBQyxDQUFDOEMsQ0FBRCxDQUFiO0FBQWlCOUMsVUFBQUEsQ0FBQyxDQUFDOEMsQ0FBRCxDQUFELEdBQUssWUFBVUssQ0FBQyxJQUFFLENBQUgsR0FBS0EsQ0FBQyxLQUFHLEVBQW5CLElBQXVCLGNBQVlBLENBQUMsSUFBRSxFQUFILEdBQU1BLENBQUMsS0FBRyxDQUF0QixDQUE1QjtBQUFxRDs7QUFBQSxZQUFJTyxDQUFKO0FBQUEsWUFBTVksQ0FBTjtBQUFBLFlBQVE0QixDQUFSO0FBQUEsWUFBVUMsQ0FBVjtBQUFBLFlBQVlDLENBQVo7QUFBQSxZQUFjQyxDQUFkO0FBQUEsWUFBZ0JDLENBQWhCO0FBQUEsWUFBa0JDLENBQWxCO0FBQUEsWUFBb0JDLENBQXBCO0FBQUEsWUFBc0JDLENBQXRCO0FBQUEsWUFBd0JDLENBQUMsR0FBQyxLQUFLZixLQUFMLENBQVdoRSxLQUFyQztBQUFBLFlBQTJDZ0YsQ0FBQyxHQUFDWCxDQUFDLENBQUNyRSxLQUEvQztBQUFBLFlBQXFEaUYsQ0FBQyxHQUFDWCxDQUFDLENBQUN0RSxLQUF6RDtBQUFBLFlBQStEa0YsQ0FBQyxHQUFDakIsQ0FBQyxDQUFDakUsS0FBbkU7QUFBQSxZQUF5RTRHLENBQUMsR0FBQzFDLENBQUMsQ0FBQ2xFLEtBQTdFO0FBQUEsWUFBbUY2RyxDQUFDLEdBQUMxQyxDQUFDLENBQUNuRSxLQUF2RjtBQUFBLFlBQTZGOEcsQ0FBQyxHQUFDMUMsQ0FBQyxDQUFDcEUsS0FBakc7QUFBdUcwRSxRQUFBQSxDQUFDLEdBQUMzQyxDQUFDLEdBQUNnRCxDQUFDLENBQUMsQ0FBRCxDQUFMLEVBQVNKLENBQUMsR0FBQ2hDLENBQUMsR0FBQ29DLENBQUMsQ0FBQyxDQUFELENBQWQsRUFBa0JILENBQUMsR0FBQ0wsQ0FBQyxHQUFDUSxDQUFDLENBQUMsQ0FBRCxDQUF2QixFQUEyQkYsQ0FBQyxHQUFDTCxDQUFDLEdBQUNPLENBQUMsQ0FBQyxDQUFELENBQWhDLEVBQW9DRCxDQUFDLEdBQUNMLENBQUMsR0FBQ00sQ0FBQyxDQUFDLENBQUQsQ0FBekM7O0FBQTZDLGFBQUksSUFBSWdDLENBQUosRUFBTTVHLENBQUMsR0FBQyxDQUFaLEVBQWNBLENBQUMsR0FBQyxFQUFoQixFQUFtQkEsQ0FBQyxJQUFFLENBQXRCO0FBQXdCNEcsVUFBQUEsQ0FBQyxHQUFDaEYsQ0FBQyxHQUFDMUQsQ0FBQyxDQUFDQyxDQUFDLEdBQUM0RyxDQUFDLENBQUMvRSxDQUFELENBQUosQ0FBSCxHQUFZLENBQWQsRUFBZ0I0RyxDQUFDLElBQUU1RyxDQUFDLEdBQUMsRUFBRixHQUFLdkIsQ0FBQyxDQUFDK0QsQ0FBRCxFQUFHNEIsQ0FBSCxFQUFLQyxDQUFMLENBQUQsR0FBU1EsQ0FBQyxDQUFDLENBQUQsQ0FBZixHQUFtQjdFLENBQUMsR0FBQyxFQUFGLEdBQUtuQixDQUFDLENBQUMyRCxDQUFELEVBQUc0QixDQUFILEVBQUtDLENBQUwsQ0FBRCxHQUFTUSxDQUFDLENBQUMsQ0FBRCxDQUFmLEdBQW1CN0UsQ0FBQyxHQUFDLEVBQUYsR0FBS2xCLENBQUMsQ0FBQzBELENBQUQsRUFBRzRCLENBQUgsRUFBS0MsQ0FBTCxDQUFELEdBQVNRLENBQUMsQ0FBQyxDQUFELENBQWYsR0FBbUI3RSxDQUFDLEdBQUMsRUFBRixHQUFLaEIsQ0FBQyxDQUFDd0QsQ0FBRCxFQUFHNEIsQ0FBSCxFQUFLQyxDQUFMLENBQUQsR0FBU1EsQ0FBQyxDQUFDLENBQUQsQ0FBZixHQUFtQmxGLENBQUMsQ0FBQzZDLENBQUQsRUFBRzRCLENBQUgsRUFBS0MsQ0FBTCxDQUFELEdBQVNRLENBQUMsQ0FBQyxDQUFELENBQXpHLEVBQTZHK0IsQ0FBQyxJQUFFLENBQWhILEVBQWtIQSxDQUFDLEdBQUNwRyxDQUFDLENBQUNvRyxDQUFELEVBQUdGLENBQUMsQ0FBQzFHLENBQUQsQ0FBSixDQUFySCxFQUE4SDRHLENBQUMsR0FBQ0EsQ0FBQyxHQUFDdEMsQ0FBRixHQUFJLENBQXBJLEVBQXNJMUMsQ0FBQyxHQUFDMEMsQ0FBeEksRUFBMElBLENBQUMsR0FBQ0QsQ0FBNUksRUFBOElBLENBQUMsR0FBQzdELENBQUMsQ0FBQzRELENBQUQsRUFBRyxFQUFILENBQWpKLEVBQXdKQSxDQUFDLEdBQUM1QixDQUExSixFQUE0SkEsQ0FBQyxHQUFDb0UsQ0FBOUosRUFBZ0tBLENBQUMsR0FBQ3JDLENBQUMsR0FBQ3JHLENBQUMsQ0FBQ0MsQ0FBQyxHQUFDc0ksQ0FBQyxDQUFDekcsQ0FBRCxDQUFKLENBQUgsR0FBWSxDQUE5SyxFQUFnTDRHLENBQUMsSUFBRTVHLENBQUMsR0FBQyxFQUFGLEdBQUtMLENBQUMsQ0FBQzZFLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLENBQUQsR0FBU0ksQ0FBQyxDQUFDLENBQUQsQ0FBZixHQUFtQjlFLENBQUMsR0FBQyxFQUFGLEdBQUtoQixDQUFDLENBQUN3RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxDQUFELEdBQVNJLENBQUMsQ0FBQyxDQUFELENBQWYsR0FBbUI5RSxDQUFDLEdBQUMsRUFBRixHQUFLbEIsQ0FBQyxDQUFDMEYsQ0FBRCxFQUFHQyxDQUFILEVBQUtDLENBQUwsQ0FBRCxHQUFTSSxDQUFDLENBQUMsQ0FBRCxDQUFmLEdBQW1COUUsQ0FBQyxHQUFDLEVBQUYsR0FBS25CLENBQUMsQ0FBQzJGLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLENBQUQsR0FBU0ksQ0FBQyxDQUFDLENBQUQsQ0FBZixHQUFtQnJHLENBQUMsQ0FBQytGLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLENBQUQsR0FBU0ksQ0FBQyxDQUFDLENBQUQsQ0FBelEsRUFBNlE4QixDQUFDLElBQUUsQ0FBaFIsRUFBa1JBLENBQUMsR0FBQ3BHLENBQUMsQ0FBQ29HLENBQUQsRUFBR0QsQ0FBQyxDQUFDM0csQ0FBRCxDQUFKLENBQXJSLEVBQThSNEcsQ0FBQyxHQUFDQSxDQUFDLEdBQUNqQyxDQUFGLEdBQUksQ0FBcFMsRUFBc1NKLENBQUMsR0FBQ0ksQ0FBeFMsRUFBMFNBLENBQUMsR0FBQ0QsQ0FBNVMsRUFBOFNBLENBQUMsR0FBQ2xFLENBQUMsQ0FBQ2lFLENBQUQsRUFBRyxFQUFILENBQWpULEVBQXdUQSxDQUFDLEdBQUNELENBQTFULEVBQTRUQSxDQUFDLEdBQUNvQyxDQUE5VDtBQUF4Qjs7QUFBd1ZBLFFBQUFBLENBQUMsR0FBQ2hDLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS1IsQ0FBTCxHQUFPTSxDQUFQLEdBQVMsQ0FBWCxFQUFhRSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS1AsQ0FBTCxHQUFPTSxDQUFQLEdBQVMsQ0FBM0IsRUFBNkJDLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLTixDQUFMLEdBQU9DLENBQVAsR0FBUyxDQUEzQyxFQUE2Q0ssQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtoRCxDQUFMLEdBQU80QyxDQUFQLEdBQVMsQ0FBM0QsRUFBNkRJLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLcEMsQ0FBTCxHQUFPaUMsQ0FBUCxHQUFTLENBQTNFLEVBQTZFRyxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtnQyxDQUFsRjtBQUFvRixPQUE3eEI7QUFBOHhCN0QsTUFBQUEsV0FBVyxFQUFDLHVCQUFVO0FBQUMsWUFBSTdFLENBQUMsR0FBQyxLQUFLNkQsS0FBWDtBQUFBLFlBQWlCNUQsQ0FBQyxHQUFDRCxDQUFDLENBQUMyQixLQUFyQjtBQUFBLFlBQTJCcEIsQ0FBQyxHQUFDLElBQUUsS0FBS3VELFdBQXBDO0FBQUEsWUFBZ0RuRCxDQUFDLEdBQUMsSUFBRVgsQ0FBQyxDQUFDNEIsUUFBdEQ7QUFBK0QzQixRQUFBQSxDQUFDLENBQUNVLENBQUMsS0FBRyxDQUFMLENBQUQsSUFBVSxPQUFLLEtBQUdBLENBQUMsR0FBQyxFQUFwQixFQUF1QlYsQ0FBQyxDQUFDLENBQUNVLENBQUMsR0FBQyxFQUFGLEtBQU8sQ0FBUCxJQUFVLENBQVgsSUFBYyxFQUFmLENBQUQsR0FBb0IsWUFBVUosQ0FBQyxJQUFFLENBQUgsR0FBS0EsQ0FBQyxLQUFHLEVBQW5CLElBQXVCLGNBQVlBLENBQUMsSUFBRSxFQUFILEdBQU1BLENBQUMsS0FBRyxDQUF0QixDQUFsRSxFQUEyRlAsQ0FBQyxDQUFDNEIsUUFBRixHQUFXLEtBQUczQixDQUFDLENBQUM0QixNQUFGLEdBQVMsQ0FBWixDQUF0RyxFQUFxSCxLQUFLbUMsUUFBTCxFQUFySDs7QUFBcUksYUFBSSxJQUFJcEQsQ0FBQyxHQUFDLEtBQUsrRSxLQUFYLEVBQWlCN0UsQ0FBQyxHQUFDRixDQUFDLENBQUNlLEtBQXJCLEVBQTJCRixDQUFDLEdBQUMsQ0FBakMsRUFBbUNBLENBQUMsR0FBQyxDQUFyQyxFQUF1Q0EsQ0FBQyxFQUF4QyxFQUEyQztBQUFDLGNBQUlhLENBQUMsR0FBQ3hCLENBQUMsQ0FBQ1csQ0FBRCxDQUFQO0FBQVdYLFVBQUFBLENBQUMsQ0FBQ1csQ0FBRCxDQUFELEdBQUssWUFBVWEsQ0FBQyxJQUFFLENBQUgsR0FBS0EsQ0FBQyxLQUFHLEVBQW5CLElBQXVCLGNBQVlBLENBQUMsSUFBRSxFQUFILEdBQU1BLENBQUMsS0FBRyxDQUF0QixDQUE1QjtBQUFxRDs7QUFBQSxlQUFPMUIsQ0FBUDtBQUFTLE9BQTltQztBQUErbUNZLE1BQUFBLEtBQUssRUFBQyxpQkFBVTtBQUFDLFlBQUl4QixDQUFDLEdBQUMwRCxDQUFDLENBQUNsQyxLQUFGLENBQVFXLElBQVIsQ0FBYSxJQUFiLENBQU47QUFBeUIsZUFBT25DLENBQUMsQ0FBQzJGLEtBQUYsR0FBUSxLQUFLQSxLQUFMLENBQVduRSxLQUFYLEVBQVIsRUFBMkJ4QixDQUFsQztBQUFvQztBQUE3ckMsS0FBVCxDQUE1L0I7O0FBQXFzRThCLElBQUFBLENBQUMsQ0FBQ3dHLFNBQUYsR0FBWTVFLENBQUMsQ0FBQ29CLGFBQUYsQ0FBZ0JvQixDQUFoQixDQUFaLEVBQStCcEUsQ0FBQyxDQUFDNkcsYUFBRixHQUFnQmpGLENBQUMsQ0FBQ3FCLGlCQUFGLENBQW9CbUIsQ0FBcEIsQ0FBL0M7QUFBc0UsR0FBbCtFLENBQW0rRWhCLElBQW4rRSxDQUF0ek8sRUFBK3hULFlBQVU7QUFBQyxRQUFJakYsQ0FBQyxHQUFDRCxDQUFOO0FBQUEsUUFBUU8sQ0FBQyxHQUFDTixDQUFDLENBQUNZLEdBQVo7QUFBQSxRQUFnQkYsQ0FBQyxHQUFDSixDQUFDLENBQUNRLElBQXBCO0FBQUEsUUFBeUJILENBQUMsR0FBQ1gsQ0FBQyxDQUFDdUMsR0FBN0I7QUFBQSxRQUFpQzFCLENBQUMsR0FBQ0YsQ0FBQyxDQUFDd0MsSUFBckM7QUFBQSxRQUEwQzNCLENBQUMsR0FBQ3hCLENBQUMsQ0FBQ2dGLElBQTlDO0FBQW1EeEQsSUFBQUEsQ0FBQyxDQUFDdUQsSUFBRixHQUFPckUsQ0FBQyxDQUFDSyxNQUFGLENBQVM7QUFBQ0csTUFBQUEsSUFBSSxFQUFDLGNBQVNuQixDQUFULEVBQVdDLENBQVgsRUFBYTtBQUFDRCxRQUFBQSxDQUFDLEdBQUMsS0FBSzRJLE9BQUwsR0FBYSxJQUFJNUksQ0FBQyxDQUFDbUIsSUFBTixFQUFmLEVBQTBCLFlBQVUsT0FBT2xCLENBQWpCLEtBQXFCQSxDQUFDLEdBQUNhLENBQUMsQ0FBQzZCLEtBQUYsQ0FBUTFDLENBQVIsQ0FBdkIsQ0FBMUI7QUFBNkQsWUFBSU0sQ0FBQyxHQUFDUCxDQUFDLENBQUNpRSxTQUFSO0FBQUEsWUFBa0J0RCxDQUFDLEdBQUMsSUFBRUosQ0FBdEI7QUFBd0JOLFFBQUFBLENBQUMsQ0FBQzJCLFFBQUYsR0FBV2pCLENBQVgsS0FBZVYsQ0FBQyxHQUFDRCxDQUFDLENBQUM0RSxRQUFGLENBQVczRSxDQUFYLENBQWpCLEdBQWdDQSxDQUFDLENBQUNnQyxLQUFGLEVBQWhDOztBQUEwQyxhQUFJLElBQUlyQixDQUFDLEdBQUMsS0FBS2lJLEtBQUwsR0FBVzVJLENBQUMsQ0FBQ3VCLEtBQUYsRUFBakIsRUFBMkJDLENBQUMsR0FBQyxLQUFLcUgsS0FBTCxHQUFXN0ksQ0FBQyxDQUFDdUIsS0FBRixFQUF4QyxFQUFrRGMsQ0FBQyxHQUFDMUIsQ0FBQyxDQUFDZSxLQUF0RCxFQUE0REcsQ0FBQyxHQUFDTCxDQUFDLENBQUNFLEtBQWhFLEVBQXNFbUIsQ0FBQyxHQUFDLENBQTVFLEVBQThFQSxDQUFDLEdBQUN2QyxDQUFoRixFQUFrRnVDLENBQUMsRUFBbkY7QUFBc0ZSLFVBQUFBLENBQUMsQ0FBQ1EsQ0FBRCxDQUFELElBQU0sVUFBTixFQUFpQmhCLENBQUMsQ0FBQ2dCLENBQUQsQ0FBRCxJQUFNLFNBQXZCO0FBQXRGOztBQUF1SGxDLFFBQUFBLENBQUMsQ0FBQ2dCLFFBQUYsR0FBV0gsQ0FBQyxDQUFDRyxRQUFGLEdBQVdqQixDQUF0QixFQUF3QixLQUFLaUQsS0FBTCxFQUF4QjtBQUFxQyxPQUEvUztBQUFnVEEsTUFBQUEsS0FBSyxFQUFDLGlCQUFVO0FBQUMsWUFBSTVELENBQUMsR0FBQyxLQUFLNEksT0FBWDtBQUFtQjVJLFFBQUFBLENBQUMsQ0FBQzRELEtBQUYsSUFBVTVELENBQUMsQ0FBQzJFLE1BQUYsQ0FBUyxLQUFLbUUsS0FBZCxDQUFWO0FBQStCLE9BQW5YO0FBQW9YbkUsTUFBQUEsTUFBTSxFQUFDLGdCQUFTM0UsQ0FBVCxFQUFXO0FBQUMsZUFBTyxLQUFLNEksT0FBTCxDQUFhakUsTUFBYixDQUFvQjNFLENBQXBCLEdBQXVCLElBQTlCO0FBQW1DLE9BQTFhO0FBQTJhNEUsTUFBQUEsUUFBUSxFQUFDLGtCQUFTNUUsQ0FBVCxFQUFXO0FBQUMsWUFBSUMsQ0FBQyxHQUFDLEtBQUsySSxPQUFYO0FBQUEsWUFBbUJySSxDQUFDLEdBQUNOLENBQUMsQ0FBQzJFLFFBQUYsQ0FBVzVFLENBQVgsQ0FBckI7QUFBbUNDLFFBQUFBLENBQUMsQ0FBQzJELEtBQUY7QUFBVSxZQUFJakQsQ0FBQyxHQUFDVixDQUFDLENBQUMyRSxRQUFGLENBQVcsS0FBS2lFLEtBQUwsQ0FBV3JILEtBQVgsR0FBbUJRLE1BQW5CLENBQTBCekIsQ0FBMUIsQ0FBWCxDQUFOO0FBQStDLGVBQU9JLENBQVA7QUFBUztBQUFyaUIsS0FBVCxDQUFQO0FBQXdqQixHQUF0bkIsRUFBL3hULEVBQXc1VSxZQUFVO0FBQUMsUUFBSVYsQ0FBQyxHQUFDRCxDQUFOO0FBQUEsUUFBUU8sQ0FBQyxHQUFDTixDQUFDLENBQUNZLEdBQVo7QUFBQSxRQUFnQkYsQ0FBQyxHQUFDSixDQUFDLENBQUNRLElBQXBCO0FBQUEsUUFBeUJILENBQUMsR0FBQ0wsQ0FBQyxDQUFDbUIsU0FBN0I7QUFBQSxRQUF1Q1osQ0FBQyxHQUFDYixDQUFDLENBQUNnRixJQUEzQztBQUFBLFFBQWdEeEQsQ0FBQyxHQUFDWCxDQUFDLENBQUNrRyxJQUFwRDtBQUFBLFFBQXlEMUUsQ0FBQyxHQUFDeEIsQ0FBQyxDQUFDa0UsSUFBN0Q7QUFBQSxRQUFrRWxELENBQUMsR0FBQ2hCLENBQUMsQ0FBQ2lJLE1BQUYsR0FBU3BJLENBQUMsQ0FBQ0ssTUFBRixDQUFTO0FBQUN5RCxNQUFBQSxHQUFHLEVBQUM5RCxDQUFDLENBQUNLLE1BQUYsQ0FBUztBQUFDZ0ksUUFBQUEsT0FBTyxFQUFDLENBQVQ7QUFBV0MsUUFBQUEsTUFBTSxFQUFDeEgsQ0FBbEI7QUFBb0J5SCxRQUFBQSxVQUFVLEVBQUM7QUFBL0IsT0FBVCxDQUFMO0FBQWlEL0gsTUFBQUEsSUFBSSxFQUFDLGNBQVNuQixDQUFULEVBQVc7QUFBQyxhQUFLeUUsR0FBTCxHQUFTLEtBQUtBLEdBQUwsQ0FBU3pELE1BQVQsQ0FBZ0JoQixDQUFoQixDQUFUO0FBQTRCLE9BQTlGO0FBQStGbUosTUFBQUEsT0FBTyxFQUFDLGlCQUFTbkosQ0FBVCxFQUFXQyxDQUFYLEVBQWE7QUFBQyxhQUFJLElBQUlNLENBQUMsR0FBQyxLQUFLa0UsR0FBWCxFQUFlOUQsQ0FBQyxHQUFDMkIsQ0FBQyxDQUFDN0IsTUFBRixDQUFTRixDQUFDLENBQUMwSSxNQUFYLEVBQWtCakosQ0FBbEIsQ0FBakIsRUFBc0NjLENBQUMsR0FBQ0YsQ0FBQyxDQUFDSCxNQUFGLEVBQXhDLEVBQW1EZ0IsQ0FBQyxHQUFDYixDQUFDLENBQUNILE1BQUYsQ0FBUyxDQUFDLENBQUQsQ0FBVCxDQUFyRCxFQUFtRXFCLENBQUMsR0FBQ2hCLENBQUMsQ0FBQ2EsS0FBdkUsRUFBNkVtQixDQUFDLEdBQUNyQixDQUFDLENBQUNFLEtBQWpGLEVBQXVGd0IsQ0FBQyxHQUFDNUMsQ0FBQyxDQUFDeUksT0FBM0YsRUFBbUd0RixDQUFDLEdBQUNuRCxDQUFDLENBQUMySSxVQUEzRyxFQUFzSHBILENBQUMsQ0FBQ0QsTUFBRixHQUFTc0IsQ0FBL0gsR0FBa0k7QUFBQyxjQUFJbUIsQ0FBQyxHQUFDM0QsQ0FBQyxDQUFDZ0UsTUFBRixDQUFTMUUsQ0FBVCxFQUFZMkUsUUFBWixDQUFxQm5ELENBQXJCLENBQU47QUFBOEJkLFVBQUFBLENBQUMsQ0FBQ2lELEtBQUY7O0FBQVUsZUFBSSxJQUFJZ0MsQ0FBQyxHQUFDdEIsQ0FBQyxDQUFDM0MsS0FBUixFQUFja0UsQ0FBQyxHQUFDRCxDQUFDLENBQUMvRCxNQUFsQixFQUF5QmlFLENBQUMsR0FBQ3hCLENBQTNCLEVBQTZCeUIsQ0FBQyxHQUFDLENBQW5DLEVBQXFDQSxDQUFDLEdBQUNyQyxDQUF2QyxFQUF5Q3FDLENBQUMsRUFBMUMsRUFBNkM7QUFBQ0QsWUFBQUEsQ0FBQyxHQUFDbkYsQ0FBQyxDQUFDaUUsUUFBRixDQUFXa0IsQ0FBWCxDQUFGLEVBQWdCbkYsQ0FBQyxDQUFDaUQsS0FBRixFQUFoQjs7QUFBMEIsaUJBQUksSUFBSW9DLENBQUMsR0FBQ0YsQ0FBQyxDQUFDbkUsS0FBUixFQUFjc0UsQ0FBQyxHQUFDLENBQXBCLEVBQXNCQSxDQUFDLEdBQUNKLENBQXhCLEVBQTBCSSxDQUFDLEVBQTNCO0FBQThCTCxjQUFBQSxDQUFDLENBQUNLLENBQUQsQ0FBRCxJQUFNRCxDQUFDLENBQUNDLENBQUQsQ0FBUDtBQUE5QjtBQUF5Qzs7QUFBQW5GLFVBQUFBLENBQUMsQ0FBQ2tCLE1BQUYsQ0FBU3NDLENBQVQsR0FBWXhCLENBQUMsQ0FBQyxDQUFELENBQUQsRUFBWjtBQUFtQjs7QUFBQSxlQUFPaEMsQ0FBQyxDQUFDYyxRQUFGLEdBQVcsSUFBRXVCLENBQWIsRUFBZXJDLENBQXRCO0FBQXdCO0FBQTViLEtBQVQsQ0FBN0U7O0FBQXFoQmIsSUFBQUEsQ0FBQyxDQUFDOEksTUFBRixHQUFTLFVBQVMvSSxDQUFULEVBQVdDLENBQVgsRUFBYU0sQ0FBYixFQUFlO0FBQUMsYUFBT3VCLENBQUMsQ0FBQ3JCLE1BQUYsQ0FBU0YsQ0FBVCxFQUFZNEksT0FBWixDQUFvQm5KLENBQXBCLEVBQXNCQyxDQUF0QixDQUFQO0FBQWdDLEtBQXpEO0FBQTBELEdBQTFsQixFQUF4NVUsRUFBcS9WLFlBQVU7QUFBQyxRQUFJQSxDQUFDLEdBQUNELENBQU47QUFBQSxRQUFRTyxDQUFDLEdBQUNOLENBQUMsQ0FBQ1ksR0FBWjtBQUFBLFFBQWdCRixDQUFDLEdBQUNKLENBQUMsQ0FBQ1EsSUFBcEI7QUFBQSxRQUF5QkgsQ0FBQyxHQUFDTCxDQUFDLENBQUNtQixTQUE3QjtBQUFBLFFBQXVDWixDQUFDLEdBQUNiLENBQUMsQ0FBQ2dGLElBQTNDO0FBQUEsUUFBZ0R4RCxDQUFDLEdBQUNYLENBQUMsQ0FBQzRFLEdBQXBEO0FBQUEsUUFBd0RwRCxDQUFDLEdBQUN4QixDQUFDLENBQUNzSSxNQUFGLEdBQVN6SSxDQUFDLENBQUNLLE1BQUYsQ0FBUztBQUFDeUQsTUFBQUEsR0FBRyxFQUFDOUQsQ0FBQyxDQUFDSyxNQUFGLENBQVM7QUFBQ2dJLFFBQUFBLE9BQU8sRUFBQyxDQUFUO0FBQVdDLFFBQUFBLE1BQU0sRUFBQ3hILENBQWxCO0FBQW9CeUgsUUFBQUEsVUFBVSxFQUFDO0FBQS9CLE9BQVQsQ0FBTDtBQUFpRC9ILE1BQUFBLElBQUksRUFBQyxjQUFTbkIsQ0FBVCxFQUFXO0FBQUMsYUFBS3lFLEdBQUwsR0FBUyxLQUFLQSxHQUFMLENBQVN6RCxNQUFULENBQWdCaEIsQ0FBaEIsQ0FBVDtBQUE0QixPQUE5RjtBQUErRm1KLE1BQUFBLE9BQU8sRUFBQyxpQkFBU25KLENBQVQsRUFBV0MsQ0FBWCxFQUFhO0FBQUMsYUFBSSxJQUFJTSxDQUFDLEdBQUMsS0FBS2tFLEdBQVgsRUFBZTlELENBQUMsR0FBQ0osQ0FBQyxDQUFDMEksTUFBRixDQUFTeEksTUFBVCxFQUFqQixFQUFtQ0ssQ0FBQyxHQUFDRixDQUFDLENBQUNILE1BQUYsRUFBckMsRUFBZ0RnQixDQUFDLEdBQUNYLENBQUMsQ0FBQ2EsS0FBcEQsRUFBMERXLENBQUMsR0FBQy9CLENBQUMsQ0FBQ3lJLE9BQTlELEVBQXNFbEgsQ0FBQyxHQUFDdkIsQ0FBQyxDQUFDMkksVUFBOUUsRUFBeUZ6SCxDQUFDLENBQUNJLE1BQUYsR0FBU1MsQ0FBbEcsR0FBcUc7QUFBQ1EsVUFBQUEsQ0FBQyxJQUFFbkMsQ0FBQyxDQUFDZ0UsTUFBRixDQUFTN0IsQ0FBVCxDQUFIO0FBQWUsY0FBSUEsQ0FBQyxHQUFDbkMsQ0FBQyxDQUFDZ0UsTUFBRixDQUFTM0UsQ0FBVCxFQUFZNEUsUUFBWixDQUFxQjNFLENBQXJCLENBQU47QUFBOEJVLFVBQUFBLENBQUMsQ0FBQ2lELEtBQUY7O0FBQVUsZUFBSSxJQUFJVCxDQUFDLEdBQUMsQ0FBVixFQUFZQSxDQUFDLEdBQUNyQixDQUFkLEVBQWdCcUIsQ0FBQyxFQUFqQjtBQUFvQkwsWUFBQUEsQ0FBQyxHQUFDbkMsQ0FBQyxDQUFDaUUsUUFBRixDQUFXOUIsQ0FBWCxDQUFGLEVBQWdCbkMsQ0FBQyxDQUFDaUQsS0FBRixFQUFoQjtBQUFwQjs7QUFBOEM5QyxVQUFBQSxDQUFDLENBQUNrQixNQUFGLENBQVNjLENBQVQ7QUFBWTs7QUFBQSxlQUFPaEMsQ0FBQyxDQUFDYyxRQUFGLEdBQVcsSUFBRVUsQ0FBYixFQUFleEIsQ0FBdEI7QUFBd0I7QUFBcFcsS0FBVCxDQUFuRTs7QUFBbWJiLElBQUFBLENBQUMsQ0FBQ21KLE1BQUYsR0FBUyxVQUFTcEosQ0FBVCxFQUFXQyxDQUFYLEVBQWFNLENBQWIsRUFBZTtBQUFDLGFBQU8rQixDQUFDLENBQUM3QixNQUFGLENBQVNGLENBQVQsRUFBWTRJLE9BQVosQ0FBb0JuSixDQUFwQixFQUFzQkMsQ0FBdEIsQ0FBUDtBQUFnQyxLQUF6RDtBQUEwRCxHQUF4ZixFQUFyL1YsRUFBZy9XLFlBQVU7QUFBQyxRQUFJQSxDQUFDLEdBQUNELENBQU47QUFBQSxRQUFRTyxDQUFDLEdBQUNOLENBQUMsQ0FBQ1ksR0FBWjtBQUFBLFFBQWdCRixDQUFDLEdBQUNKLENBQUMsQ0FBQ21CLFNBQXBCO0FBQUEsUUFBOEJkLENBQUMsR0FBQ1gsQ0FBQyxDQUFDZ0YsSUFBbEM7QUFBQSxRQUF1Q25FLENBQUMsR0FBQ0YsQ0FBQyxDQUFDd0csTUFBM0M7QUFBQSxRQUFrRDNGLENBQUMsR0FBQ2IsQ0FBQyxDQUFDeUksTUFBRixHQUFTdkksQ0FBQyxDQUFDRSxNQUFGLENBQVM7QUFBQzBELE1BQUFBLFFBQVEsRUFBQyxvQkFBVTtBQUFDLGFBQUtpQixLQUFMLEdBQVcsSUFBSWhGLENBQUMsQ0FBQ1EsSUFBTixDQUFXLENBQUMsVUFBRCxFQUFZLFNBQVosRUFBc0IsU0FBdEIsRUFBZ0MsVUFBaEMsRUFBMkMsVUFBM0MsRUFBc0QsVUFBdEQsRUFBaUUsVUFBakUsRUFBNEUsVUFBNUUsQ0FBWCxDQUFYO0FBQStHLE9BQXBJO0FBQXFJMEQsTUFBQUEsV0FBVyxFQUFDLHVCQUFVO0FBQUMsWUFBSTdFLENBQUMsR0FBQ2MsQ0FBQyxDQUFDK0QsV0FBRixDQUFjMUMsSUFBZCxDQUFtQixJQUFuQixDQUFOOztBQUErQixlQUFPbkMsQ0FBQyxDQUFDNEIsUUFBRixJQUFZLENBQVosRUFBYzVCLENBQXJCO0FBQXVCO0FBQWxOLEtBQVQsQ0FBN0Q7QUFBMlJDLElBQUFBLENBQUMsQ0FBQ29KLE1BQUYsR0FBU3ZJLENBQUMsQ0FBQ2dFLGFBQUYsQ0FBZ0JyRCxDQUFoQixDQUFULEVBQTRCeEIsQ0FBQyxDQUFDcUosVUFBRixHQUFheEksQ0FBQyxDQUFDaUUsaUJBQUYsQ0FBb0J0RCxDQUFwQixDQUF6QztBQUFnRSxHQUF0VyxFQUFoL1csRUFBeTFYLFVBQVN4QixDQUFULEVBQVc7QUFBQyxRQUFJTSxDQUFDLEdBQUNQLENBQU47QUFBQSxRQUFRVyxDQUFDLEdBQUNKLENBQUMsQ0FBQ00sR0FBWjtBQUFBLFFBQWdCRCxDQUFDLEdBQUNELENBQUMsQ0FBQ0ksSUFBcEI7QUFBQSxRQUF5QkQsQ0FBQyxHQUFDSCxDQUFDLENBQUNlLFNBQTdCO0FBQUEsUUFBdUNELENBQUMsR0FBQ2xCLENBQUMsQ0FBQ2dKLEdBQUYsR0FBTSxFQUEvQztBQUFrRDlILElBQUFBLENBQUMsQ0FBQytILElBQUYsR0FBTzVJLENBQUMsQ0FBQ0ksTUFBRixDQUFTO0FBQUNHLE1BQUFBLElBQUksRUFBQyxjQUFTbkIsQ0FBVCxFQUFXQyxDQUFYLEVBQWE7QUFBQyxhQUFLd0osSUFBTCxHQUFVekosQ0FBVixFQUFZLEtBQUswSixHQUFMLEdBQVN6SixDQUFyQjtBQUF1QjtBQUEzQyxLQUFULENBQVAsRUFBOER3QixDQUFDLENBQUNDLFNBQUYsR0FBWWQsQ0FBQyxDQUFDSSxNQUFGLENBQVM7QUFBQ0csTUFBQUEsSUFBSSxFQUFDLGNBQVNuQixDQUFULEVBQVdPLENBQVgsRUFBYTtBQUFDUCxRQUFBQSxDQUFDLEdBQUMsS0FBSzJCLEtBQUwsR0FBVzNCLENBQUMsSUFBRSxFQUFoQixFQUFtQk8sQ0FBQyxJQUFFTixDQUFILEdBQUssS0FBSzJCLFFBQUwsR0FBY3JCLENBQW5CLEdBQXFCLEtBQUtxQixRQUFMLEdBQWMsSUFBRTVCLENBQUMsQ0FBQzZCLE1BQTFEO0FBQWlFLE9BQXJGO0FBQXNGOEgsTUFBQUEsS0FBSyxFQUFDLGlCQUFVO0FBQUMsYUFBSSxJQUFJM0osQ0FBQyxHQUFDLEtBQUsyQixLQUFYLEVBQWlCMUIsQ0FBQyxHQUFDRCxDQUFDLENBQUM2QixNQUFyQixFQUE0QnRCLENBQUMsR0FBQyxFQUE5QixFQUFpQ0ksQ0FBQyxHQUFDLENBQXZDLEVBQXlDQSxDQUFDLEdBQUNWLENBQTNDLEVBQTZDVSxDQUFDLEVBQTlDLEVBQWlEO0FBQUMsY0FBSUMsQ0FBQyxHQUFDWixDQUFDLENBQUNXLENBQUQsQ0FBUDtBQUFXSixVQUFBQSxDQUFDLENBQUNnQyxJQUFGLENBQU8zQixDQUFDLENBQUM2SSxJQUFULEdBQWVsSixDQUFDLENBQUNnQyxJQUFGLENBQU8zQixDQUFDLENBQUM4SSxHQUFULENBQWY7QUFBNkI7O0FBQUEsZUFBTzVJLENBQUMsQ0FBQ0wsTUFBRixDQUFTRixDQUFULEVBQVcsS0FBS3FCLFFBQWhCLENBQVA7QUFBaUMsT0FBbE87QUFBbU9KLE1BQUFBLEtBQUssRUFBQyxpQkFBVTtBQUFDLGFBQUksSUFBSXhCLENBQUMsR0FBQ1ksQ0FBQyxDQUFDWSxLQUFGLENBQVFXLElBQVIsQ0FBYSxJQUFiLENBQU4sRUFBeUJsQyxDQUFDLEdBQUNELENBQUMsQ0FBQzJCLEtBQUYsR0FBUSxLQUFLQSxLQUFMLENBQVdTLEtBQVgsQ0FBaUIsQ0FBakIsQ0FBbkMsRUFBdUQ3QixDQUFDLEdBQUNOLENBQUMsQ0FBQzRCLE1BQTNELEVBQWtFbEIsQ0FBQyxHQUFDLENBQXhFLEVBQTBFQSxDQUFDLEdBQUNKLENBQTVFLEVBQThFSSxDQUFDLEVBQS9FO0FBQWtGVixVQUFBQSxDQUFDLENBQUNVLENBQUQsQ0FBRCxHQUFLVixDQUFDLENBQUNVLENBQUQsQ0FBRCxDQUFLYSxLQUFMLEVBQUw7QUFBbEY7O0FBQW9HLGVBQU94QixDQUFQO0FBQVM7QUFBalcsS0FBVCxDQUExRTtBQUF1YixHQUFyZixFQUF6MVgsRUFBaTFZLFVBQVNDLENBQVQsRUFBVztBQUFDLFFBQUlNLENBQUMsR0FBQ1AsQ0FBTjtBQUFBLFFBQVFXLENBQUMsR0FBQ0osQ0FBQyxDQUFDTSxHQUFaO0FBQUEsUUFBZ0JELENBQUMsR0FBQ0QsQ0FBQyxDQUFDZSxTQUFwQjtBQUFBLFFBQThCWixDQUFDLEdBQUNILENBQUMsQ0FBQzZELE1BQWxDO0FBQUEsUUFBeUMvQyxDQUFDLEdBQUNsQixDQUFDLENBQUNnSixHQUE3QztBQUFBLFFBQWlEakgsQ0FBQyxHQUFDYixDQUFDLENBQUMrSCxJQUFyRDtBQUFBLFFBQTBEMUgsQ0FBQyxHQUFDdkIsQ0FBQyxDQUFDMEUsSUFBOUQ7QUFBQSxRQUFtRW5DLENBQUMsR0FBQyxFQUFyRTtBQUFBLFFBQXdFSyxDQUFDLEdBQUMsRUFBMUU7QUFBQSxRQUE2RU8sQ0FBQyxHQUFDLEVBQS9FO0FBQWtGLEtBQUMsWUFBVTtBQUFDLFdBQUksSUFBSTFELENBQUMsR0FBQyxDQUFOLEVBQVFDLENBQUMsR0FBQyxDQUFWLEVBQVlNLENBQUMsR0FBQyxDQUFsQixFQUFvQkEsQ0FBQyxHQUFDLEVBQXRCLEVBQXlCQSxDQUFDLEVBQTFCLEVBQTZCO0FBQUN1QyxRQUFBQSxDQUFDLENBQUM5QyxDQUFDLEdBQUMsSUFBRUMsQ0FBTCxDQUFELEdBQVMsQ0FBQ00sQ0FBQyxHQUFDLENBQUgsS0FBT0EsQ0FBQyxHQUFDLENBQVQsSUFBWSxDQUFaLEdBQWMsRUFBdkI7QUFBMEIsWUFBSUksQ0FBQyxHQUFDVixDQUFDLEdBQUMsQ0FBUjtBQUFBLFlBQVVXLENBQUMsR0FBQyxDQUFDLElBQUVaLENBQUYsR0FBSSxJQUFFQyxDQUFQLElBQVUsQ0FBdEI7QUFBd0JELFFBQUFBLENBQUMsR0FBQ1csQ0FBRixFQUFJVixDQUFDLEdBQUNXLENBQU47QUFBUTs7QUFBQSxXQUFJLElBQUlaLENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQyxDQUFkLEVBQWdCQSxDQUFDLEVBQWpCO0FBQW9CLGFBQUksSUFBSUMsQ0FBQyxHQUFDLENBQVYsRUFBWUEsQ0FBQyxHQUFDLENBQWQsRUFBZ0JBLENBQUMsRUFBakI7QUFBb0JrRCxVQUFBQSxDQUFDLENBQUNuRCxDQUFDLEdBQUMsSUFBRUMsQ0FBTCxDQUFELEdBQVNBLENBQUMsR0FBQyxDQUFDLElBQUVELENBQUYsR0FBSSxJQUFFQyxDQUFQLElBQVUsQ0FBVixHQUFZLENBQXZCO0FBQXBCO0FBQXBCOztBQUFpRSxXQUFJLElBQUlhLENBQUMsR0FBQyxDQUFOLEVBQVFXLENBQUMsR0FBQyxDQUFkLEVBQWdCQSxDQUFDLEdBQUMsRUFBbEIsRUFBcUJBLENBQUMsRUFBdEIsRUFBeUI7QUFBQyxhQUFJLElBQUlLLENBQUMsR0FBQyxDQUFOLEVBQVF3QyxDQUFDLEdBQUMsQ0FBVixFQUFZc0IsQ0FBQyxHQUFDLENBQWxCLEVBQW9CQSxDQUFDLEdBQUMsQ0FBdEIsRUFBd0JBLENBQUMsRUFBekIsRUFBNEI7QUFBQyxjQUFHLElBQUU5RSxDQUFMLEVBQU87QUFBQyxnQkFBSStFLENBQUMsR0FBQyxDQUFDLEtBQUdELENBQUosSUFBTyxDQUFiO0FBQWVDLFlBQUFBLENBQUMsR0FBQyxFQUFGLEdBQUt2QixDQUFDLElBQUUsS0FBR3VCLENBQVgsR0FBYS9ELENBQUMsSUFBRSxLQUFHK0QsQ0FBQyxHQUFDLEVBQXJCO0FBQXdCOztBQUFBLGdCQUFJL0UsQ0FBSixHQUFNQSxDQUFDLEdBQUNBLENBQUMsSUFBRSxDQUFILEdBQUssR0FBYixHQUFpQkEsQ0FBQyxLQUFHLENBQXJCO0FBQXVCOztBQUFBNEMsUUFBQUEsQ0FBQyxDQUFDakMsQ0FBRCxDQUFELEdBQUthLENBQUMsQ0FBQzdCLE1BQUYsQ0FBU3FCLENBQVQsRUFBV3dDLENBQVgsQ0FBTDtBQUFtQjtBQUFDLEtBQXJULEVBQUQ7QUFBeVQsUUFBSUEsQ0FBQyxHQUFDLEVBQU47QUFBUyxLQUFDLFlBQVU7QUFBQyxXQUFJLElBQUl0RSxDQUFDLEdBQUMsQ0FBVixFQUFZQSxDQUFDLEdBQUMsRUFBZCxFQUFpQkEsQ0FBQyxFQUFsQjtBQUFxQnNFLFFBQUFBLENBQUMsQ0FBQ3RFLENBQUQsQ0FBRCxHQUFLc0MsQ0FBQyxDQUFDN0IsTUFBRixFQUFMO0FBQXJCO0FBQXFDLEtBQWhELEVBQUQ7QUFBb0QsUUFBSW1GLENBQUMsR0FBQzlELENBQUMsQ0FBQzhILElBQUYsR0FBTzlJLENBQUMsQ0FBQ0UsTUFBRixDQUFTO0FBQUN5RCxNQUFBQSxHQUFHLEVBQUMzRCxDQUFDLENBQUMyRCxHQUFGLENBQU16RCxNQUFOLENBQWE7QUFBQzZJLFFBQUFBLFlBQVksRUFBQztBQUFkLE9BQWIsQ0FBTDtBQUFzQ25GLE1BQUFBLFFBQVEsRUFBQyxvQkFBVTtBQUFDLGFBQUksSUFBSTFFLENBQUMsR0FBQyxLQUFLOEosTUFBTCxHQUFZLEVBQWxCLEVBQXFCN0osQ0FBQyxHQUFDLENBQTNCLEVBQTZCQSxDQUFDLEdBQUMsRUFBL0IsRUFBa0NBLENBQUMsRUFBbkM7QUFBc0NELFVBQUFBLENBQUMsQ0FBQ0MsQ0FBRCxDQUFELEdBQUssSUFBSXFDLENBQUMsQ0FBQ25CLElBQU4sRUFBTDtBQUF0Qzs7QUFBc0QsYUFBSzhDLFNBQUwsR0FBZSxDQUFDLE9BQUssSUFBRSxLQUFLUSxHQUFMLENBQVNvRixZQUFqQixJQUErQixFQUE5QztBQUFpRCxPQUFqSztBQUFrS3hGLE1BQUFBLGVBQWUsRUFBQyx5QkFBU3JFLENBQVQsRUFBV0MsQ0FBWCxFQUFhO0FBQUMsYUFBSSxJQUFJTSxDQUFDLEdBQUMsS0FBS3VKLE1BQVgsRUFBa0JuSixDQUFDLEdBQUMsS0FBS3NELFNBQUwsR0FBZSxDQUFuQyxFQUFxQ3JELENBQUMsR0FBQyxDQUEzQyxFQUE2Q0EsQ0FBQyxHQUFDRCxDQUEvQyxFQUFpREMsQ0FBQyxFQUFsRCxFQUFxRDtBQUFDLGNBQUlFLENBQUMsR0FBQ2QsQ0FBQyxDQUFDQyxDQUFDLEdBQUMsSUFBRVcsQ0FBTCxDQUFQO0FBQUEsY0FBZWEsQ0FBQyxHQUFDekIsQ0FBQyxDQUFDQyxDQUFDLEdBQUMsSUFBRVcsQ0FBSixHQUFNLENBQVAsQ0FBbEI7QUFBNEJFLFVBQUFBLENBQUMsR0FBQyxZQUFVQSxDQUFDLElBQUUsQ0FBSCxHQUFLQSxDQUFDLEtBQUcsRUFBbkIsSUFBdUIsY0FBWUEsQ0FBQyxJQUFFLEVBQUgsR0FBTUEsQ0FBQyxLQUFHLENBQXRCLENBQXpCLEVBQWtEVyxDQUFDLEdBQUMsWUFBVUEsQ0FBQyxJQUFFLENBQUgsR0FBS0EsQ0FBQyxLQUFHLEVBQW5CLElBQXVCLGNBQVlBLENBQUMsSUFBRSxFQUFILEdBQU1BLENBQUMsS0FBRyxDQUF0QixDQUEzRTtBQUFvRyxjQUFJYSxDQUFDLEdBQUMvQixDQUFDLENBQUNLLENBQUQsQ0FBUDtBQUFXMEIsVUFBQUEsQ0FBQyxDQUFDbUgsSUFBRixJQUFRaEksQ0FBUixFQUFVYSxDQUFDLENBQUNvSCxHQUFGLElBQU81SSxDQUFqQjtBQUFtQjs7QUFBQSxhQUFJLElBQUlnQixDQUFDLEdBQUMsQ0FBVixFQUFZQSxDQUFDLEdBQUMsRUFBZCxFQUFpQkEsQ0FBQyxFQUFsQixFQUFxQjtBQUFDLGVBQUksSUFBSThELENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQyxDQUFkLEVBQWdCQSxDQUFDLEVBQWpCLEVBQW9CO0FBQUMsaUJBQUksSUFBSUMsQ0FBQyxHQUFDLENBQU4sRUFBUUMsQ0FBQyxHQUFDLENBQVYsRUFBWUMsQ0FBQyxHQUFDLENBQWxCLEVBQW9CQSxDQUFDLEdBQUMsQ0FBdEIsRUFBd0JBLENBQUMsRUFBekIsRUFBNEI7QUFBQyxrQkFBSXpELENBQUMsR0FBQy9CLENBQUMsQ0FBQ3FGLENBQUMsR0FBQyxJQUFFRyxDQUFMLENBQVA7QUFBZUYsY0FBQUEsQ0FBQyxJQUFFdkQsQ0FBQyxDQUFDbUgsSUFBTCxFQUFVM0QsQ0FBQyxJQUFFeEQsQ0FBQyxDQUFDb0gsR0FBZjtBQUFtQjs7QUFBQSxnQkFBSTFELENBQUMsR0FBQzFCLENBQUMsQ0FBQ3NCLENBQUQsQ0FBUDtBQUFXSSxZQUFBQSxDQUFDLENBQUN5RCxJQUFGLEdBQU81RCxDQUFQLEVBQVNHLENBQUMsQ0FBQzBELEdBQUYsR0FBTTVELENBQWY7QUFBaUI7O0FBQUEsZUFBSSxJQUFJRixDQUFDLEdBQUMsQ0FBVixFQUFZQSxDQUFDLEdBQUMsQ0FBZCxFQUFnQkEsQ0FBQyxFQUFqQjtBQUFvQixpQkFBSSxJQUFJSyxDQUFDLEdBQUMzQixDQUFDLENBQUMsQ0FBQ3NCLENBQUMsR0FBQyxDQUFILElBQU0sQ0FBUCxDQUFQLEVBQWlCTSxDQUFDLEdBQUM1QixDQUFDLENBQUMsQ0FBQ3NCLENBQUMsR0FBQyxDQUFILElBQU0sQ0FBUCxDQUFwQixFQUE4Qk8sQ0FBQyxHQUFDRCxDQUFDLENBQUN1RCxJQUFsQyxFQUF1Q3JELENBQUMsR0FBQ0YsQ0FBQyxDQUFDd0QsR0FBM0MsRUFBK0M3RCxDQUFDLEdBQUNJLENBQUMsQ0FBQ3dELElBQUYsSUFBUXRELENBQUMsSUFBRSxDQUFILEdBQUtDLENBQUMsS0FBRyxFQUFqQixDQUFqRCxFQUFzRU4sQ0FBQyxHQUFDRyxDQUFDLENBQUN5RCxHQUFGLElBQU90RCxDQUFDLElBQUUsQ0FBSCxHQUFLRCxDQUFDLEtBQUcsRUFBaEIsQ0FBeEUsRUFBNEZKLENBQUMsR0FBQyxDQUFsRyxFQUFvR0EsQ0FBQyxHQUFDLENBQXRHLEVBQXdHQSxDQUFDLEVBQXpHLEVBQTRHO0FBQUMsa0JBQUl6RCxDQUFDLEdBQUMvQixDQUFDLENBQUNxRixDQUFDLEdBQUMsSUFBRUcsQ0FBTCxDQUFQO0FBQWV6RCxjQUFBQSxDQUFDLENBQUNtSCxJQUFGLElBQVE1RCxDQUFSLEVBQVV2RCxDQUFDLENBQUNvSCxHQUFGLElBQU81RCxDQUFqQjtBQUFtQjtBQUFuSzs7QUFBbUssZUFBSSxJQUFJTyxDQUFDLEdBQUMsQ0FBVixFQUFZQSxDQUFDLEdBQUMsRUFBZCxFQUFpQkEsQ0FBQyxFQUFsQixFQUFxQjtBQUFDLGdCQUFJL0QsQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDOEYsQ0FBRCxDQUFQO0FBQUEsZ0JBQVdDLENBQUMsR0FBQ2hFLENBQUMsQ0FBQ21ILElBQWY7QUFBQSxnQkFBb0JsRCxDQUFDLEdBQUNqRSxDQUFDLENBQUNvSCxHQUF4QjtBQUFBLGdCQUE0QmxELENBQUMsR0FBQzFELENBQUMsQ0FBQ3VELENBQUQsQ0FBL0I7QUFBbUMsZ0JBQUdHLENBQUMsR0FBQyxFQUFMLEVBQVEsSUFBSVgsQ0FBQyxHQUFDUyxDQUFDLElBQUVFLENBQUgsR0FBS0QsQ0FBQyxLQUFHLEtBQUdDLENBQWxCO0FBQUEsZ0JBQW9CVixDQUFDLEdBQUNTLENBQUMsSUFBRUMsQ0FBSCxHQUFLRixDQUFDLEtBQUcsS0FBR0UsQ0FBbEMsQ0FBUixLQUFpRCxJQUFJWCxDQUFDLEdBQUNVLENBQUMsSUFBRUMsQ0FBQyxHQUFDLEVBQUwsR0FBUUYsQ0FBQyxLQUFHLEtBQUdFLENBQXJCO0FBQUEsZ0JBQXVCVixDQUFDLEdBQUNRLENBQUMsSUFBRUUsQ0FBQyxHQUFDLEVBQUwsR0FBUUQsQ0FBQyxLQUFHLEtBQUdDLENBQXhDO0FBQTBDLGdCQUFJQyxDQUFDLEdBQUNuQyxDQUFDLENBQUNuQixDQUFDLENBQUNrRCxDQUFELENBQUYsQ0FBUDtBQUFjSSxZQUFBQSxDQUFDLENBQUNnRCxJQUFGLEdBQU81RCxDQUFQLEVBQVNZLENBQUMsQ0FBQ2lELEdBQUYsR0FBTTVELENBQWY7QUFBaUI7O0FBQUEsY0FBSVksQ0FBQyxHQUFDcEMsQ0FBQyxDQUFDLENBQUQsQ0FBUDtBQUFBLGNBQVdxQyxDQUFDLEdBQUNwRyxDQUFDLENBQUMsQ0FBRCxDQUFkO0FBQWtCbUcsVUFBQUEsQ0FBQyxDQUFDK0MsSUFBRixHQUFPOUMsQ0FBQyxDQUFDOEMsSUFBVCxFQUFjL0MsQ0FBQyxDQUFDZ0QsR0FBRixHQUFNL0MsQ0FBQyxDQUFDK0MsR0FBdEI7O0FBQTBCLGVBQUksSUFBSTlELENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQyxDQUFkLEVBQWdCQSxDQUFDLEVBQWpCO0FBQW9CLGlCQUFJLElBQUlHLENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQyxDQUFkLEVBQWdCQSxDQUFDLEVBQWpCLEVBQW9CO0FBQUMsa0JBQUlNLENBQUMsR0FBQ1QsQ0FBQyxHQUFDLElBQUVHLENBQVY7QUFBQSxrQkFBWXpELENBQUMsR0FBQy9CLENBQUMsQ0FBQzhGLENBQUQsQ0FBZjtBQUFBLGtCQUFtQk8sQ0FBQyxHQUFDdEMsQ0FBQyxDQUFDK0IsQ0FBRCxDQUF0QjtBQUFBLGtCQUEwQlEsQ0FBQyxHQUFDdkMsQ0FBQyxDQUFDLENBQUNzQixDQUFDLEdBQUMsQ0FBSCxJQUFNLENBQU4sR0FBUSxJQUFFRyxDQUFYLENBQTdCO0FBQUEsa0JBQTJDd0MsQ0FBQyxHQUFDakUsQ0FBQyxDQUFDLENBQUNzQixDQUFDLEdBQUMsQ0FBSCxJQUFNLENBQU4sR0FBUSxJQUFFRyxDQUFYLENBQTlDO0FBQTREekQsY0FBQUEsQ0FBQyxDQUFDbUgsSUFBRixHQUFPN0MsQ0FBQyxDQUFDNkMsSUFBRixHQUFPLENBQUM1QyxDQUFDLENBQUM0QyxJQUFILEdBQVFsQixDQUFDLENBQUNrQixJQUF4QixFQUE2Qm5ILENBQUMsQ0FBQ29ILEdBQUYsR0FBTTlDLENBQUMsQ0FBQzhDLEdBQUYsR0FBTSxDQUFDN0MsQ0FBQyxDQUFDNkMsR0FBSCxHQUFPbkIsQ0FBQyxDQUFDbUIsR0FBbEQ7QUFBc0Q7QUFBM0o7O0FBQTJKLGNBQUlwSCxDQUFDLEdBQUMvQixDQUFDLENBQUMsQ0FBRCxDQUFQO0FBQUEsY0FBV2lJLENBQUMsR0FBQzlFLENBQUMsQ0FBQzVCLENBQUQsQ0FBZDtBQUFrQlEsVUFBQUEsQ0FBQyxDQUFDbUgsSUFBRixJQUFRakIsQ0FBQyxDQUFDaUIsSUFBVixFQUFlbkgsQ0FBQyxDQUFDb0gsR0FBRixJQUFPbEIsQ0FBQyxDQUFDa0IsR0FBeEI7QUFBNEI7QUFBQyxPQUF0bUM7QUFBdW1DN0UsTUFBQUEsV0FBVyxFQUFDLHVCQUFVO0FBQUMsWUFBSTdFLENBQUMsR0FBQyxLQUFLNkQsS0FBWDtBQUFBLFlBQWlCdEQsQ0FBQyxHQUFDUCxDQUFDLENBQUMyQixLQUFyQjtBQUFBLFlBQTJCaEIsQ0FBQyxJQUFFLElBQUUsS0FBS21ELFdBQVAsRUFBbUIsSUFBRTlELENBQUMsQ0FBQzRCLFFBQXpCLENBQTVCO0FBQUEsWUFBK0RkLENBQUMsR0FBQyxLQUFHLEtBQUttRCxTQUF6RTtBQUFtRjFELFFBQUFBLENBQUMsQ0FBQ0ksQ0FBQyxLQUFHLENBQUwsQ0FBRCxJQUFVLEtBQUcsS0FBR0EsQ0FBQyxHQUFDLEVBQWxCLEVBQXFCSixDQUFDLENBQUMsQ0FBQ04sQ0FBQyxDQUFDaUMsSUFBRixDQUFPLENBQUN2QixDQUFDLEdBQUMsQ0FBSCxJQUFNRyxDQUFiLElBQWdCQSxDQUFoQixLQUFvQixDQUFyQixJQUF3QixDQUF6QixDQUFELElBQThCLEdBQW5ELEVBQXVEZCxDQUFDLENBQUM0QixRQUFGLEdBQVcsSUFBRXJCLENBQUMsQ0FBQ3NCLE1BQXRFLEVBQTZFLEtBQUttQyxRQUFMLEVBQTdFOztBQUE2RixhQUFJLElBQUl2QyxDQUFDLEdBQUMsS0FBS3FJLE1BQVgsRUFBa0J4SCxDQUFDLEdBQUMsS0FBS21DLEdBQUwsQ0FBU29GLFlBQVQsR0FBc0IsQ0FBMUMsRUFBNEMvSCxDQUFDLEdBQUNRLENBQUMsR0FBQyxDQUFoRCxFQUFrRFEsQ0FBQyxHQUFDLEVBQXBELEVBQXVESyxDQUFDLEdBQUMsQ0FBN0QsRUFBK0RBLENBQUMsR0FBQ3JCLENBQWpFLEVBQW1FcUIsQ0FBQyxFQUFwRSxFQUF1RTtBQUFDLGNBQUlPLENBQUMsR0FBQ2pDLENBQUMsQ0FBQzBCLENBQUQsQ0FBUDtBQUFBLGNBQVdtQixDQUFDLEdBQUNaLENBQUMsQ0FBQytGLElBQWY7QUFBQSxjQUFvQjdELENBQUMsR0FBQ2xDLENBQUMsQ0FBQ2dHLEdBQXhCO0FBQTRCcEYsVUFBQUEsQ0FBQyxHQUFDLFlBQVVBLENBQUMsSUFBRSxDQUFILEdBQUtBLENBQUMsS0FBRyxFQUFuQixJQUF1QixjQUFZQSxDQUFDLElBQUUsRUFBSCxHQUFNQSxDQUFDLEtBQUcsQ0FBdEIsQ0FBekIsRUFBa0RzQixDQUFDLEdBQUMsWUFBVUEsQ0FBQyxJQUFFLENBQUgsR0FBS0EsQ0FBQyxLQUFHLEVBQW5CLElBQXVCLGNBQVlBLENBQUMsSUFBRSxFQUFILEdBQU1BLENBQUMsS0FBRyxDQUF0QixDQUEzRSxFQUFvRzlDLENBQUMsQ0FBQ1AsSUFBRixDQUFPcUQsQ0FBUCxDQUFwRyxFQUE4RzlDLENBQUMsQ0FBQ1AsSUFBRixDQUFPK0IsQ0FBUCxDQUE5RztBQUF3SDs7QUFBQSxlQUFPLElBQUkxRCxDQUFDLENBQUNPLElBQU4sQ0FBVzJCLENBQVgsRUFBYVIsQ0FBYixDQUFQO0FBQXVCLE9BQWppRDtBQUFraURkLE1BQUFBLEtBQUssRUFBQyxpQkFBVTtBQUFDLGFBQUksSUFBSXhCLENBQUMsR0FBQ2MsQ0FBQyxDQUFDVSxLQUFGLENBQVFXLElBQVIsQ0FBYSxJQUFiLENBQU4sRUFBeUJsQyxDQUFDLEdBQUNELENBQUMsQ0FBQzhKLE1BQUYsR0FBUyxLQUFLQSxNQUFMLENBQVkxSCxLQUFaLENBQWtCLENBQWxCLENBQXBDLEVBQXlEN0IsQ0FBQyxHQUFDLENBQS9ELEVBQWlFQSxDQUFDLEdBQUMsRUFBbkUsRUFBc0VBLENBQUMsRUFBdkU7QUFBMEVOLFVBQUFBLENBQUMsQ0FBQ00sQ0FBRCxDQUFELEdBQUtOLENBQUMsQ0FBQ00sQ0FBRCxDQUFELENBQUtpQixLQUFMLEVBQUw7QUFBMUU7O0FBQTRGLGVBQU94QixDQUFQO0FBQVM7QUFBeHBELEtBQVQsQ0FBYjtBQUFpckRPLElBQUFBLENBQUMsQ0FBQ3FKLElBQUYsR0FBTzlJLENBQUMsQ0FBQ2dFLGFBQUYsQ0FBZ0JjLENBQWhCLENBQVAsRUFBMEJyRixDQUFDLENBQUN3SixRQUFGLEdBQVdqSixDQUFDLENBQUNpRSxpQkFBRixDQUFvQmEsQ0FBcEIsQ0FBckM7QUFBNEQsR0FBanNFLENBQWtzRVYsSUFBbHNFLENBQWoxWSxFQUF5aGQsWUFBVTtBQUFDLGFBQVNqRixDQUFULEdBQVk7QUFBQyxhQUFPd0IsQ0FBQyxDQUFDaEIsTUFBRixDQUFTWSxLQUFULENBQWVJLENBQWYsRUFBaUJILFNBQWpCLENBQVA7QUFBbUM7O0FBQUEsUUFBSWYsQ0FBQyxHQUFDUCxDQUFOO0FBQUEsUUFBUVcsQ0FBQyxHQUFDSixDQUFDLENBQUNNLEdBQVo7QUFBQSxRQUFnQkQsQ0FBQyxHQUFDRCxDQUFDLENBQUM2RCxNQUFwQjtBQUFBLFFBQTJCMUQsQ0FBQyxHQUFDUCxDQUFDLENBQUNnSixHQUEvQjtBQUFBLFFBQW1DOUgsQ0FBQyxHQUFDWCxDQUFDLENBQUMwSSxJQUF2QztBQUFBLFFBQTRDbEgsQ0FBQyxHQUFDeEIsQ0FBQyxDQUFDWSxTQUFoRDtBQUFBLFFBQTBESSxDQUFDLEdBQUN2QixDQUFDLENBQUMwRSxJQUE5RDtBQUFBLFFBQW1FbkMsQ0FBQyxHQUFDLENBQUM3QyxDQUFDLENBQUMsVUFBRCxFQUFZLFVBQVosQ0FBRixFQUEwQkEsQ0FBQyxDQUFDLFVBQUQsRUFBWSxTQUFaLENBQTNCLEVBQWtEQSxDQUFDLENBQUMsVUFBRCxFQUFZLFVBQVosQ0FBbkQsRUFBMkVBLENBQUMsQ0FBQyxVQUFELEVBQVksVUFBWixDQUE1RSxFQUFvR0EsQ0FBQyxDQUFDLFNBQUQsRUFBVyxVQUFYLENBQXJHLEVBQTRIQSxDQUFDLENBQUMsVUFBRCxFQUFZLFVBQVosQ0FBN0gsRUFBcUpBLENBQUMsQ0FBQyxVQUFELEVBQVksVUFBWixDQUF0SixFQUE4S0EsQ0FBQyxDQUFDLFVBQUQsRUFBWSxVQUFaLENBQS9LLEVBQXVNQSxDQUFDLENBQUMsVUFBRCxFQUFZLFVBQVosQ0FBeE0sRUFBZ09BLENBQUMsQ0FBQyxTQUFELEVBQVcsVUFBWCxDQUFqTyxFQUF3UEEsQ0FBQyxDQUFDLFNBQUQsRUFBVyxVQUFYLENBQXpQLEVBQWdSQSxDQUFDLENBQUMsVUFBRCxFQUFZLFVBQVosQ0FBalIsRUFBeVNBLENBQUMsQ0FBQyxVQUFELEVBQVksVUFBWixDQUExUyxFQUFrVUEsQ0FBQyxDQUFDLFVBQUQsRUFBWSxTQUFaLENBQW5VLEVBQTBWQSxDQUFDLENBQUMsVUFBRCxFQUFZLFNBQVosQ0FBM1YsRUFBa1hBLENBQUMsQ0FBQyxVQUFELEVBQVksVUFBWixDQUFuWCxFQUEyWUEsQ0FBQyxDQUFDLFVBQUQsRUFBWSxVQUFaLENBQTVZLEVBQW9hQSxDQUFDLENBQUMsVUFBRCxFQUFZLFNBQVosQ0FBcmEsRUFBNGJBLENBQUMsQ0FBQyxTQUFELEVBQVcsVUFBWCxDQUE3YixFQUFvZEEsQ0FBQyxDQUFDLFNBQUQsRUFBVyxVQUFYLENBQXJkLEVBQTRlQSxDQUFDLENBQUMsU0FBRCxFQUFXLFVBQVgsQ0FBN2UsRUFBb2dCQSxDQUFDLENBQUMsVUFBRCxFQUFZLFVBQVosQ0FBcmdCLEVBQTZoQkEsQ0FBQyxDQUFDLFVBQUQsRUFBWSxVQUFaLENBQTloQixFQUFzakJBLENBQUMsQ0FBQyxVQUFELEVBQVksVUFBWixDQUF2akIsRUFBK2tCQSxDQUFDLENBQUMsVUFBRCxFQUFZLFVBQVosQ0FBaGxCLEVBQXdtQkEsQ0FBQyxDQUFDLFVBQUQsRUFBWSxTQUFaLENBQXptQixFQUFnb0JBLENBQUMsQ0FBQyxVQUFELEVBQVksVUFBWixDQUFqb0IsRUFBeXBCQSxDQUFDLENBQUMsVUFBRCxFQUFZLFVBQVosQ0FBMXBCLEVBQWtyQkEsQ0FBQyxDQUFDLFVBQUQsRUFBWSxVQUFaLENBQW5yQixFQUEyc0JBLENBQUMsQ0FBQyxVQUFELEVBQVksVUFBWixDQUE1c0IsRUFBb3VCQSxDQUFDLENBQUMsU0FBRCxFQUFXLFVBQVgsQ0FBcnVCLEVBQTR2QkEsQ0FBQyxDQUFDLFNBQUQsRUFBVyxTQUFYLENBQTd2QixFQUFteEJBLENBQUMsQ0FBQyxTQUFELEVBQVcsVUFBWCxDQUFweEIsRUFBMnlCQSxDQUFDLENBQUMsU0FBRCxFQUFXLFVBQVgsQ0FBNXlCLEVBQW0wQkEsQ0FBQyxDQUFDLFVBQUQsRUFBWSxVQUFaLENBQXAwQixFQUE0MUJBLENBQUMsQ0FBQyxVQUFELEVBQVksVUFBWixDQUE3MUIsRUFBcTNCQSxDQUFDLENBQUMsVUFBRCxFQUFZLFVBQVosQ0FBdDNCLEVBQTg0QkEsQ0FBQyxDQUFDLFVBQUQsRUFBWSxVQUFaLENBQS80QixFQUF1NkJBLENBQUMsQ0FBQyxVQUFELEVBQVksVUFBWixDQUF4NkIsRUFBZzhCQSxDQUFDLENBQUMsVUFBRCxFQUFZLFNBQVosQ0FBajhCLEVBQXc5QkEsQ0FBQyxDQUFDLFVBQUQsRUFBWSxVQUFaLENBQXo5QixFQUFpL0JBLENBQUMsQ0FBQyxVQUFELEVBQVksVUFBWixDQUFsL0IsRUFBMGdDQSxDQUFDLENBQUMsVUFBRCxFQUFZLFVBQVosQ0FBM2dDLEVBQW1pQ0EsQ0FBQyxDQUFDLFVBQUQsRUFBWSxTQUFaLENBQXBpQyxFQUEyakNBLENBQUMsQ0FBQyxVQUFELEVBQVksVUFBWixDQUE1akMsRUFBb2xDQSxDQUFDLENBQUMsVUFBRCxFQUFZLFVBQVosQ0FBcmxDLEVBQTZtQ0EsQ0FBQyxDQUFDLFVBQUQsRUFBWSxVQUFaLENBQTltQyxFQUFzb0NBLENBQUMsQ0FBQyxTQUFELEVBQVcsU0FBWCxDQUF2b0MsRUFBNnBDQSxDQUFDLENBQUMsU0FBRCxFQUFXLFVBQVgsQ0FBOXBDLEVBQXFyQ0EsQ0FBQyxDQUFDLFNBQUQsRUFBVyxVQUFYLENBQXRyQyxFQUE2c0NBLENBQUMsQ0FBQyxTQUFELEVBQVcsVUFBWCxDQUE5c0MsRUFBcXVDQSxDQUFDLENBQUMsU0FBRCxFQUFXLFVBQVgsQ0FBdHVDLEVBQTZ2Q0EsQ0FBQyxDQUFDLFNBQUQsRUFBVyxVQUFYLENBQTl2QyxFQUFxeENBLENBQUMsQ0FBQyxVQUFELEVBQVksVUFBWixDQUF0eEMsRUFBOHlDQSxDQUFDLENBQUMsVUFBRCxFQUFZLFVBQVosQ0FBL3lDLEVBQXUwQ0EsQ0FBQyxDQUFDLFVBQUQsRUFBWSxVQUFaLENBQXgwQyxFQUFnMkNBLENBQUMsQ0FBQyxVQUFELEVBQVksVUFBWixDQUFqMkMsRUFBeTNDQSxDQUFDLENBQUMsVUFBRCxFQUFZLFVBQVosQ0FBMTNDLEVBQWs1Q0EsQ0FBQyxDQUFDLFVBQUQsRUFBWSxVQUFaLENBQW41QyxFQUEyNkNBLENBQUMsQ0FBQyxVQUFELEVBQVksU0FBWixDQUE1NkMsRUFBbThDQSxDQUFDLENBQUMsVUFBRCxFQUFZLFNBQVosQ0FBcDhDLEVBQTI5Q0EsQ0FBQyxDQUFDLFVBQUQsRUFBWSxVQUFaLENBQTU5QyxFQUFvL0NBLENBQUMsQ0FBQyxVQUFELEVBQVksVUFBWixDQUFyL0MsRUFBNmdEQSxDQUFDLENBQUMsVUFBRCxFQUFZLFVBQVosQ0FBOWdELEVBQXNpREEsQ0FBQyxDQUFDLFVBQUQsRUFBWSxVQUFaLENBQXZpRCxFQUErakRBLENBQUMsQ0FBQyxVQUFELEVBQVksU0FBWixDQUFoa0QsRUFBdWxEQSxDQUFDLENBQUMsVUFBRCxFQUFZLFVBQVosQ0FBeGxELEVBQWduREEsQ0FBQyxDQUFDLFVBQUQsRUFBWSxVQUFaLENBQWpuRCxFQUF5b0RBLENBQUMsQ0FBQyxTQUFELEVBQVcsVUFBWCxDQUExb0QsRUFBaXFEQSxDQUFDLENBQUMsU0FBRCxFQUFXLFVBQVgsQ0FBbHFELEVBQXlyREEsQ0FBQyxDQUFDLFNBQUQsRUFBVyxVQUFYLENBQTFyRCxFQUFpdERBLENBQUMsQ0FBQyxTQUFELEVBQVcsU0FBWCxDQUFsdEQsRUFBd3VEQSxDQUFDLENBQUMsU0FBRCxFQUFXLFNBQVgsQ0FBenVELEVBQSt2REEsQ0FBQyxDQUFDLFNBQUQsRUFBVyxVQUFYLENBQWh3RCxFQUF1eERBLENBQUMsQ0FBQyxVQUFELEVBQVksU0FBWixDQUF4eEQsRUFBK3lEQSxDQUFDLENBQUMsVUFBRCxFQUFZLFVBQVosQ0FBaHpELEVBQXcwREEsQ0FBQyxDQUFDLFVBQUQsRUFBWSxVQUFaLENBQXowRCxFQUFpMkRBLENBQUMsQ0FBQyxVQUFELEVBQVksVUFBWixDQUFsMkQsRUFBMDNEQSxDQUFDLENBQUMsVUFBRCxFQUFZLFNBQVosQ0FBMzNELEVBQWs1REEsQ0FBQyxDQUFDLFVBQUQsRUFBWSxVQUFaLENBQW41RCxDQUFyRTtBQUFBLFFBQWkvRGtELENBQUMsR0FBQyxFQUFuL0Q7QUFBcy9ELEtBQUMsWUFBVTtBQUFDLFdBQUksSUFBSW5ELENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQyxFQUFkLEVBQWlCQSxDQUFDLEVBQWxCO0FBQXFCbUQsUUFBQUEsQ0FBQyxDQUFDbkQsQ0FBRCxDQUFELEdBQUtDLENBQUMsRUFBTjtBQUFyQjtBQUE4QixLQUF6QyxFQUFEO0FBQTZDLFFBQUl5RCxDQUFDLEdBQUM1QixDQUFDLENBQUNrSSxNQUFGLEdBQVNwSixDQUFDLENBQUNJLE1BQUYsQ0FBUztBQUFDMEQsTUFBQUEsUUFBUSxFQUFDLG9CQUFVO0FBQUMsYUFBS2lCLEtBQUwsR0FBVyxJQUFJckQsQ0FBQyxDQUFDbkIsSUFBTixDQUFXLENBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFOLENBQVcsVUFBWCxFQUFzQixVQUF0QixDQUFELEVBQW1DLElBQUlNLENBQUMsQ0FBQ04sSUFBTixDQUFXLFVBQVgsRUFBc0IsVUFBdEIsQ0FBbkMsRUFBcUUsSUFBSU0sQ0FBQyxDQUFDTixJQUFOLENBQVcsVUFBWCxFQUFzQixVQUF0QixDQUFyRSxFQUF1RyxJQUFJTSxDQUFDLENBQUNOLElBQU4sQ0FBVyxVQUFYLEVBQXNCLFVBQXRCLENBQXZHLEVBQXlJLElBQUlNLENBQUMsQ0FBQ04sSUFBTixDQUFXLFVBQVgsRUFBc0IsVUFBdEIsQ0FBekksRUFBMkssSUFBSU0sQ0FBQyxDQUFDTixJQUFOLENBQVcsVUFBWCxFQUFzQixTQUF0QixDQUEzSyxFQUE0TSxJQUFJTSxDQUFDLENBQUNOLElBQU4sQ0FBVyxTQUFYLEVBQXFCLFVBQXJCLENBQTVNLEVBQTZPLElBQUlNLENBQUMsQ0FBQ04sSUFBTixDQUFXLFVBQVgsRUFBc0IsU0FBdEIsQ0FBN08sQ0FBWCxDQUFYO0FBQXNTLE9BQTNUO0FBQTRUa0QsTUFBQUEsZUFBZSxFQUFDLHlCQUFTckUsQ0FBVCxFQUFXQyxDQUFYLEVBQWE7QUFBQyxhQUFJLElBQUlNLENBQUMsR0FBQyxLQUFLb0YsS0FBTCxDQUFXaEUsS0FBakIsRUFBdUJoQixDQUFDLEdBQUNKLENBQUMsQ0FBQyxDQUFELENBQTFCLEVBQThCSyxDQUFDLEdBQUNMLENBQUMsQ0FBQyxDQUFELENBQWpDLEVBQXFDTyxDQUFDLEdBQUNQLENBQUMsQ0FBQyxDQUFELENBQXhDLEVBQTRDa0IsQ0FBQyxHQUFDbEIsQ0FBQyxDQUFDLENBQUQsQ0FBL0MsRUFBbUQrQixDQUFDLEdBQUMvQixDQUFDLENBQUMsQ0FBRCxDQUF0RCxFQUEwRHVCLENBQUMsR0FBQ3ZCLENBQUMsQ0FBQyxDQUFELENBQTdELEVBQWlFbUQsQ0FBQyxHQUFDbkQsQ0FBQyxDQUFDLENBQUQsQ0FBcEUsRUFBd0UrRCxDQUFDLEdBQUMvRCxDQUFDLENBQUMsQ0FBRCxDQUEzRSxFQUErRXFGLENBQUMsR0FBQ2pGLENBQUMsQ0FBQzhJLElBQW5GLEVBQXdGNUQsQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDK0ksR0FBNUYsRUFBZ0c1RCxDQUFDLEdBQUNsRixDQUFDLENBQUM2SSxJQUFwRyxFQUF5RzFELENBQUMsR0FBQ25GLENBQUMsQ0FBQzhJLEdBQTdHLEVBQWlIMUQsQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDMkksSUFBckgsRUFBMEh4RCxDQUFDLEdBQUNuRixDQUFDLENBQUM0SSxHQUE5SCxFQUFrSXhELENBQUMsR0FBQ3pFLENBQUMsQ0FBQ2dJLElBQXRJLEVBQTJJdEQsQ0FBQyxHQUFDMUUsQ0FBQyxDQUFDaUksR0FBL0ksRUFBbUp0RCxDQUFDLEdBQUM5RCxDQUFDLENBQUNtSCxJQUF2SixFQUE0SnBELENBQUMsR0FBQy9ELENBQUMsQ0FBQ29ILEdBQWhLLEVBQW9LcEQsQ0FBQyxHQUFDeEUsQ0FBQyxDQUFDMkgsSUFBeEssRUFBNktsRCxDQUFDLEdBQUN6RSxDQUFDLENBQUM0SCxHQUFqTCxFQUFxTGxELENBQUMsR0FBQzlDLENBQUMsQ0FBQytGLElBQXpMLEVBQThMaEQsQ0FBQyxHQUFDL0MsQ0FBQyxDQUFDZ0csR0FBbE0sRUFBc01oRCxDQUFDLEdBQUNwQyxDQUFDLENBQUNtRixJQUExTSxFQUErTTlDLENBQUMsR0FBQ3JDLENBQUMsQ0FBQ29GLEdBQW5OLEVBQXVOOUMsQ0FBQyxHQUFDaEIsQ0FBek4sRUFBMk5pQixDQUFDLEdBQUNoQixDQUE3TixFQUErTjBDLENBQUMsR0FBQ3pDLENBQWpPLEVBQW1PMEMsQ0FBQyxHQUFDekMsQ0FBck8sRUFBdU8wQyxDQUFDLEdBQUN6QyxDQUF6TyxFQUEyTzBDLENBQUMsR0FBQ3pDLENBQTdPLEVBQStPZ0UsQ0FBQyxHQUFDL0QsQ0FBalAsRUFBbVBnRSxDQUFDLEdBQUMvRCxDQUFyUCxFQUF1UGdFLENBQUMsR0FBQy9ELENBQXpQLEVBQTJQZ0UsQ0FBQyxHQUFDL0QsQ0FBN1AsRUFBK1BnRSxDQUFDLEdBQUMvRCxDQUFqUSxFQUFtUWdFLENBQUMsR0FBQy9ELENBQXJRLEVBQXVRZ0UsQ0FBQyxHQUFDL0QsQ0FBelEsRUFBMlFnRSxDQUFDLEdBQUMvRCxDQUE3USxFQUErUWdFLENBQUMsR0FBQy9ELENBQWpSLEVBQW1SZ0UsQ0FBQyxHQUFDL0QsQ0FBclIsRUFBdVJnRSxDQUFDLEdBQUMsQ0FBN1IsRUFBK1JBLENBQUMsR0FBQyxFQUFqUyxFQUFvU0EsQ0FBQyxFQUFyUyxFQUF3UztBQUFDLGNBQUlDLENBQUMsR0FBQ3pILENBQUMsQ0FBQ3dILENBQUQsQ0FBUDtBQUFXLGNBQUdBLENBQUMsR0FBQyxFQUFMLEVBQVEsSUFBSUUsQ0FBQyxHQUFDRCxDQUFDLENBQUNuQixJQUFGLEdBQU8sSUFBRXpKLENBQUMsQ0FBQ0MsQ0FBQyxHQUFDLElBQUUwSyxDQUFMLENBQWhCO0FBQUEsY0FBd0JHLENBQUMsR0FBQ0YsQ0FBQyxDQUFDbEIsR0FBRixHQUFNLElBQUUxSixDQUFDLENBQUNDLENBQUMsR0FBQyxJQUFFMEssQ0FBSixHQUFNLENBQVAsQ0FBbkMsQ0FBUixLQUF5RDtBQUFDLGdCQUFJSSxDQUFDLEdBQUM1SCxDQUFDLENBQUN3SCxDQUFDLEdBQUMsRUFBSCxDQUFQO0FBQUEsZ0JBQWNLLENBQUMsR0FBQ0QsQ0FBQyxDQUFDdEIsSUFBbEI7QUFBQSxnQkFBdUJ3QixDQUFDLEdBQUNGLENBQUMsQ0FBQ3JCLEdBQTNCO0FBQUEsZ0JBQStCd0IsQ0FBQyxHQUFDLENBQUNGLENBQUMsS0FBRyxDQUFKLEdBQU1DLENBQUMsSUFBRSxFQUFWLEtBQWVELENBQUMsS0FBRyxDQUFKLEdBQU1DLENBQUMsSUFBRSxFQUF4QixJQUE0QkQsQ0FBQyxLQUFHLENBQWpFO0FBQUEsZ0JBQW1FRyxDQUFDLEdBQUMsQ0FBQ0YsQ0FBQyxLQUFHLENBQUosR0FBTUQsQ0FBQyxJQUFFLEVBQVYsS0FBZUMsQ0FBQyxLQUFHLENBQUosR0FBTUQsQ0FBQyxJQUFFLEVBQXhCLEtBQTZCQyxDQUFDLEtBQUcsQ0FBSixHQUFNRCxDQUFDLElBQUUsRUFBdEMsQ0FBckU7QUFBQSxnQkFBK0dJLEVBQUUsR0FBQ2pJLENBQUMsQ0FBQ3dILENBQUMsR0FBQyxDQUFILENBQW5IO0FBQUEsZ0JBQXlIVSxFQUFFLEdBQUNELEVBQUUsQ0FBQzNCLElBQS9IO0FBQUEsZ0JBQW9JNkIsRUFBRSxHQUFDRixFQUFFLENBQUMxQixHQUExSTtBQUFBLGdCQUE4STZCLEVBQUUsR0FBQyxDQUFDRixFQUFFLEtBQUcsRUFBTCxHQUFRQyxFQUFFLElBQUUsRUFBYixLQUFrQkQsRUFBRSxJQUFFLENBQUosR0FBTUMsRUFBRSxLQUFHLEVBQTdCLElBQWlDRCxFQUFFLEtBQUcsQ0FBdkw7QUFBQSxnQkFBeUxHLEVBQUUsR0FBQyxDQUFDRixFQUFFLEtBQUcsRUFBTCxHQUFRRCxFQUFFLElBQUUsRUFBYixLQUFrQkMsRUFBRSxJQUFFLENBQUosR0FBTUQsRUFBRSxLQUFHLEVBQTdCLEtBQWtDQyxFQUFFLEtBQUcsQ0FBTCxHQUFPRCxFQUFFLElBQUUsRUFBN0MsQ0FBNUw7QUFBQSxnQkFBNk9JLEVBQUUsR0FBQ3RJLENBQUMsQ0FBQ3dILENBQUMsR0FBQyxDQUFILENBQWpQO0FBQUEsZ0JBQXVQZSxFQUFFLEdBQUNELEVBQUUsQ0FBQ2hDLElBQTdQO0FBQUEsZ0JBQWtRa0MsRUFBRSxHQUFDRixFQUFFLENBQUMvQixHQUF4UTtBQUFBLGdCQUE0UWtDLEVBQUUsR0FBQ3pJLENBQUMsQ0FBQ3dILENBQUMsR0FBQyxFQUFILENBQWhSO0FBQUEsZ0JBQXVSa0IsRUFBRSxHQUFDRCxFQUFFLENBQUNuQyxJQUE3UjtBQUFBLGdCQUFrU3FDLEVBQUUsR0FBQ0YsRUFBRSxDQUFDbEMsR0FBeFM7QUFBQSxnQkFBNFNvQixDQUFDLEdBQUNLLENBQUMsR0FBQ1EsRUFBaFQ7QUFBQSxnQkFBbVRkLENBQUMsR0FBQ0ssQ0FBQyxHQUFDUSxFQUFGLElBQU1aLENBQUMsS0FBRyxDQUFKLEdBQU1LLENBQUMsS0FBRyxDQUFWLEdBQVksQ0FBWixHQUFjLENBQXBCLENBQXJUO0FBQUEsZ0JBQTRVTCxDQUFDLEdBQUNBLENBQUMsR0FBQ1UsRUFBaFY7QUFBQSxnQkFBbVZYLENBQUMsR0FBQ0EsQ0FBQyxHQUFDVSxFQUFGLElBQU1ULENBQUMsS0FBRyxDQUFKLEdBQU1VLEVBQUUsS0FBRyxDQUFYLEdBQWEsQ0FBYixHQUFlLENBQXJCLENBQXJWO0FBQUEsZ0JBQTZXVixDQUFDLEdBQUNBLENBQUMsR0FBQ2dCLEVBQWpYO0FBQUEsZ0JBQW9YakIsQ0FBQyxHQUFDQSxDQUFDLEdBQUNnQixFQUFGLElBQU1mLENBQUMsS0FBRyxDQUFKLEdBQU1nQixFQUFFLEtBQUcsQ0FBWCxHQUFhLENBQWIsR0FBZSxDQUFyQixDQUF0WDtBQUE4WWxCLFlBQUFBLENBQUMsQ0FBQ25CLElBQUYsR0FBT29CLENBQVAsRUFBU0QsQ0FBQyxDQUFDbEIsR0FBRixHQUFNb0IsQ0FBZjtBQUFpQjs7QUFBQSxjQUFJaUIsRUFBRSxHQUFDNUIsQ0FBQyxHQUFDRSxDQUFGLEdBQUksQ0FBQ0YsQ0FBRCxHQUFHSSxDQUFkO0FBQUEsY0FBZ0J5QixFQUFFLEdBQUM1QixDQUFDLEdBQUNFLENBQUYsR0FBSSxDQUFDRixDQUFELEdBQUdJLENBQTFCO0FBQUEsY0FBNEJ5QixFQUFFLEdBQUNyRixDQUFDLEdBQUMyQixDQUFGLEdBQUkzQixDQUFDLEdBQUM2QixDQUFOLEdBQVFGLENBQUMsR0FBQ0UsQ0FBekM7QUFBQSxjQUEyQ3lELEVBQUUsR0FBQ3JGLENBQUMsR0FBQzJCLENBQUYsR0FBSTNCLENBQUMsR0FBQzZCLENBQU4sR0FBUUYsQ0FBQyxHQUFDRSxDQUF4RDtBQUFBLGNBQTBEeUQsRUFBRSxHQUFDLENBQUN2RixDQUFDLEtBQUcsRUFBSixHQUFPQyxDQUFDLElBQUUsQ0FBWCxLQUFlRCxDQUFDLElBQUUsRUFBSCxHQUFNQyxDQUFDLEtBQUcsQ0FBekIsS0FBNkJELENBQUMsSUFBRSxFQUFILEdBQU1DLENBQUMsS0FBRyxDQUF2QyxDQUE3RDtBQUFBLGNBQXVHdUYsRUFBRSxHQUFDLENBQUN2RixDQUFDLEtBQUcsRUFBSixHQUFPRCxDQUFDLElBQUUsQ0FBWCxLQUFlQyxDQUFDLElBQUUsRUFBSCxHQUFNRCxDQUFDLEtBQUcsQ0FBekIsS0FBNkJDLENBQUMsSUFBRSxFQUFILEdBQU1ELENBQUMsS0FBRyxDQUF2QyxDQUExRztBQUFBLGNBQW9KeUYsRUFBRSxHQUFDLENBQUNsQyxDQUFDLEtBQUcsRUFBSixHQUFPQyxDQUFDLElBQUUsRUFBWCxLQUFnQkQsQ0FBQyxLQUFHLEVBQUosR0FBT0MsQ0FBQyxJQUFFLEVBQTFCLEtBQStCRCxDQUFDLElBQUUsRUFBSCxHQUFNQyxDQUFDLEtBQUcsQ0FBekMsQ0FBdko7QUFBQSxjQUFtTWtDLEVBQUUsR0FBQyxDQUFDbEMsQ0FBQyxLQUFHLEVBQUosR0FBT0QsQ0FBQyxJQUFFLEVBQVgsS0FBZ0JDLENBQUMsS0FBRyxFQUFKLEdBQU9ELENBQUMsSUFBRSxFQUExQixLQUErQkMsQ0FBQyxJQUFFLEVBQUgsR0FBTUQsQ0FBQyxLQUFHLENBQXpDLENBQXRNO0FBQUEsY0FBa1BvQyxFQUFFLEdBQUN6SixDQUFDLENBQUM2SCxDQUFELENBQXRQO0FBQUEsY0FBMFA2QixFQUFFLEdBQUNELEVBQUUsQ0FBQzlDLElBQWhRO0FBQUEsY0FBcVFnRCxFQUFFLEdBQUNGLEVBQUUsQ0FBQzdDLEdBQTNRO0FBQUEsY0FBK1FnRCxFQUFFLEdBQUNoQyxDQUFDLEdBQUM0QixFQUFwUjtBQUFBLGNBQXVSSyxFQUFFLEdBQUNsQyxDQUFDLEdBQUM0QixFQUFGLElBQU1LLEVBQUUsS0FBRyxDQUFMLEdBQU9oQyxDQUFDLEtBQUcsQ0FBWCxHQUFhLENBQWIsR0FBZSxDQUFyQixDQUExUjtBQUFBLGNBQWtUZ0MsRUFBRSxHQUFDQSxFQUFFLEdBQUNWLEVBQXhUO0FBQUEsY0FBMlRXLEVBQUUsR0FBQ0EsRUFBRSxHQUFDWixFQUFILElBQU9XLEVBQUUsS0FBRyxDQUFMLEdBQU9WLEVBQUUsS0FBRyxDQUFaLEdBQWMsQ0FBZCxHQUFnQixDQUF2QixDQUE5VDtBQUFBLGNBQXdWVSxFQUFFLEdBQUNBLEVBQUUsR0FBQ0QsRUFBOVY7QUFBQSxjQUFpV0UsRUFBRSxHQUFDQSxFQUFFLEdBQUNILEVBQUgsSUFBT0UsRUFBRSxLQUFHLENBQUwsR0FBT0QsRUFBRSxLQUFHLENBQVosR0FBYyxDQUFkLEdBQWdCLENBQXZCLENBQXBXO0FBQUEsY0FBOFhDLEVBQUUsR0FBQ0EsRUFBRSxHQUFDNUIsQ0FBcFk7QUFBQSxjQUFzWTZCLEVBQUUsR0FBQ0EsRUFBRSxHQUFDOUIsQ0FBSCxJQUFNNkIsRUFBRSxLQUFHLENBQUwsR0FBTzVCLENBQUMsS0FBRyxDQUFYLEdBQWEsQ0FBYixHQUFlLENBQXJCLENBQXpZO0FBQUEsY0FBaWE4QixFQUFFLEdBQUNSLEVBQUUsR0FBQ0YsRUFBdmE7QUFBQSxjQUEwYVcsRUFBRSxHQUFDVixFQUFFLEdBQUNGLEVBQUgsSUFBT1csRUFBRSxLQUFHLENBQUwsR0FBT1IsRUFBRSxLQUFHLENBQVosR0FBYyxDQUFkLEdBQWdCLENBQXZCLENBQTdhOztBQUF1YzNCLFVBQUFBLENBQUMsR0FBQ0YsQ0FBRixFQUFJRyxDQUFDLEdBQUNGLENBQU4sRUFBUUQsQ0FBQyxHQUFDRixDQUFWLEVBQVlHLENBQUMsR0FBQ0YsQ0FBZCxFQUFnQkQsQ0FBQyxHQUFDRixDQUFsQixFQUFvQkcsQ0FBQyxHQUFDRixDQUF0QixFQUF3QkEsQ0FBQyxHQUFDRixDQUFDLEdBQUN3QyxFQUFGLEdBQUssQ0FBL0IsRUFBaUN2QyxDQUFDLEdBQUNGLENBQUMsR0FBQzBDLEVBQUYsSUFBTXZDLENBQUMsS0FBRyxDQUFKLEdBQU1GLENBQUMsS0FBRyxDQUFWLEdBQVksQ0FBWixHQUFjLENBQXBCLElBQXVCLENBQTFELEVBQTRERCxDQUFDLEdBQUN4QixDQUE5RCxFQUFnRXlCLENBQUMsR0FBQ3hCLENBQWxFLEVBQW9FRCxDQUFDLEdBQUNGLENBQXRFLEVBQXdFRyxDQUFDLEdBQUNGLENBQTFFLEVBQTRFRCxDQUFDLEdBQUMzQixDQUE5RSxFQUFnRjRCLENBQUMsR0FBQzNCLENBQWxGLEVBQW9GQSxDQUFDLEdBQUM2RixFQUFFLEdBQUNFLEVBQUgsR0FBTSxDQUE1RixFQUE4RmhHLENBQUMsR0FBQytGLEVBQUUsR0FBQ0UsRUFBSCxJQUFPaEcsQ0FBQyxLQUFHLENBQUosR0FBTTZGLEVBQUUsS0FBRyxDQUFYLEdBQWEsQ0FBYixHQUFlLENBQXRCLElBQXlCLENBQXpIO0FBQTJIOztBQUFBN0csUUFBQUEsQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDK0ksR0FBRixHQUFNN0QsQ0FBQyxHQUFDZ0IsQ0FBVixFQUFZbEcsQ0FBQyxDQUFDOEksSUFBRixHQUFPN0QsQ0FBQyxHQUFDZ0IsQ0FBRixJQUFLZixDQUFDLEtBQUcsQ0FBSixHQUFNZ0IsQ0FBQyxLQUFHLENBQVYsR0FBWSxDQUFaLEdBQWMsQ0FBbkIsQ0FBbkIsRUFBeUNkLENBQUMsR0FBQ25GLENBQUMsQ0FBQzhJLEdBQUYsR0FBTTNELENBQUMsR0FBQ3lDLENBQW5ELEVBQXFENUgsQ0FBQyxDQUFDNkksSUFBRixHQUFPM0QsQ0FBQyxHQUFDeUMsQ0FBRixJQUFLeEMsQ0FBQyxLQUFHLENBQUosR0FBTXlDLENBQUMsS0FBRyxDQUFWLEdBQVksQ0FBWixHQUFjLENBQW5CLENBQTVELEVBQWtGdkMsQ0FBQyxHQUFDbkYsQ0FBQyxDQUFDNEksR0FBRixHQUFNekQsQ0FBQyxHQUFDeUMsQ0FBNUYsRUFBOEY1SCxDQUFDLENBQUMySSxJQUFGLEdBQU96RCxDQUFDLEdBQUN5QyxDQUFGLElBQUt4QyxDQUFDLEtBQUcsQ0FBSixHQUFNeUMsQ0FBQyxLQUFHLENBQVYsR0FBWSxDQUFaLEdBQWMsQ0FBbkIsQ0FBckcsRUFBMkh2QyxDQUFDLEdBQUMxRSxDQUFDLENBQUNpSSxHQUFGLEdBQU12RCxDQUFDLEdBQUMrRCxDQUFySSxFQUF1SXpJLENBQUMsQ0FBQ2dJLElBQUYsR0FBT3ZELENBQUMsR0FBQytELENBQUYsSUFBSzlELENBQUMsS0FBRyxDQUFKLEdBQU0rRCxDQUFDLEtBQUcsQ0FBVixHQUFZLENBQVosR0FBYyxDQUFuQixDQUE5SSxFQUFvSzdELENBQUMsR0FBQy9ELENBQUMsQ0FBQ29ILEdBQUYsR0FBTXJELENBQUMsR0FBQytELENBQTlLLEVBQWdMOUgsQ0FBQyxDQUFDbUgsSUFBRixHQUFPckQsQ0FBQyxHQUFDK0QsQ0FBRixJQUFLOUQsQ0FBQyxLQUFHLENBQUosR0FBTStELENBQUMsS0FBRyxDQUFWLEdBQVksQ0FBWixHQUFjLENBQW5CLENBQXZMLEVBQTZNN0QsQ0FBQyxHQUFDekUsQ0FBQyxDQUFDNEgsR0FBRixHQUFNbkQsQ0FBQyxHQUFDK0QsQ0FBdk4sRUFBeU54SSxDQUFDLENBQUMySCxJQUFGLEdBQU9uRCxDQUFDLEdBQUMrRCxDQUFGLElBQUs5RCxDQUFDLEtBQUcsQ0FBSixHQUFNK0QsQ0FBQyxLQUFHLENBQVYsR0FBWSxDQUFaLEdBQWMsQ0FBbkIsQ0FBaE8sRUFBc1A3RCxDQUFDLEdBQUMvQyxDQUFDLENBQUNnRyxHQUFGLEdBQU1qRCxDQUFDLEdBQUMrRCxDQUFoUSxFQUFrUTlHLENBQUMsQ0FBQytGLElBQUYsR0FBT2pELENBQUMsR0FBQytELENBQUYsSUFBSzlELENBQUMsS0FBRyxDQUFKLEdBQU0rRCxDQUFDLEtBQUcsQ0FBVixHQUFZLENBQVosR0FBYyxDQUFuQixDQUF6USxFQUErUjdELENBQUMsR0FBQ3JDLENBQUMsQ0FBQ29GLEdBQUYsR0FBTS9DLENBQUMsR0FBQytELENBQXpTLEVBQTJTcEcsQ0FBQyxDQUFDbUYsSUFBRixHQUFPL0MsQ0FBQyxHQUFDK0QsQ0FBRixJQUFLOUQsQ0FBQyxLQUFHLENBQUosR0FBTStELENBQUMsS0FBRyxDQUFWLEdBQVksQ0FBWixHQUFjLENBQW5CLENBQWxUO0FBQXdVLE9BQWovRDtBQUFrL0Q3RixNQUFBQSxXQUFXLEVBQUMsdUJBQVU7QUFBQyxZQUFJN0UsQ0FBQyxHQUFDLEtBQUs2RCxLQUFYO0FBQUEsWUFBaUI1RCxDQUFDLEdBQUNELENBQUMsQ0FBQzJCLEtBQXJCO0FBQUEsWUFBMkJwQixDQUFDLEdBQUMsSUFBRSxLQUFLdUQsV0FBcEM7QUFBQSxZQUFnRG5ELENBQUMsR0FBQyxJQUFFWCxDQUFDLENBQUM0QixRQUF0RDtBQUErRDNCLFFBQUFBLENBQUMsQ0FBQ1UsQ0FBQyxLQUFHLENBQUwsQ0FBRCxJQUFVLE9BQUssS0FBR0EsQ0FBQyxHQUFDLEVBQXBCLEVBQXVCVixDQUFDLENBQUMsQ0FBQ1UsQ0FBQyxHQUFDLEdBQUYsS0FBUSxFQUFSLElBQVksQ0FBYixJQUFnQixFQUFqQixDQUFELEdBQXNCdUUsSUFBSSxDQUFDNEIsS0FBTCxDQUFXdkcsQ0FBQyxHQUFDLFVBQWIsQ0FBN0MsRUFBc0VOLENBQUMsQ0FBQyxDQUFDVSxDQUFDLEdBQUMsR0FBRixLQUFRLEVBQVIsSUFBWSxDQUFiLElBQWdCLEVBQWpCLENBQUQsR0FBc0JKLENBQTVGLEVBQThGUCxDQUFDLENBQUM0QixRQUFGLEdBQVcsSUFBRTNCLENBQUMsQ0FBQzRCLE1BQTdHLEVBQW9ILEtBQUttQyxRQUFMLEVBQXBIOztBQUFvSSxZQUFJcEQsQ0FBQyxHQUFDLEtBQUsrRSxLQUFMLENBQVdnRSxLQUFYLEVBQU47O0FBQXlCLGVBQU8vSSxDQUFQO0FBQVMsT0FBOXVFO0FBQSt1RVksTUFBQUEsS0FBSyxFQUFDLGlCQUFVO0FBQUMsWUFBSXhCLENBQUMsR0FBQ1ksQ0FBQyxDQUFDWSxLQUFGLENBQVFXLElBQVIsQ0FBYSxJQUFiLENBQU47QUFBeUIsZUFBT25DLENBQUMsQ0FBQzJGLEtBQUYsR0FBUSxLQUFLQSxLQUFMLENBQVduRSxLQUFYLEVBQVIsRUFBMkJ4QixDQUFsQztBQUFvQyxPQUE3ekU7QUFBOHpFaUUsTUFBQUEsU0FBUyxFQUFDO0FBQXgwRSxLQUFULENBQWY7QUFBcTJFMUQsSUFBQUEsQ0FBQyxDQUFDeUosTUFBRixHQUFTcEosQ0FBQyxDQUFDa0UsYUFBRixDQUFnQnBCLENBQWhCLENBQVQsRUFBNEJuRCxDQUFDLENBQUN1TSxVQUFGLEdBQWFsTSxDQUFDLENBQUNtRSxpQkFBRixDQUFvQnJCLENBQXBCLENBQXpDO0FBQWdFLEdBQW5nSixFQUF6aGQsRUFBK2htQixZQUFVO0FBQUMsUUFBSXpELENBQUMsR0FBQ0QsQ0FBTjtBQUFBLFFBQVFPLENBQUMsR0FBQ04sQ0FBQyxDQUFDc0osR0FBWjtBQUFBLFFBQWdCNUksQ0FBQyxHQUFDSixDQUFDLENBQUNpSixJQUFwQjtBQUFBLFFBQXlCNUksQ0FBQyxHQUFDTCxDQUFDLENBQUNtQixTQUE3QjtBQUFBLFFBQXVDWixDQUFDLEdBQUNiLENBQUMsQ0FBQ2dGLElBQTNDO0FBQUEsUUFBZ0R4RCxDQUFDLEdBQUNYLENBQUMsQ0FBQ2tKLE1BQXBEO0FBQUEsUUFBMkQxSCxDQUFDLEdBQUN4QixDQUFDLENBQUNpTSxNQUFGLEdBQVN0TCxDQUFDLENBQUNULE1BQUYsQ0FBUztBQUFDMEQsTUFBQUEsUUFBUSxFQUFDLG9CQUFVO0FBQUMsYUFBS2lCLEtBQUwsR0FBVyxJQUFJL0UsQ0FBQyxDQUFDTyxJQUFOLENBQVcsQ0FBQyxJQUFJUixDQUFDLENBQUNRLElBQU4sQ0FBVyxVQUFYLEVBQXNCLFVBQXRCLENBQUQsRUFBbUMsSUFBSVIsQ0FBQyxDQUFDUSxJQUFOLENBQVcsVUFBWCxFQUFzQixTQUF0QixDQUFuQyxFQUFvRSxJQUFJUixDQUFDLENBQUNRLElBQU4sQ0FBVyxVQUFYLEVBQXNCLFNBQXRCLENBQXBFLEVBQXFHLElBQUlSLENBQUMsQ0FBQ1EsSUFBTixDQUFXLFNBQVgsRUFBcUIsVUFBckIsQ0FBckcsRUFBc0ksSUFBSVIsQ0FBQyxDQUFDUSxJQUFOLENBQVcsVUFBWCxFQUFzQixVQUF0QixDQUF0SSxFQUF3SyxJQUFJUixDQUFDLENBQUNRLElBQU4sQ0FBVyxVQUFYLEVBQXNCLFVBQXRCLENBQXhLLEVBQTBNLElBQUlSLENBQUMsQ0FBQ1EsSUFBTixDQUFXLFVBQVgsRUFBc0IsVUFBdEIsQ0FBMU0sRUFBNE8sSUFBSVIsQ0FBQyxDQUFDUSxJQUFOLENBQVcsVUFBWCxFQUFzQixVQUF0QixDQUE1TyxDQUFYLENBQVg7QUFBc1MsT0FBM1Q7QUFBNFQwRCxNQUFBQSxXQUFXLEVBQUMsdUJBQVU7QUFBQyxZQUFJN0UsQ0FBQyxHQUFDeUIsQ0FBQyxDQUFDb0QsV0FBRixDQUFjMUMsSUFBZCxDQUFtQixJQUFuQixDQUFOOztBQUErQixlQUFPbkMsQ0FBQyxDQUFDNEIsUUFBRixJQUFZLEVBQVosRUFBZTVCLENBQXRCO0FBQXdCO0FBQTFZLEtBQVQsQ0FBdEU7QUFBNGRDLElBQUFBLENBQUMsQ0FBQzhNLE1BQUYsR0FBU3RMLENBQUMsQ0FBQ3FELGFBQUYsQ0FBZ0J4QyxDQUFoQixDQUFULEVBQTRCckMsQ0FBQyxDQUFDK00sVUFBRixHQUFhdkwsQ0FBQyxDQUFDc0QsaUJBQUYsQ0FBb0J6QyxDQUFwQixDQUF6QztBQUFnRSxHQUF2aUIsRUFBL2htQixFQUF5a25CdEMsQ0FBQyxDQUFDYSxHQUFGLENBQU1vTSxNQUFOLElBQWMsVUFBU2hOLENBQVQsRUFBVztBQUFDLFFBQUlNLENBQUMsR0FBQ1AsQ0FBTjtBQUFBLFFBQVFXLENBQUMsR0FBQ0osQ0FBQyxDQUFDTSxHQUFaO0FBQUEsUUFBZ0JELENBQUMsR0FBQ0QsQ0FBQyxDQUFDSSxJQUFwQjtBQUFBLFFBQXlCRCxDQUFDLEdBQUNILENBQUMsQ0FBQ2UsU0FBN0I7QUFBQSxRQUF1Q0QsQ0FBQyxHQUFDZCxDQUFDLENBQUNnRCxzQkFBM0M7QUFBQSxRQUFrRXJCLENBQUMsR0FBQy9CLENBQUMsQ0FBQ2lDLEdBQXRFO0FBQUEsUUFBMEVWLENBQUMsSUFBRVEsQ0FBQyxDQUFDYyxJQUFGLEVBQU9kLENBQUMsQ0FBQzZDLE1BQVgsQ0FBM0U7QUFBQSxRQUE4RnJDLENBQUMsR0FBQ3ZDLENBQUMsQ0FBQzBFLElBQWxHO0FBQUEsUUFBdUc5QixDQUFDLEdBQUNMLENBQUMsQ0FBQ3NHLE1BQTNHO0FBQUEsUUFBa0gxRixDQUFDLEdBQUMvQyxDQUFDLENBQUNzTSxNQUFGLEdBQVN4TCxDQUFDLENBQUNULE1BQUYsQ0FBUztBQUFDeUQsTUFBQUEsR0FBRyxFQUFDN0QsQ0FBQyxDQUFDSSxNQUFGLEVBQUw7QUFBZ0JrTSxNQUFBQSxlQUFlLEVBQUMseUJBQVNsTixDQUFULEVBQVdDLENBQVgsRUFBYTtBQUFDLGVBQU8sS0FBS1EsTUFBTCxDQUFZLEtBQUswTSxlQUFqQixFQUFpQ25OLENBQWpDLEVBQW1DQyxDQUFuQyxDQUFQO0FBQTZDLE9BQTNGO0FBQTRGbU4sTUFBQUEsZUFBZSxFQUFDLHlCQUFTcE4sQ0FBVCxFQUFXQyxDQUFYLEVBQWE7QUFBQyxlQUFPLEtBQUtRLE1BQUwsQ0FBWSxLQUFLNE0sZUFBakIsRUFBaUNyTixDQUFqQyxFQUFtQ0MsQ0FBbkMsQ0FBUDtBQUE2QyxPQUF2SztBQUF3S2tCLE1BQUFBLElBQUksRUFBQyxjQUFTbkIsQ0FBVCxFQUFXQyxDQUFYLEVBQWFNLENBQWIsRUFBZTtBQUFDLGFBQUtrRSxHQUFMLEdBQVMsS0FBS0EsR0FBTCxDQUFTekQsTUFBVCxDQUFnQlQsQ0FBaEIsQ0FBVCxFQUE0QixLQUFLK00sVUFBTCxHQUFnQnROLENBQTVDLEVBQThDLEtBQUt1TixJQUFMLEdBQVV0TixDQUF4RCxFQUEwRCxLQUFLMkQsS0FBTCxFQUExRDtBQUF1RSxPQUFwUTtBQUFxUUEsTUFBQUEsS0FBSyxFQUFDLGlCQUFVO0FBQUNuQyxRQUFBQSxDQUFDLENBQUNtQyxLQUFGLENBQVF6QixJQUFSLENBQWEsSUFBYixHQUFtQixLQUFLdUMsUUFBTCxFQUFuQjtBQUFtQyxPQUF6VDtBQUEwVDhJLE1BQUFBLE9BQU8sRUFBQyxpQkFBU3hOLENBQVQsRUFBVztBQUFDLGVBQU8sS0FBSytELE9BQUwsQ0FBYS9ELENBQWIsR0FBZ0IsS0FBS2dFLFFBQUwsRUFBdkI7QUFBdUMsT0FBclg7QUFBc1hZLE1BQUFBLFFBQVEsRUFBQyxrQkFBUzVFLENBQVQsRUFBVztBQUFDQSxRQUFBQSxDQUFDLElBQUUsS0FBSytELE9BQUwsQ0FBYS9ELENBQWIsQ0FBSDs7QUFBbUIsWUFBSUMsQ0FBQyxHQUFDLEtBQUs0RSxXQUFMLEVBQU47O0FBQXlCLGVBQU81RSxDQUFQO0FBQVMsT0FBaGM7QUFBaWMrSSxNQUFBQSxPQUFPLEVBQUMsQ0FBemM7QUFBMmN5RSxNQUFBQSxNQUFNLEVBQUMsQ0FBbGQ7QUFBb2ROLE1BQUFBLGVBQWUsRUFBQyxDQUFwZTtBQUFzZUUsTUFBQUEsZUFBZSxFQUFDLENBQXRmO0FBQXdmdkksTUFBQUEsYUFBYSxFQUFDLFlBQVU7QUFBQyxpQkFBUzlFLENBQVQsQ0FBV0EsQ0FBWCxFQUFhO0FBQUMsaUJBQU0sWUFBVSxPQUFPQSxDQUFqQixHQUFtQnNHLENBQW5CLEdBQXFCSCxDQUEzQjtBQUE2Qjs7QUFBQSxlQUFPLFVBQVNsRyxDQUFULEVBQVc7QUFBQyxpQkFBTTtBQUFDeU4sWUFBQUEsT0FBTyxFQUFDLGlCQUFTbk4sQ0FBVCxFQUFXSSxDQUFYLEVBQWFDLENBQWIsRUFBZTtBQUFDLHFCQUFPWixDQUFDLENBQUNXLENBQUQsQ0FBRCxDQUFLK00sT0FBTCxDQUFhek4sQ0FBYixFQUFlTSxDQUFmLEVBQWlCSSxDQUFqQixFQUFtQkMsQ0FBbkIsQ0FBUDtBQUE2QixhQUF0RDtBQUF1RCtNLFlBQUFBLE9BQU8sRUFBQyxpQkFBU3BOLENBQVQsRUFBV0ksQ0FBWCxFQUFhQyxDQUFiLEVBQWU7QUFBQyxxQkFBT1osQ0FBQyxDQUFDVyxDQUFELENBQUQsQ0FBS2dOLE9BQUwsQ0FBYTFOLENBQWIsRUFBZU0sQ0FBZixFQUFpQkksQ0FBakIsRUFBbUJDLENBQW5CLENBQVA7QUFBNkI7QUFBNUcsV0FBTjtBQUFvSCxTQUF2STtBQUF3SSxPQUE5TDtBQUF0Z0IsS0FBVCxDQUE3SDtBQUFBLFFBQSswQjBELENBQUMsSUFBRTNELENBQUMsQ0FBQ2lOLFlBQUYsR0FBZWxLLENBQUMsQ0FBQzFDLE1BQUYsQ0FBUztBQUFDNkQsTUFBQUEsV0FBVyxFQUFDLHVCQUFVO0FBQUMsWUFBSTdFLENBQUMsR0FBQyxLQUFLZ0UsUUFBTCxDQUFjLENBQUMsQ0FBZixDQUFOOztBQUF3QixlQUFPaEUsQ0FBUDtBQUFTLE9BQXpEO0FBQTBEaUUsTUFBQUEsU0FBUyxFQUFDO0FBQXBFLEtBQVQsQ0FBZixFQUFnRzFELENBQUMsQ0FBQ3NOLElBQUYsR0FBTyxFQUF6RyxDQUFoMUI7QUFBQSxRQUE2N0JqSSxDQUFDLEdBQUNqRixDQUFDLENBQUNtTixlQUFGLEdBQWtCbE4sQ0FBQyxDQUFDSSxNQUFGLENBQVM7QUFBQ2tNLE1BQUFBLGVBQWUsRUFBQyx5QkFBU2xOLENBQVQsRUFBV0MsQ0FBWCxFQUFhO0FBQUMsZUFBTyxLQUFLOE4sU0FBTCxDQUFldE4sTUFBZixDQUFzQlQsQ0FBdEIsRUFBd0JDLENBQXhCLENBQVA7QUFBa0MsT0FBakU7QUFBa0VtTixNQUFBQSxlQUFlLEVBQUMseUJBQVNwTixDQUFULEVBQVdDLENBQVgsRUFBYTtBQUFDLGVBQU8sS0FBSytOLFNBQUwsQ0FBZXZOLE1BQWYsQ0FBc0JULENBQXRCLEVBQXdCQyxDQUF4QixDQUFQO0FBQWtDLE9BQWxJO0FBQW1Ja0IsTUFBQUEsSUFBSSxFQUFDLGNBQVNuQixDQUFULEVBQVdDLENBQVgsRUFBYTtBQUFDLGFBQUtnTyxPQUFMLEdBQWFqTyxDQUFiLEVBQWUsS0FBS2tPLEdBQUwsR0FBU2pPLENBQXhCO0FBQTBCO0FBQWhMLEtBQVQsQ0FBajlCO0FBQUEsUUFBNm9DNEYsQ0FBQyxHQUFDdkIsQ0FBQyxDQUFDNkosR0FBRixHQUFNLFlBQVU7QUFBQyxlQUFTbk8sQ0FBVCxDQUFXQSxDQUFYLEVBQWFPLENBQWIsRUFBZUksQ0FBZixFQUFpQjtBQUFDLFlBQUlDLENBQUMsR0FBQyxLQUFLc04sR0FBWDs7QUFBZSxZQUFHdE4sQ0FBSCxFQUFLO0FBQUMsY0FBSUUsQ0FBQyxHQUFDRixDQUFOO0FBQVEsZUFBS3NOLEdBQUwsR0FBU2pPLENBQVQ7QUFBVyxTQUF6QixNQUE4QixJQUFJYSxDQUFDLEdBQUMsS0FBS3NOLFVBQVg7O0FBQXNCLGFBQUksSUFBSTNNLENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQ2QsQ0FBZCxFQUFnQmMsQ0FBQyxFQUFqQjtBQUFvQnpCLFVBQUFBLENBQUMsQ0FBQ08sQ0FBQyxHQUFDa0IsQ0FBSCxDQUFELElBQVFYLENBQUMsQ0FBQ1csQ0FBRCxDQUFUO0FBQXBCO0FBQWlDOztBQUFBLFVBQUlsQixDQUFDLEdBQUNxRixDQUFDLENBQUM1RSxNQUFGLEVBQU47QUFBaUIsYUFBT1QsQ0FBQyxDQUFDd04sU0FBRixHQUFZeE4sQ0FBQyxDQUFDUyxNQUFGLENBQVM7QUFBQ3FOLFFBQUFBLFlBQVksRUFBQyxzQkFBU3BPLENBQVQsRUFBV00sQ0FBWCxFQUFhO0FBQUMsY0FBSUksQ0FBQyxHQUFDLEtBQUtzTixPQUFYO0FBQUEsY0FBbUJyTixDQUFDLEdBQUNELENBQUMsQ0FBQ3NELFNBQXZCO0FBQWlDakUsVUFBQUEsQ0FBQyxDQUFDbUMsSUFBRixDQUFPLElBQVAsRUFBWWxDLENBQVosRUFBY00sQ0FBZCxFQUFnQkssQ0FBaEIsR0FBbUJELENBQUMsQ0FBQzJOLFlBQUYsQ0FBZXJPLENBQWYsRUFBaUJNLENBQWpCLENBQW5CLEVBQXVDLEtBQUs2TixVQUFMLEdBQWdCbk8sQ0FBQyxDQUFDbUMsS0FBRixDQUFRN0IsQ0FBUixFQUFVQSxDQUFDLEdBQUNLLENBQVosQ0FBdkQ7QUFBc0U7QUFBbkksT0FBVCxDQUFaLEVBQTJKTCxDQUFDLENBQUN5TixTQUFGLEdBQVl6TixDQUFDLENBQUNTLE1BQUYsQ0FBUztBQUFDcU4sUUFBQUEsWUFBWSxFQUFDLHNCQUFTcE8sQ0FBVCxFQUFXTSxDQUFYLEVBQWE7QUFBQyxjQUFJSSxDQUFDLEdBQUMsS0FBS3NOLE9BQVg7QUFBQSxjQUFtQnJOLENBQUMsR0FBQ0QsQ0FBQyxDQUFDc0QsU0FBdkI7QUFBQSxjQUFpQ25ELENBQUMsR0FBQ2IsQ0FBQyxDQUFDbUMsS0FBRixDQUFRN0IsQ0FBUixFQUFVQSxDQUFDLEdBQUNLLENBQVosQ0FBbkM7QUFBa0RELFVBQUFBLENBQUMsQ0FBQzROLFlBQUYsQ0FBZXRPLENBQWYsRUFBaUJNLENBQWpCLEdBQW9CUCxDQUFDLENBQUNtQyxJQUFGLENBQU8sSUFBUCxFQUFZbEMsQ0FBWixFQUFjTSxDQUFkLEVBQWdCSyxDQUFoQixDQUFwQixFQUF1QyxLQUFLd04sVUFBTCxHQUFnQnROLENBQXZEO0FBQXlEO0FBQXZJLE9BQVQsQ0FBdkssRUFBMFRQLENBQWpVO0FBQW1VLEtBQXJkLEVBQXJwQztBQUFBLFFBQTZtRHVGLENBQUMsR0FBQ3ZGLENBQUMsQ0FBQ2lPLEdBQUYsR0FBTSxFQUFybkQ7QUFBQSxRQUF3bkR6SSxDQUFDLEdBQUNELENBQUMsQ0FBQzJJLEtBQUYsR0FBUTtBQUFDRCxNQUFBQSxHQUFHLEVBQUMsYUFBU3hPLENBQVQsRUFBV0MsQ0FBWCxFQUFhO0FBQUMsYUFBSSxJQUFJTSxDQUFDLEdBQUMsSUFBRU4sQ0FBUixFQUFVVSxDQUFDLEdBQUNKLENBQUMsR0FBQ1AsQ0FBQyxDQUFDNEIsUUFBRixHQUFXckIsQ0FBekIsRUFBMkJLLENBQUMsR0FBQ0QsQ0FBQyxJQUFFLEVBQUgsR0FBTUEsQ0FBQyxJQUFFLEVBQVQsR0FBWUEsQ0FBQyxJQUFFLENBQWYsR0FBaUJBLENBQTlDLEVBQWdEYyxDQUFDLEdBQUMsRUFBbEQsRUFBcURhLENBQUMsR0FBQyxDQUEzRCxFQUE2REEsQ0FBQyxHQUFDM0IsQ0FBL0QsRUFBaUUyQixDQUFDLElBQUUsQ0FBcEU7QUFBc0ViLFVBQUFBLENBQUMsQ0FBQ2MsSUFBRixDQUFPM0IsQ0FBUDtBQUF0RTs7QUFBZ0YsWUFBSWtCLENBQUMsR0FBQ2hCLENBQUMsQ0FBQ0wsTUFBRixDQUFTZ0IsQ0FBVCxFQUFXZCxDQUFYLENBQU47QUFBb0JYLFFBQUFBLENBQUMsQ0FBQ2dDLE1BQUYsQ0FBU0YsQ0FBVDtBQUFZLE9BQW5JO0FBQW9JNE0sTUFBQUEsS0FBSyxFQUFDLGVBQVMxTyxDQUFULEVBQVc7QUFBQyxZQUFJQyxDQUFDLEdBQUMsTUFBSUQsQ0FBQyxDQUFDMkIsS0FBRixDQUFRM0IsQ0FBQyxDQUFDNEIsUUFBRixHQUFXLENBQVgsS0FBZSxDQUF2QixDQUFWO0FBQW9DNUIsUUFBQUEsQ0FBQyxDQUFDNEIsUUFBRixJQUFZM0IsQ0FBWjtBQUFjO0FBQXhNLEtBQWxvRDtBQUFBLFFBQTQwRCtGLENBQUMsSUFBRXJGLENBQUMsQ0FBQ2dPLFdBQUYsR0FBY2pMLENBQUMsQ0FBQzFDLE1BQUYsQ0FBUztBQUFDeUQsTUFBQUEsR0FBRyxFQUFDZixDQUFDLENBQUNlLEdBQUYsQ0FBTXpELE1BQU4sQ0FBYTtBQUFDNk0sUUFBQUEsSUFBSSxFQUFDaEksQ0FBTjtBQUFRK0ksUUFBQUEsT0FBTyxFQUFDN0k7QUFBaEIsT0FBYixDQUFMO0FBQXNDbkMsTUFBQUEsS0FBSyxFQUFDLGlCQUFVO0FBQUNGLFFBQUFBLENBQUMsQ0FBQ0UsS0FBRixDQUFRekIsSUFBUixDQUFhLElBQWI7QUFBbUIsWUFBSW5DLENBQUMsR0FBQyxLQUFLeUUsR0FBWDtBQUFBLFlBQWV4RSxDQUFDLEdBQUNELENBQUMsQ0FBQzZPLEVBQW5CO0FBQUEsWUFBc0J0TyxDQUFDLEdBQUNQLENBQUMsQ0FBQzZOLElBQTFCO0FBQStCLFlBQUcsS0FBS1AsVUFBTCxJQUFpQixLQUFLSCxlQUF6QixFQUF5QyxJQUFJeE0sQ0FBQyxHQUFDSixDQUFDLENBQUMyTSxlQUFSLENBQXpDLEtBQXFFO0FBQUMsY0FBSXZNLENBQUMsR0FBQ0osQ0FBQyxDQUFDNk0sZUFBUjtBQUF3QixlQUFLakosY0FBTCxHQUFvQixDQUFwQjtBQUFzQjtBQUFBLGFBQUsySyxLQUFMLElBQVksS0FBS0EsS0FBTCxDQUFXQyxTQUFYLElBQXNCcE8sQ0FBbEMsR0FBb0MsS0FBS21PLEtBQUwsQ0FBVzNOLElBQVgsQ0FBZ0IsSUFBaEIsRUFBcUJsQixDQUFDLElBQUVBLENBQUMsQ0FBQzBCLEtBQTFCLENBQXBDLElBQXNFLEtBQUttTixLQUFMLEdBQVduTyxDQUFDLENBQUN3QixJQUFGLENBQU81QixDQUFQLEVBQVMsSUFBVCxFQUFjTixDQUFDLElBQUVBLENBQUMsQ0FBQzBCLEtBQW5CLENBQVgsRUFBcUMsS0FBS21OLEtBQUwsQ0FBV0MsU0FBWCxHQUFxQnBPLENBQWhJO0FBQW1JLE9BQWhXO0FBQWlXMEQsTUFBQUEsZUFBZSxFQUFDLHlCQUFTckUsQ0FBVCxFQUFXQyxDQUFYLEVBQWE7QUFBQyxhQUFLNk8sS0FBTCxDQUFXVCxZQUFYLENBQXdCck8sQ0FBeEIsRUFBMEJDLENBQTFCO0FBQTZCLE9BQTVaO0FBQTZaNEUsTUFBQUEsV0FBVyxFQUFDLHVCQUFVO0FBQUMsWUFBSTdFLENBQUMsR0FBQyxLQUFLeUUsR0FBTCxDQUFTbUssT0FBZjs7QUFBdUIsWUFBRyxLQUFLdEIsVUFBTCxJQUFpQixLQUFLSCxlQUF6QixFQUF5QztBQUFDbk4sVUFBQUEsQ0FBQyxDQUFDd08sR0FBRixDQUFNLEtBQUszSyxLQUFYLEVBQWlCLEtBQUtJLFNBQXRCOztBQUFpQyxjQUFJaEUsQ0FBQyxHQUFDLEtBQUsrRCxRQUFMLENBQWMsQ0FBQyxDQUFmLENBQU47QUFBd0IsU0FBbkcsTUFBdUc7QUFBQyxjQUFJL0QsQ0FBQyxHQUFDLEtBQUsrRCxRQUFMLENBQWMsQ0FBQyxDQUFmLENBQU47O0FBQXdCaEUsVUFBQUEsQ0FBQyxDQUFDME8sS0FBRixDQUFRek8sQ0FBUjtBQUFXOztBQUFBLGVBQU9BLENBQVA7QUFBUyxPQUEvbEI7QUFBZ21CZ0UsTUFBQUEsU0FBUyxFQUFDO0FBQTFtQixLQUFULENBQWQsRUFBcW9CdEQsQ0FBQyxDQUFDcU8sWUFBRixHQUFlcE8sQ0FBQyxDQUFDSSxNQUFGLENBQVM7QUFBQ0csTUFBQUEsSUFBSSxFQUFDLGNBQVNuQixDQUFULEVBQVc7QUFBQyxhQUFLaUIsS0FBTCxDQUFXakIsQ0FBWDtBQUFjLE9BQWhDO0FBQWlDdUIsTUFBQUEsUUFBUSxFQUFDLGtCQUFTdkIsQ0FBVCxFQUFXO0FBQUMsZUFBTSxDQUFDQSxDQUFDLElBQUUsS0FBS2lQLFNBQVQsRUFBb0JsTixTQUFwQixDQUE4QixJQUE5QixDQUFOO0FBQTBDO0FBQWhHLEtBQVQsQ0FBdHBCLENBQTcwRDtBQUFBLFFBQWdsRmtFLENBQUMsR0FBQzFGLENBQUMsQ0FBQzJPLE1BQUYsR0FBUyxFQUEzbEY7QUFBQSxRQUE4bEZoSixDQUFDLEdBQUNELENBQUMsQ0FBQ2tKLE9BQUYsR0FBVTtBQUFDcE4sTUFBQUEsU0FBUyxFQUFDLG1CQUFTL0IsQ0FBVCxFQUFXO0FBQUMsWUFBSUMsQ0FBQyxHQUFDRCxDQUFDLENBQUNvUCxVQUFSO0FBQUEsWUFBbUI3TyxDQUFDLEdBQUNQLENBQUMsQ0FBQ3FQLElBQXZCO0FBQTRCLFlBQUc5TyxDQUFILEVBQUssSUFBSUksQ0FBQyxHQUFDRyxDQUFDLENBQUNMLE1BQUYsQ0FBUyxDQUFDLFVBQUQsRUFBWSxVQUFaLENBQVQsRUFBa0N1QixNQUFsQyxDQUF5Q3pCLENBQXpDLEVBQTRDeUIsTUFBNUMsQ0FBbUQvQixDQUFuRCxDQUFOLENBQUwsS0FBc0UsSUFBSVUsQ0FBQyxHQUFDVixDQUFOO0FBQVEsZUFBT1UsQ0FBQyxDQUFDWSxRQUFGLENBQVdPLENBQVgsQ0FBUDtBQUFxQixPQUF0SjtBQUF1SmEsTUFBQUEsS0FBSyxFQUFDLGVBQVMzQyxDQUFULEVBQVc7QUFBQyxZQUFJQyxDQUFDLEdBQUM2QixDQUFDLENBQUNhLEtBQUYsQ0FBUTNDLENBQVIsQ0FBTjtBQUFBLFlBQWlCTyxDQUFDLEdBQUNOLENBQUMsQ0FBQzBCLEtBQXJCOztBQUEyQixZQUFHLGNBQVlwQixDQUFDLENBQUMsQ0FBRCxDQUFiLElBQWtCLGNBQVlBLENBQUMsQ0FBQyxDQUFELENBQWxDLEVBQXNDO0FBQUMsY0FBSUksQ0FBQyxHQUFDRyxDQUFDLENBQUNMLE1BQUYsQ0FBU0YsQ0FBQyxDQUFDNkIsS0FBRixDQUFRLENBQVIsRUFBVSxDQUFWLENBQVQsQ0FBTjtBQUE2QjdCLFVBQUFBLENBQUMsQ0FBQ2dFLE1BQUYsQ0FBUyxDQUFULEVBQVcsQ0FBWCxHQUFjdEUsQ0FBQyxDQUFDMkIsUUFBRixJQUFZLEVBQTFCO0FBQTZCOztBQUFBLGVBQU9vRSxDQUFDLENBQUN2RixNQUFGLENBQVM7QUFBQzJPLFVBQUFBLFVBQVUsRUFBQ25QLENBQVo7QUFBY29QLFVBQUFBLElBQUksRUFBQzFPO0FBQW5CLFNBQVQsQ0FBUDtBQUF1QztBQUE1VSxLQUExbUY7QUFBQSxRQUF3N0Z3RixDQUFDLEdBQUN4RixDQUFDLENBQUMyTyxrQkFBRixHQUFxQjFPLENBQUMsQ0FBQ0ksTUFBRixDQUFTO0FBQUN5RCxNQUFBQSxHQUFHLEVBQUM3RCxDQUFDLENBQUNJLE1BQUYsQ0FBUztBQUFDa08sUUFBQUEsTUFBTSxFQUFDaEo7QUFBUixPQUFULENBQUw7QUFBMEJ3SCxNQUFBQSxPQUFPLEVBQUMsaUJBQVMxTixDQUFULEVBQVdDLENBQVgsRUFBYU0sQ0FBYixFQUFlSSxDQUFmLEVBQWlCO0FBQUNBLFFBQUFBLENBQUMsR0FBQyxLQUFLOEQsR0FBTCxDQUFTekQsTUFBVCxDQUFnQkwsQ0FBaEIsQ0FBRjtBQUFxQixZQUFJQyxDQUFDLEdBQUNaLENBQUMsQ0FBQ2tOLGVBQUYsQ0FBa0IzTSxDQUFsQixFQUFvQkksQ0FBcEIsQ0FBTjtBQUFBLFlBQTZCRyxDQUFDLEdBQUNGLENBQUMsQ0FBQ2dFLFFBQUYsQ0FBVzNFLENBQVgsQ0FBL0I7QUFBQSxZQUE2Q3dCLENBQUMsR0FBQ2IsQ0FBQyxDQUFDNkQsR0FBakQ7QUFBcUQsZUFBT3VCLENBQUMsQ0FBQ3ZGLE1BQUYsQ0FBUztBQUFDMk8sVUFBQUEsVUFBVSxFQUFDdE8sQ0FBWjtBQUFjeU8sVUFBQUEsR0FBRyxFQUFDaFAsQ0FBbEI7QUFBb0JzTyxVQUFBQSxFQUFFLEVBQUNwTixDQUFDLENBQUNvTixFQUF6QjtBQUE0QlcsVUFBQUEsU0FBUyxFQUFDeFAsQ0FBdEM7QUFBd0M2TixVQUFBQSxJQUFJLEVBQUNwTSxDQUFDLENBQUNvTSxJQUEvQztBQUFvRGUsVUFBQUEsT0FBTyxFQUFDbk4sQ0FBQyxDQUFDbU4sT0FBOUQ7QUFBc0UzSyxVQUFBQSxTQUFTLEVBQUNqRSxDQUFDLENBQUNpRSxTQUFsRjtBQUE0RmdMLFVBQUFBLFNBQVMsRUFBQ3RPLENBQUMsQ0FBQ3VPO0FBQXhHLFNBQVQsQ0FBUDtBQUFpSSxPQUEvUDtBQUFnUXZCLE1BQUFBLE9BQU8sRUFBQyxpQkFBUzNOLENBQVQsRUFBV0MsQ0FBWCxFQUFhTSxDQUFiLEVBQWVJLENBQWYsRUFBaUI7QUFBQ0EsUUFBQUEsQ0FBQyxHQUFDLEtBQUs4RCxHQUFMLENBQVN6RCxNQUFULENBQWdCTCxDQUFoQixDQUFGLEVBQXFCVixDQUFDLEdBQUMsS0FBS3dQLE1BQUwsQ0FBWXhQLENBQVosRUFBY1UsQ0FBQyxDQUFDdU8sTUFBaEIsQ0FBdkI7QUFBK0MsWUFBSXRPLENBQUMsR0FBQ1osQ0FBQyxDQUFDb04sZUFBRixDQUFrQjdNLENBQWxCLEVBQW9CSSxDQUFwQixFQUF1QmlFLFFBQXZCLENBQWdDM0UsQ0FBQyxDQUFDbVAsVUFBbEMsQ0FBTjtBQUFvRCxlQUFPeE8sQ0FBUDtBQUFTLE9BQXRZO0FBQXVZNk8sTUFBQUEsTUFBTSxFQUFDLGdCQUFTelAsQ0FBVCxFQUFXQyxDQUFYLEVBQWE7QUFBQyxlQUFNLFlBQVUsT0FBT0QsQ0FBakIsR0FBbUJDLENBQUMsQ0FBQzBDLEtBQUYsQ0FBUTNDLENBQVIsRUFBVSxJQUFWLENBQW5CLEdBQW1DQSxDQUF6QztBQUEyQztBQUF2YyxLQUFULENBQS84RjtBQUFBLFFBQWs2R29HLENBQUMsR0FBQzdGLENBQUMsQ0FBQ21QLEdBQUYsR0FBTSxFQUExNkc7QUFBQSxRQUE2NkdySixDQUFDLEdBQUNELENBQUMsQ0FBQytJLE9BQUYsR0FBVTtBQUFDUSxNQUFBQSxPQUFPLEVBQUMsaUJBQVMzUCxDQUFULEVBQVdDLENBQVgsRUFBYU0sQ0FBYixFQUFlSSxDQUFmLEVBQWlCO0FBQUNBLFFBQUFBLENBQUMsS0FBR0EsQ0FBQyxHQUFDRyxDQUFDLENBQUN1QixNQUFGLENBQVMsQ0FBVCxDQUFMLENBQUQ7QUFBbUIsWUFBSXpCLENBQUMsR0FBQ3VDLENBQUMsQ0FBQzFDLE1BQUYsQ0FBUztBQUFDdUksVUFBQUEsT0FBTyxFQUFDL0ksQ0FBQyxHQUFDTTtBQUFYLFNBQVQsRUFBd0I0SSxPQUF4QixDQUFnQ25KLENBQWhDLEVBQWtDVyxDQUFsQyxDQUFOO0FBQUEsWUFBMkNjLENBQUMsR0FBQ1gsQ0FBQyxDQUFDTCxNQUFGLENBQVNHLENBQUMsQ0FBQ2UsS0FBRixDQUFRUyxLQUFSLENBQWNuQyxDQUFkLENBQVQsRUFBMEIsSUFBRU0sQ0FBNUIsQ0FBN0M7QUFBNEUsZUFBT0ssQ0FBQyxDQUFDZ0IsUUFBRixHQUFXLElBQUUzQixDQUFiLEVBQWUrRixDQUFDLENBQUN2RixNQUFGLENBQVM7QUFBQzhPLFVBQUFBLEdBQUcsRUFBQzNPLENBQUw7QUFBT2lPLFVBQUFBLEVBQUUsRUFBQ3BOLENBQVY7QUFBWTROLFVBQUFBLElBQUksRUFBQzFPO0FBQWpCLFNBQVQsQ0FBdEI7QUFBb0Q7QUFBOUssS0FBejdHO0FBQUEsUUFBeW1IMkYsQ0FBQyxHQUFDM0YsQ0FBQyxDQUFDaVAsbUJBQUYsR0FBc0J6SixDQUFDLENBQUNuRixNQUFGLENBQVM7QUFBQ3lELE1BQUFBLEdBQUcsRUFBQzBCLENBQUMsQ0FBQzFCLEdBQUYsQ0FBTXpELE1BQU4sQ0FBYTtBQUFDME8sUUFBQUEsR0FBRyxFQUFDcko7QUFBTCxPQUFiLENBQUw7QUFBMkJxSCxNQUFBQSxPQUFPLEVBQUMsaUJBQVMxTixDQUFULEVBQVdDLENBQVgsRUFBYU0sQ0FBYixFQUFlSSxDQUFmLEVBQWlCO0FBQUNBLFFBQUFBLENBQUMsR0FBQyxLQUFLOEQsR0FBTCxDQUFTekQsTUFBVCxDQUFnQkwsQ0FBaEIsQ0FBRjtBQUFxQixZQUFJQyxDQUFDLEdBQUNELENBQUMsQ0FBQytPLEdBQUYsQ0FBTUMsT0FBTixDQUFjcFAsQ0FBZCxFQUFnQlAsQ0FBQyxDQUFDZ0osT0FBbEIsRUFBMEJoSixDQUFDLENBQUN5TixNQUE1QixDQUFOO0FBQTBDOU0sUUFBQUEsQ0FBQyxDQUFDa08sRUFBRixHQUFLak8sQ0FBQyxDQUFDaU8sRUFBUDtBQUFVLFlBQUkvTixDQUFDLEdBQUNxRixDQUFDLENBQUN1SCxPQUFGLENBQVV2TCxJQUFWLENBQWUsSUFBZixFQUFvQm5DLENBQXBCLEVBQXNCQyxDQUF0QixFQUF3QlcsQ0FBQyxDQUFDMk8sR0FBMUIsRUFBOEI1TyxDQUE5QixDQUFOO0FBQXVDLGVBQU9HLENBQUMsQ0FBQ0csS0FBRixDQUFRTCxDQUFSLEdBQVdFLENBQWxCO0FBQW9CLE9BQXpMO0FBQTBMNk0sTUFBQUEsT0FBTyxFQUFDLGlCQUFTM04sQ0FBVCxFQUFXQyxDQUFYLEVBQWFNLENBQWIsRUFBZUksQ0FBZixFQUFpQjtBQUFDQSxRQUFBQSxDQUFDLEdBQUMsS0FBSzhELEdBQUwsQ0FBU3pELE1BQVQsQ0FBZ0JMLENBQWhCLENBQUYsRUFBcUJWLENBQUMsR0FBQyxLQUFLd1AsTUFBTCxDQUFZeFAsQ0FBWixFQUFjVSxDQUFDLENBQUN1TyxNQUFoQixDQUF2QjtBQUErQyxZQUFJdE8sQ0FBQyxHQUFDRCxDQUFDLENBQUMrTyxHQUFGLENBQU1DLE9BQU4sQ0FBY3BQLENBQWQsRUFBZ0JQLENBQUMsQ0FBQ2dKLE9BQWxCLEVBQTBCaEosQ0FBQyxDQUFDeU4sTUFBNUIsRUFBbUN4TixDQUFDLENBQUNvUCxJQUFyQyxDQUFOO0FBQWlEMU8sUUFBQUEsQ0FBQyxDQUFDa08sRUFBRixHQUFLak8sQ0FBQyxDQUFDaU8sRUFBUDtBQUFVLFlBQUkvTixDQUFDLEdBQUNxRixDQUFDLENBQUN3SCxPQUFGLENBQVV4TCxJQUFWLENBQWUsSUFBZixFQUFvQm5DLENBQXBCLEVBQXNCQyxDQUF0QixFQUF3QlcsQ0FBQyxDQUFDMk8sR0FBMUIsRUFBOEI1TyxDQUE5QixDQUFOO0FBQXVDLGVBQU9HLENBQVA7QUFBUztBQUE5VyxLQUFULENBQWpvSDtBQUEyL0gsR0FBdmdJLEVBQXZsbkIsRUFBaW12QmQsQ0FBQyxDQUFDNk4sSUFBRixDQUFPZ0MsR0FBUCxHQUFXLFlBQVU7QUFBQyxhQUFTNVAsQ0FBVCxDQUFXRCxDQUFYLEVBQWFDLENBQWIsRUFBZU0sQ0FBZixFQUFpQkksQ0FBakIsRUFBbUI7QUFBQyxVQUFJQyxDQUFDLEdBQUMsS0FBS3NOLEdBQVg7O0FBQWUsVUFBR3ROLENBQUgsRUFBSztBQUFDLFlBQUlFLENBQUMsR0FBQ0YsQ0FBQyxDQUFDd0IsS0FBRixDQUFRLENBQVIsQ0FBTjtBQUFpQixhQUFLOEwsR0FBTCxHQUFTLEtBQUssQ0FBZDtBQUFnQixPQUF2QyxNQUE0QyxJQUFJcE4sQ0FBQyxHQUFDLEtBQUtzTixVQUFYOztBQUFzQnpOLE1BQUFBLENBQUMsQ0FBQzJOLFlBQUYsQ0FBZXhOLENBQWYsRUFBaUIsQ0FBakI7O0FBQW9CLFdBQUksSUFBSVcsQ0FBQyxHQUFDLENBQVYsRUFBWUEsQ0FBQyxHQUFDbEIsQ0FBZCxFQUFnQmtCLENBQUMsRUFBakI7QUFBb0J6QixRQUFBQSxDQUFDLENBQUNDLENBQUMsR0FBQ3dCLENBQUgsQ0FBRCxJQUFRWCxDQUFDLENBQUNXLENBQUQsQ0FBVDtBQUFwQjtBQUFpQzs7QUFBQSxRQUFJbEIsQ0FBQyxHQUFDUCxDQUFDLENBQUNhLEdBQUYsQ0FBTWlOLGVBQU4sQ0FBc0I5TSxNQUF0QixFQUFOO0FBQXFDLFdBQU9ULENBQUMsQ0FBQ3dOLFNBQUYsR0FBWXhOLENBQUMsQ0FBQ1MsTUFBRixDQUFTO0FBQUNxTixNQUFBQSxZQUFZLEVBQUMsc0JBQVNyTyxDQUFULEVBQVdPLENBQVgsRUFBYTtBQUFDLFlBQUlJLENBQUMsR0FBQyxLQUFLc04sT0FBWDtBQUFBLFlBQW1Cck4sQ0FBQyxHQUFDRCxDQUFDLENBQUNzRCxTQUF2QjtBQUFpQ2hFLFFBQUFBLENBQUMsQ0FBQ2tDLElBQUYsQ0FBTyxJQUFQLEVBQVluQyxDQUFaLEVBQWNPLENBQWQsRUFBZ0JLLENBQWhCLEVBQWtCRCxDQUFsQixHQUFxQixLQUFLeU4sVUFBTCxHQUFnQnBPLENBQUMsQ0FBQ29DLEtBQUYsQ0FBUTdCLENBQVIsRUFBVUEsQ0FBQyxHQUFDSyxDQUFaLENBQXJDO0FBQW9EO0FBQWpILEtBQVQsQ0FBWixFQUF5SUwsQ0FBQyxDQUFDeU4sU0FBRixHQUFZek4sQ0FBQyxDQUFDUyxNQUFGLENBQVM7QUFBQ3FOLE1BQUFBLFlBQVksRUFBQyxzQkFBU3JPLENBQVQsRUFBV08sQ0FBWCxFQUFhO0FBQUMsWUFBSUksQ0FBQyxHQUFDLEtBQUtzTixPQUFYO0FBQUEsWUFBbUJyTixDQUFDLEdBQUNELENBQUMsQ0FBQ3NELFNBQXZCO0FBQUEsWUFBaUNuRCxDQUFDLEdBQUNkLENBQUMsQ0FBQ29DLEtBQUYsQ0FBUTdCLENBQVIsRUFBVUEsQ0FBQyxHQUFDSyxDQUFaLENBQW5DO0FBQWtEWCxRQUFBQSxDQUFDLENBQUNrQyxJQUFGLENBQU8sSUFBUCxFQUFZbkMsQ0FBWixFQUFjTyxDQUFkLEVBQWdCSyxDQUFoQixFQUFrQkQsQ0FBbEIsR0FBcUIsS0FBS3lOLFVBQUwsR0FBZ0J0TixDQUFyQztBQUF1QztBQUFySCxLQUFULENBQXJKLEVBQXNSUCxDQUE3UjtBQUErUixHQUF6ZSxFQUE1bXZCLEVBQXdsd0JQLENBQUMsQ0FBQzZOLElBQUYsQ0FBT2lDLEdBQVAsR0FBVyxZQUFVO0FBQUMsUUFBSTdQLENBQUMsR0FBQ0QsQ0FBQyxDQUFDYSxHQUFGLENBQU1pTixlQUFOLENBQXNCOU0sTUFBdEIsRUFBTjtBQUFxQyxXQUFPZixDQUFDLENBQUM4TixTQUFGLEdBQVk5TixDQUFDLENBQUNlLE1BQUYsQ0FBUztBQUFDcU4sTUFBQUEsWUFBWSxFQUFDLHNCQUFTck8sQ0FBVCxFQUFXQyxDQUFYLEVBQWE7QUFBQyxhQUFLZ08sT0FBTCxDQUFhSyxZQUFiLENBQTBCdE8sQ0FBMUIsRUFBNEJDLENBQTVCO0FBQStCO0FBQTNELEtBQVQsQ0FBWixFQUFtRkEsQ0FBQyxDQUFDK04sU0FBRixHQUFZL04sQ0FBQyxDQUFDZSxNQUFGLENBQVM7QUFBQ3FOLE1BQUFBLFlBQVksRUFBQyxzQkFBU3JPLENBQVQsRUFBV0MsQ0FBWCxFQUFhO0FBQUMsYUFBS2dPLE9BQUwsQ0FBYU0sWUFBYixDQUEwQnZPLENBQTFCLEVBQTRCQyxDQUE1QjtBQUErQjtBQUEzRCxLQUFULENBQS9GLEVBQXNLQSxDQUE3SztBQUErSyxHQUEvTixFQUFubXdCLEVBQXEwd0JELENBQUMsQ0FBQ3dPLEdBQUYsQ0FBTXVCLFFBQU4sR0FBZTtBQUFDdkIsSUFBQUEsR0FBRyxFQUFDLGFBQVN4TyxDQUFULEVBQVdDLENBQVgsRUFBYTtBQUFDLFVBQUlNLENBQUMsR0FBQ1AsQ0FBQyxDQUFDNEIsUUFBUjtBQUFBLFVBQWlCakIsQ0FBQyxHQUFDLElBQUVWLENBQXJCO0FBQUEsVUFBdUJXLENBQUMsR0FBQ0QsQ0FBQyxHQUFDSixDQUFDLEdBQUNJLENBQTdCO0FBQUEsVUFBK0JHLENBQUMsR0FBQ1AsQ0FBQyxHQUFDSyxDQUFGLEdBQUksQ0FBckM7QUFBdUNaLE1BQUFBLENBQUMsQ0FBQ2lDLEtBQUYsSUFBVWpDLENBQUMsQ0FBQzJCLEtBQUYsQ0FBUWIsQ0FBQyxLQUFHLENBQVosS0FBZ0JGLENBQUMsSUFBRSxLQUFHRSxDQUFDLEdBQUMsQ0FBRixHQUFJLENBQXBDLEVBQXNDZCxDQUFDLENBQUM0QixRQUFGLElBQVloQixDQUFsRDtBQUFvRCxLQUE5RztBQUErRzhOLElBQUFBLEtBQUssRUFBQyxlQUFTMU8sQ0FBVCxFQUFXO0FBQUMsVUFBSUMsQ0FBQyxHQUFDLE1BQUlELENBQUMsQ0FBQzJCLEtBQUYsQ0FBUTNCLENBQUMsQ0FBQzRCLFFBQUYsR0FBVyxDQUFYLEtBQWUsQ0FBdkIsQ0FBVjtBQUFvQzVCLE1BQUFBLENBQUMsQ0FBQzRCLFFBQUYsSUFBWTNCLENBQVo7QUFBYztBQUFuTCxHQUFwMXdCLEVBQXlneEJELENBQUMsQ0FBQ3dPLEdBQUYsQ0FBTXdCLFFBQU4sR0FBZTtBQUFDeEIsSUFBQUEsR0FBRyxFQUFDLGFBQVN2TyxDQUFULEVBQVdNLENBQVgsRUFBYTtBQUFDLFVBQUlJLENBQUMsR0FBQyxJQUFFSixDQUFSO0FBQUEsVUFBVUssQ0FBQyxHQUFDRCxDQUFDLEdBQUNWLENBQUMsQ0FBQzJCLFFBQUYsR0FBV2pCLENBQXpCO0FBQTJCVixNQUFBQSxDQUFDLENBQUMrQixNQUFGLENBQVNoQyxDQUFDLENBQUNhLEdBQUYsQ0FBTWEsU0FBTixDQUFnQlcsTUFBaEIsQ0FBdUJ6QixDQUFDLEdBQUMsQ0FBekIsQ0FBVCxFQUFzQ29CLE1BQXRDLENBQTZDaEMsQ0FBQyxDQUFDYSxHQUFGLENBQU1hLFNBQU4sQ0FBZ0JqQixNQUFoQixDQUF1QixDQUFDRyxDQUFDLElBQUUsRUFBSixDQUF2QixFQUErQixDQUEvQixDQUE3QztBQUFnRixLQUE5SDtBQUErSDhOLElBQUFBLEtBQUssRUFBQyxlQUFTMU8sQ0FBVCxFQUFXO0FBQUMsVUFBSUMsQ0FBQyxHQUFDLE1BQUlELENBQUMsQ0FBQzJCLEtBQUYsQ0FBUTNCLENBQUMsQ0FBQzRCLFFBQUYsR0FBVyxDQUFYLEtBQWUsQ0FBdkIsQ0FBVjtBQUFvQzVCLE1BQUFBLENBQUMsQ0FBQzRCLFFBQUYsSUFBWTNCLENBQVo7QUFBYztBQUFuTSxHQUF4aHhCLEVBQTZ0eEJELENBQUMsQ0FBQ3dPLEdBQUYsQ0FBTXlCLFFBQU4sR0FBZTtBQUFDekIsSUFBQUEsR0FBRyxFQUFDLGFBQVN2TyxDQUFULEVBQVdNLENBQVgsRUFBYTtBQUFDTixNQUFBQSxDQUFDLENBQUMrQixNQUFGLENBQVNoQyxDQUFDLENBQUNhLEdBQUYsQ0FBTWEsU0FBTixDQUFnQmpCLE1BQWhCLENBQXVCLENBQUMsVUFBRCxDQUF2QixFQUFvQyxDQUFwQyxDQUFULEdBQWlEVCxDQUFDLENBQUN3TyxHQUFGLENBQU0wQixXQUFOLENBQWtCMUIsR0FBbEIsQ0FBc0J2TyxDQUF0QixFQUF3Qk0sQ0FBeEIsQ0FBakQ7QUFBNEUsS0FBL0Y7QUFBZ0dtTyxJQUFBQSxLQUFLLEVBQUMsZUFBU3pPLENBQVQsRUFBVztBQUFDRCxNQUFBQSxDQUFDLENBQUN3TyxHQUFGLENBQU0wQixXQUFOLENBQWtCeEIsS0FBbEIsQ0FBd0J6TyxDQUF4QixHQUEyQkEsQ0FBQyxDQUFDMkIsUUFBRixFQUEzQjtBQUF3QztBQUExSixHQUE1dXhCLEVBQXc0eEI1QixDQUFDLENBQUM2TixJQUFGLENBQU9zQyxHQUFQLEdBQVcsWUFBVTtBQUFDLFFBQUlsUSxDQUFDLEdBQUNELENBQUMsQ0FBQ2EsR0FBRixDQUFNaU4sZUFBTixDQUFzQjlNLE1BQXRCLEVBQU47QUFBQSxRQUFxQ1QsQ0FBQyxHQUFDTixDQUFDLENBQUM4TixTQUFGLEdBQVk5TixDQUFDLENBQUNlLE1BQUYsQ0FBUztBQUFDcU4sTUFBQUEsWUFBWSxFQUFDLHNCQUFTck8sQ0FBVCxFQUFXQyxDQUFYLEVBQWE7QUFBQyxZQUFJTSxDQUFDLEdBQUMsS0FBSzBOLE9BQVg7QUFBQSxZQUFtQnROLENBQUMsR0FBQ0osQ0FBQyxDQUFDMEQsU0FBdkI7QUFBQSxZQUFpQ3JELENBQUMsR0FBQyxLQUFLc04sR0FBeEM7QUFBQSxZQUE0Q3BOLENBQUMsR0FBQyxLQUFLc1AsVUFBbkQ7QUFBOER4UCxRQUFBQSxDQUFDLEtBQUdFLENBQUMsR0FBQyxLQUFLc1AsVUFBTCxHQUFnQnhQLENBQUMsQ0FBQ3dCLEtBQUYsQ0FBUSxDQUFSLENBQWxCLEVBQTZCLEtBQUs4TCxHQUFMLEdBQVMsS0FBSyxDQUE5QyxDQUFELEVBQWtEM04sQ0FBQyxDQUFDK04sWUFBRixDQUFleE4sQ0FBZixFQUFpQixDQUFqQixDQUFsRDs7QUFBc0UsYUFBSSxJQUFJVyxDQUFDLEdBQUMsQ0FBVixFQUFZQSxDQUFDLEdBQUNkLENBQWQsRUFBZ0JjLENBQUMsRUFBakI7QUFBb0J6QixVQUFBQSxDQUFDLENBQUNDLENBQUMsR0FBQ3dCLENBQUgsQ0FBRCxJQUFRWCxDQUFDLENBQUNXLENBQUQsQ0FBVDtBQUFwQjtBQUFpQztBQUFqTSxLQUFULENBQW5EO0FBQWdRLFdBQU94QixDQUFDLENBQUMrTixTQUFGLEdBQVl6TixDQUFaLEVBQWNOLENBQXJCO0FBQXVCLEdBQWxTLEVBQW41eEIsRUFBd3J5QkQsQ0FBQyxDQUFDd08sR0FBRixDQUFNNkIsU0FBTixHQUFnQjtBQUFDN0IsSUFBQUEsR0FBRyxFQUFDLGVBQVUsQ0FBRSxDQUFqQjtBQUFrQkUsSUFBQUEsS0FBSyxFQUFDLGlCQUFVLENBQUU7QUFBcEMsR0FBeHN5QixFQUE4dXlCLFVBQVN6TyxDQUFULEVBQVc7QUFBQyxRQUFJTSxDQUFDLEdBQUNQLENBQU47QUFBQSxRQUFRVyxDQUFDLEdBQUNKLENBQUMsQ0FBQ00sR0FBWjtBQUFBLFFBQWdCRCxDQUFDLEdBQUNELENBQUMsQ0FBQ3FPLFlBQXBCO0FBQUEsUUFBaUNsTyxDQUFDLEdBQUNQLENBQUMsQ0FBQ2lDLEdBQXJDO0FBQUEsUUFBeUNmLENBQUMsR0FBQ1gsQ0FBQyxDQUFDMkIsR0FBN0M7QUFBQSxRQUFpREgsQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDMk8sTUFBckQ7QUFBNEQ1TSxJQUFBQSxDQUFDLENBQUNHLEdBQUYsR0FBTTtBQUFDVixNQUFBQSxTQUFTLEVBQUMsbUJBQVMvQixDQUFULEVBQVc7QUFBQyxlQUFPQSxDQUFDLENBQUNvUCxVQUFGLENBQWE3TixRQUFiLENBQXNCRSxDQUF0QixDQUFQO0FBQWdDLE9BQXZEO0FBQXdEa0IsTUFBQUEsS0FBSyxFQUFDLGVBQVMzQyxDQUFULEVBQVc7QUFBQyxZQUFJQyxDQUFDLEdBQUN3QixDQUFDLENBQUNrQixLQUFGLENBQVEzQyxDQUFSLENBQU47QUFBaUIsZUFBT1ksQ0FBQyxDQUFDSCxNQUFGLENBQVM7QUFBQzJPLFVBQUFBLFVBQVUsRUFBQ25QO0FBQVosU0FBVCxDQUFQO0FBQWdDO0FBQTNILEtBQU47QUFBbUksR0FBM00sRUFBOXV5QixFQUE0N3lCLFlBQVU7QUFBQyxRQUFJQSxDQUFDLEdBQUNELENBQU47QUFBQSxRQUFRTyxDQUFDLEdBQUNOLENBQUMsQ0FBQ1ksR0FBWjtBQUFBLFFBQWdCRixDQUFDLEdBQUNKLENBQUMsQ0FBQ29PLFdBQXBCO0FBQUEsUUFBZ0MvTixDQUFDLEdBQUNYLENBQUMsQ0FBQ2dGLElBQXBDO0FBQUEsUUFBeUNuRSxDQUFDLEdBQUMsRUFBM0M7QUFBQSxRQUE4Q1csQ0FBQyxHQUFDLEVBQWhEO0FBQUEsUUFBbURhLENBQUMsR0FBQyxFQUFyRDtBQUFBLFFBQXdEUixDQUFDLEdBQUMsRUFBMUQ7QUFBQSxRQUE2RGdCLENBQUMsR0FBQyxFQUEvRDtBQUFBLFFBQWtFSyxDQUFDLEdBQUMsRUFBcEU7QUFBQSxRQUF1RU8sQ0FBQyxHQUFDLEVBQXpFO0FBQUEsUUFBNEVZLENBQUMsR0FBQyxFQUE5RTtBQUFBLFFBQWlGc0IsQ0FBQyxHQUFDLEVBQW5GO0FBQUEsUUFBc0ZDLENBQUMsR0FBQyxFQUF4RjtBQUEyRixLQUFDLFlBQVU7QUFBQyxXQUFJLElBQUk3RixDQUFDLEdBQUMsRUFBTixFQUFTQyxDQUFDLEdBQUMsQ0FBZixFQUFpQkEsQ0FBQyxHQUFDLEdBQW5CLEVBQXVCQSxDQUFDLEVBQXhCO0FBQTJCQSxRQUFBQSxDQUFDLEdBQUMsR0FBRixHQUFNRCxDQUFDLENBQUNDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLElBQUUsQ0FBZCxHQUFnQkQsQ0FBQyxDQUFDQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxJQUFFLENBQUgsR0FBSyxHQUExQjtBQUEzQjs7QUFBeUQsV0FBSSxJQUFJTSxDQUFDLEdBQUMsQ0FBTixFQUFRSSxDQUFDLEdBQUMsQ0FBVixFQUFZVixDQUFDLEdBQUMsQ0FBbEIsRUFBb0JBLENBQUMsR0FBQyxHQUF0QixFQUEwQkEsQ0FBQyxFQUEzQixFQUE4QjtBQUFDLFlBQUlXLENBQUMsR0FBQ0QsQ0FBQyxHQUFDQSxDQUFDLElBQUUsQ0FBTCxHQUFPQSxDQUFDLElBQUUsQ0FBVixHQUFZQSxDQUFDLElBQUUsQ0FBZixHQUFpQkEsQ0FBQyxJQUFFLENBQTFCO0FBQTRCQyxRQUFBQSxDQUFDLEdBQUNBLENBQUMsS0FBRyxDQUFKLEdBQU0sTUFBSUEsQ0FBVixHQUFZLEVBQWQsRUFBaUJFLENBQUMsQ0FBQ1AsQ0FBRCxDQUFELEdBQUtLLENBQXRCLEVBQXdCYSxDQUFDLENBQUNiLENBQUQsQ0FBRCxHQUFLTCxDQUE3QjtBQUErQixZQUFJdUYsQ0FBQyxHQUFDOUYsQ0FBQyxDQUFDTyxDQUFELENBQVA7QUFBQSxZQUFXd0YsQ0FBQyxHQUFDL0YsQ0FBQyxDQUFDOEYsQ0FBRCxDQUFkO0FBQUEsWUFBa0JFLENBQUMsR0FBQ2hHLENBQUMsQ0FBQytGLENBQUQsQ0FBckI7QUFBQSxZQUF5QkUsQ0FBQyxHQUFDLE1BQUlqRyxDQUFDLENBQUNZLENBQUQsQ0FBTCxHQUFTLFdBQVNBLENBQTdDO0FBQStDMEIsUUFBQUEsQ0FBQyxDQUFDL0IsQ0FBRCxDQUFELEdBQUswRixDQUFDLElBQUUsRUFBSCxHQUFNQSxDQUFDLEtBQUcsQ0FBZixFQUFpQm5FLENBQUMsQ0FBQ3ZCLENBQUQsQ0FBRCxHQUFLMEYsQ0FBQyxJQUFFLEVBQUgsR0FBTUEsQ0FBQyxLQUFHLEVBQWhDLEVBQW1DbkQsQ0FBQyxDQUFDdkMsQ0FBRCxDQUFELEdBQUswRixDQUFDLElBQUUsQ0FBSCxHQUFLQSxDQUFDLEtBQUcsRUFBakQsRUFBb0Q5QyxDQUFDLENBQUM1QyxDQUFELENBQUQsR0FBSzBGLENBQXpEO0FBQTJELFlBQUlBLENBQUMsR0FBQyxXQUFTRCxDQUFULEdBQVcsUUFBTUQsQ0FBakIsR0FBbUIsTUFBSUQsQ0FBdkIsR0FBeUIsV0FBU3ZGLENBQXhDO0FBQTBDbUQsUUFBQUEsQ0FBQyxDQUFDOUMsQ0FBRCxDQUFELEdBQUtxRixDQUFDLElBQUUsRUFBSCxHQUFNQSxDQUFDLEtBQUcsQ0FBZixFQUFpQjNCLENBQUMsQ0FBQzFELENBQUQsQ0FBRCxHQUFLcUYsQ0FBQyxJQUFFLEVBQUgsR0FBTUEsQ0FBQyxLQUFHLEVBQWhDLEVBQW1DTCxDQUFDLENBQUNoRixDQUFELENBQUQsR0FBS3FGLENBQUMsSUFBRSxDQUFILEdBQUtBLENBQUMsS0FBRyxFQUFqRCxFQUFvREosQ0FBQyxDQUFDakYsQ0FBRCxDQUFELEdBQUtxRixDQUF6RCxFQUEyRDFGLENBQUMsSUFBRUEsQ0FBQyxHQUFDdUYsQ0FBQyxHQUFDOUYsQ0FBQyxDQUFDQSxDQUFDLENBQUNBLENBQUMsQ0FBQ2dHLENBQUMsR0FBQ0YsQ0FBSCxDQUFGLENBQUYsQ0FBTCxFQUFpQm5GLENBQUMsSUFBRVgsQ0FBQyxDQUFDQSxDQUFDLENBQUNXLENBQUQsQ0FBRixDQUF2QixJQUErQkosQ0FBQyxHQUFDSSxDQUFDLEdBQUMsQ0FBL0Y7QUFBaUc7QUFBQyxLQUFwWixFQUFEOztBQUF3WixRQUFJbUYsQ0FBQyxHQUFDLENBQUMsQ0FBRCxFQUFHLENBQUgsRUFBSyxDQUFMLEVBQU8sQ0FBUCxFQUFTLENBQVQsRUFBVyxFQUFYLEVBQWMsRUFBZCxFQUFpQixFQUFqQixFQUFvQixHQUFwQixFQUF3QixFQUF4QixFQUEyQixFQUEzQixDQUFOO0FBQUEsUUFBcUNDLENBQUMsR0FBQ25GLENBQUMsQ0FBQzBQLEdBQUYsR0FBTTNQLENBQUMsQ0FBQ0ssTUFBRixDQUFTO0FBQUMwRCxNQUFBQSxRQUFRLEVBQUMsb0JBQVU7QUFBQyxZQUFHLENBQUMsS0FBSzZMLFFBQU4sSUFBZ0IsS0FBS0MsY0FBTCxLQUFzQixLQUFLakQsSUFBOUMsRUFBbUQ7QUFBQyxlQUFJLElBQUl2TixDQUFDLEdBQUMsS0FBS3dRLGNBQUwsR0FBb0IsS0FBS2pELElBQS9CLEVBQW9DdE4sQ0FBQyxHQUFDRCxDQUFDLENBQUMyQixLQUF4QyxFQUE4Q3BCLENBQUMsR0FBQ1AsQ0FBQyxDQUFDNEIsUUFBRixHQUFXLENBQTNELEVBQTZEakIsQ0FBQyxHQUFDLEtBQUs0UCxRQUFMLEdBQWNoUSxDQUFDLEdBQUMsQ0FBL0UsRUFBaUZLLENBQUMsR0FBQyxLQUFHRCxDQUFDLEdBQUMsQ0FBTCxDQUFuRixFQUEyRmMsQ0FBQyxHQUFDLEtBQUtnUCxZQUFMLEdBQWtCLEVBQS9HLEVBQWtIbk8sQ0FBQyxHQUFDLENBQXhILEVBQTBIQSxDQUFDLEdBQUMxQixDQUE1SCxFQUE4SDBCLENBQUMsRUFBL0g7QUFBa0ksZ0JBQUdBLENBQUMsR0FBQy9CLENBQUwsRUFBT2tCLENBQUMsQ0FBQ2EsQ0FBRCxDQUFELEdBQUtyQyxDQUFDLENBQUNxQyxDQUFELENBQU4sQ0FBUCxLQUFxQjtBQUFDLGtCQUFJUixDQUFDLEdBQUNMLENBQUMsQ0FBQ2EsQ0FBQyxHQUFDLENBQUgsQ0FBUDtBQUFhQSxjQUFBQSxDQUFDLEdBQUMvQixDQUFGLEdBQUlBLENBQUMsR0FBQyxDQUFGLElBQUsrQixDQUFDLEdBQUMvQixDQUFGLElBQUssQ0FBVixLQUFjdUIsQ0FBQyxHQUFDaEIsQ0FBQyxDQUFDZ0IsQ0FBQyxLQUFHLEVBQUwsQ0FBRCxJQUFXLEVBQVgsR0FBY2hCLENBQUMsQ0FBQ2dCLENBQUMsS0FBRyxFQUFKLEdBQU8sR0FBUixDQUFELElBQWUsRUFBN0IsR0FBZ0NoQixDQUFDLENBQUNnQixDQUFDLEtBQUcsQ0FBSixHQUFNLEdBQVAsQ0FBRCxJQUFjLENBQTlDLEdBQWdEaEIsQ0FBQyxDQUFDLE1BQUlnQixDQUFMLENBQWpFLENBQUosSUFBK0VBLENBQUMsR0FBQ0EsQ0FBQyxJQUFFLENBQUgsR0FBS0EsQ0FBQyxLQUFHLEVBQVgsRUFBY0EsQ0FBQyxHQUFDaEIsQ0FBQyxDQUFDZ0IsQ0FBQyxLQUFHLEVBQUwsQ0FBRCxJQUFXLEVBQVgsR0FBY2hCLENBQUMsQ0FBQ2dCLENBQUMsS0FBRyxFQUFKLEdBQU8sR0FBUixDQUFELElBQWUsRUFBN0IsR0FBZ0NoQixDQUFDLENBQUNnQixDQUFDLEtBQUcsQ0FBSixHQUFNLEdBQVAsQ0FBRCxJQUFjLENBQTlDLEdBQWdEaEIsQ0FBQyxDQUFDLE1BQUlnQixDQUFMLENBQWpFLEVBQXlFQSxDQUFDLElBQUVnRSxDQUFDLENBQUN4RCxDQUFDLEdBQUMvQixDQUFGLEdBQUksQ0FBTCxDQUFELElBQVUsRUFBckssR0FBeUtrQixDQUFDLENBQUNhLENBQUQsQ0FBRCxHQUFLYixDQUFDLENBQUNhLENBQUMsR0FBQy9CLENBQUgsQ0FBRCxHQUFPdUIsQ0FBckw7QUFBdUw7QUFBNVY7O0FBQTRWLGVBQUksSUFBSWdCLENBQUMsR0FBQyxLQUFLNE4sZUFBTCxHQUFxQixFQUEzQixFQUE4QnZOLENBQUMsR0FBQyxDQUFwQyxFQUFzQ0EsQ0FBQyxHQUFDdkMsQ0FBeEMsRUFBMEN1QyxDQUFDLEVBQTNDLEVBQThDO0FBQUMsZ0JBQUliLENBQUMsR0FBQzFCLENBQUMsR0FBQ3VDLENBQVI7QUFBVSxnQkFBR0EsQ0FBQyxHQUFDLENBQUwsRUFBTyxJQUFJckIsQ0FBQyxHQUFDTCxDQUFDLENBQUNhLENBQUQsQ0FBUCxDQUFQLEtBQXVCLElBQUlSLENBQUMsR0FBQ0wsQ0FBQyxDQUFDYSxDQUFDLEdBQUMsQ0FBSCxDQUFQO0FBQWFhLFlBQUFBLENBQUMsR0FBQyxDQUFGLElBQUtiLENBQUMsSUFBRSxDQUFSLEdBQVVRLENBQUMsQ0FBQ0ssQ0FBRCxDQUFELEdBQUtyQixDQUFmLEdBQWlCZ0IsQ0FBQyxDQUFDSyxDQUFELENBQUQsR0FBS08sQ0FBQyxDQUFDNUMsQ0FBQyxDQUFDZ0IsQ0FBQyxLQUFHLEVBQUwsQ0FBRixDQUFELEdBQWF3QyxDQUFDLENBQUN4RCxDQUFDLENBQUNnQixDQUFDLEtBQUcsRUFBSixHQUFPLEdBQVIsQ0FBRixDQUFkLEdBQThCOEQsQ0FBQyxDQUFDOUUsQ0FBQyxDQUFDZ0IsQ0FBQyxLQUFHLENBQUosR0FBTSxHQUFQLENBQUYsQ0FBL0IsR0FBOEMrRCxDQUFDLENBQUMvRSxDQUFDLENBQUMsTUFBSWdCLENBQUwsQ0FBRixDQUFyRTtBQUFnRjtBQUFDO0FBQUMsT0FBcGxCO0FBQXFsQndNLE1BQUFBLFlBQVksRUFBQyxzQkFBU3RPLENBQVQsRUFBV0MsQ0FBWCxFQUFhO0FBQUMsYUFBSzBRLGFBQUwsQ0FBbUIzUSxDQUFuQixFQUFxQkMsQ0FBckIsRUFBdUIsS0FBS3dRLFlBQTVCLEVBQXlDbk8sQ0FBekMsRUFBMkNSLENBQTNDLEVBQTZDZ0IsQ0FBN0MsRUFBK0NLLENBQS9DLEVBQWlEckMsQ0FBakQ7QUFBb0QsT0FBcHFCO0FBQXFxQnlOLE1BQUFBLFlBQVksRUFBQyxzQkFBU3ZPLENBQVQsRUFBV0MsQ0FBWCxFQUFhO0FBQUMsWUFBSU0sQ0FBQyxHQUFDUCxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQVA7QUFBYUQsUUFBQUEsQ0FBQyxDQUFDQyxDQUFDLEdBQUMsQ0FBSCxDQUFELEdBQU9ELENBQUMsQ0FBQ0MsQ0FBQyxHQUFDLENBQUgsQ0FBUixFQUFjRCxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQUQsR0FBT00sQ0FBckIsRUFBdUIsS0FBS29RLGFBQUwsQ0FBbUIzUSxDQUFuQixFQUFxQkMsQ0FBckIsRUFBdUIsS0FBS3lRLGVBQTVCLEVBQTRDaE4sQ0FBNUMsRUFBOENZLENBQTlDLEVBQWdEc0IsQ0FBaEQsRUFBa0RDLENBQWxELEVBQW9EcEUsQ0FBcEQsQ0FBdkI7QUFBOEUsWUFBSWxCLENBQUMsR0FBQ1AsQ0FBQyxDQUFDQyxDQUFDLEdBQUMsQ0FBSCxDQUFQO0FBQWFELFFBQUFBLENBQUMsQ0FBQ0MsQ0FBQyxHQUFDLENBQUgsQ0FBRCxHQUFPRCxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQVIsRUFBY0QsQ0FBQyxDQUFDQyxDQUFDLEdBQUMsQ0FBSCxDQUFELEdBQU9NLENBQXJCO0FBQXVCLE9BQS96QjtBQUFnMEJvUSxNQUFBQSxhQUFhLEVBQUMsdUJBQVMzUSxDQUFULEVBQVdDLENBQVgsRUFBYU0sQ0FBYixFQUFlSSxDQUFmLEVBQWlCQyxDQUFqQixFQUFtQkUsQ0FBbkIsRUFBcUJXLENBQXJCLEVBQXVCYSxDQUF2QixFQUF5QjtBQUFDLGFBQUksSUFBSVIsQ0FBQyxHQUFDLEtBQUt5TyxRQUFYLEVBQW9Cek4sQ0FBQyxHQUFDOUMsQ0FBQyxDQUFDQyxDQUFELENBQUQsR0FBS00sQ0FBQyxDQUFDLENBQUQsQ0FBNUIsRUFBZ0M0QyxDQUFDLEdBQUNuRCxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQUQsR0FBT00sQ0FBQyxDQUFDLENBQUQsQ0FBMUMsRUFBOENtRCxDQUFDLEdBQUMxRCxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQUQsR0FBT00sQ0FBQyxDQUFDLENBQUQsQ0FBeEQsRUFBNEQrRCxDQUFDLEdBQUN0RSxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQUQsR0FBT00sQ0FBQyxDQUFDLENBQUQsQ0FBdEUsRUFBMEVxRixDQUFDLEdBQUMsQ0FBNUUsRUFBOEVDLENBQUMsR0FBQyxDQUFwRixFQUFzRkEsQ0FBQyxHQUFDL0QsQ0FBeEYsRUFBMEYrRCxDQUFDLEVBQTNGLEVBQThGO0FBQUMsY0FBSUMsQ0FBQyxHQUFDbkYsQ0FBQyxDQUFDbUMsQ0FBQyxLQUFHLEVBQUwsQ0FBRCxHQUFVbEMsQ0FBQyxDQUFDdUMsQ0FBQyxLQUFHLEVBQUosR0FBTyxHQUFSLENBQVgsR0FBd0JyQyxDQUFDLENBQUM0QyxDQUFDLEtBQUcsQ0FBSixHQUFNLEdBQVAsQ0FBekIsR0FBcUNqQyxDQUFDLENBQUMsTUFBSTZDLENBQUwsQ0FBdEMsR0FBOEMvRCxDQUFDLENBQUNxRixDQUFDLEVBQUYsQ0FBckQ7QUFBQSxjQUEyREcsQ0FBQyxHQUFDcEYsQ0FBQyxDQUFDd0MsQ0FBQyxLQUFHLEVBQUwsQ0FBRCxHQUFVdkMsQ0FBQyxDQUFDOEMsQ0FBQyxLQUFHLEVBQUosR0FBTyxHQUFSLENBQVgsR0FBd0I1QyxDQUFDLENBQUN3RCxDQUFDLEtBQUcsQ0FBSixHQUFNLEdBQVAsQ0FBekIsR0FBcUM3QyxDQUFDLENBQUMsTUFBSXFCLENBQUwsQ0FBdEMsR0FBOEN2QyxDQUFDLENBQUNxRixDQUFDLEVBQUYsQ0FBNUc7QUFBQSxjQUFrSEksQ0FBQyxHQUFDckYsQ0FBQyxDQUFDK0MsQ0FBQyxLQUFHLEVBQUwsQ0FBRCxHQUFVOUMsQ0FBQyxDQUFDMEQsQ0FBQyxLQUFHLEVBQUosR0FBTyxHQUFSLENBQVgsR0FBd0J4RCxDQUFDLENBQUNnQyxDQUFDLEtBQUcsQ0FBSixHQUFNLEdBQVAsQ0FBekIsR0FBcUNyQixDQUFDLENBQUMsTUFBSTBCLENBQUwsQ0FBdEMsR0FBOEM1QyxDQUFDLENBQUNxRixDQUFDLEVBQUYsQ0FBbks7QUFBQSxjQUF5S0ssQ0FBQyxHQUFDdEYsQ0FBQyxDQUFDMkQsQ0FBQyxLQUFHLEVBQUwsQ0FBRCxHQUFVMUQsQ0FBQyxDQUFDa0MsQ0FBQyxLQUFHLEVBQUosR0FBTyxHQUFSLENBQVgsR0FBd0JoQyxDQUFDLENBQUNxQyxDQUFDLEtBQUcsQ0FBSixHQUFNLEdBQVAsQ0FBekIsR0FBcUMxQixDQUFDLENBQUMsTUFBSWlDLENBQUwsQ0FBdEMsR0FBOENuRCxDQUFDLENBQUNxRixDQUFDLEVBQUYsQ0FBMU47O0FBQWdPOUMsVUFBQUEsQ0FBQyxHQUFDZ0QsQ0FBRixFQUFJM0MsQ0FBQyxHQUFDNEMsQ0FBTixFQUFRckMsQ0FBQyxHQUFDc0MsQ0FBVixFQUFZMUIsQ0FBQyxHQUFDMkIsQ0FBZDtBQUFnQjs7QUFBQSxZQUFJSCxDQUFDLEdBQUMsQ0FBQ3hELENBQUMsQ0FBQ1EsQ0FBQyxLQUFHLEVBQUwsQ0FBRCxJQUFXLEVBQVgsR0FBY1IsQ0FBQyxDQUFDYSxDQUFDLEtBQUcsRUFBSixHQUFPLEdBQVIsQ0FBRCxJQUFlLEVBQTdCLEdBQWdDYixDQUFDLENBQUNvQixDQUFDLEtBQUcsQ0FBSixHQUFNLEdBQVAsQ0FBRCxJQUFjLENBQTlDLEdBQWdEcEIsQ0FBQyxDQUFDLE1BQUlnQyxDQUFMLENBQWxELElBQTJEL0QsQ0FBQyxDQUFDcUYsQ0FBQyxFQUFGLENBQWxFO0FBQUEsWUFBd0VHLENBQUMsR0FBQyxDQUFDekQsQ0FBQyxDQUFDYSxDQUFDLEtBQUcsRUFBTCxDQUFELElBQVcsRUFBWCxHQUFjYixDQUFDLENBQUNvQixDQUFDLEtBQUcsRUFBSixHQUFPLEdBQVIsQ0FBRCxJQUFlLEVBQTdCLEdBQWdDcEIsQ0FBQyxDQUFDZ0MsQ0FBQyxLQUFHLENBQUosR0FBTSxHQUFQLENBQUQsSUFBYyxDQUE5QyxHQUFnRGhDLENBQUMsQ0FBQyxNQUFJUSxDQUFMLENBQWxELElBQTJEdkMsQ0FBQyxDQUFDcUYsQ0FBQyxFQUFGLENBQXRJO0FBQUEsWUFBNElJLENBQUMsR0FBQyxDQUFDMUQsQ0FBQyxDQUFDb0IsQ0FBQyxLQUFHLEVBQUwsQ0FBRCxJQUFXLEVBQVgsR0FBY3BCLENBQUMsQ0FBQ2dDLENBQUMsS0FBRyxFQUFKLEdBQU8sR0FBUixDQUFELElBQWUsRUFBN0IsR0FBZ0NoQyxDQUFDLENBQUNRLENBQUMsS0FBRyxDQUFKLEdBQU0sR0FBUCxDQUFELElBQWMsQ0FBOUMsR0FBZ0RSLENBQUMsQ0FBQyxNQUFJYSxDQUFMLENBQWxELElBQTJENUMsQ0FBQyxDQUFDcUYsQ0FBQyxFQUFGLENBQTFNO0FBQUEsWUFBZ05LLENBQUMsR0FBQyxDQUFDM0QsQ0FBQyxDQUFDZ0MsQ0FBQyxLQUFHLEVBQUwsQ0FBRCxJQUFXLEVBQVgsR0FBY2hDLENBQUMsQ0FBQ1EsQ0FBQyxLQUFHLEVBQUosR0FBTyxHQUFSLENBQUQsSUFBZSxFQUE3QixHQUFnQ1IsQ0FBQyxDQUFDYSxDQUFDLEtBQUcsQ0FBSixHQUFNLEdBQVAsQ0FBRCxJQUFjLENBQTlDLEdBQWdEYixDQUFDLENBQUMsTUFBSW9CLENBQUwsQ0FBbEQsSUFBMkRuRCxDQUFDLENBQUNxRixDQUFDLEVBQUYsQ0FBOVE7O0FBQW9SNUYsUUFBQUEsQ0FBQyxDQUFDQyxDQUFELENBQUQsR0FBSzZGLENBQUwsRUFBTzlGLENBQUMsQ0FBQ0MsQ0FBQyxHQUFDLENBQUgsQ0FBRCxHQUFPOEYsQ0FBZCxFQUFnQi9GLENBQUMsQ0FBQ0MsQ0FBQyxHQUFDLENBQUgsQ0FBRCxHQUFPK0YsQ0FBdkIsRUFBeUJoRyxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQUQsR0FBT2dHLENBQWhDO0FBQWtDLE9BQTcrQztBQUE4K0MrQyxNQUFBQSxPQUFPLEVBQUM7QUFBdC9DLEtBQVQsQ0FBN0M7O0FBQWdqRC9JLElBQUFBLENBQUMsQ0FBQ3FRLEdBQUYsR0FBTTNQLENBQUMsQ0FBQ21FLGFBQUYsQ0FBZ0JpQixDQUFoQixDQUFOO0FBQXlCLEdBQXZrRSxFQUE1N3lCLEVBQXNnM0IsWUFBVTtBQUFDLGFBQVM5RixDQUFULENBQVdELENBQVgsRUFBYUMsQ0FBYixFQUFlO0FBQUMsVUFBSU0sQ0FBQyxHQUFDLENBQUMsS0FBS3FRLE9BQUwsS0FBZTVRLENBQWYsR0FBaUIsS0FBSzZRLE9BQXZCLElBQWdDNVEsQ0FBdEM7QUFBd0MsV0FBSzRRLE9BQUwsSUFBY3RRLENBQWQsRUFBZ0IsS0FBS3FRLE9BQUwsSUFBY3JRLENBQUMsSUFBRVAsQ0FBakM7QUFBbUM7O0FBQUEsYUFBU08sQ0FBVCxDQUFXUCxDQUFYLEVBQWFDLENBQWIsRUFBZTtBQUFDLFVBQUlNLENBQUMsR0FBQyxDQUFDLEtBQUtzUSxPQUFMLEtBQWU3USxDQUFmLEdBQWlCLEtBQUs0USxPQUF2QixJQUFnQzNRLENBQXRDO0FBQXdDLFdBQUsyUSxPQUFMLElBQWNyUSxDQUFkLEVBQWdCLEtBQUtzUSxPQUFMLElBQWN0USxDQUFDLElBQUVQLENBQWpDO0FBQ3B1K0I7O0FBQUEsUUFBSVcsQ0FBQyxHQUFDWCxDQUFOO0FBQUEsUUFBUVksQ0FBQyxHQUFDRCxDQUFDLENBQUNFLEdBQVo7QUFBQSxRQUFnQkMsQ0FBQyxHQUFDRixDQUFDLENBQUNjLFNBQXBCO0FBQUEsUUFBOEJELENBQUMsR0FBQ2IsQ0FBQyxDQUFDK04sV0FBbEM7QUFBQSxRQUE4Q3JNLENBQUMsR0FBQzNCLENBQUMsQ0FBQ3NFLElBQWxEO0FBQUEsUUFBdURuRCxDQUFDLEdBQUMsQ0FBQyxFQUFELEVBQUksRUFBSixFQUFPLEVBQVAsRUFBVSxFQUFWLEVBQWEsRUFBYixFQUFnQixFQUFoQixFQUFtQixDQUFuQixFQUFxQixDQUFyQixFQUF1QixFQUF2QixFQUEwQixFQUExQixFQUE2QixFQUE3QixFQUFnQyxFQUFoQyxFQUFtQyxFQUFuQyxFQUFzQyxFQUF0QyxFQUF5QyxFQUF6QyxFQUE0QyxDQUE1QyxFQUE4QyxFQUE5QyxFQUFpRCxFQUFqRCxFQUFvRCxFQUFwRCxFQUF1RCxFQUF2RCxFQUEwRCxFQUExRCxFQUE2RCxFQUE3RCxFQUFnRSxFQUFoRSxFQUFtRSxDQUFuRSxFQUFxRSxFQUFyRSxFQUF3RSxFQUF4RSxFQUEyRSxFQUEzRSxFQUE4RSxFQUE5RSxFQUFpRixFQUFqRixFQUFvRixFQUFwRixFQUF1RixFQUF2RixFQUEwRixFQUExRixFQUE2RixFQUE3RixFQUFnRyxFQUFoRyxFQUFtRyxFQUFuRyxFQUFzRyxDQUF0RyxFQUF3RyxFQUF4RyxFQUEyRyxFQUEzRyxFQUE4RyxFQUE5RyxFQUFpSCxFQUFqSCxFQUFvSCxFQUFwSCxFQUF1SCxFQUF2SCxFQUEwSCxFQUExSCxFQUE2SCxDQUE3SCxFQUErSCxFQUEvSCxFQUFrSSxFQUFsSSxFQUFxSSxFQUFySSxFQUF3SSxFQUF4SSxFQUEySSxFQUEzSSxFQUE4SSxFQUE5SSxFQUFpSixFQUFqSixFQUFvSixDQUFwSixFQUFzSixFQUF0SixFQUF5SixFQUF6SixFQUE0SixFQUE1SixFQUErSixDQUEvSixDQUF6RDtBQUFBLFFBQTJOZ0IsQ0FBQyxHQUFDLENBQUMsRUFBRCxFQUFJLEVBQUosRUFBTyxFQUFQLEVBQVUsRUFBVixFQUFhLENBQWIsRUFBZSxDQUFmLEVBQWlCLENBQWpCLEVBQW1CLEVBQW5CLEVBQXNCLEVBQXRCLEVBQXlCLENBQXpCLEVBQTJCLEVBQTNCLEVBQThCLEVBQTlCLEVBQWlDLEVBQWpDLEVBQW9DLEVBQXBDLEVBQXVDLEVBQXZDLEVBQTBDLENBQTFDLEVBQTRDLEVBQTVDLEVBQStDLENBQS9DLEVBQWlELEVBQWpELEVBQW9ELENBQXBELEVBQXNELEVBQXRELEVBQXlELEVBQXpELEVBQTRELEVBQTVELEVBQStELENBQS9ELEVBQWlFLEVBQWpFLEVBQW9FLEVBQXBFLEVBQXVFLEVBQXZFLEVBQTBFLEVBQTFFLEVBQTZFLEVBQTdFLEVBQWdGLEVBQWhGLEVBQW1GLEVBQW5GLEVBQXNGLEVBQXRGLEVBQXlGLEVBQXpGLEVBQTRGLEVBQTVGLEVBQStGLEVBQS9GLEVBQWtHLEVBQWxHLEVBQXFHLEVBQXJHLEVBQXdHLEVBQXhHLEVBQTJHLEVBQTNHLEVBQThHLEVBQTlHLEVBQWlILEVBQWpILEVBQW9ILEVBQXBILEVBQXVILEVBQXZILEVBQTBILEVBQTFILEVBQTZILEVBQTdILEVBQWdJLEVBQWhJLEVBQW1JLEVBQW5JLEVBQXNJLEVBQXRJLENBQTdOO0FBQUEsUUFBdVdLLENBQUMsR0FBQyxDQUFDLENBQUQsRUFBRyxDQUFILEVBQUssQ0FBTCxFQUFPLENBQVAsRUFBUyxDQUFULEVBQVcsRUFBWCxFQUFjLEVBQWQsRUFBaUIsRUFBakIsRUFBb0IsRUFBcEIsRUFBdUIsRUFBdkIsRUFBMEIsRUFBMUIsRUFBNkIsRUFBN0IsRUFBZ0MsRUFBaEMsRUFBbUMsRUFBbkMsRUFBc0MsRUFBdEMsRUFBeUMsRUFBekMsQ0FBelc7QUFBQSxRQUFzWk8sQ0FBQyxHQUFDLENBQUM7QUFBQyxTQUFFLE9BQUg7QUFBVyxpQkFBVSxLQUFyQjtBQUEyQixpQkFBVSxPQUFyQztBQUE2QyxpQkFBVSxDQUF2RDtBQUF5RCxrQkFBVyxHQUFwRTtBQUF3RSxrQkFBVyxPQUFuRjtBQUEyRixrQkFBVyxPQUF0RztBQUE4RyxrQkFBVyxPQUF6SDtBQUFpSSxrQkFBVyxHQUE1STtBQUFnSixrQkFBVyxPQUEzSjtBQUFtSyxrQkFBVyxLQUE5SztBQUFvTCxrQkFBVyxPQUEvTDtBQUF1TSxrQkFBVyxLQUFsTjtBQUF3TixrQkFBVyxPQUFuTztBQUEyTyxrQkFBVyxDQUF0UDtBQUF3UCxrQkFBVyxLQUFuUTtBQUF5USxpQkFBVSxDQUFuUjtBQUFxUixpQkFBVSxPQUEvUjtBQUF1UyxpQkFBVSxLQUFqVDtBQUF1VCxpQkFBVSxLQUFqVTtBQUF1VSxrQkFBVyxPQUFsVjtBQUEwVixrQkFBVyxHQUFyVztBQUF5VyxrQkFBVyxPQUFwWDtBQUE0WCxrQkFBVyxDQUF2WTtBQUF5WSxrQkFBVyxPQUFwWjtBQUE0WixrQkFBVyxLQUF2YTtBQUE2YSxrQkFBVyxPQUF4YjtBQUFnYyxrQkFBVyxPQUEzYztBQUFtZCxrQkFBVyxPQUE5ZDtBQUFzZSxrQkFBVyxLQUFqZjtBQUF1ZixrQkFBVyxHQUFsZ0I7QUFBc2dCLGtCQUFXLE9BQWpoQjtBQUF5aEIsU0FBRSxLQUEzaEI7QUFBaWlCLGlCQUFVLENBQTNpQjtBQUE2aUIsaUJBQVUsT0FBdmpCO0FBQStqQixpQkFBVSxPQUF6a0I7QUFBaWxCLGtCQUFXLE9BQTVsQjtBQUFvbUIsa0JBQVcsS0FBL21CO0FBQXFuQixrQkFBVyxHQUFob0I7QUFBb29CLGtCQUFXLE9BQS9vQjtBQUF1cEIsa0JBQVcsT0FBbHFCO0FBQTBxQixrQkFBVyxPQUFyckI7QUFBNnJCLGtCQUFXLE9BQXhzQjtBQUFndEIsa0JBQVcsS0FBM3RCO0FBQWl1QixrQkFBVyxHQUE1dUI7QUFBZ3ZCLGtCQUFXLE9BQTN2QjtBQUFtd0Isa0JBQVcsS0FBOXdCO0FBQW94QixrQkFBVyxDQUEveEI7QUFBaXlCLGlCQUFVLE9BQTN5QjtBQUFtekIsaUJBQVUsT0FBN3pCO0FBQXEwQixpQkFBVSxPQUEvMEI7QUFBdTFCLGlCQUFVLEdBQWoyQjtBQUFxMkIsa0JBQVcsS0FBaDNCO0FBQXMzQixrQkFBVyxPQUFqNEI7QUFBeTRCLGtCQUFXLENBQXA1QjtBQUFzNUIsa0JBQVcsS0FBajZCO0FBQXU2QixrQkFBVyxLQUFsN0I7QUFBdzdCLGtCQUFXLE9BQW44QjtBQUEyOEIsa0JBQVcsR0FBdDlCO0FBQTA5QixrQkFBVyxPQUFyK0I7QUFBNitCLGtCQUFXLE9BQXgvQjtBQUFnZ0Msa0JBQVcsQ0FBM2dDO0FBQTZnQyxrQkFBVyxLQUF4aEM7QUFBOGhDLGtCQUFXO0FBQXppQyxLQUFELEVBQW1qQztBQUFDLFNBQUUsVUFBSDtBQUFjLGdCQUFTLEtBQXZCO0FBQTZCLGdCQUFTLE1BQXRDO0FBQTZDLGdCQUFTLFVBQXREO0FBQWlFLGdCQUFTLFVBQTFFO0FBQXFGLGdCQUFTLFVBQTlGO0FBQXlHLGlCQUFVLFVBQW5IO0FBQThILGlCQUFVLEVBQXhJO0FBQTJJLGlCQUFVLE1BQXJKO0FBQTRKLGlCQUFVLFVBQXRLO0FBQWlMLGlCQUFVLFVBQTNMO0FBQXNNLGlCQUFVLE1BQWhOO0FBQXVOLGlCQUFVLE1BQWpPO0FBQXdPLGlCQUFVLENBQWxQO0FBQW9QLGlCQUFVLEtBQTlQO0FBQW9RLGlCQUFVLFVBQTlRO0FBQXlSLGVBQVEsVUFBalM7QUFBNFMsZ0JBQVMsTUFBclQ7QUFBNFQsZ0JBQVMsRUFBclU7QUFBd1UsZ0JBQVMsVUFBalY7QUFBNFYsZ0JBQVMsVUFBclc7QUFBZ1gsZ0JBQVMsVUFBelg7QUFBb1ksaUJBQVUsTUFBOVk7QUFBcVosaUJBQVUsVUFBL1o7QUFBMGEsaUJBQVUsTUFBcGI7QUFBMmIsaUJBQVUsQ0FBcmM7QUFBdWMsaUJBQVUsS0FBamQ7QUFBdWQsaUJBQVUsVUFBamU7QUFBNGUsaUJBQVUsVUFBdGY7QUFBaWdCLGlCQUFVLE1BQTNnQjtBQUFraEIsaUJBQVUsVUFBNWhCO0FBQXVpQixpQkFBVSxLQUFqakI7QUFBdWpCLGlCQUFVLENBQWprQjtBQUFta0IsaUJBQVUsVUFBN2tCO0FBQXdsQixpQkFBVSxVQUFsbUI7QUFBNm1CLGlCQUFVLFVBQXZuQjtBQUFrb0IsaUJBQVUsVUFBNW9CO0FBQXVwQixpQkFBVSxFQUFqcUI7QUFBb3FCLGlCQUFVLE1BQTlxQjtBQUFxckIsaUJBQVUsS0FBL3JCO0FBQXFzQixpQkFBVSxLQUEvc0I7QUFBcXRCLGlCQUFVLE1BQS90QjtBQUFzdUIsaUJBQVUsTUFBaHZCO0FBQXV2QixpQkFBVSxVQUFqd0I7QUFBNHdCLGlCQUFVLE1BQXR4QjtBQUE2eEIsaUJBQVUsVUFBdnlCO0FBQWt6QixpQkFBVSxVQUE1ekI7QUFBdTBCLGlCQUFVLFVBQWoxQjtBQUE0MUIsaUJBQVUsTUFBdDJCO0FBQTYyQixpQkFBVSxNQUF2M0I7QUFBODNCLGlCQUFVLFVBQXg0QjtBQUFtNUIsaUJBQVUsS0FBNzVCO0FBQW02QixpQkFBVSxVQUE3NkI7QUFBdzdCLGlCQUFVLFVBQWw4QjtBQUE2OEIsaUJBQVUsRUFBdjlCO0FBQTA5QixpQkFBVSxVQUFwK0I7QUFBKytCLGlCQUFVLFVBQXovQjtBQUFvZ0MsaUJBQVUsVUFBOWdDO0FBQXloQyxpQkFBVSxVQUFuaUM7QUFBOGlDLGlCQUFVLE1BQXhqQztBQUErakMsaUJBQVUsQ0FBemtDO0FBQTJrQyxpQkFBVSxLQUFybEM7QUFBMmxDLGlCQUFVLFVBQXJtQztBQUFnbkMsaUJBQVU7QUFBMW5DLEtBQW5qQyxFQUFxckU7QUFBQyxTQUFFLEdBQUg7QUFBTyxlQUFRLENBQWY7QUFBaUIsZUFBUSxRQUF6QjtBQUFrQyxlQUFRLEtBQTFDO0FBQWdELGVBQVEsS0FBeEQ7QUFBOEQsZUFBUSxRQUF0RTtBQUErRSxlQUFRLFFBQXZGO0FBQWdHLGVBQVEsUUFBeEc7QUFBaUgsZUFBUSxRQUF6SDtBQUFrSSxlQUFRLFFBQTFJO0FBQW1KLGdCQUFTLEtBQTVKO0FBQWtLLGdCQUFTLFFBQTNLO0FBQW9MLGdCQUFTLFFBQTdMO0FBQXNNLGdCQUFTLEtBQS9NO0FBQXFOLGdCQUFTLENBQTlOO0FBQWdPLGdCQUFTLEdBQXpPO0FBQTZPLGNBQU8sUUFBcFA7QUFBNlAsZUFBUSxRQUFyUTtBQUE4USxlQUFRLENBQXRSO0FBQXdSLGVBQVEsUUFBaFM7QUFBeVMsZUFBUSxRQUFqVDtBQUEwVCxlQUFRLEtBQWxVO0FBQXdVLGVBQVEsS0FBaFY7QUFBc1YsZUFBUSxHQUE5VjtBQUFrVyxlQUFRLENBQTFXO0FBQTRXLGVBQVEsR0FBcFg7QUFBd1gsZ0JBQVMsUUFBalk7QUFBMFksZ0JBQVMsS0FBblo7QUFBeVosZ0JBQVMsS0FBbGE7QUFBd2EsZ0JBQVMsUUFBamI7QUFBMGIsZ0JBQVMsUUFBbmM7QUFBNGMsZ0JBQVMsUUFBcmQ7QUFBOGQsZ0JBQVMsUUFBdmU7QUFBZ2YsZ0JBQVMsS0FBemY7QUFBK2YsZ0JBQVMsS0FBeGdCO0FBQThnQixnQkFBUyxRQUF2aEI7QUFBZ2lCLGdCQUFTLEdBQXppQjtBQUE2aUIsZ0JBQVMsUUFBdGpCO0FBQStqQixnQkFBUyxRQUF4a0I7QUFBaWxCLGdCQUFTLENBQTFsQjtBQUE0bEIsZ0JBQVMsUUFBcm1CO0FBQThtQixnQkFBUyxRQUF2bkI7QUFBZ29CLGdCQUFTLENBQXpvQjtBQUEyb0IsZ0JBQVMsS0FBcHBCO0FBQTBwQixnQkFBUyxRQUFucUI7QUFBNHFCLGdCQUFTLEdBQXJyQjtBQUF5ckIsZ0JBQVMsS0FBbHNCO0FBQXdzQixnQkFBUyxRQUFqdEI7QUFBMHRCLGdCQUFTLFFBQW51QjtBQUE0dUIsZ0JBQVMsR0FBcnZCO0FBQXl2QixnQkFBUyxRQUFsd0I7QUFBMndCLGdCQUFTLENBQXB4QjtBQUFzeEIsZ0JBQVMsS0FBL3hCO0FBQXF5QixnQkFBUyxRQUE5eUI7QUFBdXpCLGdCQUFTLEdBQWgwQjtBQUFvMEIsZ0JBQVMsUUFBNzBCO0FBQXMxQixnQkFBUyxLQUEvMUI7QUFBcTJCLGdCQUFTLFFBQTkyQjtBQUF1M0IsZ0JBQVMsS0FBaDRCO0FBQXM0QixnQkFBUyxRQUEvNEI7QUFBdzVCLGdCQUFTLFFBQWo2QjtBQUEwNkIsZ0JBQVMsUUFBbjdCO0FBQTQ3QixnQkFBUyxDQUFyOEI7QUFBdThCLGdCQUFTO0FBQWg5QixLQUFyckUsRUFBNG9HO0FBQUMsU0FBRSxVQUFIO0FBQWMsYUFBTSxVQUFwQjtBQUErQixjQUFPLE9BQXRDO0FBQThDLGNBQU8sVUFBckQ7QUFBZ0UsY0FBTyxDQUF2RTtBQUF5RSxjQUFPLE9BQWhGO0FBQXdGLGNBQU8sVUFBL0Y7QUFBMEcsY0FBTyxPQUFqSDtBQUF5SCxjQUFPLFVBQWhJO0FBQTJJLGNBQU8sT0FBbEo7QUFBMEosY0FBTyxFQUFqSztBQUFvSyxjQUFPLFVBQTNLO0FBQXNMLGNBQU8sVUFBN0w7QUFBd00sY0FBTyxJQUEvTTtBQUFvTixjQUFPLElBQTNOO0FBQWdPLGNBQU8sVUFBdk87QUFBa1AsYUFBTSxVQUF4UDtBQUFtUSxhQUFNLEVBQXpRO0FBQTRRLGNBQU8sVUFBblI7QUFBOFIsY0FBTyxVQUFyUztBQUFnVCxjQUFPLE9BQXZUO0FBQStULGNBQU8sVUFBdFU7QUFBaVYsY0FBTyxDQUF4VjtBQUEwVixjQUFPLFVBQWpXO0FBQTRXLGNBQU8sSUFBblg7QUFBd1gsY0FBTyxVQUEvWDtBQUEwWSxjQUFPLE9BQWpaO0FBQXlaLGNBQU8sSUFBaGE7QUFBcWEsY0FBTyxVQUE1YTtBQUF1YixjQUFPLE9BQTliO0FBQXNjLGNBQU8sT0FBN2M7QUFBcWQsZUFBUSxVQUE3ZDtBQUF3ZSxlQUFRLE9BQWhmO0FBQXdmLGVBQVEsT0FBaGdCO0FBQXdnQixlQUFRLFVBQWhoQjtBQUEyaEIsZUFBUSxDQUFuaUI7QUFBcWlCLGVBQVEsSUFBN2lCO0FBQWtqQixlQUFRLFVBQTFqQjtBQUFxa0IsZUFBUSxVQUE3a0I7QUFBd2xCLGVBQVEsVUFBaG1CO0FBQTJtQixlQUFRLFVBQW5uQjtBQUE4bkIsZUFBUSxVQUF0b0I7QUFBaXBCLGVBQVEsVUFBenBCO0FBQW9xQixlQUFRLE9BQTVxQjtBQUFvckIsZUFBUSxVQUE1ckI7QUFBdXNCLGVBQVEsT0FBL3NCO0FBQXV0QixlQUFRLEVBQS90QjtBQUFrdUIsZUFBUSxJQUExdUI7QUFBK3VCLGVBQVEsVUFBdnZCO0FBQWt3QixlQUFRLFVBQTF3QjtBQUFxeEIsZUFBUSxDQUE3eEI7QUFBK3hCLGVBQVEsT0FBdnlCO0FBQSt5QixlQUFRLE9BQXZ6QjtBQUErekIsZUFBUSxVQUF2MEI7QUFBazFCLGVBQVEsVUFBMTFCO0FBQXEyQixlQUFRLEVBQTcyQjtBQUFnM0IsZUFBUSxVQUF4M0I7QUFBbTRCLGVBQVEsSUFBMzRCO0FBQWc1QixlQUFRLFVBQXg1QjtBQUFtNkIsZUFBUSxVQUEzNkI7QUFBczdCLGVBQVEsSUFBOTdCO0FBQW04QixlQUFRLFVBQTM4QjtBQUFzOUIsZUFBUSxPQUE5OUI7QUFBcytCLGVBQVE7QUFBOStCLEtBQTVvRyxFQUFtb0k7QUFBQyxTQUFFLEdBQUg7QUFBTyxZQUFLLFFBQVo7QUFBcUIsWUFBSyxNQUExQjtBQUFpQyxhQUFNLFNBQXZDO0FBQWlELGFBQU0sU0FBdkQ7QUFBaUUsYUFBTSxRQUF2RTtBQUFnRixhQUFNLFNBQXRGO0FBQWdHLGFBQU0sTUFBdEc7QUFBNkcsYUFBTSxRQUFuSDtBQUE0SCxhQUFNLFNBQWxJO0FBQTRJLGFBQU0sU0FBbEo7QUFBNEosYUFBTSxTQUFsSztBQUE0SyxhQUFNLFNBQWxMO0FBQTRMLGFBQU0sQ0FBbE07QUFBb00sYUFBTSxRQUExTTtBQUFtTixhQUFNLFNBQXpOO0FBQW1PLFlBQUssUUFBeE87QUFBaVAsWUFBSyxTQUF0UDtBQUFnUSxhQUFNLEdBQXRRO0FBQTBRLGFBQU0sUUFBaFI7QUFBeVIsYUFBTSxNQUEvUjtBQUFzUyxhQUFNLFNBQTVTO0FBQXNULGFBQU0sU0FBNVQ7QUFBc1UsYUFBTSxTQUE1VTtBQUFzVixhQUFNLFNBQTVWO0FBQXNXLGFBQU0sQ0FBNVc7QUFBOFcsYUFBTSxTQUFwWDtBQUE4WCxhQUFNLFFBQXBZO0FBQTZZLGFBQU0sU0FBblo7QUFBNlosYUFBTSxTQUFuYTtBQUE2YSxhQUFNLFFBQW5iO0FBQTRiLGFBQU0sTUFBbGM7QUFBeWMsYUFBTSxNQUEvYztBQUFzZCxhQUFNLEdBQTVkO0FBQWdlLGFBQU0sU0FBdGU7QUFBZ2YsYUFBTSxTQUF0ZjtBQUFnZ0IsYUFBTSxRQUF0Z0I7QUFBK2dCLGFBQU0sU0FBcmhCO0FBQStoQixhQUFNLFNBQXJpQjtBQUEraUIsYUFBTSxRQUFyakI7QUFBOGpCLGFBQU0sU0FBcGtCO0FBQThrQixjQUFPLFNBQXJsQjtBQUErbEIsY0FBTyxRQUF0bUI7QUFBK21CLGNBQU8sU0FBdG5CO0FBQWdvQixjQUFPLE1BQXZvQjtBQUE4b0IsY0FBTyxTQUFycEI7QUFBK3BCLGNBQU8sQ0FBdHFCO0FBQXdxQixjQUFPLFFBQS9xQjtBQUF3ckIsYUFBTSxTQUE5ckI7QUFBd3NCLGFBQU0sUUFBOXNCO0FBQXV0QixhQUFNLFFBQTd0QjtBQUFzdUIsYUFBTSxTQUE1dUI7QUFBc3ZCLGFBQU0sU0FBNXZCO0FBQXN3QixhQUFNLFFBQTV3QjtBQUFxeEIsYUFBTSxHQUEzeEI7QUFBK3hCLGFBQU0sU0FBcnlCO0FBQSt5QixjQUFPLE1BQXR6QjtBQUE2ekIsY0FBTyxTQUFwMEI7QUFBODBCLGNBQU8sQ0FBcjFCO0FBQXUxQixjQUFPLFNBQTkxQjtBQUF3MkIsY0FBTyxRQUEvMkI7QUFBdzNCLGNBQU8sTUFBLzNCO0FBQXM0QixjQUFPLFNBQTc0QjtBQUF1NUIsY0FBTztBQUE5NUIsS0FBbm9JLEVBQTRpSztBQUFDLFNBQUUsU0FBSDtBQUFhLFdBQUksSUFBakI7QUFBc0IsV0FBSSxTQUExQjtBQUFvQyxXQUFJLFNBQXhDO0FBQWtELFlBQUssU0FBdkQ7QUFBaUUsWUFBSyxPQUF0RTtBQUE4RSxZQUFLLE9BQW5GO0FBQTJGLFlBQUssU0FBaEc7QUFBMEcsWUFBSyxDQUEvRztBQUFpSCxZQUFLLFNBQXRIO0FBQWdJLFlBQUssT0FBckk7QUFBNkksWUFBSyxDQUFsSjtBQUFvSixZQUFLLFNBQXpKO0FBQW1LLFlBQUssT0FBeEs7QUFBZ0wsWUFBSyxJQUFyTDtBQUEwTCxZQUFLLFNBQS9MO0FBQXlNLFdBQUksU0FBN007QUFBdU4sV0FBSSxTQUEzTjtBQUFxTyxXQUFJLENBQXpPO0FBQTJPLFdBQUksT0FBL087QUFBdVAsWUFBSyxPQUE1UDtBQUFvUSxZQUFLLFNBQXpRO0FBQW1SLFlBQUssU0FBeFI7QUFBa1MsWUFBSyxJQUF2UztBQUE0UyxZQUFLLE9BQWpUO0FBQXlULFlBQUssSUFBOVQ7QUFBbVUsWUFBSyxTQUF4VTtBQUFrVixZQUFLLFNBQXZWO0FBQWlXLFlBQUssQ0FBdFc7QUFBd1csWUFBSyxTQUE3VztBQUF1WCxZQUFLLE9BQTVYO0FBQW9ZLFlBQUssU0FBelk7QUFBbVosWUFBSyxTQUF4WjtBQUFrYSxZQUFLLFNBQXZhO0FBQWliLFlBQUssU0FBdGI7QUFBZ2MsWUFBSyxJQUFyYztBQUEwYyxZQUFLLE9BQS9jO0FBQXVkLFlBQUssU0FBNWQ7QUFBc2UsWUFBSyxTQUEzZTtBQUFxZixZQUFLLE9BQTFmO0FBQWtnQixZQUFLLE9BQXZnQjtBQUErZ0IsWUFBSyxDQUFwaEI7QUFBc2hCLFlBQUssQ0FBM2hCO0FBQTZoQixZQUFLLFNBQWxpQjtBQUE0aUIsWUFBSyxJQUFqakI7QUFBc2pCLFlBQUssU0FBM2pCO0FBQXFrQixZQUFLLFNBQTFrQjtBQUFvbEIsWUFBSyxPQUF6bEI7QUFBaW1CLFlBQUssQ0FBdG1CO0FBQXdtQixZQUFLLE9BQTdtQjtBQUFxbkIsWUFBSyxPQUExbkI7QUFBa29CLFlBQUssU0FBdm9CO0FBQWlwQixZQUFLLFNBQXRwQjtBQUFncUIsWUFBSyxJQUFycUI7QUFBMHFCLFlBQUssU0FBL3FCO0FBQXlyQixZQUFLLFNBQTlyQjtBQUF3c0IsWUFBSyxTQUE3c0I7QUFBdXRCLFlBQUssU0FBNXRCO0FBQXN1QixZQUFLLElBQTN1QjtBQUFndkIsWUFBSyxPQUFydkI7QUFBNnZCLFlBQUssT0FBbHdCO0FBQTB3QixZQUFLLENBQS93QjtBQUFpeEIsWUFBSyxTQUF0eEI7QUFBZ3lCLFlBQUs7QUFBcnlCLEtBQTVpSyxFQUE0MUw7QUFBQyxTQUFFLE9BQUg7QUFBVyxVQUFHLFFBQWQ7QUFBdUIsVUFBRyxJQUExQjtBQUErQixVQUFHLE9BQWxDO0FBQTBDLFVBQUcsUUFBN0M7QUFBc0QsVUFBRyxDQUF6RDtBQUEyRCxVQUFHLENBQTlEO0FBQWdFLFdBQUksUUFBcEU7QUFBNkUsV0FBSSxRQUFqRjtBQUEwRixXQUFJLE9BQTlGO0FBQXNHLFdBQUksUUFBMUc7QUFBbUgsV0FBSSxRQUF2SDtBQUFnSSxXQUFJLFFBQXBJO0FBQTZJLFdBQUksSUFBako7QUFBc0osV0FBSSxPQUExSjtBQUFrSyxXQUFJLFFBQXRLO0FBQStLLFNBQUUsUUFBakw7QUFBMEwsVUFBRyxDQUE3TDtBQUErTCxVQUFHLFFBQWxNO0FBQTJNLFVBQUcsUUFBOU07QUFBdU4sVUFBRyxPQUExTjtBQUFrTyxVQUFHLFFBQXJPO0FBQThPLFdBQUksUUFBbFA7QUFBMlAsV0FBSSxJQUEvUDtBQUFvUSxXQUFJLE9BQXhRO0FBQWdSLFdBQUksUUFBcFI7QUFBNlIsV0FBSSxRQUFqUztBQUEwUyxXQUFJLE9BQTlTO0FBQXNULFdBQUksSUFBMVQ7QUFBK1QsV0FBSSxRQUFuVTtBQUE0VSxXQUFJLENBQWhWO0FBQWtWLFdBQUksT0FBdFY7QUFBOFYsV0FBSSxRQUFsVztBQUEyVyxXQUFJLE9BQS9XO0FBQXVYLFdBQUksUUFBM1g7QUFBb1ksV0FBSSxRQUF4WTtBQUFpWixXQUFJLE9BQXJaO0FBQTZaLFdBQUksUUFBamE7QUFBMGEsV0FBSSxRQUE5YTtBQUF1YixXQUFJLE9BQTNiO0FBQW1jLFdBQUksSUFBdmM7QUFBNGMsV0FBSSxRQUFoZDtBQUF5ZCxXQUFJLE9BQTdkO0FBQXFlLFdBQUksQ0FBemU7QUFBMmUsV0FBSSxDQUEvZTtBQUFpZixXQUFJLFFBQXJmO0FBQThmLFdBQUksUUFBbGdCO0FBQTJnQixXQUFJLElBQS9nQjtBQUFvaEIsV0FBSSxPQUF4aEI7QUFBZ2lCLFdBQUksUUFBcGlCO0FBQTZpQixXQUFJLFFBQWpqQjtBQUEwakIsV0FBSSxDQUE5akI7QUFBZ2tCLFdBQUksUUFBcGtCO0FBQTZrQixXQUFJLE9BQWpsQjtBQUF5bEIsV0FBSSxJQUE3bEI7QUFBa21CLFdBQUksUUFBdG1CO0FBQSttQixXQUFJLFFBQW5uQjtBQUE0bkIsV0FBSSxRQUFob0I7QUFBeW9CLFdBQUksQ0FBN29CO0FBQStvQixXQUFJLFFBQW5wQjtBQUE0cEIsV0FBSSxPQUFocUI7QUFBd3FCLFdBQUksSUFBNXFCO0FBQWlyQixXQUFJLFFBQXJyQjtBQUE4ckIsV0FBSTtBQUFsc0IsS0FBNTFMLEVBQXVpTjtBQUFDLFNBQUUsU0FBSDtBQUFhLFNBQUUsTUFBZjtBQUFzQixTQUFFLFNBQXhCO0FBQWtDLFNBQUUsRUFBcEM7QUFBdUMsU0FBRSxNQUF6QztBQUFnRCxTQUFFLFNBQWxEO0FBQTRELFNBQUUsU0FBOUQ7QUFBd0UsU0FBRSxJQUExRTtBQUErRSxTQUFFLFNBQWpGO0FBQTJGLFNBQUUsU0FBN0Y7QUFBdUcsVUFBRyxNQUExRztBQUFpSCxVQUFHLFNBQXBIO0FBQThILFVBQUcsSUFBakk7QUFBc0ksVUFBRyxDQUF6STtBQUEySSxVQUFHLFNBQTlJO0FBQXdKLFVBQUcsTUFBM0o7QUFBa0ssa0JBQVcsSUFBN0s7QUFBa0wsa0JBQVcsU0FBN0w7QUFBdU0sa0JBQVcsU0FBbE47QUFBNE4sa0JBQVcsU0FBdk87QUFBaVAsa0JBQVcsU0FBNVA7QUFBc1Esa0JBQVcsTUFBalI7QUFBd1Isa0JBQVcsTUFBblM7QUFBMFMsa0JBQVcsRUFBclQ7QUFBd1Qsa0JBQVcsU0FBblU7QUFBNlUsa0JBQVcsSUFBeFY7QUFBNlYsa0JBQVcsTUFBeFc7QUFBK1csa0JBQVcsU0FBMVg7QUFBb1ksa0JBQVcsQ0FBL1k7QUFBaVosa0JBQVcsU0FBNVo7QUFBc2Esa0JBQVcsU0FBamI7QUFBMmIsa0JBQVcsTUFBdGM7QUFBNmMsVUFBRyxNQUFoZDtBQUF1ZCxVQUFHLFNBQTFkO0FBQW9lLFVBQUcsRUFBdmU7QUFBMGUsVUFBRyxJQUE3ZTtBQUFrZixVQUFHLFNBQXJmO0FBQStmLFVBQUcsU0FBbGdCO0FBQTRnQixVQUFHLFNBQS9nQjtBQUF5aEIsVUFBRyxNQUE1aEI7QUFBbWlCLFVBQUcsQ0FBdGlCO0FBQXdpQixVQUFHLE1BQTNpQjtBQUFrakIsVUFBRyxTQUFyakI7QUFBK2pCLFVBQUcsU0FBbGtCO0FBQTRrQixVQUFHLFNBQS9rQjtBQUF5bEIsVUFBRyxNQUE1bEI7QUFBbW1CLFVBQUcsSUFBdG1CO0FBQTJtQixVQUFHLFNBQTltQjtBQUF3bkIsa0JBQVcsTUFBbm9CO0FBQTBvQixrQkFBVyxJQUFycEI7QUFBMHBCLGtCQUFXLFNBQXJxQjtBQUErcUIsa0JBQVcsTUFBMXJCO0FBQWlzQixrQkFBVyxFQUE1c0I7QUFBK3NCLGtCQUFXLFNBQTF0QjtBQUFvdUIsa0JBQVcsU0FBL3VCO0FBQXl2QixrQkFBVyxTQUFwd0I7QUFBOHdCLGtCQUFXLFNBQXp4QjtBQUFteUIsa0JBQVcsU0FBOXlCO0FBQXd6QixrQkFBVyxTQUFuMEI7QUFBNjBCLGtCQUFXLENBQXgxQjtBQUEwMUIsa0JBQVcsTUFBcjJCO0FBQTQyQixrQkFBVyxJQUF2M0I7QUFBNDNCLGtCQUFXLE1BQXY0QjtBQUE4NEIsa0JBQVc7QUFBejVCLEtBQXZpTixDQUF4WjtBQUFBLFFBQW8yUFksQ0FBQyxHQUFDLENBQUMsVUFBRCxFQUFZLFNBQVosRUFBc0IsUUFBdEIsRUFBK0IsT0FBL0IsRUFBdUMsTUFBdkMsRUFBOEMsSUFBOUMsRUFBbUQsR0FBbkQsRUFBdUQsVUFBdkQsQ0FBdDJQO0FBQUEsUUFBeTZQc0IsQ0FBQyxHQUFDdEQsQ0FBQyxDQUFDd08sR0FBRixHQUFNclAsQ0FBQyxDQUFDVCxNQUFGLENBQVM7QUFBQzBELE1BQUFBLFFBQVEsRUFBQyxvQkFBVTtBQUFDLGFBQUksSUFBSTFFLENBQUMsR0FBQyxLQUFLdU4sSUFBWCxFQUFnQnROLENBQUMsR0FBQ0QsQ0FBQyxDQUFDMkIsS0FBcEIsRUFBMEJwQixDQUFDLEdBQUMsRUFBNUIsRUFBK0JJLENBQUMsR0FBQyxDQUFyQyxFQUF1Q0EsQ0FBQyxHQUFDLEVBQXpDLEVBQTRDQSxDQUFDLEVBQTdDLEVBQWdEO0FBQUMsY0FBSUMsQ0FBQyxHQUFDa0IsQ0FBQyxDQUFDbkIsQ0FBRCxDQUFELEdBQUssQ0FBWDtBQUFhSixVQUFBQSxDQUFDLENBQUNJLENBQUQsQ0FBRCxHQUFLVixDQUFDLENBQUNXLENBQUMsS0FBRyxDQUFMLENBQUQsS0FBVyxLQUFHQSxDQUFDLEdBQUMsRUFBaEIsR0FBbUIsQ0FBeEI7QUFBMEI7O0FBQUEsYUFBSSxJQUFJRSxDQUFDLEdBQUMsS0FBS2lRLFFBQUwsR0FBYyxFQUFwQixFQUF1QnRQLENBQUMsR0FBQyxDQUE3QixFQUErQkEsQ0FBQyxHQUFDLEVBQWpDLEVBQW9DQSxDQUFDLEVBQXJDLEVBQXdDO0FBQUMsZUFBSSxJQUFJYSxDQUFDLEdBQUN4QixDQUFDLENBQUNXLENBQUQsQ0FBRCxHQUFLLEVBQVgsRUFBY2lDLENBQUMsR0FBQ1AsQ0FBQyxDQUFDMUIsQ0FBRCxDQUFqQixFQUFxQmQsQ0FBQyxHQUFDLENBQTNCLEVBQTZCQSxDQUFDLEdBQUMsRUFBL0IsRUFBa0NBLENBQUMsRUFBbkM7QUFBc0MyQixZQUFBQSxDQUFDLENBQUMzQixDQUFDLEdBQUMsQ0FBRixHQUFJLENBQUwsQ0FBRCxJQUFVSixDQUFDLENBQUMsQ0FBQ3VDLENBQUMsQ0FBQ25DLENBQUQsQ0FBRCxHQUFLLENBQUwsR0FBTytDLENBQVIsSUFBVyxFQUFaLENBQUQsSUFBa0IsS0FBRy9DLENBQUMsR0FBQyxDQUFqQyxFQUFtQzJCLENBQUMsQ0FBQyxLQUFHM0IsQ0FBQyxHQUFDLENBQUYsR0FBSSxDQUFQLENBQUQsQ0FBRCxJQUFjSixDQUFDLENBQUMsS0FBRyxDQUFDdUMsQ0FBQyxDQUFDbkMsQ0FBQyxHQUFDLEVBQUgsQ0FBRCxHQUFRLENBQVIsR0FBVStDLENBQVgsSUFBYyxFQUFsQixDQUFELElBQXdCLEtBQUcvQyxDQUFDLEdBQUMsQ0FBOUU7QUFBdEM7O0FBQXNIMkIsVUFBQUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELElBQU0sQ0FBTixHQUFRQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sRUFBcEI7O0FBQXVCLGVBQUksSUFBSTNCLENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQyxDQUFkLEVBQWdCQSxDQUFDLEVBQWpCO0FBQW9CMkIsWUFBQUEsQ0FBQyxDQUFDM0IsQ0FBRCxDQUFELEdBQUsyQixDQUFDLENBQUMzQixDQUFELENBQUQsS0FBTyxLQUFHQSxDQUFDLEdBQUMsQ0FBTCxJQUFRLENBQXBCO0FBQXBCOztBQUEwQzJCLFVBQUFBLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNLENBQU4sR0FBUUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLEVBQXBCO0FBQXVCOztBQUFBLGFBQUksSUFBSWdDLENBQUMsR0FBQyxLQUFLME0sV0FBTCxHQUFpQixFQUF2QixFQUEwQnJRLENBQUMsR0FBQyxDQUFoQyxFQUFrQ0EsQ0FBQyxHQUFDLEVBQXBDLEVBQXVDQSxDQUFDLEVBQXhDO0FBQTJDMkQsVUFBQUEsQ0FBQyxDQUFDM0QsQ0FBRCxDQUFELEdBQUtHLENBQUMsQ0FBQyxLQUFHSCxDQUFKLENBQU47QUFBM0M7QUFBd0QsT0FBNVo7QUFBNloyTixNQUFBQSxZQUFZLEVBQUMsc0JBQVN0TyxDQUFULEVBQVdDLENBQVgsRUFBYTtBQUFDLGFBQUswUSxhQUFMLENBQW1CM1EsQ0FBbkIsRUFBcUJDLENBQXJCLEVBQXVCLEtBQUs4USxRQUE1QjtBQUFzQyxPQUE5ZDtBQUErZHhDLE1BQUFBLFlBQVksRUFBQyxzQkFBU3ZPLENBQVQsRUFBV0MsQ0FBWCxFQUFhO0FBQUMsYUFBSzBRLGFBQUwsQ0FBbUIzUSxDQUFuQixFQUFxQkMsQ0FBckIsRUFBdUIsS0FBSytRLFdBQTVCO0FBQXlDLE9BQW5pQjtBQUFvaUJMLE1BQUFBLGFBQWEsRUFBQyx1QkFBUzNRLENBQVQsRUFBV1csQ0FBWCxFQUFhQyxDQUFiLEVBQWU7QUFBQyxhQUFLZ1EsT0FBTCxHQUFhNVEsQ0FBQyxDQUFDVyxDQUFELENBQWQsRUFBa0IsS0FBS2tRLE9BQUwsR0FBYTdRLENBQUMsQ0FBQ1csQ0FBQyxHQUFDLENBQUgsQ0FBaEMsRUFBc0NWLENBQUMsQ0FBQ2tDLElBQUYsQ0FBTyxJQUFQLEVBQVksQ0FBWixFQUFjLFNBQWQsQ0FBdEMsRUFBK0RsQyxDQUFDLENBQUNrQyxJQUFGLENBQU8sSUFBUCxFQUFZLEVBQVosRUFBZSxLQUFmLENBQS9ELEVBQXFGNUIsQ0FBQyxDQUFDNEIsSUFBRixDQUFPLElBQVAsRUFBWSxDQUFaLEVBQWMsU0FBZCxDQUFyRixFQUE4RzVCLENBQUMsQ0FBQzRCLElBQUYsQ0FBTyxJQUFQLEVBQVksQ0FBWixFQUFjLFFBQWQsQ0FBOUcsRUFBc0lsQyxDQUFDLENBQUNrQyxJQUFGLENBQU8sSUFBUCxFQUFZLENBQVosRUFBYyxVQUFkLENBQXRJOztBQUFnSyxhQUFJLElBQUlyQixDQUFDLEdBQUMsQ0FBVixFQUFZQSxDQUFDLEdBQUMsRUFBZCxFQUFpQkEsQ0FBQyxFQUFsQixFQUFxQjtBQUFDLGVBQUksSUFBSVcsQ0FBQyxHQUFDYixDQUFDLENBQUNFLENBQUQsQ0FBUCxFQUFXd0IsQ0FBQyxHQUFDLEtBQUtzTyxPQUFsQixFQUEwQjlPLENBQUMsR0FBQyxLQUFLK08sT0FBakMsRUFBeUMvTixDQUFDLEdBQUMsQ0FBM0MsRUFBNkNLLENBQUMsR0FBQyxDQUFuRCxFQUFxREEsQ0FBQyxHQUFDLENBQXZELEVBQXlEQSxDQUFDLEVBQTFEO0FBQTZETCxZQUFBQSxDQUFDLElBQUVZLENBQUMsQ0FBQ1AsQ0FBRCxDQUFELENBQUssQ0FBQyxDQUFDckIsQ0FBQyxHQUFDTCxDQUFDLENBQUMwQixDQUFELENBQUosSUFBU21CLENBQUMsQ0FBQ25CLENBQUQsQ0FBWCxNQUFrQixDQUF2QixDQUFIO0FBQTdEOztBQUEwRixlQUFLeU4sT0FBTCxHQUFhOU8sQ0FBYixFQUFlLEtBQUsrTyxPQUFMLEdBQWF2TyxDQUFDLEdBQUNRLENBQTlCO0FBQWdDOztBQUFBLFlBQUk4QyxDQUFDLEdBQUMsS0FBS2dMLE9BQVg7QUFBbUIsYUFBS0EsT0FBTCxHQUFhLEtBQUtDLE9BQWxCLEVBQTBCLEtBQUtBLE9BQUwsR0FBYWpMLENBQXZDLEVBQXlDM0YsQ0FBQyxDQUFDa0MsSUFBRixDQUFPLElBQVAsRUFBWSxDQUFaLEVBQWMsVUFBZCxDQUF6QyxFQUFtRTVCLENBQUMsQ0FBQzRCLElBQUYsQ0FBTyxJQUFQLEVBQVksQ0FBWixFQUFjLFFBQWQsQ0FBbkUsRUFBMkY1QixDQUFDLENBQUM0QixJQUFGLENBQU8sSUFBUCxFQUFZLENBQVosRUFBYyxTQUFkLENBQTNGLEVBQW9IbEMsQ0FBQyxDQUFDa0MsSUFBRixDQUFPLElBQVAsRUFBWSxFQUFaLEVBQWUsS0FBZixDQUFwSCxFQUEwSWxDLENBQUMsQ0FBQ2tDLElBQUYsQ0FBTyxJQUFQLEVBQVksQ0FBWixFQUFjLFNBQWQsQ0FBMUksRUFBbUtuQyxDQUFDLENBQUNXLENBQUQsQ0FBRCxHQUFLLEtBQUtpUSxPQUE3SyxFQUFxTDVRLENBQUMsQ0FBQ1csQ0FBQyxHQUFDLENBQUgsQ0FBRCxHQUFPLEtBQUtrUSxPQUFqTTtBQUF5TSxPQUE5a0M7QUFBK2tDN0gsTUFBQUEsT0FBTyxFQUFDLENBQXZsQztBQUF5bEN5RSxNQUFBQSxNQUFNLEVBQUMsQ0FBaG1DO0FBQWttQ3hKLE1BQUFBLFNBQVMsRUFBQztBQUE1bUMsS0FBVCxDQUFqN1A7QUFBMGlTdEQsSUFBQUEsQ0FBQyxDQUFDbVEsR0FBRixHQUFNclAsQ0FBQyxDQUFDcUQsYUFBRixDQUFnQmMsQ0FBaEIsQ0FBTjtBQUF5QixRQUFJQyxDQUFDLEdBQUN2RCxDQUFDLENBQUMyTyxTQUFGLEdBQVl4UCxDQUFDLENBQUNULE1BQUYsQ0FBUztBQUFDMEQsTUFBQUEsUUFBUSxFQUFDLG9CQUFVO0FBQUMsWUFBSTFFLENBQUMsR0FBQyxLQUFLdU4sSUFBWDtBQUFBLFlBQWdCdE4sQ0FBQyxHQUFDRCxDQUFDLENBQUMyQixLQUFwQjtBQUEwQixhQUFLdVAsS0FBTCxHQUFXdEwsQ0FBQyxDQUFDc0gsZUFBRixDQUFrQnBNLENBQUMsQ0FBQ0wsTUFBRixDQUFTUixDQUFDLENBQUNtQyxLQUFGLENBQVEsQ0FBUixFQUFVLENBQVYsQ0FBVCxDQUFsQixDQUFYLEVBQXFELEtBQUsrTyxLQUFMLEdBQVd2TCxDQUFDLENBQUNzSCxlQUFGLENBQWtCcE0sQ0FBQyxDQUFDTCxNQUFGLENBQVNSLENBQUMsQ0FBQ21DLEtBQUYsQ0FBUSxDQUFSLEVBQVUsQ0FBVixDQUFULENBQWxCLENBQWhFLEVBQTBHLEtBQUtnUCxLQUFMLEdBQVd4TCxDQUFDLENBQUNzSCxlQUFGLENBQWtCcE0sQ0FBQyxDQUFDTCxNQUFGLENBQVNSLENBQUMsQ0FBQ21DLEtBQUYsQ0FBUSxDQUFSLEVBQVUsQ0FBVixDQUFULENBQWxCLENBQXJIO0FBQStKLE9BQTlNO0FBQStNa00sTUFBQUEsWUFBWSxFQUFDLHNCQUFTdE8sQ0FBVCxFQUFXQyxDQUFYLEVBQWE7QUFBQyxhQUFLaVIsS0FBTCxDQUFXNUMsWUFBWCxDQUF3QnRPLENBQXhCLEVBQTBCQyxDQUExQixHQUE2QixLQUFLa1IsS0FBTCxDQUFXNUMsWUFBWCxDQUF3QnZPLENBQXhCLEVBQTBCQyxDQUExQixDQUE3QixFQUEwRCxLQUFLbVIsS0FBTCxDQUFXOUMsWUFBWCxDQUF3QnRPLENBQXhCLEVBQTBCQyxDQUExQixDQUExRDtBQUF1RixPQUFqVTtBQUFrVXNPLE1BQUFBLFlBQVksRUFBQyxzQkFBU3ZPLENBQVQsRUFBV0MsQ0FBWCxFQUFhO0FBQUMsYUFBS21SLEtBQUwsQ0FBVzdDLFlBQVgsQ0FBd0J2TyxDQUF4QixFQUEwQkMsQ0FBMUIsR0FBNkIsS0FBS2tSLEtBQUwsQ0FBVzdDLFlBQVgsQ0FBd0J0TyxDQUF4QixFQUEwQkMsQ0FBMUIsQ0FBN0IsRUFBMEQsS0FBS2lSLEtBQUwsQ0FBVzNDLFlBQVgsQ0FBd0J2TyxDQUF4QixFQUEwQkMsQ0FBMUIsQ0FBMUQ7QUFBdUYsT0FBcGI7QUFBcWIrSSxNQUFBQSxPQUFPLEVBQUMsQ0FBN2I7QUFBK2J5RSxNQUFBQSxNQUFNLEVBQUMsQ0FBdGM7QUFBd2N4SixNQUFBQSxTQUFTLEVBQUM7QUFBbGQsS0FBVCxDQUFsQjtBQUFpZnRELElBQUFBLENBQUMsQ0FBQ3NRLFNBQUYsR0FBWXhQLENBQUMsQ0FBQ3FELGFBQUYsQ0FBZ0JlLENBQWhCLENBQVo7QUFBK0IsR0FEbS9xQixFQUF0ZzNCLEVBQ3NoTSxZQUFVO0FBQUMsYUFBUzVGLENBQVQsR0FBWTtBQUFDLFdBQUksSUFBSUQsQ0FBQyxHQUFDLEtBQUtxUixFQUFYLEVBQWNwUixDQUFDLEdBQUMsS0FBS3FSLEVBQXJCLEVBQXdCL1EsQ0FBQyxHQUFDLEtBQUtnUixFQUEvQixFQUFrQzVRLENBQUMsR0FBQyxDQUFwQyxFQUFzQ0MsQ0FBQyxHQUFDLENBQTVDLEVBQThDQSxDQUFDLEdBQUMsQ0FBaEQsRUFBa0RBLENBQUMsRUFBbkQsRUFBc0Q7QUFBQ1gsUUFBQUEsQ0FBQyxHQUFDLENBQUNBLENBQUMsR0FBQyxDQUFILElBQU0sR0FBUixFQUFZTSxDQUFDLEdBQUMsQ0FBQ0EsQ0FBQyxHQUFDUCxDQUFDLENBQUNDLENBQUQsQ0FBSixJQUFTLEdBQXZCO0FBQTJCLFlBQUlhLENBQUMsR0FBQ2QsQ0FBQyxDQUFDQyxDQUFELENBQVA7QUFBV0QsUUFBQUEsQ0FBQyxDQUFDQyxDQUFELENBQUQsR0FBS0QsQ0FBQyxDQUFDTyxDQUFELENBQU4sRUFBVVAsQ0FBQyxDQUFDTyxDQUFELENBQUQsR0FBS08sQ0FBZixFQUFpQkgsQ0FBQyxJQUFFWCxDQUFDLENBQUMsQ0FBQ0EsQ0FBQyxDQUFDQyxDQUFELENBQUQsR0FBS0QsQ0FBQyxDQUFDTyxDQUFELENBQVAsSUFBWSxHQUFiLENBQUQsSUFBb0IsS0FBRyxJQUFFSyxDQUE3QztBQUErQzs7QUFBQSxhQUFPLEtBQUswUSxFQUFMLEdBQVFyUixDQUFSLEVBQVUsS0FBS3NSLEVBQUwsR0FBUWhSLENBQWxCLEVBQW9CSSxDQUEzQjtBQUE2Qjs7QUFBQSxRQUFJSixDQUFDLEdBQUNQLENBQU47QUFBQSxRQUFRVyxDQUFDLEdBQUNKLENBQUMsQ0FBQ00sR0FBWjtBQUFBLFFBQWdCRCxDQUFDLEdBQUNELENBQUMsQ0FBQ2lOLFlBQXBCO0FBQUEsUUFBaUM5TSxDQUFDLEdBQUNQLENBQUMsQ0FBQzBFLElBQXJDO0FBQUEsUUFBMEN4RCxDQUFDLEdBQUNYLENBQUMsQ0FBQzBRLEdBQUYsR0FBTTVRLENBQUMsQ0FBQ0ksTUFBRixDQUFTO0FBQUMwRCxNQUFBQSxRQUFRLEVBQUMsb0JBQVU7QUFBQyxhQUFJLElBQUkxRSxDQUFDLEdBQUMsS0FBS3VOLElBQVgsRUFBZ0J0TixDQUFDLEdBQUNELENBQUMsQ0FBQzJCLEtBQXBCLEVBQTBCcEIsQ0FBQyxHQUFDUCxDQUFDLENBQUM0QixRQUE5QixFQUF1Q2pCLENBQUMsR0FBQyxLQUFLMFEsRUFBTCxHQUFRLEVBQWpELEVBQW9EelEsQ0FBQyxHQUFDLENBQTFELEVBQTREQSxDQUFDLEdBQUMsR0FBOUQsRUFBa0VBLENBQUMsRUFBbkU7QUFBc0VELFVBQUFBLENBQUMsQ0FBQ0MsQ0FBRCxDQUFELEdBQUtBLENBQUw7QUFBdEU7O0FBQTZFLGFBQUksSUFBSUEsQ0FBQyxHQUFDLENBQU4sRUFBUUUsQ0FBQyxHQUFDLENBQWQsRUFBZ0JGLENBQUMsR0FBQyxHQUFsQixFQUFzQkEsQ0FBQyxFQUF2QixFQUEwQjtBQUFDLGNBQUlhLENBQUMsR0FBQ2IsQ0FBQyxHQUFDTCxDQUFSO0FBQUEsY0FBVStCLENBQUMsR0FBQ3JDLENBQUMsQ0FBQ3dCLENBQUMsS0FBRyxDQUFMLENBQUQsS0FBVyxLQUFHQSxDQUFDLEdBQUMsQ0FBRixHQUFJLENBQWxCLEdBQW9CLEdBQWhDO0FBQW9DWCxVQUFBQSxDQUFDLEdBQUMsQ0FBQ0EsQ0FBQyxHQUFDSCxDQUFDLENBQUNDLENBQUQsQ0FBSCxHQUFPMEIsQ0FBUixJQUFXLEdBQWI7QUFBaUIsY0FBSVIsQ0FBQyxHQUFDbkIsQ0FBQyxDQUFDQyxDQUFELENBQVA7QUFBV0QsVUFBQUEsQ0FBQyxDQUFDQyxDQUFELENBQUQsR0FBS0QsQ0FBQyxDQUFDRyxDQUFELENBQU4sRUFBVUgsQ0FBQyxDQUFDRyxDQUFELENBQUQsR0FBS2dCLENBQWY7QUFBaUI7O0FBQUEsYUFBS3dQLEVBQUwsR0FBUSxLQUFLQyxFQUFMLEdBQVEsQ0FBaEI7QUFBa0IsT0FBaE87QUFBaU9sTixNQUFBQSxlQUFlLEVBQUMseUJBQVNyRSxDQUFULEVBQVdPLENBQVgsRUFBYTtBQUFDUCxRQUFBQSxDQUFDLENBQUNPLENBQUQsQ0FBRCxJQUFNTixDQUFDLENBQUNrQyxJQUFGLENBQU8sSUFBUCxDQUFOO0FBQW1CLE9BQWxSO0FBQW1SNkcsTUFBQUEsT0FBTyxFQUFDLENBQTNSO0FBQTZSeUUsTUFBQUEsTUFBTSxFQUFDO0FBQXBTLEtBQVQsQ0FBbEQ7QUFBbVdsTixJQUFBQSxDQUFDLENBQUNpUixHQUFGLEdBQU01USxDQUFDLENBQUNrRSxhQUFGLENBQWdCckQsQ0FBaEIsQ0FBTjtBQUF5QixRQUFJYSxDQUFDLEdBQUN4QixDQUFDLENBQUMyUSxPQUFGLEdBQVVoUSxDQUFDLENBQUNULE1BQUYsQ0FBUztBQUFDeUQsTUFBQUEsR0FBRyxFQUFDaEQsQ0FBQyxDQUFDZ0QsR0FBRixDQUFNekQsTUFBTixDQUFhO0FBQUMwUSxRQUFBQSxJQUFJLEVBQUM7QUFBTixPQUFiLENBQUw7QUFBOEJoTixNQUFBQSxRQUFRLEVBQUMsb0JBQVU7QUFBQ2pELFFBQUFBLENBQUMsQ0FBQ2lELFFBQUYsQ0FBV3ZDLElBQVgsQ0FBZ0IsSUFBaEI7O0FBQXNCLGFBQUksSUFBSW5DLENBQUMsR0FBQyxLQUFLeUUsR0FBTCxDQUFTaU4sSUFBbkIsRUFBd0IxUixDQUFDLEdBQUMsQ0FBMUIsRUFBNEJBLENBQUMsRUFBN0I7QUFBZ0NDLFVBQUFBLENBQUMsQ0FBQ2tDLElBQUYsQ0FBTyxJQUFQO0FBQWhDO0FBQTZDO0FBQXJILEtBQVQsQ0FBaEI7QUFBaUo1QixJQUFBQSxDQUFDLENBQUNrUixPQUFGLEdBQVU3USxDQUFDLENBQUNrRSxhQUFGLENBQWdCeEMsQ0FBaEIsQ0FBVjtBQUE2QixHQUEzdUIsRUFEdGhNLEVBQ293TnRDLENBQUMsQ0FBQzZOLElBQUYsQ0FBTzhELFVBQVAsR0FBa0IsWUFBVTtBQUFDLGFBQVMxUixDQUFULENBQVdELENBQVgsRUFBYTtBQUFDLFVBQUcsU0FBT0EsQ0FBQyxJQUFFLEVBQUgsR0FBTSxHQUFiLENBQUgsRUFBcUI7QUFBQyxZQUFJQyxDQUFDLEdBQUNELENBQUMsSUFBRSxFQUFILEdBQU0sR0FBWjtBQUFBLFlBQWdCTyxDQUFDLEdBQUNQLENBQUMsSUFBRSxDQUFILEdBQUssR0FBdkI7QUFBQSxZQUEyQlcsQ0FBQyxHQUFDLE1BQUlYLENBQWpDO0FBQW1DLGdCQUFNQyxDQUFOLElBQVNBLENBQUMsR0FBQyxDQUFGLEVBQUksUUFBTU0sQ0FBTixJQUFTQSxDQUFDLEdBQUMsQ0FBRixFQUFJLFFBQU1JLENBQU4sR0FBUUEsQ0FBQyxHQUFDLENBQVYsR0FBWSxFQUFFQSxDQUEzQixJQUE4QixFQUFFSixDQUE3QyxJQUFnRCxFQUFFTixDQUFsRCxFQUFvREQsQ0FBQyxHQUFDLENBQXRELEVBQXdEQSxDQUFDLElBQUVDLENBQUMsSUFBRSxFQUE5RCxFQUFpRUQsQ0FBQyxJQUFFTyxDQUFDLElBQUUsQ0FBdkUsRUFBeUVQLENBQUMsSUFBRVcsQ0FBNUU7QUFBOEUsT0FBdkksTUFBNElYLENBQUMsSUFBRSxLQUFHLEVBQU47O0FBQVMsYUFBT0EsQ0FBUDtBQUFTOztBQUFBLGFBQVNPLENBQVQsQ0FBV1AsQ0FBWCxFQUFhO0FBQUMsYUFBTyxPQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtDLENBQUMsQ0FBQ0QsQ0FBQyxDQUFDLENBQUQsQ0FBRixDQUFYLE1BQXFCQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtDLENBQUMsQ0FBQ0QsQ0FBQyxDQUFDLENBQUQsQ0FBRixDQUEzQixHQUFtQ0EsQ0FBMUM7QUFBNEM7O0FBQUEsUUFBSVcsQ0FBQyxHQUFDWCxDQUFDLENBQUNhLEdBQUYsQ0FBTWlOLGVBQU4sQ0FBc0I5TSxNQUF0QixFQUFOO0FBQUEsUUFBcUNKLENBQUMsR0FBQ0QsQ0FBQyxDQUFDb04sU0FBRixHQUFZcE4sQ0FBQyxDQUFDSyxNQUFGLENBQVM7QUFBQ3FOLE1BQUFBLFlBQVksRUFBQyxzQkFBU3JPLENBQVQsRUFBV0MsQ0FBWCxFQUFhO0FBQUMsWUFBSVUsQ0FBQyxHQUFDLEtBQUtzTixPQUFYO0FBQUEsWUFBbUJyTixDQUFDLEdBQUNELENBQUMsQ0FBQ3NELFNBQXZCO0FBQUEsWUFBaUNuRCxDQUFDLEdBQUMsS0FBS29OLEdBQXhDO0FBQUEsWUFBNEN6TSxDQUFDLEdBQUMsS0FBS21RLFFBQW5EO0FBQTREOVEsUUFBQUEsQ0FBQyxLQUFHVyxDQUFDLEdBQUMsS0FBS21RLFFBQUwsR0FBYzlRLENBQUMsQ0FBQ3NCLEtBQUYsQ0FBUSxDQUFSLENBQWhCLEVBQTJCLEtBQUs4TCxHQUFMLEdBQVMsS0FBSyxDQUE1QyxDQUFELEVBQWdEM04sQ0FBQyxDQUFDa0IsQ0FBRCxDQUFqRDtBQUFxRCxZQUFJYSxDQUFDLEdBQUNiLENBQUMsQ0FBQ1csS0FBRixDQUFRLENBQVIsQ0FBTjtBQUFpQnpCLFFBQUFBLENBQUMsQ0FBQzJOLFlBQUYsQ0FBZWhNLENBQWYsRUFBaUIsQ0FBakI7O0FBQW9CLGFBQUksSUFBSVIsQ0FBQyxHQUFDLENBQVYsRUFBWUEsQ0FBQyxHQUFDbEIsQ0FBZCxFQUFnQmtCLENBQUMsRUFBakI7QUFBb0I5QixVQUFBQSxDQUFDLENBQUNDLENBQUMsR0FBQzZCLENBQUgsQ0FBRCxJQUFRUSxDQUFDLENBQUNSLENBQUQsQ0FBVDtBQUFwQjtBQUFpQztBQUFuTixLQUFULENBQW5EO0FBQWtSLFdBQU9uQixDQUFDLENBQUNxTixTQUFGLEdBQVlwTixDQUFaLEVBQWNELENBQXJCO0FBQXVCLEdBQTFoQixFQUR0eE4sRUFDbXpPLFlBQVU7QUFBQyxhQUFTVixDQUFULEdBQVk7QUFBQyxXQUFJLElBQUlELENBQUMsR0FBQyxLQUFLNlIsRUFBWCxFQUFjNVIsQ0FBQyxHQUFDLEtBQUs2UixFQUFyQixFQUF3QnZSLENBQUMsR0FBQyxDQUE5QixFQUFnQ0EsQ0FBQyxHQUFDLENBQWxDLEVBQW9DQSxDQUFDLEVBQXJDO0FBQXdDK0IsUUFBQUEsQ0FBQyxDQUFDL0IsQ0FBRCxDQUFELEdBQUtOLENBQUMsQ0FBQ00sQ0FBRCxDQUFOO0FBQXhDOztBQUFrRE4sTUFBQUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUssVUFBTCxHQUFnQixLQUFLOFIsRUFBckIsR0FBd0IsQ0FBN0IsRUFBK0I5UixDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBSyxVQUFMLElBQWlCQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sQ0FBUCxHQUFTcUMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLENBQWhCLEdBQWtCLENBQWxCLEdBQW9CLENBQXJDLElBQXdDLENBQTVFLEVBQThFckMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUssU0FBTCxJQUFnQkEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLENBQVAsR0FBU3FDLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxDQUFoQixHQUFrQixDQUFsQixHQUFvQixDQUFwQyxJQUF1QyxDQUExSCxFQUE0SHJDLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLLFVBQUwsSUFBaUJBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxDQUFQLEdBQVNxQyxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sQ0FBaEIsR0FBa0IsQ0FBbEIsR0FBb0IsQ0FBckMsSUFBd0MsQ0FBekssRUFBMktyQyxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBSyxVQUFMLElBQWlCQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sQ0FBUCxHQUFTcUMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLENBQWhCLEdBQWtCLENBQWxCLEdBQW9CLENBQXJDLElBQXdDLENBQXhOLEVBQTBOckMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUssU0FBTCxJQUFnQkEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLENBQVAsR0FBU3FDLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxDQUFoQixHQUFrQixDQUFsQixHQUFvQixDQUFwQyxJQUF1QyxDQUF0USxFQUF3UXJDLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLLFVBQUwsSUFBaUJBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxDQUFQLEdBQVNxQyxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sQ0FBaEIsR0FBa0IsQ0FBbEIsR0FBb0IsQ0FBckMsSUFBd0MsQ0FBclQsRUFBdVRyQyxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBSyxVQUFMLElBQWlCQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sQ0FBUCxHQUFTcUMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLENBQWhCLEdBQWtCLENBQWxCLEdBQW9CLENBQXJDLElBQXdDLENBQXBXLEVBQXNXLEtBQUt5UCxFQUFMLEdBQVE5UixDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sQ0FBUCxHQUFTcUMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLENBQWhCLEdBQWtCLENBQWxCLEdBQW9CLENBQWxZOztBQUFvWSxXQUFJLElBQUkvQixDQUFDLEdBQUMsQ0FBVixFQUFZQSxDQUFDLEdBQUMsQ0FBZCxFQUFnQkEsQ0FBQyxFQUFqQixFQUFvQjtBQUFDLFlBQUlJLENBQUMsR0FBQ1gsQ0FBQyxDQUFDTyxDQUFELENBQUQsR0FBS04sQ0FBQyxDQUFDTSxDQUFELENBQVo7QUFBQSxZQUFnQkssQ0FBQyxHQUFDLFFBQU1ELENBQXhCO0FBQUEsWUFBMEJHLENBQUMsR0FBQ0gsQ0FBQyxLQUFHLEVBQWhDO0FBQUEsWUFBbUNjLENBQUMsR0FBQyxDQUFDLENBQUNiLENBQUMsR0FBQ0EsQ0FBRixLQUFNLEVBQVAsSUFBV0EsQ0FBQyxHQUFDRSxDQUFiLEtBQWlCLEVBQWxCLElBQXNCQSxDQUFDLEdBQUNBLENBQTdEO0FBQUEsWUFBK0RnQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLGFBQVduQyxDQUFaLElBQWVBLENBQWYsR0FBaUIsQ0FBbEIsS0FBc0IsQ0FBQyxRQUFNQSxDQUFQLElBQVVBLENBQVYsR0FBWSxDQUFsQyxDQUFqRTtBQUFzR21CLFFBQUFBLENBQUMsQ0FBQ3ZCLENBQUQsQ0FBRCxHQUFLa0IsQ0FBQyxHQUFDcUIsQ0FBUDtBQUFTOztBQUFBOUMsTUFBQUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLOEIsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNQSxDQUFDLENBQUMsQ0FBRCxDQUFELElBQU0sRUFBTixHQUFTQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sRUFBdEIsS0FBMkJBLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxFQUFOLEdBQVNBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUEzQyxJQUErQyxDQUFwRCxFQUFzRDlCLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBSzhCLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNLENBQU4sR0FBUUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLEVBQXJCLElBQXlCQSxDQUFDLENBQUMsQ0FBRCxDQUExQixHQUE4QixDQUF6RixFQUEyRjlCLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBSzhCLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNLEVBQU4sR0FBU0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLEVBQXRCLEtBQTJCQSxDQUFDLENBQUMsQ0FBRCxDQUFELElBQU0sRUFBTixHQUFTQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sRUFBM0MsSUFBK0MsQ0FBL0ksRUFBaUo5QixDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUs4QixDQUFDLENBQUMsQ0FBRCxDQUFELElBQU1BLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxDQUFOLEdBQVFBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUFyQixJQUF5QkEsQ0FBQyxDQUFDLENBQUQsQ0FBMUIsR0FBOEIsQ0FBcEwsRUFBc0w5QixDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUs4QixDQUFDLENBQUMsQ0FBRCxDQUFELElBQU1BLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxFQUFOLEdBQVNBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUF0QixLQUEyQkEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNLEVBQU4sR0FBU0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLEVBQTNDLElBQStDLENBQTFPLEVBQTRPOUIsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLOEIsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNQSxDQUFDLENBQUMsQ0FBRCxDQUFELElBQU0sQ0FBTixHQUFRQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sRUFBckIsSUFBeUJBLENBQUMsQ0FBQyxDQUFELENBQTFCLEdBQThCLENBQS9RLEVBQWlSOUIsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLOEIsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNQSxDQUFDLENBQUMsQ0FBRCxDQUFELElBQU0sRUFBTixHQUFTQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sRUFBdEIsS0FBMkJBLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxFQUFOLEdBQVNBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUEzQyxJQUErQyxDQUFyVSxFQUF1VTlCLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBSzhCLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNLENBQU4sR0FBUUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLEVBQXJCLElBQXlCQSxDQUFDLENBQUMsQ0FBRCxDQUExQixHQUE4QixDQUExVztBQUE0Vzs7QUFBQSxRQUFJdkIsQ0FBQyxHQUFDUCxDQUFOO0FBQUEsUUFBUVcsQ0FBQyxHQUFDSixDQUFDLENBQUNNLEdBQVo7QUFBQSxRQUFnQkQsQ0FBQyxHQUFDRCxDQUFDLENBQUNpTixZQUFwQjtBQUFBLFFBQWlDOU0sQ0FBQyxHQUFDUCxDQUFDLENBQUMwRSxJQUFyQztBQUFBLFFBQTBDeEQsQ0FBQyxHQUFDLEVBQTVDO0FBQUEsUUFBK0NhLENBQUMsR0FBQyxFQUFqRDtBQUFBLFFBQW9EUixDQUFDLEdBQUMsRUFBdEQ7QUFBQSxRQUF5RGdCLENBQUMsR0FBQ2hDLENBQUMsQ0FBQ2tSLE1BQUYsR0FBU3BSLENBQUMsQ0FBQ0ksTUFBRixDQUFTO0FBQUMwRCxNQUFBQSxRQUFRLEVBQUMsb0JBQVU7QUFBQyxhQUFJLElBQUkxRSxDQUFDLEdBQUMsS0FBS3VOLElBQUwsQ0FBVTVMLEtBQWhCLEVBQXNCcEIsQ0FBQyxHQUFDLEtBQUtrRSxHQUFMLENBQVNvSyxFQUFqQyxFQUFvQ2xPLENBQUMsR0FBQyxDQUExQyxFQUE0Q0EsQ0FBQyxHQUFDLENBQTlDLEVBQWdEQSxDQUFDLEVBQWpEO0FBQW9EWCxVQUFBQSxDQUFDLENBQUNXLENBQUQsQ0FBRCxHQUFLLFlBQVVYLENBQUMsQ0FBQ1csQ0FBRCxDQUFELElBQU0sQ0FBTixHQUFRWCxDQUFDLENBQUNXLENBQUQsQ0FBRCxLQUFPLEVBQXpCLElBQTZCLGNBQVlYLENBQUMsQ0FBQ1csQ0FBRCxDQUFELElBQU0sRUFBTixHQUFTWCxDQUFDLENBQUNXLENBQUQsQ0FBRCxLQUFPLENBQTVCLENBQWxDO0FBQXBEOztBQUFxSCxZQUFJQyxDQUFDLEdBQUMsS0FBS2lSLEVBQUwsR0FBUSxDQUFDN1IsQ0FBQyxDQUFDLENBQUQsQ0FBRixFQUFNQSxDQUFDLENBQUMsQ0FBRCxDQUFELElBQU0sRUFBTixHQUFTQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sRUFBdEIsRUFBeUJBLENBQUMsQ0FBQyxDQUFELENBQTFCLEVBQThCQSxDQUFDLENBQUMsQ0FBRCxDQUFELElBQU0sRUFBTixHQUFTQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sRUFBOUMsRUFBaURBLENBQUMsQ0FBQyxDQUFELENBQWxELEVBQXNEQSxDQUFDLENBQUMsQ0FBRCxDQUFELElBQU0sRUFBTixHQUFTQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sRUFBdEUsRUFBeUVBLENBQUMsQ0FBQyxDQUFELENBQTFFLEVBQThFQSxDQUFDLENBQUMsQ0FBRCxDQUFELElBQU0sRUFBTixHQUFTQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sRUFBOUYsQ0FBZDtBQUFBLFlBQWdIYyxDQUFDLEdBQUMsS0FBS2dSLEVBQUwsR0FBUSxDQUFDOVIsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNLEVBQU4sR0FBU0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLEVBQWpCLEVBQW9CLGFBQVdBLENBQUMsQ0FBQyxDQUFELENBQVosR0FBZ0IsUUFBTUEsQ0FBQyxDQUFDLENBQUQsQ0FBM0MsRUFBK0NBLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxFQUFOLEdBQVNBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUEvRCxFQUFrRSxhQUFXQSxDQUFDLENBQUMsQ0FBRCxDQUFaLEdBQWdCLFFBQU1BLENBQUMsQ0FBQyxDQUFELENBQXpGLEVBQTZGQSxDQUFDLENBQUMsQ0FBRCxDQUFELElBQU0sRUFBTixHQUFTQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sRUFBN0csRUFBZ0gsYUFBV0EsQ0FBQyxDQUFDLENBQUQsQ0FBWixHQUFnQixRQUFNQSxDQUFDLENBQUMsQ0FBRCxDQUF2SSxFQUEySUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNLEVBQU4sR0FBU0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLEVBQTNKLEVBQThKLGFBQVdBLENBQUMsQ0FBQyxDQUFELENBQVosR0FBZ0IsUUFBTUEsQ0FBQyxDQUFDLENBQUQsQ0FBckwsQ0FBMUg7QUFBb1QsYUFBSytSLEVBQUwsR0FBUSxDQUFSOztBQUFVLGFBQUksSUFBSXBSLENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQyxDQUFkLEVBQWdCQSxDQUFDLEVBQWpCO0FBQW9CVixVQUFBQSxDQUFDLENBQUNrQyxJQUFGLENBQU8sSUFBUDtBQUFwQjs7QUFBaUMsYUFBSSxJQUFJeEIsQ0FBQyxHQUFDLENBQVYsRUFBWUEsQ0FBQyxHQUFDLENBQWQsRUFBZ0JBLENBQUMsRUFBakI7QUFBb0JHLFVBQUFBLENBQUMsQ0FBQ0gsQ0FBRCxDQUFELElBQU1DLENBQUMsQ0FBQ0QsQ0FBQyxHQUFDLENBQUYsR0FBSSxDQUFMLENBQVA7QUFBcEI7O0FBQW1DLFlBQUdKLENBQUgsRUFBSztBQUFDLGNBQUlrQixDQUFDLEdBQUNsQixDQUFDLENBQUNvQixLQUFSO0FBQUEsY0FBY1csQ0FBQyxHQUFDYixDQUFDLENBQUMsQ0FBRCxDQUFqQjtBQUFBLGNBQXFCSyxDQUFDLEdBQUNMLENBQUMsQ0FBQyxDQUFELENBQXhCO0FBQUEsY0FBNEJxQixDQUFDLEdBQUMsWUFBVVIsQ0FBQyxJQUFFLENBQUgsR0FBS0EsQ0FBQyxLQUFHLEVBQW5CLElBQXVCLGNBQVlBLENBQUMsSUFBRSxFQUFILEdBQU1BLENBQUMsS0FBRyxDQUF0QixDQUFyRDtBQUFBLGNBQThFYSxDQUFDLEdBQUMsWUFBVXJCLENBQUMsSUFBRSxDQUFILEdBQUtBLENBQUMsS0FBRyxFQUFuQixJQUF1QixjQUFZQSxDQUFDLElBQUUsRUFBSCxHQUFNQSxDQUFDLEtBQUcsQ0FBdEIsQ0FBdkc7QUFBQSxjQUFnSTRCLENBQUMsR0FBQ1osQ0FBQyxLQUFHLEVBQUosR0FBTyxhQUFXSyxDQUFwSjtBQUFBLGNBQXNKbUIsQ0FBQyxHQUFDbkIsQ0FBQyxJQUFFLEVBQUgsR0FBTSxRQUFNTCxDQUFwSztBQUFzS2hDLFVBQUFBLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTWdDLENBQU4sRUFBUWhDLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTTRDLENBQWQsRUFBZ0I1QyxDQUFDLENBQUMsQ0FBRCxDQUFELElBQU1xQyxDQUF0QixFQUF3QnJDLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTXdELENBQTlCLEVBQWdDeEQsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNZ0MsQ0FBdEMsRUFBd0NoQyxDQUFDLENBQUMsQ0FBRCxDQUFELElBQU00QyxDQUE5QyxFQUFnRDVDLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTXFDLENBQXRELEVBQXdEckMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNd0QsQ0FBOUQ7O0FBQWdFLGVBQUksSUFBSTNELENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQyxDQUFkLEVBQWdCQSxDQUFDLEVBQWpCO0FBQW9CVixZQUFBQSxDQUFDLENBQUNrQyxJQUFGLENBQU8sSUFBUDtBQUFwQjtBQUFpQztBQUFDLE9BQTF4QjtBQUEyeEJrQyxNQUFBQSxlQUFlLEVBQUMseUJBQVNyRSxDQUFULEVBQVdPLENBQVgsRUFBYTtBQUFDLFlBQUlJLENBQUMsR0FBQyxLQUFLa1IsRUFBWDtBQUFjNVIsUUFBQUEsQ0FBQyxDQUFDa0MsSUFBRixDQUFPLElBQVAsR0FBYVYsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLZCxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUFaLEdBQWVBLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxFQUF2QyxFQUEwQ2MsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLZCxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUFaLEdBQWVBLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxFQUFwRSxFQUF1RWMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLZCxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUFaLEdBQWVBLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxFQUFqRyxFQUFvR2MsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLZCxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUFaLEdBQWVBLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxFQUE5SDs7QUFBaUksYUFBSSxJQUFJQyxDQUFDLEdBQUMsQ0FBVixFQUFZQSxDQUFDLEdBQUMsQ0FBZCxFQUFnQkEsQ0FBQyxFQUFqQjtBQUFvQmEsVUFBQUEsQ0FBQyxDQUFDYixDQUFELENBQUQsR0FBSyxZQUFVYSxDQUFDLENBQUNiLENBQUQsQ0FBRCxJQUFNLENBQU4sR0FBUWEsQ0FBQyxDQUFDYixDQUFELENBQUQsS0FBTyxFQUF6QixJQUE2QixjQUFZYSxDQUFDLENBQUNiLENBQUQsQ0FBRCxJQUFNLEVBQU4sR0FBU2EsQ0FBQyxDQUFDYixDQUFELENBQUQsS0FBTyxDQUE1QixDQUFsQyxFQUFpRVosQ0FBQyxDQUFDTyxDQUFDLEdBQUNLLENBQUgsQ0FBRCxJQUFRYSxDQUFDLENBQUNiLENBQUQsQ0FBMUU7QUFBcEI7QUFBa0csT0FBMWlDO0FBQTJpQ3FELE1BQUFBLFNBQVMsRUFBQyxDQUFyakM7QUFBdWpDd0osTUFBQUEsTUFBTSxFQUFDO0FBQTlqQyxLQUFULENBQXBFO0FBQStvQ2xOLElBQUFBLENBQUMsQ0FBQ3lSLE1BQUYsR0FBU3BSLENBQUMsQ0FBQ2tFLGFBQUYsQ0FBZ0JoQyxDQUFoQixDQUFUO0FBQTRCLEdBQXptRSxFQURuek8sRUFDKzVTOUMsQ0FBQyxDQUFDNk4sSUFBRixDQUFPb0UsR0FBUCxHQUFXLFlBQVU7QUFBQyxRQUFJaFMsQ0FBQyxHQUFDRCxDQUFDLENBQUNhLEdBQUYsQ0FBTWlOLGVBQU4sQ0FBc0I5TSxNQUF0QixFQUFOO0FBQUEsUUFBcUNULENBQUMsR0FBQ04sQ0FBQyxDQUFDOE4sU0FBRixHQUFZOU4sQ0FBQyxDQUFDZSxNQUFGLENBQVM7QUFBQ3FOLE1BQUFBLFlBQVksRUFBQyxzQkFBU3JPLENBQVQsRUFBV0MsQ0FBWCxFQUFhO0FBQUMsWUFBSU0sQ0FBQyxHQUFDLEtBQUswTixPQUFYO0FBQUEsWUFBbUJ0TixDQUFDLEdBQUNKLENBQUMsQ0FBQzBELFNBQXZCO0FBQUEsWUFBaUNyRCxDQUFDLEdBQUMsS0FBS3NOLEdBQXhDO0FBQUEsWUFBNENwTixDQUFDLEdBQUMsS0FBSzhRLFFBQW5EO0FBQTREaFIsUUFBQUEsQ0FBQyxLQUFHRSxDQUFDLEdBQUMsS0FBSzhRLFFBQUwsR0FBY2hSLENBQUMsQ0FBQ3dCLEtBQUYsQ0FBUSxDQUFSLENBQWhCLEVBQTJCLEtBQUs4TCxHQUFMLEdBQVMsS0FBSyxDQUE1QyxDQUFEO0FBQWdELFlBQUl6TSxDQUFDLEdBQUNYLENBQUMsQ0FBQ3NCLEtBQUYsQ0FBUSxDQUFSLENBQU47QUFBaUI3QixRQUFBQSxDQUFDLENBQUMrTixZQUFGLENBQWU3TSxDQUFmLEVBQWlCLENBQWpCLEdBQW9CWCxDQUFDLENBQUNILENBQUMsR0FBQyxDQUFILENBQUQsR0FBT0csQ0FBQyxDQUFDSCxDQUFDLEdBQUMsQ0FBSCxDQUFELEdBQU8sQ0FBUCxHQUFTLENBQXBDOztBQUFzQyxhQUFJLElBQUkyQixDQUFDLEdBQUMsQ0FBVixFQUFZQSxDQUFDLEdBQUMzQixDQUFkLEVBQWdCMkIsQ0FBQyxFQUFqQjtBQUFvQnRDLFVBQUFBLENBQUMsQ0FBQ0MsQ0FBQyxHQUFDcUMsQ0FBSCxDQUFELElBQVFiLENBQUMsQ0FBQ2EsQ0FBRCxDQUFUO0FBQXBCO0FBQWlDO0FBQWhPLEtBQVQsQ0FBbkQ7QUFBK1IsV0FBT3JDLENBQUMsQ0FBQytOLFNBQUYsR0FBWXpOLENBQVosRUFBY04sQ0FBckI7QUFBdUIsR0FBalUsRUFEMTZTLEVBQzh1VCxZQUFVO0FBQUMsYUFBU0EsQ0FBVCxHQUFZO0FBQUMsV0FBSSxJQUFJRCxDQUFDLEdBQUMsS0FBSzZSLEVBQVgsRUFBYzVSLENBQUMsR0FBQyxLQUFLNlIsRUFBckIsRUFBd0J2UixDQUFDLEdBQUMsQ0FBOUIsRUFBZ0NBLENBQUMsR0FBQyxDQUFsQyxFQUFvQ0EsQ0FBQyxFQUFyQztBQUF3QytCLFFBQUFBLENBQUMsQ0FBQy9CLENBQUQsQ0FBRCxHQUFLTixDQUFDLENBQUNNLENBQUQsQ0FBTjtBQUF4Qzs7QUFBa0ROLE1BQUFBLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLLFVBQUwsR0FBZ0IsS0FBSzhSLEVBQXJCLEdBQXdCLENBQTdCLEVBQStCOVIsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUssVUFBTCxJQUFpQkEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLENBQVAsR0FBU3FDLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxDQUFoQixHQUFrQixDQUFsQixHQUFvQixDQUFyQyxJQUF3QyxDQUE1RSxFQUE4RXJDLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLLFNBQUwsSUFBZ0JBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxDQUFQLEdBQVNxQyxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sQ0FBaEIsR0FBa0IsQ0FBbEIsR0FBb0IsQ0FBcEMsSUFBdUMsQ0FBMUgsRUFBNEhyQyxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBSyxVQUFMLElBQWlCQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sQ0FBUCxHQUFTcUMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLENBQWhCLEdBQWtCLENBQWxCLEdBQW9CLENBQXJDLElBQXdDLENBQXpLLEVBQTJLckMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUssVUFBTCxJQUFpQkEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLENBQVAsR0FBU3FDLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxDQUFoQixHQUFrQixDQUFsQixHQUFvQixDQUFyQyxJQUF3QyxDQUF4TixFQUEwTnJDLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLLFNBQUwsSUFBZ0JBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxDQUFQLEdBQVNxQyxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sQ0FBaEIsR0FBa0IsQ0FBbEIsR0FBb0IsQ0FBcEMsSUFBdUMsQ0FBdFEsRUFBd1FyQyxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBSyxVQUFMLElBQWlCQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sQ0FBUCxHQUFTcUMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLENBQWhCLEdBQWtCLENBQWxCLEdBQW9CLENBQXJDLElBQXdDLENBQXJULEVBQXVUckMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUssVUFBTCxJQUFpQkEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLENBQVAsR0FBU3FDLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxDQUFoQixHQUFrQixDQUFsQixHQUFvQixDQUFyQyxJQUF3QyxDQUFwVyxFQUFzVyxLQUFLeVAsRUFBTCxHQUFROVIsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLENBQVAsR0FBU3FDLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxDQUFoQixHQUFrQixDQUFsQixHQUFvQixDQUFsWTs7QUFBb1ksV0FBSSxJQUFJL0IsQ0FBQyxHQUFDLENBQVYsRUFBWUEsQ0FBQyxHQUFDLENBQWQsRUFBZ0JBLENBQUMsRUFBakIsRUFBb0I7QUFBQyxZQUFJSSxDQUFDLEdBQUNYLENBQUMsQ0FBQ08sQ0FBRCxDQUFELEdBQUtOLENBQUMsQ0FBQ00sQ0FBRCxDQUFaO0FBQUEsWUFBZ0JLLENBQUMsR0FBQyxRQUFNRCxDQUF4QjtBQUFBLFlBQTBCRyxDQUFDLEdBQUNILENBQUMsS0FBRyxFQUFoQztBQUFBLFlBQW1DYyxDQUFDLEdBQUMsQ0FBQyxDQUFDYixDQUFDLEdBQUNBLENBQUYsS0FBTSxFQUFQLElBQVdBLENBQUMsR0FBQ0UsQ0FBYixLQUFpQixFQUFsQixJQUFzQkEsQ0FBQyxHQUFDQSxDQUE3RDtBQUFBLFlBQStEZ0MsQ0FBQyxHQUFDLENBQUMsQ0FBQyxhQUFXbkMsQ0FBWixJQUFlQSxDQUFmLEdBQWlCLENBQWxCLEtBQXNCLENBQUMsUUFBTUEsQ0FBUCxJQUFVQSxDQUFWLEdBQVksQ0FBbEMsQ0FBakU7QUFBc0dtQixRQUFBQSxDQUFDLENBQUN2QixDQUFELENBQUQsR0FBS2tCLENBQUMsR0FBQ3FCLENBQVA7QUFBUzs7QUFBQTlDLE1BQUFBLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBSzhCLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNLEVBQU4sR0FBU0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLEVBQXRCLEtBQTJCQSxDQUFDLENBQUMsQ0FBRCxDQUFELElBQU0sRUFBTixHQUFTQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sRUFBM0MsSUFBK0MsQ0FBcEQsRUFBc0Q5QixDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUs4QixDQUFDLENBQUMsQ0FBRCxDQUFELElBQU1BLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxDQUFOLEdBQVFBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUFyQixJQUF5QkEsQ0FBQyxDQUFDLENBQUQsQ0FBMUIsR0FBOEIsQ0FBekYsRUFBMkY5QixDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUs4QixDQUFDLENBQUMsQ0FBRCxDQUFELElBQU1BLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxFQUFOLEdBQVNBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUF0QixLQUEyQkEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNLEVBQU4sR0FBU0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLEVBQTNDLElBQStDLENBQS9JLEVBQWlKOUIsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLOEIsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNQSxDQUFDLENBQUMsQ0FBRCxDQUFELElBQU0sQ0FBTixHQUFRQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sRUFBckIsSUFBeUJBLENBQUMsQ0FBQyxDQUFELENBQTFCLEdBQThCLENBQXBMLEVBQXNMOUIsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLOEIsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNQSxDQUFDLENBQUMsQ0FBRCxDQUFELElBQU0sRUFBTixHQUFTQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sRUFBdEIsS0FBMkJBLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxFQUFOLEdBQVNBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUEzQyxJQUErQyxDQUExTyxFQUE0TzlCLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBSzhCLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNLENBQU4sR0FBUUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLEVBQXJCLElBQXlCQSxDQUFDLENBQUMsQ0FBRCxDQUExQixHQUE4QixDQUEvUSxFQUFpUjlCLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBSzhCLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNLEVBQU4sR0FBU0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLEVBQXRCLEtBQTJCQSxDQUFDLENBQUMsQ0FBRCxDQUFELElBQU0sRUFBTixHQUFTQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sRUFBM0MsSUFBK0MsQ0FBclUsRUFBdVU5QixDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUs4QixDQUFDLENBQUMsQ0FBRCxDQUFELElBQU1BLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxDQUFOLEdBQVFBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUFyQixJQUF5QkEsQ0FBQyxDQUFDLENBQUQsQ0FBMUIsR0FBOEIsQ0FBMVc7QUFBNFc7O0FBQUEsUUFBSXZCLENBQUMsR0FBQ1AsQ0FBTjtBQUFBLFFBQVFXLENBQUMsR0FBQ0osQ0FBQyxDQUFDTSxHQUFaO0FBQUEsUUFBZ0JELENBQUMsR0FBQ0QsQ0FBQyxDQUFDaU4sWUFBcEI7QUFBQSxRQUFpQzlNLENBQUMsR0FBQ1AsQ0FBQyxDQUFDMEUsSUFBckM7QUFBQSxRQUEwQ3hELENBQUMsR0FBQyxFQUE1QztBQUFBLFFBQStDYSxDQUFDLEdBQUMsRUFBakQ7QUFBQSxRQUFvRFIsQ0FBQyxHQUFDLEVBQXREO0FBQUEsUUFBeURnQixDQUFDLEdBQUNoQyxDQUFDLENBQUNvUixZQUFGLEdBQWV0UixDQUFDLENBQUNJLE1BQUYsQ0FBUztBQUFDMEQsTUFBQUEsUUFBUSxFQUFDLG9CQUFVO0FBQUMsWUFBSTFFLENBQUMsR0FBQyxLQUFLdU4sSUFBTCxDQUFVNUwsS0FBaEI7QUFBQSxZQUFzQnBCLENBQUMsR0FBQyxLQUFLa0UsR0FBTCxDQUFTb0ssRUFBakM7QUFBQSxZQUFvQ2xPLENBQUMsR0FBQyxLQUFLa1IsRUFBTCxHQUFRLENBQUM3UixDQUFDLENBQUMsQ0FBRCxDQUFGLEVBQU1BLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxFQUFOLEdBQVNBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUF0QixFQUF5QkEsQ0FBQyxDQUFDLENBQUQsQ0FBMUIsRUFBOEJBLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxFQUFOLEdBQVNBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUE5QyxFQUFpREEsQ0FBQyxDQUFDLENBQUQsQ0FBbEQsRUFBc0RBLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxFQUFOLEdBQVNBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUF0RSxFQUF5RUEsQ0FBQyxDQUFDLENBQUQsQ0FBMUUsRUFBOEVBLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxFQUFOLEdBQVNBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUE5RixDQUE5QztBQUFBLFlBQWdKWSxDQUFDLEdBQUMsS0FBS2tSLEVBQUwsR0FBUSxDQUFDOVIsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNLEVBQU4sR0FBU0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLEVBQWpCLEVBQW9CLGFBQVdBLENBQUMsQ0FBQyxDQUFELENBQVosR0FBZ0IsUUFBTUEsQ0FBQyxDQUFDLENBQUQsQ0FBM0MsRUFBK0NBLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxFQUFOLEdBQVNBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUEvRCxFQUFrRSxhQUFXQSxDQUFDLENBQUMsQ0FBRCxDQUFaLEdBQWdCLFFBQU1BLENBQUMsQ0FBQyxDQUFELENBQXpGLEVBQTZGQSxDQUFDLENBQUMsQ0FBRCxDQUFELElBQU0sRUFBTixHQUFTQSxDQUFDLENBQUMsQ0FBRCxDQUFELEtBQU8sRUFBN0csRUFBZ0gsYUFBV0EsQ0FBQyxDQUFDLENBQUQsQ0FBWixHQUFnQixRQUFNQSxDQUFDLENBQUMsQ0FBRCxDQUF2SSxFQUEySUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNLEVBQU4sR0FBU0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxLQUFPLEVBQTNKLEVBQThKLGFBQVdBLENBQUMsQ0FBQyxDQUFELENBQVosR0FBZ0IsUUFBTUEsQ0FBQyxDQUFDLENBQUQsQ0FBckwsQ0FBMUo7QUFBb1YsYUFBSytSLEVBQUwsR0FBUSxDQUFSOztBQUFVLGFBQUksSUFBSWpSLENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQyxDQUFkLEVBQWdCQSxDQUFDLEVBQWpCO0FBQW9CYixVQUFBQSxDQUFDLENBQUNrQyxJQUFGLENBQU8sSUFBUDtBQUFwQjs7QUFBaUMsYUFBSSxJQUFJckIsQ0FBQyxHQUFDLENBQVYsRUFBWUEsQ0FBQyxHQUFDLENBQWQsRUFBZ0JBLENBQUMsRUFBakI7QUFBb0JGLFVBQUFBLENBQUMsQ0FBQ0UsQ0FBRCxDQUFELElBQU1ILENBQUMsQ0FBQ0csQ0FBQyxHQUFDLENBQUYsR0FBSSxDQUFMLENBQVA7QUFBcEI7O0FBQW1DLFlBQUdQLENBQUgsRUFBSztBQUFDLGNBQUlrQixDQUFDLEdBQUNsQixDQUFDLENBQUNvQixLQUFSO0FBQUEsY0FBY1csQ0FBQyxHQUFDYixDQUFDLENBQUMsQ0FBRCxDQUFqQjtBQUFBLGNBQXFCSyxDQUFDLEdBQUNMLENBQUMsQ0FBQyxDQUFELENBQXhCO0FBQUEsY0FBNEJxQixDQUFDLEdBQUMsWUFBVVIsQ0FBQyxJQUFFLENBQUgsR0FBS0EsQ0FBQyxLQUFHLEVBQW5CLElBQXVCLGNBQVlBLENBQUMsSUFBRSxFQUFILEdBQU1BLENBQUMsS0FBRyxDQUF0QixDQUFyRDtBQUFBLGNBQThFYSxDQUFDLEdBQUMsWUFBVXJCLENBQUMsSUFBRSxDQUFILEdBQUtBLENBQUMsS0FBRyxFQUFuQixJQUF1QixjQUFZQSxDQUFDLElBQUUsRUFBSCxHQUFNQSxDQUFDLEtBQUcsQ0FBdEIsQ0FBdkc7QUFBQSxjQUFnSTRCLENBQUMsR0FBQ1osQ0FBQyxLQUFHLEVBQUosR0FBTyxhQUFXSyxDQUFwSjtBQUFBLGNBQXNKbUIsQ0FBQyxHQUFDbkIsQ0FBQyxJQUFFLEVBQUgsR0FBTSxRQUFNTCxDQUFwSztBQUFzS2xDLFVBQUFBLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTWtDLENBQU4sRUFBUWxDLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTThDLENBQWQsRUFBZ0I5QyxDQUFDLENBQUMsQ0FBRCxDQUFELElBQU11QyxDQUF0QixFQUF3QnZDLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTTBELENBQTlCLEVBQWdDMUQsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNa0MsQ0FBdEMsRUFBd0NsQyxDQUFDLENBQUMsQ0FBRCxDQUFELElBQU04QyxDQUE5QyxFQUFnRDlDLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTXVDLENBQXRELEVBQXdEdkMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxJQUFNMEQsQ0FBOUQ7O0FBQWdFLGVBQUksSUFBSXhELENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQyxDQUFkLEVBQWdCQSxDQUFDLEVBQWpCO0FBQW9CYixZQUFBQSxDQUFDLENBQUNrQyxJQUFGLENBQU8sSUFBUDtBQUFwQjtBQUFpQztBQUFDLE9BQXJzQjtBQUFzc0JrQyxNQUFBQSxlQUFlLEVBQUMseUJBQVNyRSxDQUFULEVBQVdPLENBQVgsRUFBYTtBQUFDLFlBQUlJLENBQUMsR0FBQyxLQUFLa1IsRUFBWDtBQUFjNVIsUUFBQUEsQ0FBQyxDQUFDa0MsSUFBRixDQUFPLElBQVAsR0FBYVYsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLZCxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUFaLEdBQWVBLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxFQUF2QyxFQUEwQ2MsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLZCxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUFaLEdBQWVBLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxFQUFwRSxFQUF1RWMsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLZCxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUFaLEdBQWVBLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxFQUFqRyxFQUFvR2MsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLZCxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsS0FBTyxFQUFaLEdBQWVBLENBQUMsQ0FBQyxDQUFELENBQUQsSUFBTSxFQUE5SDs7QUFBaUksYUFBSSxJQUFJQyxDQUFDLEdBQUMsQ0FBVixFQUFZQSxDQUFDLEdBQUMsQ0FBZCxFQUFnQkEsQ0FBQyxFQUFqQjtBQUFvQmEsVUFBQUEsQ0FBQyxDQUFDYixDQUFELENBQUQsR0FBSyxZQUFVYSxDQUFDLENBQUNiLENBQUQsQ0FBRCxJQUFNLENBQU4sR0FBUWEsQ0FBQyxDQUFDYixDQUFELENBQUQsS0FBTyxFQUF6QixJQUE2QixjQUFZYSxDQUFDLENBQUNiLENBQUQsQ0FBRCxJQUFNLEVBQU4sR0FBU2EsQ0FBQyxDQUFDYixDQUFELENBQUQsS0FBTyxDQUE1QixDQUFsQyxFQUFpRVosQ0FBQyxDQUFDTyxDQUFDLEdBQUNLLENBQUgsQ0FBRCxJQUFRYSxDQUFDLENBQUNiLENBQUQsQ0FBMUU7QUFBcEI7QUFBa0csT0FBcjlCO0FBQXM5QnFELE1BQUFBLFNBQVMsRUFBQyxDQUFoK0I7QUFBaytCd0osTUFBQUEsTUFBTSxFQUFDO0FBQXorQixLQUFULENBQTFFO0FBQWdrQ2xOLElBQUFBLENBQUMsQ0FBQzJSLFlBQUYsR0FBZXRSLENBQUMsQ0FBQ2tFLGFBQUYsQ0FBZ0JoQyxDQUFoQixDQUFmO0FBQWtDLEdBQWhpRSxFQUQ5dVQsRUFDaXhYOUMsQ0FBQyxDQUFDd08sR0FBRixDQUFNMEIsV0FBTixHQUFrQjtBQUFDMUIsSUFBQUEsR0FBRyxFQUFDLGFBQVN4TyxDQUFULEVBQVdDLENBQVgsRUFBYTtBQUFDLFVBQUlNLENBQUMsR0FBQyxJQUFFTixDQUFSO0FBQVVELE1BQUFBLENBQUMsQ0FBQ2lDLEtBQUYsSUFBVWpDLENBQUMsQ0FBQzRCLFFBQUYsSUFBWXJCLENBQUMsSUFBRVAsQ0FBQyxDQUFDNEIsUUFBRixHQUFXckIsQ0FBWCxJQUFjQSxDQUFoQixDQUF2QjtBQUEwQyxLQUF2RTtBQUF3RW1PLElBQUFBLEtBQUssRUFBQyxlQUFTMU8sQ0FBVCxFQUFXO0FBQUMsV0FBSSxJQUFJQyxDQUFDLEdBQUNELENBQUMsQ0FBQzJCLEtBQVIsRUFBY3BCLENBQUMsR0FBQ1AsQ0FBQyxDQUFDNEIsUUFBRixHQUFXLENBQS9CLEVBQWlDLEVBQUUzQixDQUFDLENBQUNNLENBQUMsS0FBRyxDQUFMLENBQUQsS0FBVyxLQUFHQSxDQUFDLEdBQUMsQ0FBRixHQUFJLENBQWxCLEdBQW9CLEdBQXRCLENBQWpDO0FBQTZEQSxRQUFBQSxDQUFDO0FBQTlEOztBQUFpRVAsTUFBQUEsQ0FBQyxDQUFDNEIsUUFBRixHQUFXckIsQ0FBQyxHQUFDLENBQWI7QUFBZTtBQUExSyxHQURueVgsRUFDKzhYUCxDQUR0OVg7QUFDdzlYLENBRGpoZixDQUFELEVBRUEiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIiFmdW5jdGlvbih0LHIpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWV4cG9ydHM9cigpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10scik6dC5DcnlwdG9KUz1yKCl9KHRoaXMsZnVuY3Rpb24oKXt2YXIgdD10fHxmdW5jdGlvbih0LHIpe3ZhciBlPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gZnVuY3Rpb24ocil7dmFyIGU7cmV0dXJuIHQucHJvdG90eXBlPXIsZT1uZXcgdCx0LnByb3RvdHlwZT1udWxsLGV9fSgpLGk9e30sbj1pLmxpYj17fSxvPW4uQmFzZT1mdW5jdGlvbigpe3JldHVybntleHRlbmQ6ZnVuY3Rpb24odCl7dmFyIHI9ZSh0aGlzKTtyZXR1cm4gdCYmci5taXhJbih0KSxyLmhhc093blByb3BlcnR5KFwiaW5pdFwiKSYmdGhpcy5pbml0IT09ci5pbml0fHwoci5pbml0PWZ1bmN0aW9uKCl7ci4kc3VwZXIuaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxyLmluaXQucHJvdG90eXBlPXIsci4kc3VwZXI9dGhpcyxyfSxjcmVhdGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmV4dGVuZCgpO3JldHVybiB0LmluaXQuYXBwbHkodCxhcmd1bWVudHMpLHR9LGluaXQ6ZnVuY3Rpb24oKXt9LG1peEluOmZ1bmN0aW9uKHQpe2Zvcih2YXIgciBpbiB0KXQuaGFzT3duUHJvcGVydHkocikmJih0aGlzW3JdPXRbcl0pO3QuaGFzT3duUHJvcGVydHkoXCJ0b1N0cmluZ1wiKSYmKHRoaXMudG9TdHJpbmc9dC50b1N0cmluZyl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5pdC5wcm90b3R5cGUuZXh0ZW5kKHRoaXMpfX19KCkscz1uLldvcmRBcnJheT1vLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3Q9dGhpcy53b3Jkcz10fHxbXSxlIT1yP3RoaXMuc2lnQnl0ZXM9ZTp0aGlzLnNpZ0J5dGVzPTQqdC5sZW5ndGh9LHRvU3RyaW5nOmZ1bmN0aW9uKHQpe3JldHVybih0fHxjKS5zdHJpbmdpZnkodGhpcyl9LGNvbmNhdDpmdW5jdGlvbih0KXt2YXIgcj10aGlzLndvcmRzLGU9dC53b3JkcyxpPXRoaXMuc2lnQnl0ZXMsbj10LnNpZ0J5dGVzO2lmKHRoaXMuY2xhbXAoKSxpJTQpZm9yKHZhciBvPTA7bzxuO28rKyl7dmFyIHM9ZVtvPj4+Ml0+Pj4yNC1vJTQqOCYyNTU7cltpK28+Pj4yXXw9czw8MjQtKGkrbyklNCo4fWVsc2UgZm9yKHZhciBvPTA7bzxuO28rPTQpcltpK28+Pj4yXT1lW28+Pj4yXTtyZXR1cm4gdGhpcy5zaWdCeXRlcys9bix0aGlzfSxjbGFtcDpmdW5jdGlvbigpe3ZhciByPXRoaXMud29yZHMsZT10aGlzLnNpZ0J5dGVzO3JbZT4+PjJdJj00Mjk0OTY3Mjk1PDwzMi1lJTQqOCxyLmxlbmd0aD10LmNlaWwoZS80KX0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1vLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQud29yZHM9dGhpcy53b3Jkcy5zbGljZSgwKSx0fSxyYW5kb206ZnVuY3Rpb24ocil7Zm9yKHZhciBlLGk9W10sbj1mdW5jdGlvbihyKXt2YXIgcj1yLGU9OTg3NjU0MzIxLGk9NDI5NDk2NzI5NTtyZXR1cm4gZnVuY3Rpb24oKXtlPTM2OTY5Kig2NTUzNSZlKSsoZT4+MTYpJmkscj0xOGUzKig2NTUzNSZyKSsocj4+MTYpJmk7dmFyIG49KGU8PDE2KStyJmk7cmV0dXJuIG4vPTQyOTQ5NjcyOTYsbis9LjUsbioodC5yYW5kb20oKT4uNT8xOi0xKX19LG89MDtvPHI7bys9NCl7dmFyIGE9big0Mjk0OTY3Mjk2KihlfHx0LnJhbmRvbSgpKSk7ZT05ODc2NTQwNzEqYSgpLGkucHVzaCg0Mjk0OTY3Mjk2KmEoKXwwKX1yZXR1cm4gbmV3IHMuaW5pdChpLHIpfX0pLGE9aS5lbmM9e30sYz1hLkhleD17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10LndvcmRzLGU9dC5zaWdCeXRlcyxpPVtdLG49MDtuPGU7bisrKXt2YXIgbz1yW24+Pj4yXT4+PjI0LW4lNCo4JjI1NTtpLnB1c2goKG8+Pj40KS50b1N0cmluZygxNikpLGkucHVzaCgoMTUmbykudG9TdHJpbmcoMTYpKX1yZXR1cm4gaS5qb2luKFwiXCIpfSxwYXJzZTpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC5sZW5ndGgsZT1bXSxpPTA7aTxyO2krPTIpZVtpPj4+M118PXBhcnNlSW50KHQuc3Vic3RyKGksMiksMTYpPDwyNC1pJTgqNDtyZXR1cm4gbmV3IHMuaW5pdChlLHIvMil9fSxoPWEuTGF0aW4xPXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQud29yZHMsZT10LnNpZ0J5dGVzLGk9W10sbj0wO248ZTtuKyspe3ZhciBvPXJbbj4+PjJdPj4+MjQtbiU0KjgmMjU1O2kucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKG8pKX1yZXR1cm4gaS5qb2luKFwiXCIpfSxwYXJzZTpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC5sZW5ndGgsZT1bXSxpPTA7aTxyO2krKyllW2k+Pj4yXXw9KDI1NSZ0LmNoYXJDb2RlQXQoaSkpPDwyNC1pJTQqODtyZXR1cm4gbmV3IHMuaW5pdChlLHIpfX0sbD1hLlV0Zjg9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoaC5zdHJpbmdpZnkodCkpKX1jYXRjaCh0KXt0aHJvdyBuZXcgRXJyb3IoXCJNYWxmb3JtZWQgVVRGLTggZGF0YVwiKX19LHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBoLnBhcnNlKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudCh0KSkpfX0sZj1uLkJ1ZmZlcmVkQmxvY2tBbGdvcml0aG09by5leHRlbmQoe3Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5fZGF0YT1uZXcgcy5pbml0LHRoaXMuX25EYXRhQnl0ZXM9MH0sX2FwcGVuZDpmdW5jdGlvbih0KXtcInN0cmluZ1wiPT10eXBlb2YgdCYmKHQ9bC5wYXJzZSh0KSksdGhpcy5fZGF0YS5jb25jYXQodCksdGhpcy5fbkRhdGFCeXRlcys9dC5zaWdCeXRlc30sX3Byb2Nlc3M6ZnVuY3Rpb24ocil7dmFyIGU9dGhpcy5fZGF0YSxpPWUud29yZHMsbj1lLnNpZ0J5dGVzLG89dGhpcy5ibG9ja1NpemUsYT00Km8sYz1uL2E7Yz1yP3QuY2VpbChjKTp0Lm1heCgoMHxjKS10aGlzLl9taW5CdWZmZXJTaXplLDApO3ZhciBoPWMqbyxsPXQubWluKDQqaCxuKTtpZihoKXtmb3IodmFyIGY9MDtmPGg7Zis9byl0aGlzLl9kb1Byb2Nlc3NCbG9jayhpLGYpO3ZhciB1PWkuc3BsaWNlKDAsaCk7ZS5zaWdCeXRlcy09bH1yZXR1cm4gbmV3IHMuaW5pdCh1LGwpfSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PW8uY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gdC5fZGF0YT10aGlzLl9kYXRhLmNsb25lKCksdH0sX21pbkJ1ZmZlclNpemU6MH0pLHU9KG4uSGFzaGVyPWYuZXh0ZW5kKHtjZmc6by5leHRlbmQoKSxpbml0OmZ1bmN0aW9uKHQpe3RoaXMuY2ZnPXRoaXMuY2ZnLmV4dGVuZCh0KSx0aGlzLnJlc2V0KCl9LHJlc2V0OmZ1bmN0aW9uKCl7Zi5yZXNldC5jYWxsKHRoaXMpLHRoaXMuX2RvUmVzZXQoKX0sdXBkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hcHBlbmQodCksdGhpcy5fcHJvY2VzcygpLHRoaXN9LGZpbmFsaXplOmZ1bmN0aW9uKHQpe3QmJnRoaXMuX2FwcGVuZCh0KTt2YXIgcj10aGlzLl9kb0ZpbmFsaXplKCk7cmV0dXJuIHJ9LGJsb2NrU2l6ZToxNixfY3JlYXRlSGVscGVyOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihyLGUpe3JldHVybiBuZXcgdC5pbml0KGUpLmZpbmFsaXplKHIpfX0sX2NyZWF0ZUhtYWNIZWxwZXI6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHIsZSl7cmV0dXJuIG5ldyB1LkhNQUMuaW5pdCh0LGUpLmZpbmFsaXplKHIpfX19KSxpLmFsZ289e30pO3JldHVybiBpfShNYXRoKTtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiByKHQscixlKXtmb3IodmFyIGk9W10sbz0wLHM9MDtzPHI7cysrKWlmKHMlNCl7dmFyIGE9ZVt0LmNoYXJDb2RlQXQocy0xKV08PHMlNCoyLGM9ZVt0LmNoYXJDb2RlQXQocyldPj4+Ni1zJTQqMjtpW28+Pj4yXXw9KGF8Yyk8PDI0LW8lNCo4LG8rK31yZXR1cm4gbi5jcmVhdGUoaSxvKX12YXIgZT10LGk9ZS5saWIsbj1pLldvcmRBcnJheSxvPWUuZW5jO28uQmFzZTY0PXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7dmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT10aGlzLl9tYXA7dC5jbGFtcCgpO2Zvcih2YXIgbj1bXSxvPTA7bzxlO28rPTMpZm9yKHZhciBzPXJbbz4+PjJdPj4+MjQtbyU0KjgmMjU1LGE9cltvKzE+Pj4yXT4+PjI0LShvKzEpJTQqOCYyNTUsYz1yW28rMj4+PjJdPj4+MjQtKG8rMiklNCo4JjI1NSxoPXM8PDE2fGE8PDh8YyxsPTA7bDw0JiZvKy43NSpsPGU7bCsrKW4ucHVzaChpLmNoYXJBdChoPj4+NiooMy1sKSY2MykpO3ZhciBmPWkuY2hhckF0KDY0KTtpZihmKWZvcig7bi5sZW5ndGglNDspbi5wdXNoKGYpO3JldHVybiBuLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlPXQubGVuZ3RoLGk9dGhpcy5fbWFwLG49dGhpcy5fcmV2ZXJzZU1hcDtpZighbil7bj10aGlzLl9yZXZlcnNlTWFwPVtdO2Zvcih2YXIgbz0wO288aS5sZW5ndGg7bysrKW5baS5jaGFyQ29kZUF0KG8pXT1vfXZhciBzPWkuY2hhckF0KDY0KTtpZihzKXt2YXIgYT10LmluZGV4T2Yocyk7YSE9PS0xJiYoZT1hKX1yZXR1cm4gcih0LGUsbil9LF9tYXA6XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPVwifX0oKSxmdW5jdGlvbihyKXtmdW5jdGlvbiBlKHQscixlLGksbixvLHMpe3ZhciBhPXQrKHImZXx+ciZpKStuK3M7cmV0dXJuKGE8PG98YT4+PjMyLW8pK3J9ZnVuY3Rpb24gaSh0LHIsZSxpLG4sbyxzKXt2YXIgYT10KyhyJml8ZSZ+aSkrbitzO3JldHVybihhPDxvfGE+Pj4zMi1vKStyfWZ1bmN0aW9uIG4odCxyLGUsaSxuLG8scyl7dmFyIGE9dCsocl5lXmkpK24rcztyZXR1cm4oYTw8b3xhPj4+MzItbykrcn1mdW5jdGlvbiBvKHQscixlLGksbixvLHMpe3ZhciBhPXQrKGVeKHJ8fmkpKStuK3M7cmV0dXJuKGE8PG98YT4+PjMyLW8pK3J9dmFyIHM9dCxhPXMubGliLGM9YS5Xb3JkQXJyYXksaD1hLkhhc2hlcixsPXMuYWxnbyxmPVtdOyFmdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8NjQ7dCsrKWZbdF09NDI5NDk2NzI5NipyLmFicyhyLnNpbih0KzEpKXwwfSgpO3ZhciB1PWwuTUQ1PWguZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IGMuaW5pdChbMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4XSl9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe2Zvcih2YXIgcz0wO3M8MTY7cysrKXt2YXIgYT1yK3MsYz10W2FdO3RbYV09MTY3MTE5MzUmKGM8PDh8Yz4+PjI0KXw0Mjc4MjU1MzYwJihjPDwyNHxjPj4+OCl9dmFyIGg9dGhpcy5faGFzaC53b3JkcyxsPXRbciswXSx1PXRbcisxXSxkPXRbcisyXSx2PXRbciszXSxwPXRbcis0XSxfPXRbcis1XSx5PXRbcis2XSxnPXRbcis3XSxCPXRbcis4XSx3PXRbcis5XSxrPXRbcisxMF0sUz10W3IrMTFdLG09dFtyKzEyXSx4PXRbcisxM10sYj10W3IrMTRdLEg9dFtyKzE1XSx6PWhbMF0sQT1oWzFdLEM9aFsyXSxEPWhbM107ej1lKHosQSxDLEQsbCw3LGZbMF0pLEQ9ZShELHosQSxDLHUsMTIsZlsxXSksQz1lKEMsRCx6LEEsZCwxNyxmWzJdKSxBPWUoQSxDLEQseix2LDIyLGZbM10pLHo9ZSh6LEEsQyxELHAsNyxmWzRdKSxEPWUoRCx6LEEsQyxfLDEyLGZbNV0pLEM9ZShDLEQseixBLHksMTcsZls2XSksQT1lKEEsQyxELHosZywyMixmWzddKSx6PWUoeixBLEMsRCxCLDcsZls4XSksRD1lKEQseixBLEMsdywxMixmWzldKSxDPWUoQyxELHosQSxrLDE3LGZbMTBdKSxBPWUoQSxDLEQseixTLDIyLGZbMTFdKSx6PWUoeixBLEMsRCxtLDcsZlsxMl0pLEQ9ZShELHosQSxDLHgsMTIsZlsxM10pLEM9ZShDLEQseixBLGIsMTcsZlsxNF0pLEE9ZShBLEMsRCx6LEgsMjIsZlsxNV0pLHo9aSh6LEEsQyxELHUsNSxmWzE2XSksRD1pKEQseixBLEMseSw5LGZbMTddKSxDPWkoQyxELHosQSxTLDE0LGZbMThdKSxBPWkoQSxDLEQseixsLDIwLGZbMTldKSx6PWkoeixBLEMsRCxfLDUsZlsyMF0pLEQ9aShELHosQSxDLGssOSxmWzIxXSksQz1pKEMsRCx6LEEsSCwxNCxmWzIyXSksQT1pKEEsQyxELHoscCwyMCxmWzIzXSksej1pKHosQSxDLEQsdyw1LGZbMjRdKSxEPWkoRCx6LEEsQyxiLDksZlsyNV0pLEM9aShDLEQseixBLHYsMTQsZlsyNl0pLEE9aShBLEMsRCx6LEIsMjAsZlsyN10pLHo9aSh6LEEsQyxELHgsNSxmWzI4XSksRD1pKEQseixBLEMsZCw5LGZbMjldKSxDPWkoQyxELHosQSxnLDE0LGZbMzBdKSxBPWkoQSxDLEQseixtLDIwLGZbMzFdKSx6PW4oeixBLEMsRCxfLDQsZlszMl0pLEQ9bihELHosQSxDLEIsMTEsZlszM10pLEM9bihDLEQseixBLFMsMTYsZlszNF0pLEE9bihBLEMsRCx6LGIsMjMsZlszNV0pLHo9bih6LEEsQyxELHUsNCxmWzM2XSksRD1uKEQseixBLEMscCwxMSxmWzM3XSksQz1uKEMsRCx6LEEsZywxNixmWzM4XSksQT1uKEEsQyxELHosaywyMyxmWzM5XSksej1uKHosQSxDLEQseCw0LGZbNDBdKSxEPW4oRCx6LEEsQyxsLDExLGZbNDFdKSxDPW4oQyxELHosQSx2LDE2LGZbNDJdKSxBPW4oQSxDLEQseix5LDIzLGZbNDNdKSx6PW4oeixBLEMsRCx3LDQsZls0NF0pLEQ9bihELHosQSxDLG0sMTEsZls0NV0pLEM9bihDLEQseixBLEgsMTYsZls0Nl0pLEE9bihBLEMsRCx6LGQsMjMsZls0N10pLHo9byh6LEEsQyxELGwsNixmWzQ4XSksRD1vKEQseixBLEMsZywxMCxmWzQ5XSksQz1vKEMsRCx6LEEsYiwxNSxmWzUwXSksQT1vKEEsQyxELHosXywyMSxmWzUxXSksej1vKHosQSxDLEQsbSw2LGZbNTJdKSxEPW8oRCx6LEEsQyx2LDEwLGZbNTNdKSxDPW8oQyxELHosQSxrLDE1LGZbNTRdKSxBPW8oQSxDLEQseix1LDIxLGZbNTVdKSx6PW8oeixBLEMsRCxCLDYsZls1Nl0pLEQ9byhELHosQSxDLEgsMTAsZls1N10pLEM9byhDLEQseixBLHksMTUsZls1OF0pLEE9byhBLEMsRCx6LHgsMjEsZls1OV0pLHo9byh6LEEsQyxELHAsNixmWzYwXSksRD1vKEQseixBLEMsUywxMCxmWzYxXSksQz1vKEMsRCx6LEEsZCwxNSxmWzYyXSksQT1vKEEsQyxELHosdywyMSxmWzYzXSksaFswXT1oWzBdK3p8MCxoWzFdPWhbMV0rQXwwLGhbMl09aFsyXStDfDAsaFszXT1oWzNdK0R8MH0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLGU9dC53b3JkcyxpPTgqdGhpcy5fbkRhdGFCeXRlcyxuPTgqdC5zaWdCeXRlcztlW24+Pj41XXw9MTI4PDwyNC1uJTMyO3ZhciBvPXIuZmxvb3IoaS80Mjk0OTY3Mjk2KSxzPWk7ZVsobis2ND4+Pjk8PDQpKzE1XT0xNjcxMTkzNSYobzw8OHxvPj4+MjQpfDQyNzgyNTUzNjAmKG88PDI0fG8+Pj44KSxlWyhuKzY0Pj4+OTw8NCkrMTRdPTE2NzExOTM1JihzPDw4fHM+Pj4yNCl8NDI3ODI1NTM2MCYoczw8MjR8cz4+PjgpLHQuc2lnQnl0ZXM9NCooZS5sZW5ndGgrMSksdGhpcy5fcHJvY2VzcygpO2Zvcih2YXIgYT10aGlzLl9oYXNoLGM9YS53b3JkcyxoPTA7aDw0O2grKyl7dmFyIGw9Y1toXTtjW2hdPTE2NzExOTM1JihsPDw4fGw+Pj4yNCl8NDI3ODI1NTM2MCYobDw8MjR8bD4+PjgpfXJldHVybiBhfSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PWguY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gdC5faGFzaD10aGlzLl9oYXNoLmNsb25lKCksdH19KTtzLk1ENT1oLl9jcmVhdGVIZWxwZXIodSkscy5IbWFjTUQ1PWguX2NyZWF0ZUhtYWNIZWxwZXIodSl9KE1hdGgpLGZ1bmN0aW9uKCl7dmFyIHI9dCxlPXIubGliLGk9ZS5Xb3JkQXJyYXksbj1lLkhhc2hlcixvPXIuYWxnbyxzPVtdLGE9by5TSEExPW4uZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IGkuaW5pdChbMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXRoaXMuX2hhc2gud29yZHMsaT1lWzBdLG49ZVsxXSxvPWVbMl0sYT1lWzNdLGM9ZVs0XSxoPTA7aDw4MDtoKyspe2lmKGg8MTYpc1toXT0wfHRbcitoXTtlbHNle3ZhciBsPXNbaC0zXV5zW2gtOF1ec1toLTE0XV5zW2gtMTZdO3NbaF09bDw8MXxsPj4+MzF9dmFyIGY9KGk8PDV8aT4+PjI3KStjK3NbaF07Zis9aDwyMD8obiZvfH5uJmEpKzE1MTg1MDAyNDk6aDw0MD8obl5vXmEpKzE4NTk3NzUzOTM6aDw2MD8obiZvfG4mYXxvJmEpLTE4OTQwMDc1ODg6KG5eb15hKS04OTk0OTc1MTQsYz1hLGE9byxvPW48PDMwfG4+Pj4yLG49aSxpPWZ9ZVswXT1lWzBdK2l8MCxlWzFdPWVbMV0rbnwwLGVbMl09ZVsyXStvfDAsZVszXT1lWzNdK2F8MCxlWzRdPWVbNF0rY3wwfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEscj10LndvcmRzLGU9OCp0aGlzLl9uRGF0YUJ5dGVzLGk9OCp0LnNpZ0J5dGVzO3JldHVybiByW2k+Pj41XXw9MTI4PDwyNC1pJTMyLHJbKGkrNjQ+Pj45PDw0KSsxNF09TWF0aC5mbG9vcihlLzQyOTQ5NjcyOTYpLHJbKGkrNjQ+Pj45PDw0KSsxNV09ZSx0LnNpZ0J5dGVzPTQqci5sZW5ndGgsdGhpcy5fcHJvY2VzcygpLHRoaXMuX2hhc2h9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9bi5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fX0pO3IuU0hBMT1uLl9jcmVhdGVIZWxwZXIoYSksci5IbWFjU0hBMT1uLl9jcmVhdGVIbWFjSGVscGVyKGEpfSgpLGZ1bmN0aW9uKHIpe3ZhciBlPXQsaT1lLmxpYixuPWkuV29yZEFycmF5LG89aS5IYXNoZXIscz1lLmFsZ28sYT1bXSxjPVtdOyFmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7Zm9yKHZhciBlPXIuc3FydCh0KSxpPTI7aTw9ZTtpKyspaWYoISh0JWkpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGUodCl7cmV0dXJuIDQyOTQ5NjcyOTYqKHQtKDB8dCkpfDB9Zm9yKHZhciBpPTIsbj0wO248NjQ7KXQoaSkmJihuPDgmJihhW25dPWUoci5wb3coaSwuNSkpKSxjW25dPWUoci5wb3coaSwxLzMpKSxuKyspLGkrK30oKTt2YXIgaD1bXSxsPXMuU0hBMjU2PW8uZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IG4uaW5pdChhLnNsaWNlKDApKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXRoaXMuX2hhc2gud29yZHMsaT1lWzBdLG49ZVsxXSxvPWVbMl0scz1lWzNdLGE9ZVs0XSxsPWVbNV0sZj1lWzZdLHU9ZVs3XSxkPTA7ZDw2NDtkKyspe2lmKGQ8MTYpaFtkXT0wfHRbcitkXTtlbHNle3ZhciB2PWhbZC0xNV0scD0odjw8MjV8dj4+PjcpXih2PDwxNHx2Pj4+MTgpXnY+Pj4zLF89aFtkLTJdLHk9KF88PDE1fF8+Pj4xNyleKF88PDEzfF8+Pj4xOSleXz4+PjEwO2hbZF09cCtoW2QtN10reStoW2QtMTZdfXZhciBnPWEmbF5+YSZmLEI9aSZuXmkmb15uJm8sdz0oaTw8MzB8aT4+PjIpXihpPDwxOXxpPj4+MTMpXihpPDwxMHxpPj4+MjIpLGs9KGE8PDI2fGE+Pj42KV4oYTw8MjF8YT4+PjExKV4oYTw8N3xhPj4+MjUpLFM9dStrK2crY1tkXStoW2RdLG09dytCO3U9ZixmPWwsbD1hLGE9cytTfDAscz1vLG89bixuPWksaT1TK218MH1lWzBdPWVbMF0raXwwLGVbMV09ZVsxXStufDAsZVsyXT1lWzJdK298MCxlWzNdPWVbM10rc3wwLGVbNF09ZVs0XSthfDAsZVs1XT1lWzVdK2x8MCxlWzZdPWVbNl0rZnwwLGVbN109ZVs3XSt1fDB9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGF0YSxlPXQud29yZHMsaT04KnRoaXMuX25EYXRhQnl0ZXMsbj04KnQuc2lnQnl0ZXM7cmV0dXJuIGVbbj4+PjVdfD0xMjg8PDI0LW4lMzIsZVsobis2ND4+Pjk8PDQpKzE0XT1yLmZsb29yKGkvNDI5NDk2NzI5NiksZVsobis2ND4+Pjk8PDQpKzE1XT1pLHQuc2lnQnl0ZXM9NCplLmxlbmd0aCx0aGlzLl9wcm9jZXNzKCksdGhpcy5faGFzaH0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1vLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLHR9fSk7ZS5TSEEyNTY9by5fY3JlYXRlSGVscGVyKGwpLGUuSG1hY1NIQTI1Nj1vLl9jcmVhdGVIbWFjSGVscGVyKGwpfShNYXRoKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHIodCl7cmV0dXJuIHQ8PDgmNDI3ODI1NTM2MHx0Pj4+OCYxNjcxMTkzNX12YXIgZT10LGk9ZS5saWIsbj1pLldvcmRBcnJheSxvPWUuZW5jO28uVXRmMTY9by5VdGYxNkJFPXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQud29yZHMsZT10LnNpZ0J5dGVzLGk9W10sbj0wO248ZTtuKz0yKXt2YXIgbz1yW24+Pj4yXT4+PjE2LW4lNCo4JjY1NTM1O2kucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKG8pKX1yZXR1cm4gaS5qb2luKFwiXCIpfSxwYXJzZTpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC5sZW5ndGgsZT1bXSxpPTA7aTxyO2krKyllW2k+Pj4xXXw9dC5jaGFyQ29kZUF0KGkpPDwxNi1pJTIqMTY7cmV0dXJuIG4uY3JlYXRlKGUsMipyKX19O28uVXRmMTZMRT17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LndvcmRzLGk9dC5zaWdCeXRlcyxuPVtdLG89MDtvPGk7bys9Mil7dmFyIHM9cihlW28+Pj4yXT4+PjE2LW8lNCo4JjY1NTM1KTtuLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShzKSl9cmV0dXJuIG4uam9pbihcIlwiKX0scGFyc2U6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoLGk9W10sbz0wO288ZTtvKyspaVtvPj4+MV18PXIodC5jaGFyQ29kZUF0KG8pPDwxNi1vJTIqMTYpO3JldHVybiBuLmNyZWF0ZShpLDIqZSl9fX0oKSxmdW5jdGlvbigpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIEFycmF5QnVmZmVyKXt2YXIgcj10LGU9ci5saWIsaT1lLldvcmRBcnJheSxuPWkuaW5pdCxvPWkuaW5pdD1mdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJih0PW5ldyBVaW50OEFycmF5KHQpKSwodCBpbnN0YW5jZW9mIEludDhBcnJheXx8XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFVpbnQ4Q2xhbXBlZEFycmF5JiZ0IGluc3RhbmNlb2YgVWludDhDbGFtcGVkQXJyYXl8fHQgaW5zdGFuY2VvZiBJbnQxNkFycmF5fHx0IGluc3RhbmNlb2YgVWludDE2QXJyYXl8fHQgaW5zdGFuY2VvZiBJbnQzMkFycmF5fHx0IGluc3RhbmNlb2YgVWludDMyQXJyYXl8fHQgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXl8fHQgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkpJiYodD1uZXcgVWludDhBcnJheSh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQsdC5ieXRlTGVuZ3RoKSksdCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpe2Zvcih2YXIgcj10LmJ5dGVMZW5ndGgsZT1bXSxpPTA7aTxyO2krKyllW2k+Pj4yXXw9dFtpXTw8MjQtaSU0Kjg7bi5jYWxsKHRoaXMsZSxyKX1lbHNlIG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfTtvLnByb3RvdHlwZT1pfX0oKSxmdW5jdGlvbihyKXtmdW5jdGlvbiBlKHQscixlKXtyZXR1cm4gdF5yXmV9ZnVuY3Rpb24gaSh0LHIsZSl7cmV0dXJuIHQmcnx+dCZlfWZ1bmN0aW9uIG4odCxyLGUpe3JldHVybih0fH5yKV5lfWZ1bmN0aW9uIG8odCxyLGUpe3JldHVybiB0JmV8ciZ+ZX1mdW5jdGlvbiBzKHQscixlKXtyZXR1cm4gdF4ocnx+ZSl9ZnVuY3Rpb24gYSh0LHIpe3JldHVybiB0PDxyfHQ+Pj4zMi1yfXZhciBjPXQsaD1jLmxpYixsPWguV29yZEFycmF5LGY9aC5IYXNoZXIsdT1jLmFsZ28sZD1sLmNyZWF0ZShbMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSw3LDQsMTMsMSwxMCw2LDE1LDMsMTIsMCw5LDUsMiwxNCwxMSw4LDMsMTAsMTQsNCw5LDE1LDgsMSwyLDcsMCw2LDEzLDExLDUsMTIsMSw5LDExLDEwLDAsOCwxMiw0LDEzLDMsNywxNSwxNCw1LDYsMiw0LDAsNSw5LDcsMTIsMiwxMCwxNCwxLDMsOCwxMSw2LDE1LDEzXSksdj1sLmNyZWF0ZShbNSwxNCw3LDAsOSwyLDExLDQsMTMsNiwxNSw4LDEsMTAsMywxMiw2LDExLDMsNywwLDEzLDUsMTAsMTQsMTUsOCwxMiw0LDksMSwyLDE1LDUsMSwzLDcsMTQsNiw5LDExLDgsMTIsMiwxMCwwLDQsMTMsOCw2LDQsMSwzLDExLDE1LDAsNSwxMiwyLDEzLDksNywxMCwxNCwxMiwxNSwxMCw0LDEsNSw4LDcsNiwyLDEzLDE0LDAsMyw5LDExXSkscD1sLmNyZWF0ZShbMTEsMTQsMTUsMTIsNSw4LDcsOSwxMSwxMywxNCwxNSw2LDcsOSw4LDcsNiw4LDEzLDExLDksNywxNSw3LDEyLDE1LDksMTEsNywxMywxMiwxMSwxMyw2LDcsMTQsOSwxMywxNSwxNCw4LDEzLDYsNSwxMiw3LDUsMTEsMTIsMTQsMTUsMTQsMTUsOSw4LDksMTQsNSw2LDgsNiw1LDEyLDksMTUsNSwxMSw2LDgsMTMsMTIsNSwxMiwxMywxNCwxMSw4LDUsNl0pLF89bC5jcmVhdGUoWzgsOSw5LDExLDEzLDE1LDE1LDUsNyw3LDgsMTEsMTQsMTQsMTIsNiw5LDEzLDE1LDcsMTIsOCw5LDExLDcsNywxMiw3LDYsMTUsMTMsMTEsOSw3LDE1LDExLDgsNiw2LDE0LDEyLDEzLDUsMTQsMTMsMTMsNyw1LDE1LDUsOCwxMSwxNCwxNCw2LDE0LDYsOSwxMiw5LDEyLDUsMTUsOCw4LDUsMTIsOSwxMiw1LDE0LDYsOCwxMyw2LDUsMTUsMTMsMTEsMTFdKSx5PWwuY3JlYXRlKFswLDE1MTg1MDAyNDksMTg1OTc3NTM5MywyNDAwOTU5NzA4LDI4NDA4NTM4MzhdKSxnPWwuY3JlYXRlKFsxMzUyODI5OTI2LDE1NDg2MDM2ODQsMTgzNjA3MjY5MSwyMDUzOTk0MjE3LDBdKSxCPXUuUklQRU1EMTYwPWYuZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bC5jcmVhdGUoWzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3OCwzMjg1Mzc3NTIwXSl9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe2Zvcih2YXIgYz0wO2M8MTY7YysrKXt2YXIgaD1yK2MsbD10W2hdO3RbaF09MTY3MTE5MzUmKGw8PDh8bD4+PjI0KXw0Mjc4MjU1MzYwJihsPDwyNHxsPj4+OCl9dmFyIGYsdSxCLHcsayxTLG0seCxiLEgsej10aGlzLl9oYXNoLndvcmRzLEE9eS53b3JkcyxDPWcud29yZHMsRD1kLndvcmRzLFI9di53b3JkcyxFPXAud29yZHMsTT1fLndvcmRzO1M9Zj16WzBdLG09dT16WzFdLHg9Qj16WzJdLGI9dz16WzNdLEg9az16WzRdO2Zvcih2YXIgRixjPTA7Yzw4MDtjKz0xKUY9Zit0W3IrRFtjXV18MCxGKz1jPDE2P2UodSxCLHcpK0FbMF06YzwzMj9pKHUsQix3KStBWzFdOmM8NDg/bih1LEIsdykrQVsyXTpjPDY0P28odSxCLHcpK0FbM106cyh1LEIsdykrQVs0XSxGfD0wLEY9YShGLEVbY10pLEY9RitrfDAsZj1rLGs9dyx3PWEoQiwxMCksQj11LHU9RixGPVMrdFtyK1JbY11dfDAsRis9YzwxNj9zKG0seCxiKStDWzBdOmM8MzI/byhtLHgsYikrQ1sxXTpjPDQ4P24obSx4LGIpK0NbMl06Yzw2ND9pKG0seCxiKStDWzNdOmUobSx4LGIpK0NbNF0sRnw9MCxGPWEoRixNW2NdKSxGPUYrSHwwLFM9SCxIPWIsYj1hKHgsMTApLHg9bSxtPUY7Rj16WzFdK0IrYnwwLHpbMV09elsyXSt3K0h8MCx6WzJdPXpbM10raytTfDAselszXT16WzRdK2YrbXwwLHpbNF09elswXSt1K3h8MCx6WzBdPUZ9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGF0YSxyPXQud29yZHMsZT04KnRoaXMuX25EYXRhQnl0ZXMsaT04KnQuc2lnQnl0ZXM7cltpPj4+NV18PTEyODw8MjQtaSUzMixyWyhpKzY0Pj4+OTw8NCkrMTRdPTE2NzExOTM1JihlPDw4fGU+Pj4yNCl8NDI3ODI1NTM2MCYoZTw8MjR8ZT4+PjgpLHQuc2lnQnl0ZXM9NCooci5sZW5ndGgrMSksdGhpcy5fcHJvY2VzcygpO2Zvcih2YXIgbj10aGlzLl9oYXNoLG89bi53b3JkcyxzPTA7czw1O3MrKyl7dmFyIGE9b1tzXTtvW3NdPTE2NzExOTM1JihhPDw4fGE+Pj4yNCl8NDI3ODI1NTM2MCYoYTw8MjR8YT4+PjgpfXJldHVybiBufSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PWYuY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gdC5faGFzaD10aGlzLl9oYXNoLmNsb25lKCksdH19KTtjLlJJUEVNRDE2MD1mLl9jcmVhdGVIZWxwZXIoQiksYy5IbWFjUklQRU1EMTYwPWYuX2NyZWF0ZUhtYWNIZWxwZXIoQil9KE1hdGgpLGZ1bmN0aW9uKCl7dmFyIHI9dCxlPXIubGliLGk9ZS5CYXNlLG49ci5lbmMsbz1uLlV0Zjgscz1yLmFsZ287cy5ITUFDPWkuZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQscil7dD10aGlzLl9oYXNoZXI9bmV3IHQuaW5pdCxcInN0cmluZ1wiPT10eXBlb2YgciYmKHI9by5wYXJzZShyKSk7dmFyIGU9dC5ibG9ja1NpemUsaT00KmU7ci5zaWdCeXRlcz5pJiYocj10LmZpbmFsaXplKHIpKSxyLmNsYW1wKCk7Zm9yKHZhciBuPXRoaXMuX29LZXk9ci5jbG9uZSgpLHM9dGhpcy5faUtleT1yLmNsb25lKCksYT1uLndvcmRzLGM9cy53b3JkcyxoPTA7aDxlO2grKylhW2hdXj0xNTQ5NTU2ODI4LGNbaF1ePTkwOTUyMjQ4NjtuLnNpZ0J5dGVzPXMuc2lnQnl0ZXM9aSx0aGlzLnJlc2V0KCl9LHJlc2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5faGFzaGVyO3QucmVzZXQoKSx0LnVwZGF0ZSh0aGlzLl9pS2V5KX0sdXBkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9oYXNoZXIudXBkYXRlKHQpLHRoaXN9LGZpbmFsaXplOmZ1bmN0aW9uKHQpe3ZhciByPXRoaXMuX2hhc2hlcixlPXIuZmluYWxpemUodCk7ci5yZXNldCgpO3ZhciBpPXIuZmluYWxpemUodGhpcy5fb0tleS5jbG9uZSgpLmNvbmNhdChlKSk7cmV0dXJuIGl9fSl9KCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLkJhc2Usbj1lLldvcmRBcnJheSxvPXIuYWxnbyxzPW8uU0hBMSxhPW8uSE1BQyxjPW8uUEJLREYyPWkuZXh0ZW5kKHtjZmc6aS5leHRlbmQoe2tleVNpemU6NCxoYXNoZXI6cyxpdGVyYXRpb25zOjF9KSxpbml0OmZ1bmN0aW9uKHQpe3RoaXMuY2ZnPXRoaXMuY2ZnLmV4dGVuZCh0KX0sY29tcHV0ZTpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLmNmZyxpPWEuY3JlYXRlKGUuaGFzaGVyLHQpLG89bi5jcmVhdGUoKSxzPW4uY3JlYXRlKFsxXSksYz1vLndvcmRzLGg9cy53b3JkcyxsPWUua2V5U2l6ZSxmPWUuaXRlcmF0aW9ucztjLmxlbmd0aDxsOyl7dmFyIHU9aS51cGRhdGUocikuZmluYWxpemUocyk7aS5yZXNldCgpO2Zvcih2YXIgZD11LndvcmRzLHY9ZC5sZW5ndGgscD11LF89MTtfPGY7XysrKXtwPWkuZmluYWxpemUocCksaS5yZXNldCgpO2Zvcih2YXIgeT1wLndvcmRzLGc9MDtnPHY7ZysrKWRbZ11ePXlbZ119by5jb25jYXQodSksaFswXSsrfXJldHVybiBvLnNpZ0J5dGVzPTQqbCxvfX0pO3IuUEJLREYyPWZ1bmN0aW9uKHQscixlKXtyZXR1cm4gYy5jcmVhdGUoZSkuY29tcHV0ZSh0LHIpfX0oKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLmxpYixpPWUuQmFzZSxuPWUuV29yZEFycmF5LG89ci5hbGdvLHM9by5NRDUsYT1vLkV2cEtERj1pLmV4dGVuZCh7Y2ZnOmkuZXh0ZW5kKHtrZXlTaXplOjQsaGFzaGVyOnMsaXRlcmF0aW9uczoxfSksaW5pdDpmdW5jdGlvbih0KXt0aGlzLmNmZz10aGlzLmNmZy5leHRlbmQodCl9LGNvbXB1dGU6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dGhpcy5jZmcsaT1lLmhhc2hlci5jcmVhdGUoKSxvPW4uY3JlYXRlKCkscz1vLndvcmRzLGE9ZS5rZXlTaXplLGM9ZS5pdGVyYXRpb25zO3MubGVuZ3RoPGE7KXtoJiZpLnVwZGF0ZShoKTt2YXIgaD1pLnVwZGF0ZSh0KS5maW5hbGl6ZShyKTtpLnJlc2V0KCk7Zm9yKHZhciBsPTE7bDxjO2wrKyloPWkuZmluYWxpemUoaCksaS5yZXNldCgpO28uY29uY2F0KGgpfXJldHVybiBvLnNpZ0J5dGVzPTQqYSxvfX0pO3IuRXZwS0RGPWZ1bmN0aW9uKHQscixlKXtyZXR1cm4gYS5jcmVhdGUoZSkuY29tcHV0ZSh0LHIpfX0oKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLmxpYixpPWUuV29yZEFycmF5LG49ci5hbGdvLG89bi5TSEEyNTYscz1uLlNIQTIyND1vLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBpLmluaXQoWzMyMzgzNzEwMzIsOTE0MTUwNjYzLDgxMjcwMjk5OSw0MTQ0OTEyNjk3LDQyOTA3NzU4NTcsMTc1MDYwMzAyNSwxNjk0MDc2ODM5LDMyMDQwNzU0MjhdKX0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD1vLl9kb0ZpbmFsaXplLmNhbGwodGhpcyk7cmV0dXJuIHQuc2lnQnl0ZXMtPTQsdH19KTtyLlNIQTIyND1vLl9jcmVhdGVIZWxwZXIocyksci5IbWFjU0hBMjI0PW8uX2NyZWF0ZUhtYWNIZWxwZXIocyl9KCksZnVuY3Rpb24ocil7dmFyIGU9dCxpPWUubGliLG49aS5CYXNlLG89aS5Xb3JkQXJyYXkscz1lLng2ND17fTtzLldvcmQ9bi5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxyKXt0aGlzLmhpZ2g9dCx0aGlzLmxvdz1yfX0pLHMuV29yZEFycmF5PW4uZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7dD10aGlzLndvcmRzPXR8fFtdLGUhPXI/dGhpcy5zaWdCeXRlcz1lOnRoaXMuc2lnQnl0ZXM9OCp0Lmxlbmd0aH0sdG9YMzI6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy53b3JkcyxyPXQubGVuZ3RoLGU9W10saT0wO2k8cjtpKyspe3ZhciBuPXRbaV07ZS5wdXNoKG4uaGlnaCksZS5wdXNoKG4ubG93KX1yZXR1cm4gby5jcmVhdGUoZSx0aGlzLnNpZ0J5dGVzKX0sY2xvbmU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9bi5jbG9uZS5jYWxsKHRoaXMpLHI9dC53b3Jkcz10aGlzLndvcmRzLnNsaWNlKDApLGU9ci5sZW5ndGgsaT0wO2k8ZTtpKyspcltpXT1yW2ldLmNsb25lKCk7cmV0dXJuIHR9fSl9KCksZnVuY3Rpb24ocil7dmFyIGU9dCxpPWUubGliLG49aS5Xb3JkQXJyYXksbz1pLkhhc2hlcixzPWUueDY0LGE9cy5Xb3JkLGM9ZS5hbGdvLGg9W10sbD1bXSxmPVtdOyFmdW5jdGlvbigpe2Zvcih2YXIgdD0xLHI9MCxlPTA7ZTwyNDtlKyspe2hbdCs1KnJdPShlKzEpKihlKzIpLzIlNjQ7dmFyIGk9ciU1LG49KDIqdCszKnIpJTU7dD1pLHI9bn1mb3IodmFyIHQ9MDt0PDU7dCsrKWZvcih2YXIgcj0wO3I8NTtyKyspbFt0KzUqcl09cisoMip0KzMqciklNSo1O2Zvcih2YXIgbz0xLHM9MDtzPDI0O3MrKyl7Zm9yKHZhciBjPTAsdT0wLGQ9MDtkPDc7ZCsrKXtpZigxJm8pe3ZhciB2PSgxPDxkKS0xO3Y8MzI/dV49MTw8djpjXj0xPDx2LTMyfTEyOCZvP289bzw8MV4xMTM6bzw8PTF9ZltzXT1hLmNyZWF0ZShjLHUpfX0oKTt2YXIgdT1bXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PDI1O3QrKyl1W3RdPWEuY3JlYXRlKCl9KCk7dmFyIGQ9Yy5TSEEzPW8uZXh0ZW5kKHtjZmc6by5jZmcuZXh0ZW5kKHtvdXRwdXRMZW5ndGg6NTEyfSksX2RvUmVzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fc3RhdGU9W10scj0wO3I8MjU7cisrKXRbcl09bmV3IGEuaW5pdDt0aGlzLmJsb2NrU2l6ZT0oMTYwMC0yKnRoaXMuY2ZnLm91dHB1dExlbmd0aCkvMzJ9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLl9zdGF0ZSxpPXRoaXMuYmxvY2tTaXplLzIsbj0wO248aTtuKyspe3ZhciBvPXRbcisyKm5dLHM9dFtyKzIqbisxXTtvPTE2NzExOTM1JihvPDw4fG8+Pj4yNCl8NDI3ODI1NTM2MCYobzw8MjR8bz4+PjgpLHM9MTY3MTE5MzUmKHM8PDh8cz4+PjI0KXw0Mjc4MjU1MzYwJihzPDwyNHxzPj4+OCk7dmFyIGE9ZVtuXTthLmhpZ2hePXMsYS5sb3dePW99Zm9yKHZhciBjPTA7YzwyNDtjKyspe2Zvcih2YXIgZD0wO2Q8NTtkKyspe2Zvcih2YXIgdj0wLHA9MCxfPTA7Xzw1O18rKyl7dmFyIGE9ZVtkKzUqX107dl49YS5oaWdoLHBePWEubG93fXZhciB5PXVbZF07eS5oaWdoPXYseS5sb3c9cH1mb3IodmFyIGQ9MDtkPDU7ZCsrKWZvcih2YXIgZz11WyhkKzQpJTVdLEI9dVsoZCsxKSU1XSx3PUIuaGlnaCxrPUIubG93LHY9Zy5oaWdoXih3PDwxfGs+Pj4zMSkscD1nLmxvd14oazw8MXx3Pj4+MzEpLF89MDtfPDU7XysrKXt2YXIgYT1lW2QrNSpfXTthLmhpZ2hePXYsYS5sb3dePXB9Zm9yKHZhciBTPTE7UzwyNTtTKyspe3ZhciBhPWVbU10sbT1hLmhpZ2gseD1hLmxvdyxiPWhbU107aWYoYjwzMil2YXIgdj1tPDxifHg+Pj4zMi1iLHA9eDw8YnxtPj4+MzItYjtlbHNlIHZhciB2PXg8PGItMzJ8bT4+PjY0LWIscD1tPDxiLTMyfHg+Pj42NC1iO3ZhciBIPXVbbFtTXV07SC5oaWdoPXYsSC5sb3c9cH12YXIgej11WzBdLEE9ZVswXTt6LmhpZ2g9QS5oaWdoLHoubG93PUEubG93O2Zvcih2YXIgZD0wO2Q8NTtkKyspZm9yKHZhciBfPTA7Xzw1O18rKyl7dmFyIFM9ZCs1Kl8sYT1lW1NdLEM9dVtTXSxEPXVbKGQrMSklNSs1Kl9dLFI9dVsoZCsyKSU1KzUqX107YS5oaWdoPUMuaGlnaF5+RC5oaWdoJlIuaGlnaCxhLmxvdz1DLmxvd15+RC5sb3cmUi5sb3d9dmFyIGE9ZVswXSxFPWZbY107YS5oaWdoXj1FLmhpZ2gsYS5sb3dePUUubG93fX0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLGU9dC53b3JkcyxpPSg4KnRoaXMuX25EYXRhQnl0ZXMsOCp0LnNpZ0J5dGVzKSxvPTMyKnRoaXMuYmxvY2tTaXplO2VbaT4+PjVdfD0xPDwyNC1pJTMyLGVbKHIuY2VpbCgoaSsxKS9vKSpvPj4+NSktMV18PTEyOCx0LnNpZ0J5dGVzPTQqZS5sZW5ndGgsdGhpcy5fcHJvY2VzcygpO2Zvcih2YXIgcz10aGlzLl9zdGF0ZSxhPXRoaXMuY2ZnLm91dHB1dExlbmd0aC84LGM9YS84LGg9W10sbD0wO2w8YztsKyspe3ZhciBmPXNbbF0sdT1mLmhpZ2gsZD1mLmxvdzt1PTE2NzExOTM1Jih1PDw4fHU+Pj4yNCl8NDI3ODI1NTM2MCYodTw8MjR8dT4+PjgpLGQ9MTY3MTE5MzUmKGQ8PDh8ZD4+PjI0KXw0Mjc4MjU1MzYwJihkPDwyNHxkPj4+OCksaC5wdXNoKGQpLGgucHVzaCh1KX1yZXR1cm4gbmV3IG4uaW5pdChoLGEpfSxjbG9uZTpmdW5jdGlvbigpe2Zvcih2YXIgdD1vLmNsb25lLmNhbGwodGhpcykscj10Ll9zdGF0ZT10aGlzLl9zdGF0ZS5zbGljZSgwKSxlPTA7ZTwyNTtlKyspcltlXT1yW2VdLmNsb25lKCk7cmV0dXJuIHR9fSk7ZS5TSEEzPW8uX2NyZWF0ZUhlbHBlcihkKSxlLkhtYWNTSEEzPW8uX2NyZWF0ZUhtYWNIZWxwZXIoZCl9KE1hdGgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcigpe3JldHVybiBzLmNyZWF0ZS5hcHBseShzLGFyZ3VtZW50cyl9dmFyIGU9dCxpPWUubGliLG49aS5IYXNoZXIsbz1lLng2NCxzPW8uV29yZCxhPW8uV29yZEFycmF5LGM9ZS5hbGdvLGg9W3IoMTExNjM1MjQwOCwzNjA5NzY3NDU4KSxyKDE4OTk0NDc0NDEsNjAyODkxNzI1KSxyKDMwNDkzMjM0NzEsMzk2NDQ4NDM5OSkscigzOTIxMDA5NTczLDIxNzMyOTU1NDgpLHIoOTYxOTg3MTYzLDQwODE2Mjg0NzIpLHIoMTUwODk3MDk5MywzMDUzODM0MjY1KSxyKDI0NTM2MzU3NDgsMjkzNzY3MTU3OSkscigyODcwNzYzMjIxLDM2NjQ2MDk1NjApLHIoMzYyNDM4MTA4MCwyNzM0ODgzMzk0KSxyKDMxMDU5ODQwMSwxMTY0OTk2NTQyKSxyKDYwNzIyNTI3OCwxMzIzNjEwNzY0KSxyKDE0MjY4ODE5ODcsMzU5MDMwNDk5NCkscigxOTI1MDc4Mzg4LDQwNjgxODIzODMpLHIoMjE2MjA3ODIwNiw5OTEzMzYxMTMpLHIoMjYxNDg4ODEwMyw2MzM4MDMzMTcpLHIoMzI0ODIyMjU4MCwzNDc5Nzc0ODY4KSxyKDM4MzUzOTA0MDEsMjY2NjYxMzQ1OCkscig0MDIyMjI0Nzc0LDk0NDcxMTEzOSkscigyNjQzNDcwNzgsMjM0MTI2Mjc3Mykscig2MDQ4MDc2MjgsMjAwNzgwMDkzMykscig3NzAyNTU5ODMsMTQ5NTk5MDkwMSkscigxMjQ5MTUwMTIyLDE4NTY0MzEyMzUpLHIoMTU1NTA4MTY5MiwzMTc1MjE4MTMyKSxyKDE5OTYwNjQ5ODYsMjE5ODk1MDgzNykscigyNTU0MjIwODgyLDM5OTk3MTkzMzkpLHIoMjgyMTgzNDM0OSw3NjY3ODQwMTYpLHIoMjk1Mjk5NjgwOCwyNTY2NTk0ODc5KSxyKDMyMTAzMTM2NzEsMzIwMzMzNzk1NikscigzMzM2NTcxODkxLDEwMzQ0NTcwMjYpLHIoMzU4NDUyODcxMSwyNDY2OTQ4OTAxKSxyKDExMzkyNjk5MywzNzU4MzI2MzgzKSxyKDMzODI0MTg5NSwxNjg3MTc5MzYpLHIoNjY2MzA3MjA1LDExODgxNzk5NjQpLHIoNzczNTI5OTEyLDE1NDYwNDU3MzQpLHIoMTI5NDc1NzM3MiwxNTIyODA1NDg1KSxyKDEzOTYxODIyOTEsMjY0MzgzMzgyMykscigxNjk1MTgzNzAwLDIzNDM1MjczOTApLHIoMTk4NjY2MTA1MSwxMDE0NDc3NDgwKSxyKDIxNzcwMjYzNTAsMTIwNjc1OTE0MikscigyNDU2OTU2MDM3LDM0NDA3NzYyNykscigyNzMwNDg1OTIxLDEyOTA4NjM0NjApLHIoMjgyMDMwMjQxMSwzMTU4NDU0MjczKSxyKDMyNTk3MzA4MDAsMzUwNTk1MjY1NykscigzMzQ1NzY0NzcxLDEwNjIxNzAwOCkscigzNTE2MDY1ODE3LDM2MDYwMDgzNDQpLHIoMzYwMDM1MjgwNCwxNDMyNzI1Nzc2KSxyKDQwOTQ1NzE5MDksMTQ2NzAzMTU5NCkscigyNzU0MjMzNDQsODUxMTY5NzIwKSxyKDQzMDIyNzczNCwzMTAwODIzNzUyKSxyKDUwNjk0ODYxNiwxMzYzMjU4MTk1KSxyKDY1OTA2MDU1NiwzNzUwNjg1NTkzKSxyKDg4Mzk5Nzg3NywzNzg1MDUwMjgwKSxyKDk1ODEzOTU3MSwzMzE4MzA3NDI3KSxyKDEzMjI4MjIyMTgsMzgxMjcyMzQwMykscigxNTM3MDAyMDYzLDIwMDMwMzQ5OTUpLHIoMTc0Nzg3Mzc3OSwzNjAyMDM2ODk5KSxyKDE5NTU1NjIyMjIsMTU3NTk5MDAxMikscigyMDI0MTA0ODE1LDExMjU1OTI5MjgpLHIoMjIyNzczMDQ1MiwyNzE2OTA0MzA2KSxyKDIzNjE4NTI0MjQsNDQyNzc2MDQ0KSxyKDI0Mjg0MzY0NzQsNTkzNjk4MzQ0KSxyKDI3NTY3MzQxODcsMzczMzExMDI0OSkscigzMjA0MDMxNDc5LDI5OTkzNTE1NzMpLHIoMzMyOTMyNTI5OCwzODE1OTIwNDI3KSxyKDMzOTE1Njk2MTQsMzkyODM4MzkwMCkscigzNTE1MjY3MjcxLDU2NjI4MDcxMSkscigzOTQwMTg3NjA2LDM0NTQwNjk1MzQpLHIoNDExODYzMDI3MSw0MDAwMjM5OTkyKSxyKDExNjQxODQ3NCwxOTE0MTM4NTU0KSxyKDE3NDI5MjQyMSwyNzMxMDU1MjcwKSxyKDI4OTM4MDM1NiwzMjAzOTkzMDA2KSxyKDQ2MDM5MzI2OSwzMjA2MjAzMTUpLHIoNjg1NDcxNzMzLDU4NzQ5NjgzNikscig4NTIxNDI5NzEsMTA4Njc5Mjg1MSkscigxMDE3MDM2Mjk4LDM2NTU0MzEwMCkscigxMTI2MDAwNTgwLDI2MTgyOTc2NzYpLHIoMTI4ODAzMzQ3MCwzNDA5ODU1MTU4KSxyKDE1MDE1MDU5NDgsNDIzNDUwOTg2NikscigxNjA3MTY3OTE1LDk4NzE2NzQ2OCkscigxODE2NDAyMzE2LDEyNDYxODk1OTEpXSxsPVtdOyFmdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8ODA7dCsrKWxbdF09cigpfSgpO3ZhciBmPWMuU0hBNTEyPW4uZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IGEuaW5pdChbbmV3IHMuaW5pdCgxNzc5MDMzNzAzLDQwODkyMzU3MjApLG5ldyBzLmluaXQoMzE0NDEzNDI3NywyMjI3ODczNTk1KSxuZXcgcy5pbml0KDEwMTM5MDQyNDIsNDI3MTE3NTcyMyksbmV3IHMuaW5pdCgyNzczNDgwNzYyLDE1OTU3NTAxMjkpLG5ldyBzLmluaXQoMTM1OTg5MzExOSwyOTE3NTY1MTM3KSxuZXcgcy5pbml0KDI2MDA4MjI5MjQsNzI1NTExMTk5KSxuZXcgcy5pbml0KDUyODczNDYzNSw0MjE1Mzg5NTQ3KSxuZXcgcy5pbml0KDE1NDE0NTkyMjUsMzI3MDMzMjA5KV0pfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dGhpcy5faGFzaC53b3JkcyxpPWVbMF0sbj1lWzFdLG89ZVsyXSxzPWVbM10sYT1lWzRdLGM9ZVs1XSxmPWVbNl0sdT1lWzddLGQ9aS5oaWdoLHY9aS5sb3cscD1uLmhpZ2gsXz1uLmxvdyx5PW8uaGlnaCxnPW8ubG93LEI9cy5oaWdoLHc9cy5sb3csaz1hLmhpZ2gsUz1hLmxvdyxtPWMuaGlnaCx4PWMubG93LGI9Zi5oaWdoLEg9Zi5sb3csej11LmhpZ2gsQT11LmxvdyxDPWQsRD12LFI9cCxFPV8sTT15LEY9ZyxQPUIsVz13LE89ayxVPVMsST1tLEs9eCxYPWIsTD1ILGo9eixOPUEsVD0wO1Q8ODA7VCsrKXt2YXIgWj1sW1RdO2lmKFQ8MTYpdmFyIHE9Wi5oaWdoPTB8dFtyKzIqVF0sRz1aLmxvdz0wfHRbcisyKlQrMV07ZWxzZXt2YXIgSj1sW1QtMTVdLCQ9Si5oaWdoLFE9Si5sb3csVj0oJD4+PjF8UTw8MzEpXigkPj4+OHxRPDwyNCleJD4+PjcsWT0oUT4+PjF8JDw8MzEpXihRPj4+OHwkPDwyNCleKFE+Pj43fCQ8PDI1KSx0dD1sW1QtMl0scnQ9dHQuaGlnaCxldD10dC5sb3csaXQ9KHJ0Pj4+MTl8ZXQ8PDEzKV4ocnQ8PDN8ZXQ+Pj4yOSlecnQ+Pj42LG50PShldD4+PjE5fHJ0PDwxMyleKGV0PDwzfHJ0Pj4+MjkpXihldD4+PjZ8cnQ8PDI2KSxvdD1sW1QtN10sc3Q9b3QuaGlnaCxhdD1vdC5sb3csY3Q9bFtULTE2XSxodD1jdC5oaWdoLGx0PWN0LmxvdyxHPVkrYXQscT1WK3N0KyhHPj4+MDxZPj4+MD8xOjApLEc9RytudCxxPXEraXQrKEc+Pj4wPG50Pj4+MD8xOjApLEc9RytsdCxxPXEraHQrKEc+Pj4wPGx0Pj4+MD8xOjApO1ouaGlnaD1xLFoubG93PUd9dmFyIGZ0PU8mSV5+TyZYLHV0PVUmS15+VSZMLGR0PUMmUl5DJk1eUiZNLHZ0PUQmRV5EJkZeRSZGLHB0PShDPj4+Mjh8RDw8NCleKEM8PDMwfEQ+Pj4yKV4oQzw8MjV8RD4+PjcpLF90PShEPj4+Mjh8Qzw8NCleKEQ8PDMwfEM+Pj4yKV4oRDw8MjV8Qz4+PjcpLHl0PShPPj4+MTR8VTw8MTgpXihPPj4+MTh8VTw8MTQpXihPPDwyM3xVPj4+OSksZ3Q9KFU+Pj4xNHxPPDwxOCleKFU+Pj4xOHxPPDwxNCleKFU8PDIzfE8+Pj45KSxCdD1oW1RdLHd0PUJ0LmhpZ2gsa3Q9QnQubG93LFN0PU4rZ3QsbXQ9ait5dCsoU3Q+Pj4wPE4+Pj4wPzE6MCksU3Q9U3QrdXQsbXQ9bXQrZnQrKFN0Pj4+MDx1dD4+PjA/MTowKSxTdD1TdCtrdCxtdD1tdCt3dCsoU3Q+Pj4wPGt0Pj4+MD8xOjApLFN0PVN0K0csbXQ9bXQrcSsoU3Q+Pj4wPEc+Pj4wPzE6MCkseHQ9X3QrdnQsYnQ9cHQrZHQrKHh0Pj4+MDxfdD4+PjA/MTowKTtqPVgsTj1MLFg9SSxMPUssST1PLEs9VSxVPVcrU3R8MCxPPVArbXQrKFU+Pj4wPFc+Pj4wPzE6MCl8MCxQPU0sVz1GLE09UixGPUUsUj1DLEU9RCxEPVN0K3h0fDAsQz1tdCtidCsoRD4+PjA8U3Q+Pj4wPzE6MCl8MH12PWkubG93PXYrRCxpLmhpZ2g9ZCtDKyh2Pj4+MDxEPj4+MD8xOjApLF89bi5sb3c9XytFLG4uaGlnaD1wK1IrKF8+Pj4wPEU+Pj4wPzE6MCksZz1vLmxvdz1nK0Ysby5oaWdoPXkrTSsoZz4+PjA8Rj4+PjA/MTowKSx3PXMubG93PXcrVyxzLmhpZ2g9QitQKyh3Pj4+MDxXPj4+MD8xOjApLFM9YS5sb3c9UytVLGEuaGlnaD1rK08rKFM+Pj4wPFU+Pj4wPzE6MCkseD1jLmxvdz14K0ssYy5oaWdoPW0rSSsoeD4+PjA8Sz4+PjA/MTowKSxIPWYubG93PUgrTCxmLmhpZ2g9YitYKyhIPj4+MDxMPj4+MD8xOjApLEE9dS5sb3c9QStOLHUuaGlnaD16K2orKEE+Pj4wPE4+Pj4wPzE6MCl9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGF0YSxyPXQud29yZHMsZT04KnRoaXMuX25EYXRhQnl0ZXMsaT04KnQuc2lnQnl0ZXM7cltpPj4+NV18PTEyODw8MjQtaSUzMixyWyhpKzEyOD4+PjEwPDw1KSszMF09TWF0aC5mbG9vcihlLzQyOTQ5NjcyOTYpLHJbKGkrMTI4Pj4+MTA8PDUpKzMxXT1lLHQuc2lnQnl0ZXM9NCpyLmxlbmd0aCx0aGlzLl9wcm9jZXNzKCk7dmFyIG49dGhpcy5faGFzaC50b1gzMigpO3JldHVybiBufSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PW4uY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gdC5faGFzaD10aGlzLl9oYXNoLmNsb25lKCksdH0sYmxvY2tTaXplOjMyfSk7ZS5TSEE1MTI9bi5fY3JlYXRlSGVscGVyKGYpLGUuSG1hY1NIQTUxMj1uLl9jcmVhdGVIbWFjSGVscGVyKGYpfSgpLGZ1bmN0aW9uKCl7dmFyIHI9dCxlPXIueDY0LGk9ZS5Xb3JkLG49ZS5Xb3JkQXJyYXksbz1yLmFsZ28scz1vLlNIQTUxMixhPW8uU0hBMzg0PXMuZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IG4uaW5pdChbbmV3IGkuaW5pdCgzNDE4MDcwMzY1LDMyMzgzNzEwMzIpLG5ldyBpLmluaXQoMTY1NDI3MDI1MCw5MTQxNTA2NjMpLG5ldyBpLmluaXQoMjQzODUyOTM3MCw4MTI3MDI5OTkpLG5ldyBpLmluaXQoMzU1NDYyMzYwLDQxNDQ5MTI2OTcpLG5ldyBpLmluaXQoMTczMTQwNTQxNSw0MjkwNzc1ODU3KSxuZXcgaS5pbml0KDIzOTQxODAyMzEsMTc1MDYwMzAyNSksbmV3IGkuaW5pdCgzNjc1MDA4NTI1LDE2OTQwNzY4MzkpLG5ldyBpLmluaXQoMTIwMzA2MjgxMywzMjA0MDc1NDI4KV0pfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXMuX2RvRmluYWxpemUuY2FsbCh0aGlzKTtyZXR1cm4gdC5zaWdCeXRlcy09MTYsdH19KTtyLlNIQTM4ND1zLl9jcmVhdGVIZWxwZXIoYSksci5IbWFjU0hBMzg0PXMuX2NyZWF0ZUhtYWNIZWxwZXIoYSl9KCksdC5saWIuQ2lwaGVyfHxmdW5jdGlvbihyKXt2YXIgZT10LGk9ZS5saWIsbj1pLkJhc2Usbz1pLldvcmRBcnJheSxzPWkuQnVmZmVyZWRCbG9ja0FsZ29yaXRobSxhPWUuZW5jLGM9KGEuVXRmOCxhLkJhc2U2NCksaD1lLmFsZ28sbD1oLkV2cEtERixmPWkuQ2lwaGVyPXMuZXh0ZW5kKHtjZmc6bi5leHRlbmQoKSxjcmVhdGVFbmNyeXB0b3I6ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5jcmVhdGUodGhpcy5fRU5DX1hGT1JNX01PREUsdCxyKX0sY3JlYXRlRGVjcnlwdG9yOmZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMuY3JlYXRlKHRoaXMuX0RFQ19YRk9STV9NT0RFLHQscil9LGluaXQ6ZnVuY3Rpb24odCxyLGUpe3RoaXMuY2ZnPXRoaXMuY2ZnLmV4dGVuZChlKSx0aGlzLl94Zm9ybU1vZGU9dCx0aGlzLl9rZXk9cix0aGlzLnJlc2V0KCl9LHJlc2V0OmZ1bmN0aW9uKCl7cy5yZXNldC5jYWxsKHRoaXMpLHRoaXMuX2RvUmVzZXQoKX0scHJvY2VzczpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYXBwZW5kKHQpLHRoaXMuX3Byb2Nlc3MoKX0sZmluYWxpemU6ZnVuY3Rpb24odCl7dCYmdGhpcy5fYXBwZW5kKHQpO3ZhciByPXRoaXMuX2RvRmluYWxpemUoKTtyZXR1cm4gcn0sa2V5U2l6ZTo0LGl2U2l6ZTo0LF9FTkNfWEZPUk1fTU9ERToxLF9ERUNfWEZPUk1fTU9ERToyLF9jcmVhdGVIZWxwZXI6ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0P206d31yZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJue2VuY3J5cHQ6ZnVuY3Rpb24oZSxpLG4pe3JldHVybiB0KGkpLmVuY3J5cHQocixlLGksbil9LGRlY3J5cHQ6ZnVuY3Rpb24oZSxpLG4pe3JldHVybiB0KGkpLmRlY3J5cHQocixlLGksbil9fX19KCl9KSx1PShpLlN0cmVhbUNpcGhlcj1mLmV4dGVuZCh7X2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9wcm9jZXNzKCEwKTtyZXR1cm4gdH0sYmxvY2tTaXplOjF9KSxlLm1vZGU9e30pLGQ9aS5CbG9ja0NpcGhlck1vZGU9bi5leHRlbmQoe2NyZWF0ZUVuY3J5cHRvcjpmdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLkVuY3J5cHRvci5jcmVhdGUodCxyKX0sY3JlYXRlRGVjcnlwdG9yOmZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMuRGVjcnlwdG9yLmNyZWF0ZSh0LHIpfSxpbml0OmZ1bmN0aW9uKHQscil7dGhpcy5fY2lwaGVyPXQsdGhpcy5faXY9cn19KSx2PXUuQ0JDPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUsaSl7dmFyIG49dGhpcy5faXY7aWYobil7dmFyIG89bjt0aGlzLl9pdj1yfWVsc2UgdmFyIG89dGhpcy5fcHJldkJsb2NrO2Zvcih2YXIgcz0wO3M8aTtzKyspdFtlK3NdXj1vW3NdfXZhciBlPWQuZXh0ZW5kKCk7cmV0dXJuIGUuRW5jcnlwdG9yPWUuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24ocixlKXt2YXIgaT10aGlzLl9jaXBoZXIsbj1pLmJsb2NrU2l6ZTt0LmNhbGwodGhpcyxyLGUsbiksaS5lbmNyeXB0QmxvY2socixlKSx0aGlzLl9wcmV2QmxvY2s9ci5zbGljZShlLGUrbil9fSksZS5EZWNyeXB0b3I9ZS5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbihyLGUpe3ZhciBpPXRoaXMuX2NpcGhlcixuPWkuYmxvY2tTaXplLG89ci5zbGljZShlLGUrbik7aS5kZWNyeXB0QmxvY2socixlKSx0LmNhbGwodGhpcyxyLGUsbiksdGhpcy5fcHJldkJsb2NrPW99fSksZX0oKSxwPWUucGFkPXt9LF89cC5Qa2NzNz17cGFkOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPTQqcixpPWUtdC5zaWdCeXRlcyVlLG49aTw8MjR8aTw8MTZ8aTw8OHxpLHM9W10sYT0wO2E8aTthKz00KXMucHVzaChuKTt2YXIgYz1vLmNyZWF0ZShzLGkpO3QuY29uY2F0KGMpfSx1bnBhZDpmdW5jdGlvbih0KXt2YXIgcj0yNTUmdC53b3Jkc1t0LnNpZ0J5dGVzLTE+Pj4yXTt0LnNpZ0J5dGVzLT1yfX0seT0oaS5CbG9ja0NpcGhlcj1mLmV4dGVuZCh7Y2ZnOmYuY2ZnLmV4dGVuZCh7bW9kZTp2LHBhZGRpbmc6X30pLHJlc2V0OmZ1bmN0aW9uKCl7Zi5yZXNldC5jYWxsKHRoaXMpO3ZhciB0PXRoaXMuY2ZnLHI9dC5pdixlPXQubW9kZTtpZih0aGlzLl94Zm9ybU1vZGU9PXRoaXMuX0VOQ19YRk9STV9NT0RFKXZhciBpPWUuY3JlYXRlRW5jcnlwdG9yO2Vsc2V7dmFyIGk9ZS5jcmVhdGVEZWNyeXB0b3I7dGhpcy5fbWluQnVmZmVyU2l6ZT0xfXRoaXMuX21vZGUmJnRoaXMuX21vZGUuX19jcmVhdG9yPT1pP3RoaXMuX21vZGUuaW5pdCh0aGlzLHImJnIud29yZHMpOih0aGlzLl9tb2RlPWkuY2FsbChlLHRoaXMsciYmci53b3JkcyksdGhpcy5fbW9kZS5fX2NyZWF0b3I9aSl9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX21vZGUucHJvY2Vzc0Jsb2NrKHQscil9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jZmcucGFkZGluZztpZih0aGlzLl94Zm9ybU1vZGU9PXRoaXMuX0VOQ19YRk9STV9NT0RFKXt0LnBhZCh0aGlzLl9kYXRhLHRoaXMuYmxvY2tTaXplKTt2YXIgcj10aGlzLl9wcm9jZXNzKCEwKX1lbHNle3ZhciByPXRoaXMuX3Byb2Nlc3MoITApO3QudW5wYWQocil9cmV0dXJuIHJ9LGJsb2NrU2l6ZTo0fSksaS5DaXBoZXJQYXJhbXM9bi5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCl7dGhpcy5taXhJbih0KX0sdG9TdHJpbmc6ZnVuY3Rpb24odCl7cmV0dXJuKHR8fHRoaXMuZm9ybWF0dGVyKS5zdHJpbmdpZnkodGhpcyl9fSkpLGc9ZS5mb3JtYXQ9e30sQj1nLk9wZW5TU0w9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXt2YXIgcj10LmNpcGhlcnRleHQsZT10LnNhbHQ7aWYoZSl2YXIgaT1vLmNyZWF0ZShbMTM5ODg5MzY4NCwxNzAxMDc2ODMxXSkuY29uY2F0KGUpLmNvbmNhdChyKTtlbHNlIHZhciBpPXI7cmV0dXJuIGkudG9TdHJpbmcoYyl9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciByPWMucGFyc2UodCksZT1yLndvcmRzO2lmKDEzOTg4OTM2ODQ9PWVbMF0mJjE3MDEwNzY4MzE9PWVbMV0pe3ZhciBpPW8uY3JlYXRlKGUuc2xpY2UoMiw0KSk7ZS5zcGxpY2UoMCw0KSxyLnNpZ0J5dGVzLT0xNn1yZXR1cm4geS5jcmVhdGUoe2NpcGhlcnRleHQ6cixzYWx0Oml9KX19LHc9aS5TZXJpYWxpemFibGVDaXBoZXI9bi5leHRlbmQoe2NmZzpuLmV4dGVuZCh7Zm9ybWF0OkJ9KSxlbmNyeXB0OmZ1bmN0aW9uKHQscixlLGkpe2k9dGhpcy5jZmcuZXh0ZW5kKGkpO3ZhciBuPXQuY3JlYXRlRW5jcnlwdG9yKGUsaSksbz1uLmZpbmFsaXplKHIpLHM9bi5jZmc7cmV0dXJuIHkuY3JlYXRlKHtjaXBoZXJ0ZXh0Om8sa2V5OmUsaXY6cy5pdixhbGdvcml0aG06dCxtb2RlOnMubW9kZSxwYWRkaW5nOnMucGFkZGluZyxibG9ja1NpemU6dC5ibG9ja1NpemUsZm9ybWF0dGVyOmkuZm9ybWF0fSl9LGRlY3J5cHQ6ZnVuY3Rpb24odCxyLGUsaSl7aT10aGlzLmNmZy5leHRlbmQoaSkscj10aGlzLl9wYXJzZShyLGkuZm9ybWF0KTt2YXIgbj10LmNyZWF0ZURlY3J5cHRvcihlLGkpLmZpbmFsaXplKHIuY2lwaGVydGV4dCk7cmV0dXJuIG59LF9wYXJzZTpmdW5jdGlvbih0LHIpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0P3IucGFyc2UodCx0aGlzKTp0fX0pLGs9ZS5rZGY9e30sUz1rLk9wZW5TU0w9e2V4ZWN1dGU6ZnVuY3Rpb24odCxyLGUsaSl7aXx8KGk9by5yYW5kb20oOCkpO3ZhciBuPWwuY3JlYXRlKHtrZXlTaXplOnIrZX0pLmNvbXB1dGUodCxpKSxzPW8uY3JlYXRlKG4ud29yZHMuc2xpY2UociksNCplKTtyZXR1cm4gbi5zaWdCeXRlcz00KnIseS5jcmVhdGUoe2tleTpuLGl2OnMsc2FsdDppfSl9fSxtPWkuUGFzc3dvcmRCYXNlZENpcGhlcj13LmV4dGVuZCh7Y2ZnOncuY2ZnLmV4dGVuZCh7a2RmOlN9KSxlbmNyeXB0OmZ1bmN0aW9uKHQscixlLGkpe2k9dGhpcy5jZmcuZXh0ZW5kKGkpO3ZhciBuPWkua2RmLmV4ZWN1dGUoZSx0LmtleVNpemUsdC5pdlNpemUpO2kuaXY9bi5pdjt2YXIgbz13LmVuY3J5cHQuY2FsbCh0aGlzLHQscixuLmtleSxpKTtyZXR1cm4gby5taXhJbihuKSxvfSxkZWNyeXB0OmZ1bmN0aW9uKHQscixlLGkpe2k9dGhpcy5jZmcuZXh0ZW5kKGkpLHI9dGhpcy5fcGFyc2UocixpLmZvcm1hdCk7dmFyIG49aS5rZGYuZXhlY3V0ZShlLHQua2V5U2l6ZSx0Lml2U2l6ZSxyLnNhbHQpO2kuaXY9bi5pdjt2YXIgbz13LmRlY3J5cHQuY2FsbCh0aGlzLHQscixuLmtleSxpKTtyZXR1cm4gb319KX0oKSx0Lm1vZGUuQ0ZCPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0LHIsZSxpKXt2YXIgbj10aGlzLl9pdjtpZihuKXt2YXIgbz1uLnNsaWNlKDApO3RoaXMuX2l2PXZvaWQgMH1lbHNlIHZhciBvPXRoaXMuX3ByZXZCbG9jaztpLmVuY3J5cHRCbG9jayhvLDApO2Zvcih2YXIgcz0wO3M8ZTtzKyspdFtyK3NdXj1vW3NdfXZhciBlPXQubGliLkJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKTtyZXR1cm4gZS5FbmNyeXB0b3I9ZS5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX2NpcGhlcixuPWkuYmxvY2tTaXplO3IuY2FsbCh0aGlzLHQsZSxuLGkpLHRoaXMuX3ByZXZCbG9jaz10LnNsaWNlKGUsZStuKX19KSxlLkRlY3J5cHRvcj1lLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fY2lwaGVyLG49aS5ibG9ja1NpemUsbz10LnNsaWNlKGUsZStuKTtyLmNhbGwodGhpcyx0LGUsbixpKSx0aGlzLl9wcmV2QmxvY2s9b319KSxlfSgpLHQubW9kZS5FQ0I9ZnVuY3Rpb24oKXt2YXIgcj10LmxpYi5CbG9ja0NpcGhlck1vZGUuZXh0ZW5kKCk7cmV0dXJuIHIuRW5jcnlwdG9yPXIuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHQscil9fSksci5EZWNyeXB0b3I9ci5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2NpcGhlci5kZWNyeXB0QmxvY2sodCxyKX19KSxyfSgpLHQucGFkLkFuc2lYOTIzPXtwYWQ6ZnVuY3Rpb24odCxyKXt2YXIgZT10LnNpZ0J5dGVzLGk9NCpyLG49aS1lJWksbz1lK24tMTt0LmNsYW1wKCksdC53b3Jkc1tvPj4+Ml18PW48PDI0LW8lNCo4LHQuc2lnQnl0ZXMrPW59LHVucGFkOmZ1bmN0aW9uKHQpe3ZhciByPTI1NSZ0LndvcmRzW3Quc2lnQnl0ZXMtMT4+PjJdO3Quc2lnQnl0ZXMtPXJ9fSx0LnBhZC5Jc28xMDEyNj17cGFkOmZ1bmN0aW9uKHIsZSl7dmFyIGk9NCplLG49aS1yLnNpZ0J5dGVzJWk7ci5jb25jYXQodC5saWIuV29yZEFycmF5LnJhbmRvbShuLTEpKS5jb25jYXQodC5saWIuV29yZEFycmF5LmNyZWF0ZShbbjw8MjRdLDEpKX0sdW5wYWQ6ZnVuY3Rpb24odCl7dmFyIHI9MjU1JnQud29yZHNbdC5zaWdCeXRlcy0xPj4+Ml07dC5zaWdCeXRlcy09cn19LHQucGFkLklzbzk3OTcxPXtwYWQ6ZnVuY3Rpb24ocixlKXtyLmNvbmNhdCh0LmxpYi5Xb3JkQXJyYXkuY3JlYXRlKFsyMTQ3NDgzNjQ4XSwxKSksdC5wYWQuWmVyb1BhZGRpbmcucGFkKHIsZSl9LHVucGFkOmZ1bmN0aW9uKHIpe3QucGFkLlplcm9QYWRkaW5nLnVucGFkKHIpLHIuc2lnQnl0ZXMtLX19LHQubW9kZS5PRkI9ZnVuY3Rpb24oKXt2YXIgcj10LmxpYi5CbG9ja0NpcGhlck1vZGUuZXh0ZW5kKCksZT1yLkVuY3J5cHRvcj1yLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcy5fY2lwaGVyLGk9ZS5ibG9ja1NpemUsbj10aGlzLl9pdixvPXRoaXMuX2tleXN0cmVhbTtuJiYobz10aGlzLl9rZXlzdHJlYW09bi5zbGljZSgwKSx0aGlzLl9pdj12b2lkIDApLGUuZW5jcnlwdEJsb2NrKG8sMCk7Zm9yKHZhciBzPTA7czxpO3MrKyl0W3Irc11ePW9bc119fSk7cmV0dXJuIHIuRGVjcnlwdG9yPWUscn0oKSx0LnBhZC5Ob1BhZGRpbmc9e3BhZDpmdW5jdGlvbigpe30sdW5wYWQ6ZnVuY3Rpb24oKXt9fSxmdW5jdGlvbihyKXt2YXIgZT10LGk9ZS5saWIsbj1pLkNpcGhlclBhcmFtcyxvPWUuZW5jLHM9by5IZXgsYT1lLmZvcm1hdDthLkhleD17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe3JldHVybiB0LmNpcGhlcnRleHQudG9TdHJpbmcocyl9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciByPXMucGFyc2UodCk7cmV0dXJuIG4uY3JlYXRlKHtjaXBoZXJ0ZXh0OnJ9KX19fSgpLGZ1bmN0aW9uKCl7dmFyIHI9dCxlPXIubGliLGk9ZS5CbG9ja0NpcGhlcixuPXIuYWxnbyxvPVtdLHM9W10sYT1bXSxjPVtdLGg9W10sbD1bXSxmPVtdLHU9W10sZD1bXSx2PVtdOyFmdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxyPTA7cjwyNTY7cisrKXI8MTI4P3Rbcl09cjw8MTp0W3JdPXI8PDFeMjgzO2Zvcih2YXIgZT0wLGk9MCxyPTA7cjwyNTY7cisrKXt2YXIgbj1pXmk8PDFeaTw8Ml5pPDwzXmk8PDQ7bj1uPj4+OF4yNTUmbl45OSxvW2VdPW4sc1tuXT1lO3ZhciBwPXRbZV0sXz10W3BdLHk9dFtfXSxnPTI1Nyp0W25dXjE2ODQzMDA4Km47YVtlXT1nPDwyNHxnPj4+OCxjW2VdPWc8PDE2fGc+Pj4xNixoW2VdPWc8PDh8Zz4+PjI0LGxbZV09Zzt2YXIgZz0xNjg0MzAwOSp5XjY1NTM3Kl9eMjU3KnBeMTY4NDMwMDgqZTtmW25dPWc8PDI0fGc+Pj44LHVbbl09Zzw8MTZ8Zz4+PjE2LGRbbl09Zzw8OHxnPj4+MjQsdltuXT1nLGU/KGU9cF50W3RbdFt5XnBdXV0saV49dFt0W2ldXSk6ZT1pPTF9fSgpO3ZhciBwPVswLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0XSxfPW4uQUVTPWkuZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe2lmKCF0aGlzLl9uUm91bmRzfHx0aGlzLl9rZXlQcmlvclJlc2V0IT09dGhpcy5fa2V5KXtmb3IodmFyIHQ9dGhpcy5fa2V5UHJpb3JSZXNldD10aGlzLl9rZXkscj10LndvcmRzLGU9dC5zaWdCeXRlcy80LGk9dGhpcy5fblJvdW5kcz1lKzYsbj00KihpKzEpLHM9dGhpcy5fa2V5U2NoZWR1bGU9W10sYT0wO2E8bjthKyspaWYoYTxlKXNbYV09clthXTtlbHNle3ZhciBjPXNbYS0xXTthJWU/ZT42JiZhJWU9PTQmJihjPW9bYz4+PjI0XTw8MjR8b1tjPj4+MTYmMjU1XTw8MTZ8b1tjPj4+OCYyNTVdPDw4fG9bMjU1JmNdKTooYz1jPDw4fGM+Pj4yNCxjPW9bYz4+PjI0XTw8MjR8b1tjPj4+MTYmMjU1XTw8MTZ8b1tjPj4+OCYyNTVdPDw4fG9bMjU1JmNdLGNePXBbYS9lfDBdPDwyNCksc1thXT1zW2EtZV1eY31mb3IodmFyIGg9dGhpcy5faW52S2V5U2NoZWR1bGU9W10sbD0wO2w8bjtsKyspe3ZhciBhPW4tbDtpZihsJTQpdmFyIGM9c1thXTtlbHNlIHZhciBjPXNbYS00XTtsPDR8fGE8PTQ/aFtsXT1jOmhbbF09ZltvW2M+Pj4yNF1dXnVbb1tjPj4+MTYmMjU1XV1eZFtvW2M+Pj44JjI1NV1dXnZbb1syNTUmY11dfX19LGVuY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2RvQ3J5cHRCbG9jayh0LHIsdGhpcy5fa2V5U2NoZWR1bGUsYSxjLGgsbCxvKX0sZGVjcnlwdEJsb2NrOmZ1bmN0aW9uKHQscil7dmFyIGU9dFtyKzFdO3RbcisxXT10W3IrM10sdFtyKzNdPWUsdGhpcy5fZG9DcnlwdEJsb2NrKHQscix0aGlzLl9pbnZLZXlTY2hlZHVsZSxmLHUsZCx2LHMpO3ZhciBlPXRbcisxXTt0W3IrMV09dFtyKzNdLHRbciszXT1lfSxfZG9DcnlwdEJsb2NrOmZ1bmN0aW9uKHQscixlLGksbixvLHMsYSl7Zm9yKHZhciBjPXRoaXMuX25Sb3VuZHMsaD10W3JdXmVbMF0sbD10W3IrMV1eZVsxXSxmPXRbcisyXV5lWzJdLHU9dFtyKzNdXmVbM10sZD00LHY9MTt2PGM7disrKXt2YXIgcD1pW2g+Pj4yNF1ebltsPj4+MTYmMjU1XV5vW2Y+Pj44JjI1NV1ec1syNTUmdV1eZVtkKytdLF89aVtsPj4+MjRdXm5bZj4+PjE2JjI1NV1eb1t1Pj4+OCYyNTVdXnNbMjU1JmhdXmVbZCsrXSx5PWlbZj4+PjI0XV5uW3U+Pj4xNiYyNTVdXm9baD4+PjgmMjU1XV5zWzI1NSZsXV5lW2QrK10sZz1pW3U+Pj4yNF1ebltoPj4+MTYmMjU1XV5vW2w+Pj44JjI1NV1ec1syNTUmZl1eZVtkKytdO2g9cCxsPV8sZj15LHU9Z312YXIgcD0oYVtoPj4+MjRdPDwyNHxhW2w+Pj4xNiYyNTVdPDwxNnxhW2Y+Pj44JjI1NV08PDh8YVsyNTUmdV0pXmVbZCsrXSxfPShhW2w+Pj4yNF08PDI0fGFbZj4+PjE2JjI1NV08PDE2fGFbdT4+PjgmMjU1XTw8OHxhWzI1NSZoXSleZVtkKytdLHk9KGFbZj4+PjI0XTw8MjR8YVt1Pj4+MTYmMjU1XTw8MTZ8YVtoPj4+OCYyNTVdPDw4fGFbMjU1JmxdKV5lW2QrK10sZz0oYVt1Pj4+MjRdPDwyNHxhW2g+Pj4xNiYyNTVdPDwxNnxhW2w+Pj44JjI1NV08PDh8YVsyNTUmZl0pXmVbZCsrXTt0W3JdPXAsdFtyKzFdPV8sdFtyKzJdPXksdFtyKzNdPWd9LGtleVNpemU6OH0pO3IuQUVTPWkuX2NyZWF0ZUhlbHBlcihfKX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHIodCxyKXt2YXIgZT0odGhpcy5fbEJsb2NrPj4+dF50aGlzLl9yQmxvY2spJnI7dGhpcy5fckJsb2NrXj1lLHRoaXMuX2xCbG9ja149ZTw8dH1mdW5jdGlvbiBlKHQscil7dmFyIGU9KHRoaXMuX3JCbG9jaz4+PnRedGhpcy5fbEJsb2NrKSZyO3RoaXMuX2xCbG9ja149ZSx0aGlzLl9yQmxvY2tePWU8PHQ7XG59dmFyIGk9dCxuPWkubGliLG89bi5Xb3JkQXJyYXkscz1uLkJsb2NrQ2lwaGVyLGE9aS5hbGdvLGM9WzU3LDQ5LDQxLDMzLDI1LDE3LDksMSw1OCw1MCw0MiwzNCwyNiwxOCwxMCwyLDU5LDUxLDQzLDM1LDI3LDE5LDExLDMsNjAsNTIsNDQsMzYsNjMsNTUsNDcsMzksMzEsMjMsMTUsNyw2Miw1NCw0NiwzOCwzMCwyMiwxNCw2LDYxLDUzLDQ1LDM3LDI5LDIxLDEzLDUsMjgsMjAsMTIsNF0saD1bMTQsMTcsMTEsMjQsMSw1LDMsMjgsMTUsNiwyMSwxMCwyMywxOSwxMiw0LDI2LDgsMTYsNywyNywyMCwxMywyLDQxLDUyLDMxLDM3LDQ3LDU1LDMwLDQwLDUxLDQ1LDMzLDQ4LDQ0LDQ5LDM5LDU2LDM0LDUzLDQ2LDQyLDUwLDM2LDI5LDMyXSxsPVsxLDIsNCw2LDgsMTAsMTIsMTQsMTUsMTcsMTksMjEsMjMsMjUsMjcsMjhdLGY9W3swOjg0MjE4ODgsMjY4NDM1NDU2OjMyNzY4LDUzNjg3MDkxMjo4NDIxMzc4LDgwNTMwNjM2ODoyLDEwNzM3NDE4MjQ6NTEyLDEzNDIxNzcyODA6ODQyMTg5MCwxNjEwNjEyNzM2OjgzODkxMjIsMTg3OTA0ODE5Mjo4Mzg4NjA4LDIxNDc0ODM2NDg6NTE0LDI0MTU5MTkxMDQ6ODM4OTEyMCwyNjg0MzU0NTYwOjMzMjgwLDI5NTI3OTAwMTY6ODQyMTM3NiwzMjIxMjI1NDcyOjMyNzcwLDM0ODk2NjA5Mjg6ODM4ODYxMCwzNzU4MDk2Mzg0OjAsNDAyNjUzMTg0MDozMzI4MiwxMzQyMTc3Mjg6MCw0MDI2NTMxODQ6ODQyMTg5MCw2NzEwODg2NDA6MzMyODIsOTM5NTI0MDk2OjMyNzY4LDEyMDc5NTk1NTI6ODQyMTg4OCwxNDc2Mzk1MDA4OjUxMiwxNzQ0ODMwNDY0Ojg0MjEzNzgsMjAxMzI2NTkyMDoyLDIyODE3MDEzNzY6ODM4OTEyMCwyNTUwMTM2ODMyOjMzMjgwLDI4MTg1NzIyODg6ODQyMTM3NiwzMDg3MDA3NzQ0OjgzODkxMjIsMzM1NTQ0MzIwMDo4Mzg4NjEwLDM2MjM4Nzg2NTY6MzI3NzAsMzg5MjMxNDExMjo1MTQsNDE2MDc0OTU2ODo4Mzg4NjA4LDE6MzI3NjgsMjY4NDM1NDU3OjIsNTM2ODcwOTEzOjg0MjE4ODgsODA1MzA2MzY5OjgzODg2MDgsMTA3Mzc0MTgyNTo4NDIxMzc4LDEzNDIxNzcyODE6MzMyODAsMTYxMDYxMjczNzo1MTIsMTg3OTA0ODE5Mzo4Mzg5MTIyLDIxNDc0ODM2NDk6ODQyMTg5MCwyNDE1OTE5MTA1Ojg0MjEzNzYsMjY4NDM1NDU2MTo4Mzg4NjEwLDI5NTI3OTAwMTc6MzMyODIsMzIyMTIyNTQ3Mzo1MTQsMzQ4OTY2MDkyOTo4Mzg5MTIwLDM3NTgwOTYzODU6MzI3NzAsNDAyNjUzMTg0MTowLDEzNDIxNzcyOTo4NDIxODkwLDQwMjY1MzE4NTo4NDIxMzc2LDY3MTA4ODY0MTo4Mzg4NjA4LDkzOTUyNDA5Nzo1MTIsMTIwNzk1OTU1MzozMjc2OCwxNDc2Mzk1MDA5OjgzODg2MTAsMTc0NDgzMDQ2NToyLDIwMTMyNjU5MjE6MzMyODIsMjI4MTcwMTM3NzozMjc3MCwyNTUwMTM2ODMzOjgzODkxMjIsMjgxODU3MjI4OTo1MTQsMzA4NzAwNzc0NTo4NDIxODg4LDMzNTU0NDMyMDE6ODM4OTEyMCwzNjIzODc4NjU3OjAsMzg5MjMxNDExMzozMzI4MCw0MTYwNzQ5NTY5Ojg0MjEzNzh9LHswOjEwNzQyODI1MTIsMTY3NzcyMTY6MTYzODQsMzM1NTQ0MzI6NTI0Mjg4LDUwMzMxNjQ4OjEwNzQyNjYxMjgsNjcxMDg4NjQ6MTA3Mzc0MTg0MCw4Mzg4NjA4MDoxMDc0MjgyNDk2LDEwMDY2MzI5NjoxMDczNzU4MjA4LDExNzQ0MDUxMjoxNiwxMzQyMTc3Mjg6NTQwNjcyLDE1MDk5NDk0NDoxMDczNzU4MjI0LDE2Nzc3MjE2MDoxMDczNzQxODI0LDE4NDU0OTM3Njo1NDA2ODgsMjAxMzI2NTkyOjUyNDMwNCwyMTgxMDM4MDg6MCwyMzQ4ODEwMjQ6MTY0MDAsMjUxNjU4MjQwOjEwNzQyNjYxMTIsODM4ODYwODoxMDczNzU4MjA4LDI1MTY1ODI0OjU0MDY4OCw0MTk0MzA0MDoxNiw1ODcyMDI1NjoxMDczNzU4MjI0LDc1NDk3NDcyOjEwNzQyODI1MTIsOTIyNzQ2ODg6MTA3Mzc0MTgyNCwxMDkwNTE5MDQ6NTI0Mjg4LDEyNTgyOTEyMDoxMDc0MjY2MTI4LDE0MjYwNjMzNjo1MjQzMDQsMTU5MzgzNTUyOjAsMTc2MTYwNzY4OjE2Mzg0LDE5MjkzNzk4NDoxMDc0MjY2MTEyLDIwOTcxNTIwMDoxMDczNzQxODQwLDIyNjQ5MjQxNjo1NDA2NzIsMjQzMjY5NjMyOjEwNzQyODI0OTYsMjYwMDQ2ODQ4OjE2NDAwLDI2ODQzNTQ1NjowLDI4NTIxMjY3MjoxMDc0MjY2MTI4LDMwMTk4OTg4ODoxMDczNzU4MjI0LDMxODc2NzEwNDoxMDc0MjgyNDk2LDMzNTU0NDMyMDoxMDc0MjY2MTEyLDM1MjMyMTUzNjoxNiwzNjkwOTg3NTI6NTQwNjg4LDM4NTg3NTk2ODoxNjM4NCw0MDI2NTMxODQ6MTY0MDAsNDE5NDMwNDAwOjUyNDI4OCw0MzYyMDc2MTY6NTI0MzA0LDQ1Mjk4NDgzMjoxMDczNzQxODQwLDQ2OTc2MjA0ODo1NDA2NzIsNDg2NTM5MjY0OjEwNzM3NTgyMDgsNTAzMzE2NDgwOjEwNzM3NDE4MjQsNTIwMDkzNjk2OjEwNzQyODI1MTIsMjc2ODI0MDY0OjU0MDY4OCwyOTM2MDEyODA6NTI0Mjg4LDMxMDM3ODQ5NjoxMDc0MjY2MTEyLDMyNzE1NTcxMjoxNjM4NCwzNDM5MzI5Mjg6MTA3Mzc1ODIwOCwzNjA3MTAxNDQ6MTA3NDI4MjUxMiwzNzc0ODczNjA6MTYsMzk0MjY0NTc2OjEwNzM3NDE4MjQsNDExMDQxNzkyOjEwNzQyODI0OTYsNDI3ODE5MDA4OjEwNzM3NDE4NDAsNDQ0NTk2MjI0OjEwNzM3NTgyMjQsNDYxMzczNDQwOjUyNDMwNCw0NzgxNTA2NTY6MCw0OTQ5Mjc4NzI6MTY0MDAsNTExNzA1MDg4OjEwNzQyNjYxMjgsNTI4NDgyMzA0OjU0MDY3Mn0sezA6MjYwLDEwNDg1NzY6MCwyMDk3MTUyOjY3MTA5MTIwLDMxNDU3Mjg6NjU3OTYsNDE5NDMwNDo2NTU0MCw1MjQyODgwOjY3MTA4ODY4LDYyOTE0NTY6NjcxNzQ2NjAsNzM0MDAzMjo2NzE3NDQwMCw4Mzg4NjA4OjY3MTA4ODY0LDk0MzcxODQ6NjcxNzQ2NTYsMTA0ODU3NjA6NjU3OTIsMTE1MzQzMzY6NjcxNzQ0MDQsMTI1ODI5MTI6NjcxMDkxMjQsMTM2MzE0ODg6NjU1MzYsMTQ2ODAwNjQ6NCwxNTcyODY0MDoyNTYsNTI0Mjg4OjY3MTc0NjU2LDE1NzI4NjQ6NjcxNzQ0MDQsMjYyMTQ0MDowLDM2NzAwMTY6NjcxMDkxMjAsNDcxODU5Mjo2NzEwODg2OCw1NzY3MTY4OjY1NTM2LDY4MTU3NDQ6NjU1NDAsNzg2NDMyMDoyNjAsODkxMjg5Njo0LDk5NjE0NzI6MjU2LDExMDEwMDQ4OjY3MTc0NDAwLDEyMDU4NjI0OjY1Nzk2LDEzMTA3MjAwOjY1NzkyLDE0MTU1Nzc2OjY3MTA5MTI0LDE1MjA0MzUyOjY3MTc0NjYwLDE2MjUyOTI4OjY3MTA4ODY0LDE2Nzc3MjE2OjY3MTc0NjU2LDE3ODI1NzkyOjY1NTQwLDE4ODc0MzY4OjY1NTM2LDE5OTIyOTQ0OjY3MTA5MTIwLDIwOTcxNTIwOjI1NiwyMjAyMDA5Njo2NzE3NDY2MCwyMzA2ODY3Mjo2NzEwODg2OCwyNDExNzI0ODowLDI1MTY1ODI0OjY3MTA5MTI0LDI2MjE0NDAwOjY3MTA4ODY0LDI3MjYyOTc2OjQsMjgzMTE1NTI6NjU3OTIsMjkzNjAxMjg6NjcxNzQ0MDAsMzA0MDg3MDQ6MjYwLDMxNDU3MjgwOjY1Nzk2LDMyNTA1ODU2OjY3MTc0NDA0LDE3MzAxNTA0OjY3MTA4ODY0LDE4MzUwMDgwOjI2MCwxOTM5ODY1Njo2NzE3NDY1NiwyMDQ0NzIzMjowLDIxNDk1ODA4OjY1NTQwLDIyNTQ0Mzg0OjY3MTA5MTIwLDIzNTkyOTYwOjI1NiwyNDY0MTUzNjo2NzE3NDQwNCwyNTY5MDExMjo2NTUzNiwyNjczODY4ODo2NzE3NDY2MCwyNzc4NzI2NDo2NTc5NiwyODgzNTg0MDo2NzEwODg2OCwyOTg4NDQxNjo2NzEwOTEyNCwzMDkzMjk5Mjo2NzE3NDQwMCwzMTk4MTU2ODo0LDMzMDMwMTQ0OjY1NzkyfSx7MDoyMTUxNjgyMDQ4LDY1NTM2OjIxNDc0ODc4MDgsMTMxMDcyOjQxOTg0NjQsMTk2NjA4OjIxNTE2Nzc5NTIsMjYyMTQ0OjAsMzI3NjgwOjQxOTg0MDAsMzkzMjE2OjIxNDc0ODM3MTIsNDU4NzUyOjQxOTQzNjgsNTI0Mjg4OjIxNDc0ODM2NDgsNTg5ODI0OjQxOTQzMDQsNjU1MzYwOjY0LDcyMDg5NjoyMTQ3NDg3NzQ0LDc4NjQzMjoyMTUxNjc4MDE2LDg1MTk2ODo0MTYwLDkxNzUwNDo0MDk2LDk4MzA0MDoyMTUxNjgyMTEyLDMyNzY4OjIxNDc0ODc4MDgsOTgzMDQ6NjQsMTYzODQwOjIxNTE2NzgwMTYsMjI5Mzc2OjIxNDc0ODc3NDQsMjk0OTEyOjQxOTg0MDAsMzYwNDQ4OjIxNTE2ODIxMTIsNDI1OTg0OjAsNDkxNTIwOjIxNTE2Nzc5NTIsNTU3MDU2OjQwOTYsNjIyNTkyOjIxNTE2ODIwNDgsNjg4MTI4OjQxOTQzMDQsNzUzNjY0OjQxNjAsODE5MjAwOjIxNDc0ODM2NDgsODg0NzM2OjQxOTQzNjgsOTUwMjcyOjQxOTg0NjQsMTAxNTgwODoyMTQ3NDgzNzEyLDEwNDg1NzY6NDE5NDM2OCwxMTE0MTEyOjQxOTg0MDAsMTE3OTY0ODoyMTQ3NDgzNzEyLDEyNDUxODQ6MCwxMzEwNzIwOjQxNjAsMTM3NjI1NjoyMTUxNjc4MDE2LDE0NDE3OTI6MjE1MTY4MjA0OCwxNTA3MzI4OjIxNDc0ODc4MDgsMTU3Mjg2NDoyMTUxNjgyMTEyLDE2Mzg0MDA6MjE0NzQ4MzY0OCwxNzAzOTM2OjIxNTE2Nzc5NTIsMTc2OTQ3Mjo0MTk4NDY0LDE4MzUwMDg6MjE0NzQ4Nzc0NCwxOTAwNTQ0OjQxOTQzMDQsMTk2NjA4MDo2NCwyMDMxNjE2OjQwOTYsMTA4MTM0NDoyMTUxNjc3OTUyLDExNDY4ODA6MjE1MTY4MjExMiwxMjEyNDE2OjAsMTI3Nzk1Mjo0MTk4NDAwLDEzNDM0ODg6NDE5NDM2OCwxNDA5MDI0OjIxNDc0ODM2NDgsMTQ3NDU2MDoyMTQ3NDg3ODA4LDE1NDAwOTY6NjQsMTYwNTYzMjoyMTQ3NDgzNzEyLDE2NzExNjg6NDA5NiwxNzM2NzA0OjIxNDc0ODc3NDQsMTgwMjI0MDoyMTUxNjc4MDE2LDE4Njc3NzY6NDE2MCwxOTMzMzEyOjIxNTE2ODIwNDgsMTk5ODg0ODo0MTk0MzA0LDIwNjQzODQ6NDE5ODQ2NH0sezA6MTI4LDQwOTY6MTcwMzkzNjAsODE5MjoyNjIxNDQsMTIyODg6NTM2ODcwOTEyLDE2Mzg0OjUzNzEzMzE4NCwyMDQ4MDoxNjc3NzM0NCwyNDU3Njo1NTM2NDgyNTYsMjg2NzI6MjYyMjcyLDMyNzY4OjE2Nzc3MjE2LDM2ODY0OjUzNzEzMzA1Niw0MDk2MDo1MzY4NzEwNDAsNDUwNTY6NTUzOTEwNDAwLDQ5MTUyOjU1MzkxMDI3Miw1MzI0ODowLDU3MzQ0OjE3MDM5NDg4LDYxNDQwOjU1MzY0ODEyOCwyMDQ4OjE3MDM5NDg4LDYxNDQ6NTUzNjQ4MjU2LDEwMjQwOjEyOCwxNDMzNjoxNzAzOTM2MCwxODQzMjoyNjIxNDQsMjI1Mjg6NTM3MTMzMTg0LDI2NjI0OjU1MzkxMDI3MiwzMDcyMDo1MzY4NzA5MTIsMzQ4MTY6NTM3MTMzMDU2LDM4OTEyOjAsNDMwMDg6NTUzOTEwNDAwLDQ3MTA0OjE2Nzc3MzQ0LDUxMjAwOjUzNjg3MTA0MCw1NTI5Njo1NTM2NDgxMjgsNTkzOTI6MTY3NzcyMTYsNjM0ODg6MjYyMjcyLDY1NTM2OjI2MjE0NCw2OTYzMjoxMjgsNzM3Mjg6NTM2ODcwOTEyLDc3ODI0OjU1MzY0ODI1Niw4MTkyMDoxNjc3NzM0NCw4NjAxNjo1NTM5MTAyNzIsOTAxMTI6NTM3MTMzMTg0LDk0MjA4OjE2Nzc3MjE2LDk4MzA0OjU1MzkxMDQwMCwxMDI0MDA6NTUzNjQ4MTI4LDEwNjQ5NjoxNzAzOTM2MCwxMTA1OTI6NTM3MTMzMDU2LDExNDY4ODoyNjIyNzIsMTE4Nzg0OjUzNjg3MTA0MCwxMjI4ODA6MCwxMjY5NzY6MTcwMzk0ODgsNjc1ODQ6NTUzNjQ4MjU2LDcxNjgwOjE2Nzc3MjE2LDc1Nzc2OjE3MDM5MzYwLDc5ODcyOjUzNzEzMzE4NCw4Mzk2ODo1MzY4NzA5MTIsODgwNjQ6MTcwMzk0ODgsOTIxNjA6MTI4LDk2MjU2OjU1MzkxMDI3MiwxMDAzNTI6MjYyMjcyLDEwNDQ0ODo1NTM5MTA0MDAsMTA4NTQ0OjAsMTEyNjQwOjU1MzY0ODEyOCwxMTY3MzY6MTY3NzczNDQsMTIwODMyOjI2MjE0NCwxMjQ5Mjg6NTM3MTMzMDU2LDEyOTAyNDo1MzY4NzEwNDB9LHswOjI2ODQzNTQ2NCwyNTY6ODE5Miw1MTI6MjcwNTMyNjA4LDc2ODoyNzA1NDA4MDgsMTAyNDoyNjg0NDM2NDgsMTI4MDoyMDk3MTUyLDE1MzY6MjA5NzE2MCwxNzkyOjI2ODQzNTQ1NiwyMDQ4OjAsMjMwNDoyNjg0NDM2NTYsMjU2MDoyMTA1MzQ0LDI4MTY6OCwzMDcyOjI3MDUzMjYxNiwzMzI4OjIxMDUzNTIsMzU4NDo4MjAwLDM4NDA6MjcwNTQwODAwLDEyODoyNzA1MzI2MDgsMzg0OjI3MDU0MDgwOCw2NDA6OCw4OTY6MjA5NzE1MiwxMTUyOjIxMDUzNTIsMTQwODoyNjg0MzU0NjQsMTY2NDoyNjg0NDM2NDgsMTkyMDo4MjAwLDIxNzY6MjA5NzE2MCwyNDMyOjgxOTIsMjY4ODoyNjg0NDM2NTYsMjk0NDoyNzA1MzI2MTYsMzIwMDowLDM0NTY6MjcwNTQwODAwLDM3MTI6MjEwNTM0NCwzOTY4OjI2ODQzNTQ1Niw0MDk2OjI2ODQ0MzY0OCw0MzUyOjI3MDUzMjYxNiw0NjA4OjI3MDU0MDgwOCw0ODY0OjgyMDAsNTEyMDoyMDk3MTUyLDUzNzY6MjY4NDM1NDU2LDU2MzI6MjY4NDM1NDY0LDU4ODg6MjEwNTM0NCw2MTQ0OjIxMDUzNTIsNjQwMDowLDY2NTY6OCw2OTEyOjI3MDUzMjYwOCw3MTY4OjgxOTIsNzQyNDoyNjg0NDM2NTYsNzY4MDoyNzA1NDA4MDAsNzkzNjoyMDk3MTYwLDQyMjQ6OCw0NDgwOjIxMDUzNDQsNDczNjoyMDk3MTUyLDQ5OTI6MjY4NDM1NDY0LDUyNDg6MjY4NDQzNjQ4LDU1MDQ6ODIwMCw1NzYwOjI3MDU0MDgwOCw2MDE2OjI3MDUzMjYwOCw2MjcyOjI3MDU0MDgwMCw2NTI4OjI3MDUzMjYxNiw2Nzg0OjgxOTIsNzA0MDoyMTA1MzUyLDcyOTY6MjA5NzE2MCw3NTUyOjAsNzgwODoyNjg0MzU0NTYsODA2NDoyNjg0NDM2NTZ9LHswOjEwNDg1NzYsMTY6MzM1NTU0NTcsMzI6MTAyNCw0ODoxMDQ5NjAxLDY0OjM0NjA0MDMzLDgwOjAsOTY6MSwxMTI6MzQ2MDMwMDksMTI4OjMzNTU1NDU2LDE0NDoxMDQ4NTc3LDE2MDozMzU1NDQzMywxNzY6MzQ2MDQwMzIsMTkyOjM0NjAzMDA4LDIwODoxMDI1LDIyNDoxMDQ5NjAwLDI0MDozMzU1NDQzMiw4OjM0NjAzMDA5LDI0OjAsNDA6MzM1NTU0NTcsNTY6MzQ2MDQwMzIsNzI6MTA0ODU3Niw4ODozMzU1NDQzMywxMDQ6MzM1NTQ0MzIsMTIwOjEwMjUsMTM2OjEwNDk2MDEsMTUyOjMzNTU1NDU2LDE2ODozNDYwMzAwOCwxODQ6MTA0ODU3NywyMDA6MTAyNCwyMTY6MzQ2MDQwMzMsMjMyOjEsMjQ4OjEwNDk2MDAsMjU2OjMzNTU0NDMyLDI3MjoxMDQ4NTc2LDI4ODozMzU1NTQ1NywzMDQ6MzQ2MDMwMDksMzIwOjEwNDg1NzcsMzM2OjMzNTU1NDU2LDM1MjozNDYwNDAzMiwzNjg6MTA0OTYwMSwzODQ6MTAyNSw0MDA6MzQ2MDQwMzMsNDE2OjEwNDk2MDAsNDMyOjEsNDQ4OjAsNDY0OjM0NjAzMDA4LDQ4MDozMzU1NDQzMyw0OTY6MTAyNCwyNjQ6MTA0OTYwMCwyODA6MzM1NTU0NTcsMjk2OjM0NjAzMDA5LDMxMjoxLDMyODozMzU1NDQzMiwzNDQ6MTA0ODU3NiwzNjA6MTAyNSwzNzY6MzQ2MDQwMzIsMzkyOjMzNTU0NDMzLDQwODozNDYwMzAwOCw0MjQ6MCw0NDA6MzQ2MDQwMzMsNDU2OjEwNDk2MDEsNDcyOjEwMjQsNDg4OjMzNTU1NDU2LDUwNDoxMDQ4NTc3fSx7MDoxMzQyMTk4MDgsMToxMzEwNzIsMjoxMzQyMTc3MjgsMzozMiw0OjEzMTEwNCw1OjEzNDM1MDg4MCw2OjEzNDM1MDg0OCw3OjIwNDgsODoxMzQzNDg4MDAsOToxMzQyMTk3NzYsMTA6MTMzMTIwLDExOjEzNDM0ODgzMiwxMjoyMDgwLDEzOjAsMTQ6MTM0MjE3NzYwLDE1OjEzMzE1MiwyMTQ3NDgzNjQ4OjIwNDgsMjE0NzQ4MzY0OToxMzQzNTA4ODAsMjE0NzQ4MzY1MDoxMzQyMTk4MDgsMjE0NzQ4MzY1MToxMzQyMTc3MjgsMjE0NzQ4MzY1MjoxMzQzNDg4MDAsMjE0NzQ4MzY1MzoxMzMxMjAsMjE0NzQ4MzY1NDoxMzMxNTIsMjE0NzQ4MzY1NTozMiwyMTQ3NDgzNjU2OjEzNDIxNzc2MCwyMTQ3NDgzNjU3OjIwODAsMjE0NzQ4MzY1ODoxMzExMDQsMjE0NzQ4MzY1OToxMzQzNTA4NDgsMjE0NzQ4MzY2MDowLDIxNDc0ODM2NjE6MTM0MzQ4ODMyLDIxNDc0ODM2NjI6MTM0MjE5Nzc2LDIxNDc0ODM2NjM6MTMxMDcyLDE2OjEzMzE1MiwxNzoxMzQzNTA4NDgsMTg6MzIsMTk6MjA0OCwyMDoxMzQyMTk3NzYsMjE6MTM0MjE3NzYwLDIyOjEzNDM0ODgzMiwyMzoxMzEwNzIsMjQ6MCwyNToxMzExMDQsMjY6MTM0MzQ4ODAwLDI3OjEzNDIxOTgwOCwyODoxMzQzNTA4ODAsMjk6MTMzMTIwLDMwOjIwODAsMzE6MTM0MjE3NzI4LDIxNDc0ODM2NjQ6MTMxMDcyLDIxNDc0ODM2NjU6MjA0OCwyMTQ3NDgzNjY2OjEzNDM0ODgzMiwyMTQ3NDgzNjY3OjEzMzE1MiwyMTQ3NDgzNjY4OjMyLDIxNDc0ODM2Njk6MTM0MzQ4ODAwLDIxNDc0ODM2NzA6MTM0MjE3NzI4LDIxNDc0ODM2NzE6MTM0MjE5ODA4LDIxNDc0ODM2NzI6MTM0MzUwODgwLDIxNDc0ODM2NzM6MTM0MjE3NzYwLDIxNDc0ODM2NzQ6MTM0MjE5Nzc2LDIxNDc0ODM2NzU6MCwyMTQ3NDgzNjc2OjEzMzEyMCwyMTQ3NDgzNjc3OjIwODAsMjE0NzQ4MzY3ODoxMzExMDQsMjE0NzQ4MzY3OToxMzQzNTA4NDh9XSx1PVs0MTYwNzQ5NTY5LDUyODQ4MjMwNCwzMzAzMDE0NCwyMDY0Mzg0LDEyOTAyNCw4MDY0LDUwNCwyMTQ3NDgzNjc5XSxkPWEuREVTPXMuZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9rZXkscj10LndvcmRzLGU9W10saT0wO2k8NTY7aSsrKXt2YXIgbj1jW2ldLTE7ZVtpXT1yW24+Pj41XT4+PjMxLW4lMzImMX1mb3IodmFyIG89dGhpcy5fc3ViS2V5cz1bXSxzPTA7czwxNjtzKyspe2Zvcih2YXIgYT1vW3NdPVtdLGY9bFtzXSxpPTA7aTwyNDtpKyspYVtpLzZ8MF18PWVbKGhbaV0tMStmKSUyOF08PDMxLWklNixhWzQrKGkvNnwwKV18PWVbMjgrKGhbaSsyNF0tMStmKSUyOF08PDMxLWklNjthWzBdPWFbMF08PDF8YVswXT4+PjMxO2Zvcih2YXIgaT0xO2k8NztpKyspYVtpXT1hW2ldPj4+NCooaS0xKSszO2FbN109YVs3XTw8NXxhWzddPj4+Mjd9Zm9yKHZhciB1PXRoaXMuX2ludlN1YktleXM9W10saT0wO2k8MTY7aSsrKXVbaV09b1sxNS1pXX0sZW5jcnlwdEJsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fZG9DcnlwdEJsb2NrKHQscix0aGlzLl9zdWJLZXlzKX0sZGVjcnlwdEJsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fZG9DcnlwdEJsb2NrKHQscix0aGlzLl9pbnZTdWJLZXlzKX0sX2RvQ3J5cHRCbG9jazpmdW5jdGlvbih0LGksbil7dGhpcy5fbEJsb2NrPXRbaV0sdGhpcy5fckJsb2NrPXRbaSsxXSxyLmNhbGwodGhpcyw0LDI1MjY0NTEzNSksci5jYWxsKHRoaXMsMTYsNjU1MzUpLGUuY2FsbCh0aGlzLDIsODU4OTkzNDU5KSxlLmNhbGwodGhpcyw4LDE2NzExOTM1KSxyLmNhbGwodGhpcywxLDE0MzE2NTU3NjUpO2Zvcih2YXIgbz0wO288MTY7bysrKXtmb3IodmFyIHM9bltvXSxhPXRoaXMuX2xCbG9jayxjPXRoaXMuX3JCbG9jayxoPTAsbD0wO2w8ODtsKyspaHw9ZltsXVsoKGNec1tsXSkmdVtsXSk+Pj4wXTt0aGlzLl9sQmxvY2s9Yyx0aGlzLl9yQmxvY2s9YV5ofXZhciBkPXRoaXMuX2xCbG9jazt0aGlzLl9sQmxvY2s9dGhpcy5fckJsb2NrLHRoaXMuX3JCbG9jaz1kLHIuY2FsbCh0aGlzLDEsMTQzMTY1NTc2NSksZS5jYWxsKHRoaXMsOCwxNjcxMTkzNSksZS5jYWxsKHRoaXMsMiw4NTg5OTM0NTkpLHIuY2FsbCh0aGlzLDE2LDY1NTM1KSxyLmNhbGwodGhpcyw0LDI1MjY0NTEzNSksdFtpXT10aGlzLl9sQmxvY2ssdFtpKzFdPXRoaXMuX3JCbG9ja30sa2V5U2l6ZToyLGl2U2l6ZToyLGJsb2NrU2l6ZToyfSk7aS5ERVM9cy5fY3JlYXRlSGVscGVyKGQpO3ZhciB2PWEuVHJpcGxlREVTPXMuZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2tleSxyPXQud29yZHM7dGhpcy5fZGVzMT1kLmNyZWF0ZUVuY3J5cHRvcihvLmNyZWF0ZShyLnNsaWNlKDAsMikpKSx0aGlzLl9kZXMyPWQuY3JlYXRlRW5jcnlwdG9yKG8uY3JlYXRlKHIuc2xpY2UoMiw0KSkpLHRoaXMuX2RlczM9ZC5jcmVhdGVFbmNyeXB0b3Ioby5jcmVhdGUoci5zbGljZSg0LDYpKSl9LGVuY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2RlczEuZW5jcnlwdEJsb2NrKHQsciksdGhpcy5fZGVzMi5kZWNyeXB0QmxvY2sodCxyKSx0aGlzLl9kZXMzLmVuY3J5cHRCbG9jayh0LHIpfSxkZWNyeXB0QmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9kZXMzLmRlY3J5cHRCbG9jayh0LHIpLHRoaXMuX2RlczIuZW5jcnlwdEJsb2NrKHQsciksdGhpcy5fZGVzMS5kZWNyeXB0QmxvY2sodCxyKX0sa2V5U2l6ZTo2LGl2U2l6ZToyLGJsb2NrU2l6ZToyfSk7aS5UcmlwbGVERVM9cy5fY3JlYXRlSGVscGVyKHYpfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcigpe2Zvcih2YXIgdD10aGlzLl9TLHI9dGhpcy5faSxlPXRoaXMuX2osaT0wLG49MDtuPDQ7bisrKXtyPShyKzEpJTI1NixlPShlK3Rbcl0pJTI1Njt2YXIgbz10W3JdO3Rbcl09dFtlXSx0W2VdPW8saXw9dFsodFtyXSt0W2VdKSUyNTZdPDwyNC04Km59cmV0dXJuIHRoaXMuX2k9cix0aGlzLl9qPWUsaX12YXIgZT10LGk9ZS5saWIsbj1pLlN0cmVhbUNpcGhlcixvPWUuYWxnbyxzPW8uUkM0PW4uZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9rZXkscj10LndvcmRzLGU9dC5zaWdCeXRlcyxpPXRoaXMuX1M9W10sbj0wO248MjU2O24rKylpW25dPW47Zm9yKHZhciBuPTAsbz0wO248MjU2O24rKyl7dmFyIHM9biVlLGE9cltzPj4+Ml0+Pj4yNC1zJTQqOCYyNTU7bz0obytpW25dK2EpJTI1Njt2YXIgYz1pW25dO2lbbl09aVtvXSxpW29dPWN9dGhpcy5faT10aGlzLl9qPTB9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LGUpe3RbZV1ePXIuY2FsbCh0aGlzKX0sa2V5U2l6ZTo4LGl2U2l6ZTowfSk7ZS5SQzQ9bi5fY3JlYXRlSGVscGVyKHMpO3ZhciBhPW8uUkM0RHJvcD1zLmV4dGVuZCh7Y2ZnOnMuY2ZnLmV4dGVuZCh7ZHJvcDoxOTJ9KSxfZG9SZXNldDpmdW5jdGlvbigpe3MuX2RvUmVzZXQuY2FsbCh0aGlzKTtmb3IodmFyIHQ9dGhpcy5jZmcuZHJvcDt0PjA7dC0tKXIuY2FsbCh0aGlzKX19KTtlLlJDNERyb3A9bi5fY3JlYXRlSGVscGVyKGEpfSgpLHQubW9kZS5DVFJHbGFkbWFuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0KXtpZigyNTU9PT0odD4+MjQmMjU1KSl7dmFyIHI9dD4+MTYmMjU1LGU9dD4+OCYyNTUsaT0yNTUmdDsyNTU9PT1yPyhyPTAsMjU1PT09ZT8oZT0wLDI1NT09PWk/aT0wOisraSk6KytlKTorK3IsdD0wLHQrPXI8PDE2LHQrPWU8PDgsdCs9aX1lbHNlIHQrPTE8PDI0O3JldHVybiB0fWZ1bmN0aW9uIGUodCl7cmV0dXJuIDA9PT0odFswXT1yKHRbMF0pKSYmKHRbMV09cih0WzFdKSksdH12YXIgaT10LmxpYi5CbG9ja0NpcGhlck1vZGUuZXh0ZW5kKCksbj1pLkVuY3J5cHRvcj1pLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dmFyIGk9dGhpcy5fY2lwaGVyLG49aS5ibG9ja1NpemUsbz10aGlzLl9pdixzPXRoaXMuX2NvdW50ZXI7byYmKHM9dGhpcy5fY291bnRlcj1vLnNsaWNlKDApLHRoaXMuX2l2PXZvaWQgMCksZShzKTt2YXIgYT1zLnNsaWNlKDApO2kuZW5jcnlwdEJsb2NrKGEsMCk7Zm9yKHZhciBjPTA7YzxuO2MrKyl0W3IrY11ePWFbY119fSk7cmV0dXJuIGkuRGVjcnlwdG9yPW4saX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHIoKXtmb3IodmFyIHQ9dGhpcy5fWCxyPXRoaXMuX0MsZT0wO2U8ODtlKyspYVtlXT1yW2VdO3JbMF09clswXSsxMjk1MzA3NTk3K3RoaXMuX2J8MCxyWzFdPXJbMV0rMzU0NTA1MjM3MSsoclswXT4+PjA8YVswXT4+PjA/MTowKXwwLHJbMl09clsyXSs4ODYyNjMwOTIrKHJbMV0+Pj4wPGFbMV0+Pj4wPzE6MCl8MCxyWzNdPXJbM10rMTI5NTMwNzU5NysoclsyXT4+PjA8YVsyXT4+PjA/MTowKXwwLHJbNF09cls0XSszNTQ1MDUyMzcxKyhyWzNdPj4+MDxhWzNdPj4+MD8xOjApfDAscls1XT1yWzVdKzg4NjI2MzA5Misocls0XT4+PjA8YVs0XT4+PjA/MTowKXwwLHJbNl09cls2XSsxMjk1MzA3NTk3KyhyWzVdPj4+MDxhWzVdPj4+MD8xOjApfDAscls3XT1yWzddKzM1NDUwNTIzNzErKHJbNl0+Pj4wPGFbNl0+Pj4wPzE6MCl8MCx0aGlzLl9iPXJbN10+Pj4wPGFbN10+Pj4wPzE6MDtmb3IodmFyIGU9MDtlPDg7ZSsrKXt2YXIgaT10W2VdK3JbZV0sbj02NTUzNSZpLG89aT4+PjE2LHM9KChuKm4+Pj4xNykrbipvPj4+MTUpK28qbyxoPSgoNDI5NDkwMTc2MCZpKSppfDApKygoNjU1MzUmaSkqaXwwKTtjW2VdPXNeaH10WzBdPWNbMF0rKGNbN108PDE2fGNbN10+Pj4xNikrKGNbNl08PDE2fGNbNl0+Pj4xNil8MCx0WzFdPWNbMV0rKGNbMF08PDh8Y1swXT4+PjI0KStjWzddfDAsdFsyXT1jWzJdKyhjWzFdPDwxNnxjWzFdPj4+MTYpKyhjWzBdPDwxNnxjWzBdPj4+MTYpfDAsdFszXT1jWzNdKyhjWzJdPDw4fGNbMl0+Pj4yNCkrY1sxXXwwLHRbNF09Y1s0XSsoY1szXTw8MTZ8Y1szXT4+PjE2KSsoY1syXTw8MTZ8Y1syXT4+PjE2KXwwLHRbNV09Y1s1XSsoY1s0XTw8OHxjWzRdPj4+MjQpK2NbM118MCx0WzZdPWNbNl0rKGNbNV08PDE2fGNbNV0+Pj4xNikrKGNbNF08PDE2fGNbNF0+Pj4xNil8MCx0WzddPWNbN10rKGNbNl08PDh8Y1s2XT4+PjI0KStjWzVdfDB9dmFyIGU9dCxpPWUubGliLG49aS5TdHJlYW1DaXBoZXIsbz1lLmFsZ28scz1bXSxhPVtdLGM9W10saD1vLlJhYmJpdD1uLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fa2V5LndvcmRzLGU9dGhpcy5jZmcuaXYsaT0wO2k8NDtpKyspdFtpXT0xNjcxMTkzNSYodFtpXTw8OHx0W2ldPj4+MjQpfDQyNzgyNTUzNjAmKHRbaV08PDI0fHRbaV0+Pj44KTt2YXIgbj10aGlzLl9YPVt0WzBdLHRbM108PDE2fHRbMl0+Pj4xNix0WzFdLHRbMF08PDE2fHRbM10+Pj4xNix0WzJdLHRbMV08PDE2fHRbMF0+Pj4xNix0WzNdLHRbMl08PDE2fHRbMV0+Pj4xNl0sbz10aGlzLl9DPVt0WzJdPDwxNnx0WzJdPj4+MTYsNDI5NDkwMTc2MCZ0WzBdfDY1NTM1JnRbMV0sdFszXTw8MTZ8dFszXT4+PjE2LDQyOTQ5MDE3NjAmdFsxXXw2NTUzNSZ0WzJdLHRbMF08PDE2fHRbMF0+Pj4xNiw0Mjk0OTAxNzYwJnRbMl18NjU1MzUmdFszXSx0WzFdPDwxNnx0WzFdPj4+MTYsNDI5NDkwMTc2MCZ0WzNdfDY1NTM1JnRbMF1dO3RoaXMuX2I9MDtmb3IodmFyIGk9MDtpPDQ7aSsrKXIuY2FsbCh0aGlzKTtmb3IodmFyIGk9MDtpPDg7aSsrKW9baV1ePW5baSs0JjddO2lmKGUpe3ZhciBzPWUud29yZHMsYT1zWzBdLGM9c1sxXSxoPTE2NzExOTM1JihhPDw4fGE+Pj4yNCl8NDI3ODI1NTM2MCYoYTw8MjR8YT4+PjgpLGw9MTY3MTE5MzUmKGM8PDh8Yz4+PjI0KXw0Mjc4MjU1MzYwJihjPDwyNHxjPj4+OCksZj1oPj4+MTZ8NDI5NDkwMTc2MCZsLHU9bDw8MTZ8NjU1MzUmaDtvWzBdXj1oLG9bMV1ePWYsb1syXV49bCxvWzNdXj11LG9bNF1ePWgsb1s1XV49ZixvWzZdXj1sLG9bN11ePXU7Zm9yKHZhciBpPTA7aTw0O2krKylyLmNhbGwodGhpcyl9fSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9YO3IuY2FsbCh0aGlzKSxzWzBdPWlbMF1eaVs1XT4+PjE2XmlbM108PDE2LHNbMV09aVsyXV5pWzddPj4+MTZeaVs1XTw8MTYsc1syXT1pWzRdXmlbMV0+Pj4xNl5pWzddPDwxNixzWzNdPWlbNl1eaVszXT4+PjE2XmlbMV08PDE2O2Zvcih2YXIgbj0wO248NDtuKyspc1tuXT0xNjcxMTkzNSYoc1tuXTw8OHxzW25dPj4+MjQpfDQyNzgyNTUzNjAmKHNbbl08PDI0fHNbbl0+Pj44KSx0W2Urbl1ePXNbbl19LGJsb2NrU2l6ZTo0LGl2U2l6ZToyfSk7ZS5SYWJiaXQ9bi5fY3JlYXRlSGVscGVyKGgpfSgpLHQubW9kZS5DVFI9ZnVuY3Rpb24oKXt2YXIgcj10LmxpYi5CbG9ja0NpcGhlck1vZGUuZXh0ZW5kKCksZT1yLkVuY3J5cHRvcj1yLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcy5fY2lwaGVyLGk9ZS5ibG9ja1NpemUsbj10aGlzLl9pdixvPXRoaXMuX2NvdW50ZXI7biYmKG89dGhpcy5fY291bnRlcj1uLnNsaWNlKDApLHRoaXMuX2l2PXZvaWQgMCk7dmFyIHM9by5zbGljZSgwKTtlLmVuY3J5cHRCbG9jayhzLDApLG9baS0xXT1vW2ktMV0rMXwwO2Zvcih2YXIgYT0wO2E8aTthKyspdFtyK2FdXj1zW2FdfX0pO3JldHVybiByLkRlY3J5cHRvcj1lLHJ9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7Zm9yKHZhciB0PXRoaXMuX1gscj10aGlzLl9DLGU9MDtlPDg7ZSsrKWFbZV09cltlXTtyWzBdPXJbMF0rMTI5NTMwNzU5Nyt0aGlzLl9ifDAsclsxXT1yWzFdKzM1NDUwNTIzNzErKHJbMF0+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+Pj4yNCkrY1s1XXwwfXZhciBlPXQsaT1lLmxpYixuPWkuU3RyZWFtQ2lwaGVyLG89ZS5hbGdvLHM9W10sYT1bXSxjPVtdLGg9by5SYWJiaXRMZWdhY3k9bi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fa2V5LndvcmRzLGU9dGhpcy5jZmcuaXYsaT10aGlzLl9YPVt0WzBdLHRbM108PDE2fHRbMl0+Pj4xNix0WzFdLHRbMF08PDE2fHRbM10+Pj4xNix0WzJdLHRbMV08PDE2fHRbMF0+Pj4xNix0WzNdLHRbMl08PDE2fHRbMV0+Pj4xNl0sbj10aGlzLl9DPVt0WzJdPDwxNnx0WzJdPj4+MTYsNDI5NDkwMTc2MCZ0WzBdfDY1NTM1JnRbMV0sdFszXTw8MTZ8dFszXT4+PjE2LDQyOTQ5MDE3NjAmdFsxXXw2NTUzNSZ0WzJdLHRbMF08PDE2fHRbMF0+Pj4xNiw0Mjk0OTAxNzYwJnRbMl18NjU1MzUmdFszXSx0WzFdPDwxNnx0WzFdPj4+MTYsNDI5NDkwMTc2MCZ0WzNdfDY1NTM1JnRbMF1dO3RoaXMuX2I9MDtmb3IodmFyIG89MDtvPDQ7bysrKXIuY2FsbCh0aGlzKTtmb3IodmFyIG89MDtvPDg7bysrKW5bb11ePWlbbys0JjddO2lmKGUpe3ZhciBzPWUud29yZHMsYT1zWzBdLGM9c1sxXSxoPTE2NzExOTM1JihhPDw4fGE+Pj4yNCl8NDI3ODI1NTM2MCYoYTw8MjR8YT4+PjgpLGw9MTY3MTE5MzUmKGM8PDh8Yz4+PjI0KXw0Mjc4MjU1MzYwJihjPDwyNHxjPj4+OCksZj1oPj4+MTZ8NDI5NDkwMTc2MCZsLHU9bDw8MTZ8NjU1MzUmaDtuWzBdXj1oLG5bMV1ePWYsblsyXV49bCxuWzNdXj11LG5bNF1ePWgsbls1XV49ZixuWzZdXj1sLG5bN11ePXU7Zm9yKHZhciBvPTA7bzw0O28rKylyLmNhbGwodGhpcyl9fSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9YO3IuY2FsbCh0aGlzKSxzWzBdPWlbMF1eaVs1XT4+PjE2XmlbM108PDE2LHNbMV09aVsyXV5pWzddPj4+MTZeaVs1XTw8MTYsc1syXT1pWzRdXmlbMV0+Pj4xNl5pWzddPDwxNixzWzNdPWlbNl1eaVszXT4+PjE2XmlbMV08PDE2O2Zvcih2YXIgbj0wO248NDtuKyspc1tuXT0xNjcxMTkzNSYoc1tuXTw8OHxzW25dPj4+MjQpfDQyNzgyNTUzNjAmKHNbbl08PDI0fHNbbl0+Pj44KSx0W2Urbl1ePXNbbl19LGJsb2NrU2l6ZTo0LGl2U2l6ZToyfSk7ZS5SYWJiaXRMZWdhY3k9bi5fY3JlYXRlSGVscGVyKGgpfSgpLHQucGFkLlplcm9QYWRkaW5nPXtwYWQ6ZnVuY3Rpb24odCxyKXt2YXIgZT00KnI7dC5jbGFtcCgpLHQuc2lnQnl0ZXMrPWUtKHQuc2lnQnl0ZXMlZXx8ZSl9LHVucGFkOmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10LndvcmRzLGU9dC5zaWdCeXRlcy0xOyEocltlPj4+Ml0+Pj4yNC1lJTQqOCYyNTUpOyllLS07dC5zaWdCeXRlcz1lKzF9fSx0fSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcnlwdG8tanMubWluLmpzLm1hcCJdfQ== //------QC-SOURCE-SPLIT------