(function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; var __filename = 'preview-scripts/assets/scripts/ui/UIManager.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, '83d1824AgVC8Z6URdLQKprC', 'UIManager'); // scripts/ui/UIManager.ts "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UIManager = void 0; var UIBase_1 = require("./UIBase"); var UIManager = /** @class */ (function () { function UIManager() { this._cache = new Map(); // playResFlyEffect } Object.defineProperty(UIManager, "ins", { get: function () { if (this._ins == null) { this._ins = new UIManager(); } return this._ins; }, enumerable: false, configurable: true }); Object.defineProperty(UIManager.prototype, "uiLayer", { get: function () { return this._uiLayer; }, enumerable: false, configurable: true }); Object.defineProperty(UIManager.prototype, "widgetLayer", { get: function () { return this._widgetLayer; }, enumerable: false, configurable: true }); Object.defineProperty(UIManager.prototype, "loadingLayer", { get: function () { return this._loadingLayer; }, enumerable: false, configurable: true }); Object.defineProperty(UIManager.prototype, "adLayer", { get: function () { return this._adLayer; }, enumerable: false, configurable: true }); Object.defineProperty(UIManager.prototype, "cache", { get: function () { return this._cache; }, enumerable: false, configurable: true }); // setLoadingNode(node: Node): void { // this._loadingNode = node; // } // setAdNode(node: cc.Node) { // this._adRoot = node; // } UIManager.prototype.init = function (uiRoot) { //已经进入了GameMain场景 this._uiRoot = uiRoot; this._uiLayer = this._uiRoot.getChildByName("uiLayer"); this._windowLockLayer = this._uiRoot.getChildByName("windowBlcok"); this._windowLockLayer.active = false; // this._windowLockLayer.getComponent(Widget).updateAlignment(); this._windowLayer = this._uiRoot.getChildByName("windowLayer"); this._widgetLayer = this._uiRoot.getChildByName("widgetLayer"); this._loadingLayer = this._uiRoot.getChildByName("loadingLayer"); this._loadingLayer.active = false; this._tipsLayer = this._uiRoot.getChildByName("tipsLayer"); this._adLayer = this._uiRoot.getChildByName("adLayer"); // if (this._loadingNode) { // // this._loadingNode.removeFromParent(); // this._loadingLayer.addChild(this._loadingNode); // this._loadingNode.getChildByName("type1").active = false; // this._loadingNode.getChildByName("type2").active = true; // this._loadingNode.active = false; // } // uiRoot.addChild(this._adRoot);//添加广告节点 }; // static get adRoot() { // let _scene: any = cc.director.getScene(); // let _adRoot = _scene.getChildByName('Canvas').getChildByName('adLayer') as cc.Node; // if (_adRoot == null) { // _adRoot = new cc.Node(); // _adRoot.name = 'adLayer'; // _adRoot.parent = _scene.getChildByName('Canvas'); // _adRoot.x = 0; // _adRoot.y = 0; // _adRoot.width = cc.winSize.width; // _adRoot.height = cc.winSize.height; // _adRoot.setSiblingIndex(999); // } // return _adRoot; // } UIManager.prototype.openScene = function (name) { var _this = this; this._loadingLayer.active = true; this._loadingLayer.getChildByName('sceneNode').active = true; this._loadingLayer.getChildByName('windowNode').active = false; cc.resources.loadScene('scenes/' + name, function (finish, total) { var prg = finish / total; _this._loadingLayer.getChildByName('sceneNode').getComponentInChildren(cc.ProgressBar).progress = prg; }, function (error, scene) { _this._loadingLayer.active = false; cc.director.runScene(scene); }); // cc.director.scene }; /** * * @param type * @param callBack 参数 view:cc.Node */ UIManager.prototype.loadWindow = function (type, callBack) { var _this = this; if (this._cache.has(type)) { callBack(this._cache.get(type)); } else { this._loadingLayer.active = true; this._loadingLayer.getChildByName('sceneNode').active = false; this._loadingLayer.getChildByName('windowNode').active = true; cc.resources.load(type, cc.Prefab, function (error, prefab) { _this._loadingLayer.active = false; if (!error) { if (!_this._cache.has(type)) { var view = cc.instantiate(prefab); _this._cache.set(type, view); callBack(view); } } }); } }; UIManager.prototype.openWindow = function (type, openParam) { var _this = this; if (openParam === void 0) { openParam = null; } if (this._cache.has(type)) { this.doOpenWindow(this._cache.get(type), openParam); } else { // this._loadingLayer.active = true; // this._loadingLayer.getChildByName('sceneNode').active = false; // this._loadingLayer.getChildByName('windowNode').active = true; // cc.resources.load(type, cc.Prefab, // (finished, total) => { // let prg = finished / total; // }, // (error, prefab: cc.Prefab) => { // //finish // if (!this._cache.has(type)) { // let view = cc.instantiate(prefab); // this._cache.set(type, view); // this._loadingLayer.active = false; // this.doOpenWindow(view, openParam); // } // }); this.loadWindow(type, function (view) { _this.doOpenWindow(view, openParam); }); } }; UIManager.prototype.doOpenWindow = function (view, param) { if (!view.parent) { !this._windowLockLayer.active && (this._windowLockLayer.active = true); var base = view.getComponent(UIBase_1.UIBase); base && (base.enableParam = param); this._windowLayer.addChild(view); view.active = true; base && base.onPopUpEffect(); } }; UIManager.prototype.closeWindow = function (type, callback) { var _this = this; if (callback === void 0) { callback = null; } if (this._cache.has(type)) { var view_1 = this._cache.get(type); // view.active = false; var base = view_1.getComponent(UIBase_1.UIBase); base && base.onBeforeClose(); base.onCloseEffect(function () { var isOnWindowLayer = (view_1.isValid && view_1.parent === _this._windowLayer); if (isOnWindowLayer) { view_1.removeFromParent(); view_1.active = false; } if (isOnWindowLayer && _this._windowLayer.children.length == 0) { _this._windowLockLayer.active = false; } callback && callback(); }, this); } }; UIManager.prototype.getWidgetNode = function (type) { return this._widgetLayer.getChildByName('widget' + type.toString()); }; UIManager.prototype.showTips = function (str) { // let node = this._tipsLayer.getChildByName('TipsNode'); // node.active = true; // node.getComponentInChildren(Label).string = str; // Tween.stopAllByTarget(node); // tween(node).delay(3).call(this.closeTips.bind(this)).start() }; UIManager.prototype.closeTips = function () { var node = this._tipsLayer.getChildByName('TipsNode'); node.active = false; }; UIManager._ins = null; return UIManager; }()); exports.UIManager = UIManager; 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2NyaXB0c1xcdWlcXFVJTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxtQ0FBa0M7QUFFbEM7SUFBQTtRQXlCWSxXQUFNLEdBQXlCLElBQUksR0FBRyxFQUFtQixDQUFDO1FBb05sRSxtQkFBbUI7SUFDdkIsQ0FBQztJQTNPRyxzQkFBVyxnQkFBRzthQUFkO1lBQ0ksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRTtnQkFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO2FBQy9CO1lBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3JCLENBQUM7OztPQUFBO0lBSUQsc0JBQUksOEJBQU87YUFBWCxjQUF5QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUloRCxzQkFBSSxrQ0FBVzthQUFmLGNBQTZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBRXhELHNCQUFJLG1DQUFZO2FBQWhCLGNBQThCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBSTFELHNCQUFJLDhCQUFPO2FBQVgsY0FBeUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFHaEQsc0JBQUksNEJBQUs7YUFBVCxjQUFvQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUl6RCxxQ0FBcUM7SUFDckMsZ0NBQWdDO0lBQ2hDLElBQUk7SUFFSiw2QkFBNkI7SUFDN0IsMkJBQTJCO0lBQzNCLElBQUk7SUFJSix3QkFBSSxHQUFKLFVBQUssTUFBZTtRQUNoQixpQkFBaUI7UUFFakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFD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YW1lIH0gZnJvbSBcIi4uL0dsb2JhbFwiO1xuaW1wb3J0IHsgVUlCYXNlIH0gZnJvbSBcIi4vVUlCYXNlXCI7XG5cbmV4cG9ydCBjbGFzcyBVSU1hbmFnZXIge1xuXG4gICAgcHJpdmF0ZSBzdGF0aWMgX2luczogVUlNYW5hZ2VyID0gbnVsbDtcbiAgICBzdGF0aWMgZ2V0IGlucygpOiBVSU1hbmFnZXIge1xuICAgICAgICBpZiAodGhpcy5faW5zID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuX2lucyA9IG5ldyBVSU1hbmFnZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9pbnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfdWlSb290OiBjYy5Ob2RlO1xuICAgIHByaXZhdGUgX3VpTGF5ZXI6IGNjLk5vZGU7XG4gICAgZ2V0IHVpTGF5ZXIoKTogY2MuTm9kZSB7IHJldHVybiB0aGlzLl91aUxheWVyOyB9XG4gICAgcHJpdmF0ZSBfd2luZG93TG9ja0xheWVyOiBjYy5Ob2RlO1xuICAgIHByaXZhdGUgX3dpbmRvd0xheWVyOiBjYy5Ob2RlO1xuICAgIHByaXZhdGUgX3dpZGdldExheWVyOiBjYy5Ob2RlO1xuICAgIGdldCB3aWRnZXRMYXllcigpOiBjYy5Ob2RlIHsgcmV0dXJuIHRoaXMuX3dpZGdldExheWVyOyB9XG4gICAgcHJpdmF0ZSBfbG9hZGluZ0xheWVyOiBjYy5Ob2RlO1xuICAgIGdldCBsb2FkaW5nTGF5ZXIoKTogY2MuTm9kZSB7IHJldHVybiB0aGlzLl9sb2FkaW5nTGF5ZXI7IH1cbiAgICAvLyBwcml2YXRlIF9sb2FkaW5nTm9kZTogTm9kZTtcbiAgICBwcml2YXRlIF90aXBzTGF5ZXI6IGNjLk5vZGU7XG4gICAgcHJpdmF0ZSBfYWRMYXllcjogY2MuTm9kZTtcbiAgICBnZXQgYWRMYXllcigpOiBjYy5Ob2RlIHsgcmV0dXJuIHRoaXMuX2FkTGF5ZXI7IH1cblxuICAgIHByaXZhdGUgX2NhY2hlOiBNYXA8c3RyaW5nLCBjYy5Ob2RlPiA9IG5ldyBNYXA8c3RyaW5nLCBjYy5Ob2RlPigpO1xuICAgIGdldCBjYWNoZSgpOiBNYXA8c3RyaW5nLCBjYy5Ob2RlPiB7IHJldHVybiB0aGlzLl9jYWNoZTsgfVxuXG4gICAgcHJpdmF0ZSBfYWRSb290OiBjYy5Ob2RlO1xuXG4gICAgLy8gc2V0TG9hZGluZ05vZGUobm9kZTogTm9kZSk6IHZvaWQge1xuICAgIC8vICAgICB0aGlzLl9sb2FkaW5nTm9kZSA9IG5vZGU7XG4gICAgLy8gfVxuXG4gICAgLy8gc2V0QWROb2RlKG5vZGU6IGNjLk5vZGUpIHtcbiAgICAvLyAgICAgdGhpcy5fYWRSb290ID0gbm9kZTtcbiAgICAvLyB9XG5cblxuXG4gICAgaW5pdCh1aVJvb3Q6IGNjLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgLy/lt7Lnu4/ov5vlhaXkuoZHYW1lTWFpbuWcuuaZr1xuXG4gICAgICAgIHRoaXMuX3VpUm9vdCA9IHVpUm9vdDtcbiAgICAgICAgdGhpcy5fdWlMYXllciA9IHRoaXMuX3VpUm9vdC5nZXRDaGlsZEJ5TmFtZShcInVpTGF5ZXJcIik7XG4gICAgICAgIHRoaXMuX3dpbmRvd0xvY2tMYXllciA9IHRoaXMuX3VpUm9vdC5nZXRDaGlsZEJ5TmFtZShcIndpbmRvd0JsY29rXCIpO1xuICAgICAgICB0aGlzLl93aW5kb3dMb2NrTGF5ZXIuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIC8vIHRoaXMuX3dpbmRvd0xvY2tMYXllci5nZXRDb21wb25lbnQoV2lkZ2V0KS51cGRhdGVBbGlnbm1lbnQoKTtcbiAgICAgICAgdGhpcy5fd2luZG93TGF5ZXIgPSB0aGlzLl91aVJvb3QuZ2V0Q2hpbGRCeU5hbWUoXCJ3aW5kb3dMYXllclwiKTtcbiAgICAgICAgdGhpcy5fd2lkZ2V0TGF5ZXIgPSB0aGlzLl91aVJvb3QuZ2V0Q2hpbGRCeU5hbWUoXCJ3aWRnZXRMYXllclwiKTtcbiAgICAgICAgdGhpcy5fbG9hZGluZ0xheWVyID0gdGhpcy5fdWlSb290LmdldENoaWxkQnlOYW1lKFwibG9hZGluZ0xheWVyXCIpO1xuICAgICAgICB0aGlzLl9sb2FkaW5nTGF5ZXIuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3RpcHNMYXllciA9IHRoaXMuX3VpUm9vdC5nZXRDaGlsZEJ5TmFtZShcInRpcHNMYXllclwiKTtcblxuICAgICAgICB0aGlzLl9hZExheWVyID0gdGhpcy5fdWlSb290LmdldENoaWxkQnlOYW1lKFwiYWRMYXllclwiKTtcblxuICAgICAgICAvLyBpZiAodGhpcy5fbG9hZGluZ05vZGUpIHtcbiAgICAgICAgLy8gICAgIC8vIHRoaXMuX2xvYWRpbmdOb2RlLnJlbW92ZUZyb21QYXJlbnQoKTsgXG4gICAgICAgIC8vICAgICB0aGlzLl9sb2FkaW5nTGF5ZXIuYWRkQ2hpbGQodGhpcy5fbG9hZGluZ05vZGUpO1xuXG4gICAgICAgIC8vICAgICB0aGlzLl9sb2FkaW5nTm9kZS5nZXRDaGlsZEJ5TmFtZShcInR5cGUxXCIpLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAvLyAgICAgdGhpcy5fbG9hZGluZ05vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0eXBlMlwiKS5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAvLyAgICAgdGhpcy5fbG9hZGluZ05vZGUuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIC8vIH1cblxuICAgICAgICAvLyB1aVJvb3QuYWRkQ2hpbGQodGhpcy5fYWRSb290KTsvL+a3u+WKoOW5v+WRiuiKgueCuVxuXG4gICAgfVxuICAgIC8vIHN0YXRpYyBnZXQgYWRSb290KCkge1xuICAgIC8vICAgICBsZXQgX3NjZW5lOiBhbnkgPSBjYy5kaXJlY3Rvci5nZXRTY2VuZSgpO1xuICAgIC8vICAgICBsZXQgX2FkUm9vdCA9IF9zY2VuZS5nZXRDaGlsZEJ5TmFtZSgnQ2FudmFzJykuZ2V0Q2hpbGRCeU5hbWUoJ2FkTGF5ZXInKSBhcyBjYy5Ob2RlO1xuICAgIC8vICAgICBpZiAoX2FkUm9vdCA9PSBudWxsKSB7XG4gICAgLy8gICAgICAgICBfYWRSb290ID0gbmV3IGNjLk5vZGUoKTtcbiAgICAvLyAgICAgICAgIF9hZFJvb3QubmFtZSA9ICdhZExheWVyJztcbiAgICAvLyAgICAgICAgIF9hZFJvb3QucGFyZW50ID0gX3NjZW5lLmdldENoaWxkQnlOYW1lKCdDYW52YXMnKTtcbiAgICAvLyAgICAgICAgIF9hZFJvb3QueCA9IDA7XG4gICAgLy8gICAgICAgICBfYWRSb290LnkgPSAwO1xuICAgIC8vICAgICAgICAgX2FkUm9vdC53aWR0aCA9IGNjLndpblNpemUud2lkdGg7XG4gICAgLy8gICAgICAgICBfYWRSb290LmhlaWdodCA9IGNjLndpblNpemUuaGVpZ2h0O1xuICAgIC8vICAgICAgICAgX2FkUm9vdC5zZXRTaWJsaW5nSW5kZXgoOTk5KTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICByZXR1cm4gX2FkUm9vdDtcbiAgICAvLyB9XG4gICAgb3BlblNjZW5lKG5hbWU6IHN0cmluZykge1xuXG4gICAgICAgIHRoaXMuX2xvYWRpbmdMYXllci5hY3RpdmUgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuX2xvYWRpbmdMYXllci5nZXRDaGlsZEJ5TmFtZSgnc2NlbmVOb2RlJykuYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fbG9hZGluZ0xheWVyLmdldENoaWxkQnlOYW1lKCd3aW5kb3dOb2RlJykuYWN0aXZlID0gZmFsc2U7XG5cbiAgICAgICAgY2MucmVzb3VyY2VzLmxvYWRTY2VuZSgnc2NlbmVzLycgKyBuYW1lLFxuICAgICAgICAgICAgKGZpbmlzaDogbnVtYmVyLCB0b3RhbDogbnVtYmVyKSA9PiB7XG5cbiAgICAgICAgICAgICAgICBsZXQgcHJnID0gZmluaXNoIC8gdG90YWw7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9hZGluZ0xheWVyLmdldENoaWxkQnlOYW1lKCdzY2VuZU5vZGUnKS5nZXRDb21wb25lbnRJbkNoaWxkcmVuKGNjLlByb2dyZXNzQmFyKS5wcm9ncmVzcyA9IHByZztcblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChlcnJvciwgc2NlbmU6IGNjLlNjZW5lQXNzZXQpID0+IHtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdMYXllci5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5ydW5TY2VuZShzY2VuZSk7XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGNjLmRpcmVjdG9yLnNjZW5lXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogXG4gICAgICogQHBhcmFtIHR5cGUgXG4gICAgICogQHBhcmFtIGNhbGxCYWNrIOWPguaVsCB2aWV3OmNjLk5vZGVcbiAgICAgKi9cbiAgICBsb2FkV2luZG93KHR5cGU6IFdpbmRvd05hbWUsIGNhbGxCYWNrOiBGdW5jdGlvbikge1xuXG4gICAgICAgIGlmICh0aGlzLl9jYWNoZS5oYXModHlwZSkpIHtcbiAgICAgICAgICAgIGNhbGxCYWNrKHRoaXMuX2NhY2hlLmdldCh0eXBlKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG5cbiAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdMYXllci5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fbG9hZGluZ0xheWVyLmdldENoaWxkQnlOYW1lKCdzY2VuZU5vZGUnKS5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdMYXllci5nZXRDaGlsZEJ5TmFtZSgnd2luZG93Tm9kZScpLmFjdGl2ZSA9IHRydWU7XG5cbiAgICAgICAgICAgIGNjLnJlc291cmNlcy5sb2FkKHR5cGUsIGNjLlByZWZhYiwgKGVycm9yLCBwcmVmYWI6IGNjLlByZWZhYikgPT4ge1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fbG9hZGluZ0xheWVyLmFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFlcnJvcikge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fY2FjaGUuaGFzKHR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmlldyA9IGNjLmluc3RhbnRpYXRlKHByZWZhYik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZS5zZXQodHlwZSwgdmlldyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsQmFjayh2aWV3KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cblxuICAgIH1cblxuICAgIG9wZW5XaW5kb3codHlwZTogV2luZG93TmFtZSwgb3BlblBhcmFtOiBhbnkgPSBudWxsKTogdm9pZCB7XG5cbiAgICAgICAgaWYgKHRoaXMuX2NhY2hlLmhhcyh0eXBlKSkge1xuICAgICAgICAgICAgdGhpcy5kb09wZW5XaW5kb3codGhpcy5fY2FjaGUuZ2V0KHR5cGUpLCBvcGVuUGFyYW0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuXG4gICAgICAgICAgICAvLyB0aGlzLl9sb2FkaW5nTGF5ZXIuYWN0aXZlID0gdHJ1ZTtcblxuICAgICAgICAgICAgLy8gdGhpcy5fbG9hZGluZ0xheWVyLmdldENoaWxkQnlOYW1lKCdzY2VuZU5vZGUnKS5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIC8vIHRoaXMuX2xvYWRpbmdMYXllci5nZXRDaGlsZEJ5TmFtZSgnd2luZG93Tm9kZScpLmFjdGl2ZSA9IHRydWU7XG5cbiAgICAgICAgICAgIC8vIGNjLnJlc291cmNlcy5sb2FkKHR5cGUsIGNjLlByZWZhYixcblxuICAgICAgICAgICAgLy8gICAgIChmaW5pc2hlZCwgdG90YWwpID0+IHtcbiAgICAgICAgICAgIC8vICAgICAgICAgbGV0IHByZyA9IGZpbmlzaGVkIC8gdG90YWw7XG4gICAgICAgICAgICAvLyAgICAgfSxcblxuICAgICAgICAgICAgLy8gICAgIChlcnJvciwgcHJlZmFiOiBjYy5QcmVmYWIpID0+IHtcbiAgICAgICAgICAgIC8vICAgICAgICAgLy9maW5pc2hcblxuICAgICAgICAgICAgLy8gICAgICAgICBpZiAoIXRoaXMuX2NhY2hlLmhhcyh0eXBlKSkge1xuICAgICAgICAgICAgLy8gICAgICAgICAgICAgbGV0IHZpZXcgPSBjYy5pbnN0YW50aWF0ZShwcmVmYWIpO1xuICAgICAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5fY2FjaGUuc2V0KHR5cGUsIHZpZXcpO1xuICAgICAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5fbG9hZGluZ0xheWVyLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5kb09wZW5XaW5kb3codmlldywgb3BlblBhcmFtKTtcbiAgICAgICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAgICAgLy8gICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmxvYWRXaW5kb3codHlwZSwgKHZpZXc6IGNjLk5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRvT3BlbldpbmRvdyh2aWV3LCBvcGVuUGFyYW0pO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZG9PcGVuV2luZG93KHZpZXc6IGNjLk5vZGUsIHBhcmFtOiBhbnkpOiB2b2lkIHtcblxuICAgICAgICBpZiAoIXZpZXcucGFyZW50KSB7XG4gICAgICAgICAgICAhdGhpcy5fd2luZG93TG9ja0xheWVyLmFjdGl2ZSAmJiAodGhpcy5fd2luZG93TG9ja0xheWVyLmFjdGl2ZSA9IHRydWUpO1xuXG4gICAgICAgICAgICBsZXQgYmFzZSA9IHZpZXcuZ2V0Q29tcG9uZW50KFVJQmFzZSk7XG4gICAgICAgICAgICBiYXNlICYmIChiYXNlLmVuYWJsZVBhcmFtID0gcGFyYW0pO1xuXG4gICAgICAgICAgICB0aGlzLl93aW5kb3dMYXllci5hZGRDaGlsZCh2aWV3KTtcbiAgICAgICAgICAgIHZpZXcuYWN0aXZlID0gdHJ1ZTtcblxuICAgICAgICAgICAgYmFzZSAmJiBiYXNlLm9uUG9wVXBFZmZlY3QoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlV2luZG93KHR5cGU6IFdpbmRvd05hbWUsIGNhbGxiYWNrOiBGdW5jdGlvbiA9IG51bGwpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2NhY2hlLmhhcyh0eXBlKSkge1xuICAgICAgICAgICAgbGV0IHZpZXcgPSB0aGlzLl9jYWNoZS5nZXQodHlwZSk7XG5cbiAgICAgICAgICAgIC8vIHZpZXcuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgYmFzZSA9IHZpZXcuZ2V0Q29tcG9uZW50KFVJQmFzZSk7XG4gICAgICAgICAgICBiYXNlICYmIGJhc2Uub25CZWZvcmVDbG9zZSgpO1xuXG4gICAgICAgICAgICBiYXNlLm9uQ2xvc2VFZmZlY3QoKCkgPT4ge1xuXG5cbiAgICAgICAgICAgICAgICBsZXQgaXNPbldpbmRvd0xheWVyID0gKHZpZXcuaXNWYWxpZCAmJiB2aWV3LnBhcmVudCA9PT0gdGhpcy5fd2luZG93TGF5ZXIpXG5cbiAgICAgICAgICAgICAgICBpZiAoaXNPbldpbmRvd0xheWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHZpZXcucmVtb3ZlRnJvbVBhcmVudCgpO1xuICAgICAgICAgICAgICAgICAgICB2aWV3LmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgaWYgKGlzT25XaW5kb3dMYXllciAmJiB0aGlzLl93aW5kb3dMYXllci5jaGlsZHJlbi5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl93aW5kb3dMb2NrTGF5ZXIuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH0sIHRoaXMpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRXaWRnZXROb2RlKHR5cGU6IFJlc1R5cGUpOiBjYy5Ob2RlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dpZGdldExheWVyLmdldENoaWxkQnlOYW1lKCd3aWRnZXQnICsgdHlwZS50b1N0cmluZygpKTtcbiAgICB9XG5cbiAgICBzaG93VGlwcyhzdHI6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICAvLyBsZXQgbm9kZSA9IHRoaXMuX3RpcHNMYXllci5nZXRDaGlsZEJ5TmFtZSgnVGlwc05vZGUnKTtcbiAgICAgICAgLy8gbm9kZS5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAvLyBub2RlLmdldENvbXBvbmVudEluQ2hpbGRyZW4oTGFiZWwpLnN0cmluZyA9IHN0cjtcblxuICAgICAgICAvLyBUd2Vlbi5zdG9wQWxsQnlUYXJnZXQobm9kZSk7XG4gICAgICAgIC8vIHR3ZWVuKG5vZGUpLmRlbGF5KDMpLmNhbGwodGhpcy5jbG9zZVRpcHMuYmluZCh0aGlzKSkuc3RhcnQoKVxuICAgIH1cblxuICAgIHByaXZhdGUgY2xvc2VUaXBzKCk6IHZvaWQge1xuICAgICAgICBsZXQgbm9kZSA9IHRoaXMuX3RpcHNMYXllci5nZXRDaGlsZEJ5TmFtZSgnVGlwc05vZGUnKTtcbiAgICAgICAgbm9kZS5hY3RpdmUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBwbGF5UmVzRmx5RWZmZWN0XG59Il19