Sun_moves/temp/quick-scripts/dst/__qc_bundle__.js
2024-05-28 11:38:16 +08:00

7624 lines
956 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(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/BallAudioManager');
require('./assets/Script/CtrlFluxayTexture');
require('./assets/Script/GameData');
require('./assets/Script/GameManager');
require('./assets/Script/GameOver');
require('./assets/Script/GuideManager');
require('./assets/Script/Helloworld');
require('./assets/Script/ListView/ItemRender');
require('./assets/Script/ListView/List');
require('./assets/Script/Load');
require('./assets/Script/Notification');
require('./assets/Script/Storage');
require('./assets/Script/Sun');
require('./assets/Script/crypto/crypto-js.min');
require('./assets/Script/crypto/serverAPI');
require('./assets/Script/test');
require('./assets/Script/tool/DynamicAtlasManager');
require('./assets/Script/tool/GameTool');
require('./assets/Script/tool/Shake');
require('./assets/migration/use_v2.1-2.2.1_cc.Toggle_event');
}
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/ListView/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/ListView/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 () {
if (this.data.name.length > 6) {
this.data.name = this.data.name.substring(0, 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 + "";
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: '.jpg' }, 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxMaXN0Vmlld1xcSXRlbVJlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFTSxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUc1QztJQUF3Qyw4QkFBWTtJQUFwRDtRQUFBLHFFQXFFQztRQXBFRyxRQUFRO1FBQ0QsVUFBSSxHQUFPLElBQUksQ0FBQztRQUN2QixjQUFjO1FBQ1AsZUFBUyxHQUFVLENBQUMsQ0FBQzs7SUFpRWhDLENBQUM7SUEvREcsYUFBYTtJQUNOLGdDQUFXLEdBQWxCO1FBQ0ksSUFBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFBO1NBQ3pEO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3hGLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN4RixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFB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QUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBQyxHQUFHLEVBQUMsTUFBTSxFQUFDLEVBQUMsVUFBQyxHQUFHLEVBQUUsT0FBb0I7WUFDbkUsSUFBRyxPQUFPLEVBQUM7Z0JBQ1AsS0FBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRSxJQUFJLENBQUM7Z0JBQ25FLElBQUksTUFBTSxHQUFHLEtBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMzRixNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDakQsNENBQTRDO2FBQy9DO2lCQUNHO2dCQUNBLDZCQUE2QjtnQkFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUMsT0FBTyxDQUFDLENBQUE7YUFDM0I7UUFDTCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFsRWdCLFVBQVU7UUFEOUIsT0FBTztPQUNhLFVBQVUsQ0FxRTlCO0lBQUQsaUJBQUM7Q0FyRUQsQUFxRUMsQ0FyRXVDLEVBQUUsQ0FBQyxTQUFTLEdBcUVuRDtrQkFyRW9CLFVBQVUiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTGlzdCwgeyBMaXN0VHlwZSB9IGZyb20gXCIuL0xpc3RcIjtcclxuXHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJdGVtUmVuZGVyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIC8qKuaVsOaNriAqL1xyXG4gICAgcHVibGljIGRhdGE6YW55ID0gbnVsbDtcclxuICAgIC8qKue0ouW8lSAw6KGo56S656ys5LiA6aG5Ki9cclxuICAgIHB1YmxpYyBpdGVtSW5kZXg6bnVtYmVyID0gMDtcclxuXHJcbiAgICAvKirmlbDmja7mlLnlj5jml7bosIPnlKggKi9cclxuICAgIHB1YmxpYyBkYXRhQ2hhbmdlZCgpe1xyXG4gICAgICAgIGlmKHRoaXMuZGF0YS5uYW1lLmxlbmd0aCA+IDYpe1xyXG4gICAgICAgICAgICB0aGlzLmRhdGEubmFtZSA9IHRoaXMuZGF0YS5uYW1lLnN1YnN0cmluZygwLDYpICsgXCIuLi5cIlxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy5kYXRhLnJhbmsgKyBcIlwiO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIm5hbWVMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLmRhdGEubmFtZSArIFwiXCI7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidG90YWxMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLmRhdGEudG90YWwgKyBcIlwiO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJvbmVcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcInR3b1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidGhyZWVcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgaWYodGhpcy5kYXRhLnJhbmsgPT0gMSl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJvbmVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZih0aGlzLmRhdGEucmFuayA9PSAyKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcInR3b1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMuZGF0YS5yYW5rID09IDMpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidGhyZWVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldFBpYygpO1xyXG4gICAgfSAgIFxyXG4gICAgXHJcbiAgICBwdWJsaWMgc2V0UGljKCl7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicGljXCIpLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuYWN0aXZlPSBmYWxzZTtcclxuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgbGV0IHVybCA9IHRoaXMuZGF0YS5waWM7XHJcbiAgICAgICAgZmV0Y2godXJsKVxyXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdDb250ZW50LUxlbmd0aCcpO1xyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIC50aGVuKGVyck5vID0+IHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5kYXRhLnJhbmssJ1gtSW5mbzonLCBlcnJObyk7IC8vIOi+k+WHulgtRXJyTm/nmoTlgLxcclxuICAgICAgICAgICAgaWYoZXJyTm8gPT0gXCI1MDkzXCIpe1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5kYXRhLnJhbmssXCLmsqHlpLTlg49cIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIFgtSW5mbzonLCBlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY2MuYXNzZXRNYW5hZ2VyLmxvYWRSZW1vdGUodXJsLCB7ZXh0OicuanBnJ30sKGVyciwgdGV4dHVyZTpjYy5UZXh0dXJlMkQpID0+IHtcclxuICAgICAgICAgICAgaWYodGV4dHVyZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuYWN0aXZlPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdmFyIHNwcml0ZSA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICAgICAgICAgIHNwcml0ZS5zcHJpdGVGcmFtZSA9IG5ldyBjYy5TcHJpdGVGcmFtZSh0ZXh0dXJlKTtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZGF0YS5yYW5rLFwi6K6+572u5aS05YOP5oiQ5YqfXCIsZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLorr7nva7lpLTlg4/lpLHotKVcIix1cmwpO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyLHRleHR1cmUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuXHJcbn1cclxuIl19
//------QC-SOURCE-SPLIT------
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/Script/CtrlFluxayTexture.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, 'b48a2ukFF1FlJGSkUcHUIET', 'CtrlFluxayTexture');
// Script/CtrlFluxayTexture.js
"use strict";
cc.Class({
"extends": cc.Component,
properties: {
m_delayTime: {
"default": 0
},
m_fluxayTime: {
"default": 1
},
m_intervalTime: {
"default": 1
},
m_scale: {
"default": 1
},
m_angle: {
"default": 0
},
m_reviseStartTime: {
"default": 0
},
m_reviseTimeScale: {
"default": 1
}
},
ctor: function ctor() {
this._time = 0;
},
onLoad: function onLoad() {
this._time -= this.m_delayTime;
var sprite = this.node.getComponent(cc.Sprite);
this._material = sprite.getMaterial(0);
this._material.setProperty("u_scale", this.m_scale);
this._material.setProperty("u_angle", this.m_angle);
this.refreshSpriteFrameData();
},
update: function update(dt) {
if (this._time > this.m_fluxayTime + this.m_intervalTime) {
this._time = 0;
}
var u_time = this._time / this.m_fluxayTime;
if (this._time > this.m_fluxayTime) {
u_time = 1 + (this._time - this.m_fluxayTime) / this.m_intervalTime;
}
if (this.m_reviseTimeScale != null && this.m_reviseStartTime != null) {
u_time = u_time / this.m_reviseTimeScale;
u_time -= this.m_reviseStartTime;
}
this._material.setProperty("u_time", u_time);
this._time += dt;
},
refreshSpriteFrameData: function refreshSpriteFrameData() {
var sprite = this.node.getComponent(cc.Sprite);
var material = sprite.getMaterial(0);
var frame = sprite.spriteFrame;
if (frame != null) {
// xMin
var l = frame.uv[0]; // xMax
var r = frame.uv[6]; // yMax
var b = frame.uv[3]; // yMin
var t = frame.uv[5]; // 纹理在合图中的四个边界 uv 坐标
var u_uvOffset = new cc.Vec4(l, t, r, b); // 纹理是否旋转
var u_uvRotated = frame.isRotated() ? 1.0 : 0.0; // 设置材质的属性
if (material.getProperty("u_uvOffset") !== undefined) {
material.setProperty("u_uvOffset", u_uvOffset);
}
if (material.getProperty("u_uvRotated") !== undefined) {
material.setProperty("u_uvRotated", u_uvRotated);
}
}
}
});
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxDdHJsRmx1eGF5VGV4dHVyZS5qcyJdLCJuYW1lcyI6WyJjYyIsIkNsYXNzIiwiQ29tcG9uZW50IiwicHJvcGVydGllcyIsIm1fZGVsYXlUaW1lIiwibV9mbHV4YXlUaW1lIiwibV9pbnRlcnZhbFRpbWUiLCJtX3NjYWxlIiwibV9hbmdsZSIsIm1fcmV2aXNlU3RhcnRUaW1lIiwibV9yZXZpc2VUaW1lU2NhbGUiLCJjdG9yIiwiX3RpbWUiLCJvbkxvYWQiLCJzcHJpdGUiLCJub2RlIiwiZ2V0Q29tcG9uZW50IiwiU3ByaXRlIiwiX21hdGVyaWFsIiwiZ2V0TWF0ZXJpYWwiLCJzZXRQcm9wZXJ0eSIsInJlZnJlc2hTcHJpdGVGcmFtZURhdGEiLCJ1cGRhdGUiLCJkdCIsInVfdGltZSIsIm1hdGVyaWFsIiwiZnJhbWUiLCJzcHJpdGVGcmFtZSIsImwiLCJ1diIsInIiLCJiIiwidCIsInVfdXZPZmZzZXQiLCJWZWM0IiwidV91dlJvdGF0ZWQiLCJpc1JvdGF0ZWQiLCJnZXRQcm9wZXJ0eSIsInVuZGVmaW5lZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQUEsRUFBRSxDQUFDQyxLQUFILENBQVM7QUFDTCxhQUFTRCxFQUFFLENBQUNFLFNBRFA7QUFHTEMsRUFBQUEsVUFBVSxFQUFFO0FBQ1JDLElBQUFBLFdBQVcsRUFBRTtBQUNULGlCQUFTO0FBREEsS0FETDtBQUlSQyxJQUFBQSxZQUFZLEVBQUU7QUFDVixpQkFBUztBQURDLEtBSk47QUFPUkMsSUFBQUEsY0FBYyxFQUFFO0FBQ1osaUJBQVM7QUFERyxLQVBSO0FBVVJDLElBQUFBLE9BQU8sRUFBRTtBQUNMLGlCQUFTO0FBREosS0FWRDtBQWFSQyxJQUFBQSxPQUFPLEVBQUU7QUFDTCxpQkFBUztBQURKLEtBYkQ7QUFnQlJDLElBQUFBLGlCQUFpQixFQUFDO0FBQ2QsaUJBQVM7QUFESyxLQWhCVjtBQW1CUkMsSUFBQUEsaUJBQWlCLEVBQUM7QUFDZCxpQkFBUztB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QXdDQyxTQUEzQyxFQUNBO0FBQ0liLFFBQUFBLFFBQVEsQ0FBQ0wsV0FBVCxDQUFxQixhQUFyQixFQUFvQ2UsV0FBcEM7QUFDSDtBQUNKO0FBQ0o7QUExRkksQ0FBVCIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiXG5jYy5DbGFzcyh7XG4gICAgZXh0ZW5kczogY2MuQ29tcG9uZW50LFxuXG4gICAgcHJvcGVydGllczoge1xuICAgICAgICBtX2RlbGF5VGltZToge1xuICAgICAgICAgICAgZGVmYXVsdDogMCwgXG4gICAgICAgIH0sXG4gICAgICAgIG1fZmx1eGF5VGltZToge1xuICAgICAgICAgICAgZGVmYXVsdDogMSwgXG4gICAgICAgIH0sXG4gICAgICAgIG1faW50ZXJ2YWxUaW1lOiB7XG4gICAgICAgICAgICBkZWZhdWx0OiAxLCBcbiAgICAgICAgfSxcbiAgICAgICAgbV9zY2FsZToge1xuICAgICAgICAgICAgZGVmYXVsdDogMSwgXG4gICAgICAgIH0sXG4gICAgICAgIG1fYW5nbGU6IHtcbiAgICAgICAgICAgIGRlZmF1bHQ6IDAsIFxuICAgICAgICB9LFxuICAgICAgICBtX3JldmlzZVN0YXJ0VGltZTp7XG4gICAgICAgICAgICBkZWZhdWx0OiAwLCBcbiAgICAgICAgfSxcbiAgICAgICAgbV9yZXZpc2VUaW1lU2NhbGU6e1xuICAgICAgICAgICAgZGVmYXVsdDogMSwgXG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIGN0b3IoKXtcbiAgICAgICAgdGhpcy5fdGltZSA9IDA7XG4gICAgfSxcbiAgICBvbkxvYWQgKCkge1xuICAgICAgICB0aGlzLl90aW1lIC09IHRoaXMubV9kZWxheVRpbWU7XG5cbiAgICAgICAgbGV0IHNwcml0ZSA9IHRoaXMubm9kZS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKTtcbiAgICAgICAgdGhpcy5fbWF0ZXJpYWwgPSBzcHJpdGUuZ2V0TWF0ZXJpYWwoMCk7XG4gICAgICAgIHRoaXMuX21hdGVyaWFsLnNldFByb3BlcnR5KFwidV9zY2FsZVwiLCB0aGlzLm1fc2NhbGUpO1xuICAgICAgICB0aGlzLl9tYXRlcmlhbC5zZXRQcm9wZXJ0eShcInVfYW5nbGVcIiwgdGhpcy5tX2FuZ2xlKTtcblxuICAgICAgICB0aGlzLnJlZnJlc2hTcHJpdGVGcmFtZURhdGEoKTtcbiAgICB9LFxuXG4gICAgdXBkYXRlKGR0KSB7XG4gICAgICAgIGlmICh0aGlzLl90aW1lID4gKHRoaXMubV9mbHV4YXlUaW1lICsgdGhpcy5tX2ludGVydmFsVGltZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpbWUgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHVfdGltZSA9IHRoaXMuX3RpbWUvdGhpcy5tX2ZsdXhheVRpbWU7XG4gICAgICAgIGlmKHRoaXMuX3RpbWUgPnRoaXMubV9mbHV4YXlUaW1lKVxuICAgICAgICB7XG4gICAgICAgICAgICB1X3RpbWUgPSAxKygodGhpcy5fdGltZS10aGlzLm1fZmx1eGF5VGltZSkvdGhpcy5tX2ludGVydmFsVGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYodGhpcy5tX3JldmlzZVRpbWVTY2FsZSAhPSBudWxsICYmIHRoaXMubV9yZXZpc2VTdGFydFRpbWUgIT0gbnVsbClcbiAgICAgICAge1xuICAgICAgICAgICAgdV90aW1lID0gdV90aW1lL3RoaXMubV9yZXZpc2VUaW1lU2NhbGU7XG4gICAgICAgICAgICB1X3RpbWUgLT0gdGhpcy5tX3JldmlzZVN0YXJ0VGltZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9tYXRlcmlhbC5zZXRQcm9wZXJ0eShcInVfdGltZVwiLCB1X3RpbWUpO1xuICAgICAgICB0aGlzLl90aW1lICs9IGR0O1xuICAgIH0sXG5cbiAgICByZWZyZXNoU3ByaXRlRnJhbWVEYXRhKCl7XG4gICAgICAgIGxldCBzcHJpdGUgPSB0aGlzLm5vZGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSk7XG4gICAgICAgIGxldCBtYXRlcmlhbCA9IHNwcml0ZS5nZXRNYXRlcmlhbCgwKTtcbiAgICAgICAgbGV0IGZyYW1lID0gc3ByaXRlLnNwcml0ZUZyYW1lO1xuXG4gICAgICAgIGlmKGZyYW1lICE9IG51bGwpXG4gICAgICAgIHtcbiAgICAgICAgICAgIC8vIHhNaW5cbiAgICAgICAgICAgIGxldCBsID0gZnJhbWUudXZbMF07XG4gICAgICAgICAgICAvLyB4TWF4XG4gICAgICAgICAgICBsZXQgciA9IGZyYW1lLnV2WzZdO1xuICAgICAgICAgICAgLy8geU1heFxuICAgICAgICAgICAgbGV0IGIgPSBmcmFtZS51dlszXTtcbiAgICAgICAgICAgIC8vIHlNaW5cbiAgICAgICAgICAgIGxldCB0ID0gZnJhbWUudXZbNV07XG4gICAgICAgICAgICAvLyDnurnnkIblnKjlkIjlm77kuK3nmoTlm5vkuKrovrnnlYwgdXYg5Z2Q5qCHXG4gICAgICAgICAgICBsZXQgdV91dk9mZnNldCA9IG5ldyBjYy5WZWM0KGwsIHQsIHIsIGIpO1xuICAgICAgICAgICAgLy8g57q555CG5piv5ZCm5peL6L2sXG4gICAgICAgICAgICBsZXQgdV91dlJvdGF0ZWQgPSBmcmFtZS5pc1JvdGF0ZWQoKSA/IDEuMCA6IDAuMDtcbiAgICAgICAgICAgIC8vIOiuvue9ruadkOi0qOeahOWxnuaAp1xuXG4gICAgICAgICAgICBpZihtYXRlcmlhbC5nZXRQcm9wZXJ0eShcInVfdXZPZmZzZXRcIikgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBtYXRlcmlhbC5zZXRQcm9wZXJ0eShcInVfdXZPZmZzZXRcIiwgdV91dk9mZnNldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZihtYXRlcmlhbC5nZXRQcm9wZXJ0eShcInVfdXZSb3RhdGVkXCIpICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbWF0ZXJpYWwuc2V0UHJvcGVydHkoXCJ1X3V2Um90YXRlZFwiLCB1X3V2Um90YXRlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbn0pO1xuIl19
//------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";
// 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 GameData_1 = require("./GameData");
var serverAPI_1 = require("./crypto/serverAPI");
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;
// update (dt) {}
}
// LIFE-CYCLE CALLBACKS:
// onLoad () {}
NewClass.prototype.start = function () {
this.count.string = GameData_1.default._instance.GM_INFO.total;
this.time.string = GameData_1.default._instance.GM_INFO.mean_Time + "s";
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.setData();
this.getRank();
};
NewClass.prototype.success = function (data) {
};
NewClass.prototype.back = function () {
cc.director.loadScene("RankScene");
};
NewClass.prototype.again = function () {
cc.director.loadScene("GameScene");
};
NewClass.prototype.getRank = function () {
var postData = {
"page": 1,
"pageSize": 100
};
serverAPI_1.default.rankData(2, this.getRankData.bind(this), postData);
};
NewClass.prototype.getRankData = function (data) {
if (data) {
this.listData = data.data.list;
this.selfData = data.data.info;
var rankData = [];
var self = false;
if (this.selfData.nickName.length > 4) {
this.selfData.nickName = this.selfData.nickName.substring(0, 4) + "...";
}
this.selfNode.getChildByName("name").getComponent(cc.Label).string = this.selfData.nickName;
this.selfNode.getChildByName("total").getComponent(cc.Label).string = this.selfData.totalSunCount;
this.setPic(this.selfNode.getChildByName("pic").getChildByName("icon"), this.selfData.pic);
for (var i = 0; i <= this.listData.length - 1; i++) {
rankData.push({ rank: (i + 1), name: this.listData[i].nickName, total: this.listData[i].totalSunCount, pic: this.listData[i].pic });
if (GameData_1.default._instance.GM_INFO.userId == this.listData[i].userId) {
self = true;
this.selfNode.getChildByName("rank").getComponent(cc.Label).string = (i + 1) + "";
}
if (i == (this.listData.length - 1) && self == false) {
this.selfNode.getChildByName("rank").getComponent(cc.Label).string = "99+";
}
if (i < 5)
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) {
data.nickName = data.nickName.substring(0, 4) + "...";
}
hitNode.getChildByName("name").getComponent(cc.Label).string = data.nickName;
hitNode.getChildByName("total").getComponent(cc.Label).string = data.totalSunCount;
this.setPic(hitNode.getChildByName("pic").getChildByName("icon"), data.pic);
}
};
NewClass.prototype.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: '.jpg' }, function (err, texture) {
if (texture) {
node.active = true;
node.getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(texture);
}
else {
console.log(err, texture);
}
});
};
__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lT3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVsRix1Q0FBa0M7QUFFbEMsZ0RBQTBDO0FBR3BDLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBRzFDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBdUpDO1FBcEpHLFdBQUssR0FBYSxJQUFJLENBQUM7UUFHdkIsVUFBSSxHQUFhLElBQUksQ0FBQztRQUd0QixjQUFRLEdBQVksSUFBSSxDQUFDO1FBRXpCLFNBQUcsR0FBWSxJQUFJLENBQUM7UUFFcEIsU0FBRyxHQUFZLElBQUksQ0FBQztRQUVwQixXQUFLLEdBQVksSUFBSSxDQUFDO1FBRXRCLFVBQUksR0FBWSxJQUFJLENBQUM7UUFFckIsVUFBSSxHQUFZLElBQUksQ0FBQzs7UUFtSXJCLGlCQUFpQjtJQUNyQixDQUFDO0lBaElHLHdCQUF3QjtJQUV4QixlQUFlO0lBRWYsd0JBQUssR0FBTDtRQUNJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLGtCQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDOUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN6QixrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFLRCwwQkFBTyxHQUFQLFVBQVEsSUFBSTtJQUNaLENBQUM7SUFJRCx1QkFBSSxHQUFKO1FBQ0ksRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELHdCQUFLLEdBQUw7UUFDSSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsMEJBQU8sR0FBUDtRQUNJLElBQUksUUFBUSxHQUFHO1lBQ1gsTUFBTSxFQUFDLENBQUM7WUFDUixVQUFVLEVBQUMsR0FBRztTQUNqQixDQUFDO1FBQ0YsbUJBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCw4QkFBVyxHQUFYLFVBQVksSUFBSTtRQUNaLElBQUcsSUFBSSxFQUFDO1lBQ0osSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQy9CLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNsQixJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7WUFDakIsSUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO2dCQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQTthQUN4RTtZQUNELElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQzVGLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1lBQ2xHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUYsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQztnQkFDdEMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUM7Z0JBQzVILElBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQztvQkFDNUQsSUFBSSxHQUFHLElBQUksQ0FBQztvQkFDWixJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRSxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7aUJBQ2xGO2dCQUNELElBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssRUFBQztvQkFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2lCQUM5RTtnQkFDRCxJQUFHLENBQUMsR0FBQyxDQUFDO29CQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM1QztTQUVKO0lBQ0wsQ0FBQztJQUVELDBCQUFPLEdBQVAsVUFBUSxHQUFHLEVBQUMsSUFBSTtRQUNaLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUM7WUFDUixPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUN0QjthQUNJLElBQUcsR0FBRyxJQUFJLENBQUMsRUFBQztZQUNiLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ3RCO2FBQ0ksSUFBRyxHQUFHLElBQUksQ0FBQyxFQUFDO1lBQ2IsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDeEI7YUFDSSxJQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUM7WUFDYixPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUN2QjthQUNJLElBQUcsR0FBRyxJQUFJLENBQUMsRUFBQztZQUNiLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ3ZCO1FBQ0QsSUFBRyxPQUFPLEVBQUM7WUFDUCxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUN0QixJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztnQkFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFBO2FBQ3REO1lBQ0QsT0FBTyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzdFLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUNuRixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM5RTtJQUVMLENBQUM7SUFFTSx5QkFBTSxHQUFiLFVBQWMsSUFBSSxFQUFDLEdBQUc7UUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2QsVUFBVSxDQUFDO1lBQ1AsS0FBSyxDQUFDLEdBQUcsQ0FBQztpQkFDVCxJQUFJLENBQUMsVUFBQSxRQUFRO2dCQUNWLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNsRCxDQUFDLENBQUM7aUJBRUQsSUFBSSxDQUFDLFVBQUEsS0FBSztnQkFDUCxJQUFHLEtBQUssSUFBSSxNQUFNLEVBQUM7b0JBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7aUJBQ3RCO1lBQ0wsQ0FBQyxDQUFDO2lCQUNELEtBQUssQ0FBQyxVQUFBLEtBQUs7Z0JBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNuRCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNSLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFDLEdBQUcsRUFBQyxNQUFNLEVBQUMsRUFBQyxVQUFDLEdBQUcsRUFBRSxPQUFvQjtZQUNuRSxJQUFHLE9BQU8sRUFBQztnQkFDUCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxHQUFHLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUMxRTtpQkFDRztnQkFDQSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBQyxPQUFPLENBQUMsQ0FBQTthQUMzQjtRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQWpKRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOzJDQUNJO0lBR3ZCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7MENBQ0c7SUFHdEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzs4Q0FDTztJQUV6QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO3lDQUNFO0lBRXBCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7eUNBQ0U7SUFFcEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzsyQ0FDSTtJQUV0QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzBDQUNHO0lBRXJCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MENBQ0c7SUFuQkosUUFBUTtRQUQ1QixPQUFPO09BQ2EsUUFBUSxDQXVKNUI7SUFBRCxlQUFDO0NBdkpELEFBdUpDLENBdkpxQyxFQUFFLENBQUMsU0FBUyxHQXVKakQ7a0JBdkpvQixRQUFRIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IEdhbWVEYXRhIGZyb20gXCIuL0dhbWVEYXRhXCI7XHJcbmltcG9ydCBMaXN0IGZyb20gXCIuL0xpc3RWaWV3L0xpc3RcIjtcclxuaW1wb3J0IEh0dHBVdGlsIGZyb20gXCIuL2NyeXB0by9zZXJ2ZXJBUElcIjtcclxuaW1wb3J0IFJxIGZyb20gXCIuL2NyeXB0by9zZXJ2ZXJBUElcIjtcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIGNvdW50OiBjYy5MYWJlbCA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgdGltZTogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgc2VsZk5vZGU6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBvbmU6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICB0d286IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICB0aHJlZTogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGZvdXI6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBmaXZlOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBsaXN0RGF0YTogYW55O1xyXG4gICAgc2VsZkRhdGE6IGFueTtcclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIC8vIG9uTG9hZCAoKSB7fVxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgICAgICB0aGlzLmNvdW50LnN0cmluZyA9IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnRvdGFsO1xyXG4gICAgICAgIHRoaXMudGltZS5zdHJpbmcgPSBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5tZWFuX1RpbWUgKyBcInNcIjtcclxuICAgICAgICB0aGlzLmxpc3REYXRhID0gW107XHJcbiAgICAgICAgdGhpcy5zZWxmRGF0YSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5vbmUuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50d28uYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50aHJlZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmZvdXIuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5maXZlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIC8vIHRoaXMuc2V0RGF0YSgpO1xyXG4gICAgICAgIHRoaXMuZ2V0UmFuaygpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBcclxuXHJcbiAgICBzdWNjZXNzKGRhdGEpe1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgYmFjaygpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIlJhbmtTY2VuZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBhZ2Fpbigpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkdhbWVTY2VuZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRSYW5rKCl7XHJcbiAgICAgICAgbGV0IHBvc3REYXRhID0ge1xyXG4gICAgICAgICAgICBcInBhZ2VcIjoxLFxyXG4gICAgICAgICAgICBcInBhZ2VTaXplXCI6MTAwXHJcbiAgICAgICAgfTsgXHJcbiAgICAgICAgSHR0cFV0aWwucmFua0RhdGEoMix0aGlzLmdldFJhbmtEYXRhLmJpbmQodGhpcykscG9zdERhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFJhbmtEYXRhKGRhdGEpe1xyXG4gICAgICAgIGlmKGRhdGEpe1xyXG4gICAgICAgICAgICB0aGlzLmxpc3REYXRhID0gZGF0YS5kYXRhLmxpc3Q7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZkRhdGEgPSBkYXRhLmRhdGEuaW5mbztcclxuICAgICAgICAgICAgbGV0IHJhbmtEYXRhID0gW107XHJcbiAgICAgICAgICAgIGxldCBzZWxmID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuc2VsZkRhdGEubmlja05hbWUubGVuZ3RoID4gNCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGZEYXRhLm5pY2tOYW1lPSB0aGlzLnNlbGZEYXRhLm5pY2tOYW1lLnN1YnN0cmluZygwLDQpICsgXCIuLi5cIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJuYW1lXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy5zZWxmRGF0YS5uaWNrTmFtZTtcclxuICAgICAgICAgICAgdGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInRvdGFsXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy5zZWxmRGF0YS50b3RhbFN1bkNvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnNldFBpYyh0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicGljXCIpLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKSx0aGlzLnNlbGZEYXRhLnBpYyk7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wO2k8PXRoaXMubGlzdERhdGEubGVuZ3RoLTE7aSsrKXtcclxuICAgICAgICAgICAgICAgIHJhbmtEYXRhLnB1c2goe3Jhbms6KGkrMSksIG5hbWU6dGhpcy5saXN0RGF0YVtpXS5uaWNrTmFtZSwgdG90YWw6dGhpcy5saXN0RGF0YVtpXS50b3RhbFN1bkNvdW50LCBwaWM6dGhpcy5saXN0RGF0YVtpXS5waWN9KTtcclxuICAgICAgICAgICAgICAgIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnVzZXJJZCA9PSB0aGlzLmxpc3REYXRhW2ldLnVzZXJJZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPShpKzEpICsgXCJcIjsgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZihpID09ICh0aGlzLmxpc3REYXRhLmxlbmd0aC0xKSAmJiBzZWxmID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IFwiOTkrXCI7IFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYoaTw1KSB0aGlzLnNldFJhbmsoaSx0aGlzLmxpc3REYXRhW2ldKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0UmFuayhudW0sZGF0YSl7XHJcbiAgICAgICAgdmFyIGhpdE5vZGUgPSBudWxsO1xyXG4gICAgICAgIGlmKG51bSA9PSAwKXtcclxuICAgICAgICAgICAgaGl0Tm9kZSA9IHRoaXMub25lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bSA9PSAxKXtcclxuICAgICAgICAgICAgaGl0Tm9kZSA9IHRoaXMudHdvO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bSA9PSAyKXtcclxuICAgICAgICAgICAgaGl0Tm9kZSA9IHRoaXMudGhyZWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYobnVtID09IDMpe1xyXG4gICAgICAgICAgICBoaXROb2RlID0gdGhpcy5mb3VyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bSA9PSA0KXtcclxuICAgICAgICAgICAgaGl0Tm9kZSA9IHRoaXMuZml2ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoaGl0Tm9kZSl7XHJcbiAgICAgICAgICAgIGhpdE5vZGUuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYoZGF0YS5uaWNrTmFtZS5sZW5ndGggPiA0KXtcclxuICAgICAgICAgICAgICAgIGRhdGEubmlja05hbWU9IGRhdGEubmlja05hbWUuc3Vic3RyaW5nKDAsNCkgKyBcIi4uLlwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaGl0Tm9kZS5nZXRDaGlsZEJ5TmFtZShcIm5hbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBkYXRhLm5pY2tOYW1lO1xyXG4gICAgICAgICAgICBoaXROb2RlLmdldENoaWxkQnlOYW1lKFwidG90YWxcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBkYXRhLnRvdGFsU3VuQ291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0UGljKGhpdE5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLGRhdGEucGljKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXRQaWMobm9kZSxwaWMpe1xyXG4gICAgICAgIG5vZGUuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgbGV0IHVybCA9IHBpYztcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgZmV0Y2godXJsKVxyXG4gICAgICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ0NvbnRlbnQtTGVuZ3RoJyk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICBcclxuICAgICAgICAgICAgLnRoZW4oZXJyTm8gPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYoZXJyTm8gPT0gXCI1MDkzXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgIG5vZGUuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIFgtSW5mbzonLCBlcnJvcik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sIDEwMCk7XHJcbiAgICAgICAgY2MuYXNzZXRNYW5hZ2VyLmxvYWRSZW1vdGUodXJsLCB7ZXh0OicuanBnJ30sKGVyciwgdGV4dHVyZTpjYy5UZXh0dXJlMkQpID0+IHtcclxuICAgICAgICAgICAgaWYodGV4dHVyZSl7XHJcbiAgICAgICAgICAgICAgICBub2RlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBub2RlLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gbmV3IGNjLlNwcml0ZUZyYW1lKHRleHR1cmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIsdGV4dHVyZSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0=
//------QC-SOURCE-SPLIT------
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/Script/crypto/serverAPI.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, '98307M8uUtLYKaHXPmGgCWf', 'serverAPI');
// Script/crypto/serverAPI.ts
"use strict";
// import CryptoJS from "crypto-js";
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 GameData_1 = require("../GameData");
var CryptoJS = require("./crypto-js.min.js"); //引用AES源码js
// import axios from 'axios'
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
var HttpUtil = /** @class */ (function (_super) {
__extends(HttpUtil, _super);
function HttpUtil() {
return _super !== null && _super.apply(this, arguments) || this;
}
//排行榜type2为获取type1为上传
HttpUtil.rankData = function (type, callback, data) {
return __awaiter(this, void 0, Promise, function () {
var time, url;
return __generator(this, function (_a) {
data.gameId = GameData_1.default._instance.GM_INFO.gameId;
data.userId = GameData_1.default._instance.GM_INFO.userId;
time = Math.floor((new Date().getTime()) / 1000);
url = apiSign("/api/get/rank/data?gameId=" + config.gameId + "&dataType=" + type + "&time=" + time, data);
this.httpPost(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) {
data.gameId = GameData_1.default._instance.GM_INFO.gameId;
data.userId = GameData_1.default._instance.GM_INFO.userId;
url = '/log/collect/data';
this.httpPost(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) {
data.gameId = GameData_1.default._instance.GM_INFO.gameId;
data.userId = GameData_1.default._instance.GM_INFO.userId;
time = Math.floor((new Date().getTime()) / 1000);
url = apiSign("/api/get/user/data?gameId=" + config.gameId + "&time=" + time, data);
this.httpPost(url, data, callback);
return [2 /*return*/];
});
});
};
HttpUtil.httpPost = function (url, data, callBack) {
data.gameId = GameData_1.default._instance.GM_INFO.gameId;
data.userId = GameData_1.default._instance.GM_INFO.userId;
var urlData = "http://api.sparkus.cn" + url;
// console.log("params:",JSON.stringify(data));
var xhr = new XMLHttpRequest();
xhr.open('POST', urlData);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
var data = xhr.responseText;
if (!data) {
// console.log("初始化失败");
return;
}
var json = JSON.parse(data);
// console.log('http success:' + json);
callBack(json);
}
else {
// var json = JSON.parse(data);
// console.log('http fail:' + url);
callBack(json);
}
};
xhr.send(JSON.stringify(data));
};
HttpUtil.httpGet = function (url, callBack) {
var urlData = "http://api.sparkus.cn" + url;
console.log(urlData);
var xhr = new XMLHttpRequest();
xhr.open('GET', urlData);
xhr.setRequestHeader('Content-Type', 'text/plain');
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
var data = xhr.responseText;
if (data) {
var json = JSON.parse(data);
console.info('http success:' + json);
callBack(json);
}
else
callBack(data);
}
else {
console.info('http fail:' + url);
callBack(null);
}
};
xhr.send();
};
HttpUtil = __decorate([
ccclass
], HttpUtil);
return HttpUtil;
}(cc.Component));
exports.default = HttpUtil;
function responseHandler(response) {
return response.data;
}
// 响应拦截器
// Rq.interceptors.response.use(responseHandler)
var config = {
gameId: "100009",
secretKey: "CMNhOzBA",
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();
}
/**
*
* @param url {string} 接口地址
* @param params {object} 需要加密的参数对象
*/
function apiSign(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;
}
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxjcnlwdG9cXHNlcnZlckFQSS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0NBQW9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHcEMsd0NBQW1DO0FBQ25DLDZDQUFnRCxDQUFFLFdBQVc7QUFFN0QsNEJBQTRCO0FBQ3RCLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBRzFDO0lBQXNDLDRCQUFZO0lBQWxEOztJQTZFQSxDQUFDO0lBNUVDLHNCQUFzQjtJQUNULGlCQUFRLEdBQXJCLFVBQXNCLElBQUksRUFBQyxRQUFRLEVBQUMsSUFBSTt1Q0FBRyxPQUFPOzs7Z0JBQ2hELElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQkFDaEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2dCQUMxQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtnQkFDaEQsR0FBRyxHQUFHLE9BQU8sQ0FBQywrQkFBNkIsTUFBTSxDQUFDLE1BQU0sa0JBQWEsSUFBSSxjQUFTLElBQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDckcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUMsSUFBSSxFQUFDLFFBQVEsQ0FBQyxDQUFDOzs7O0tBQ2xDO0lBRVksMEJBQWlCLEdBQTlCLFVBQStCLElBQUksRUFBQyxRQUFRO3VDQUFHLE9BQU87OztnQkFDcEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2dCQUNoRCxJQUFJLENBQUMsTUFBTSxHQUFHLGtCQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQzFDLEdBQUcsR0FBRyxtQkFBbUIsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUMsSUFBSSxFQUFDLFFBQVEsQ0FBQyxDQUFDOzs7O0tBQ2xDO0lBQ0QsT0FBTztJQUNNLHNCQUFhLEdBQTFCLFVBQTJCLElBQUksRUFBQyxRQUFRO3VDQUFHLE9BQU87OztnQkFDaEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2dCQUNoRCxJQUFJLENBQUMsTUFBTSxHQUFHLGtCQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7Z0JBQzFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO2dCQUNoRCxHQUFHLEdBQUcsT0FBTyxDQUFDLCtCQUE2QixNQUFNLENBQUMsTUFBTSxjQUFTLElBQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDcEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUMsSUFBSSxFQUFDLFFBQVEsQ0FBQyxDQUFDOzs7O0tBQ2xDO0lBRU0saUJBQVEsR0FBZixVQUFnQixHQUFHLEVBQUMsSUFBSSxFQUFDLFFBQVE7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ2hELElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUNoRCxJQUFJLE9BQU8sR0FBRyx1QkFBdUIsR0FBRyxHQUFHLENBQUM7UUFDNUMsK0NBQStDO1FBQy9DLElBQUksR0FBRyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7UUFDL0IsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUIsR0FBRyxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3pELEdBQUcsQ0FBQyxrQkFBa0IsR0FBRztZQUNyQixJQUFJLEdBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxFQUFFO2dCQUMxQyxJQUFJLElBQUksR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDO2dCQUM1QixJQUFHLENBQUMsSUFBSSxFQUFDO29CQUNMLHdCQUF3QjtvQkFDeEIsT0FBTztpQkFDVjtnQkFDRCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1Qix1Q0FBdUM7Z0JBQ3ZDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNsQjtpQkFDRztnQkFDRixnQ0FBZ0M7Z0JBQzlCLG1DQUFtQztnQkFDbkMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2xCO1FBQ0wsQ0FBQyxDQUFDO1FBQ0YsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLGdCQUFPLEdBQWQsVUFBZSxHQUFHLEVBQUMsUUFBUTtRQUN2QixJQUFJLE9BQU8sR0FBRyx1QkFBdUIsR0FBRyxHQUFHLENBQUM7UUFDNUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQixJQUFJLEdBQUcsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQy9CLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3pCLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFbkQsR0FBRyxDQUFDLGtCQUFrQixHQUFHO1lBQ3JCLElBQUksR0FBRyxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUU7Z0JBQzFDLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUM7Z0JBQzVCLElBQUcsSUFBSSxFQUFDO29CQUNKLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzVCLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxDQUFDO29CQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2xCOztvQkFDSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdkI7aUJBQ0c7Z0JBQ0EsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLENBQUM7Z0JBQ2pDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNsQjtRQUNMLENBQUMsQ0FBQztRQUNGLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNmLENBQUM7SUE1RWtCLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0E2RTVCO0lBQUQsZUFBQztDQTdFRCxBQTZFQyxDQTdFcUMsRUFBRSxDQUFDLFNBQVMsR0E2RWpEO2tCQTdFb0IsUUFBUTtBQStFN0IsU0FBUyxlQUFlLENBQUMsUUFBdUI7SUFDOUMsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFBO0FBQ3RCLENBQUM7QUFDRCxRQUFRO0FBQ1IsZ0RBQWdEO0FBQ2hELElBQU0sTUFBTSxHQUFHO0lBQ2IsTUFBTSxFQUFFLFFBQVE7SUFDaEIsU0FBUyxFQUFFLFVBQVU7SUFDckIsRUFBRSxFQUFDLFVBQVU7Q0FDZCxDQUFDO0FBUUY7SUFBQTtRQUNJLGlDQUFpQztRQUN6QixXQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFBO0lBNEVyQyxDQUFDO0lBMUVXLDJCQUFTLEdBQWpCO1FBQ0ksT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxZQUFZO0lBQ1osOEJBQVksR0FBWixVQUFhLE9BQWUsRUFBRSxNQUFlO1FBQzNDLElBQUcsQ0FBQyxPQUFPLEVBQUU7WUFDWCxPQUFPLE9BQU8sQ0FBQTtTQUNmO1FBQ0QsSUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFBLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUE7UUFDaEUsSUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUNuRCxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHO1lBQ3ZCLE9BQU8sRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUs7U0FDNUIsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDN0IsQ0FBQztJQUVELFlBQVk7SUFDWiw4QkFBWSxHQUFaLFVBQWEsT0FBZSxFQUFFLE1BQWU7UUFDM0MsSUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFBLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUE7UUFFaEUsSUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7WUFDckMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7U0FDL0MsRUFBRSxHQUFHLEVBQUU7WUFDTixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHO1lBQ3ZCLE9BQU8sRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUs7U0FDNUIsQ0FBQyxDQUFBO1FBRUYsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDOUMsQ0FBQztJQUVELG1CQUFtQjtJQUNuQiw0QkFBVSxHQUFWLFVBQVcsT0FBZSxFQUFFLE1BQWU7UUFDekMsSUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFBLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUE7UUFFbkUsSUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbEQsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDeEIsQ0FBQztJQUVELG1CQUFtQjtJQUNuQixrQ0FBZ0IsR0FBaEIsVUFBaUIsT0FBZSxFQUFFLFNBQWlCO1FBQ2pELElBQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2RCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxTQUFTLENBQUE7SUFDdEMsQ0FBQztJQUVELFlBQVk7SUFDWiw0QkFBVSxHQUFWLFVBQVcsSUFBWTtRQUNuQixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1AsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELElBQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN0RCxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDZixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHO1lBQ3ZCLE9BQU8sRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVc7U0FDcEMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQVk7SUFDWiw0QkFBVSxHQUFWLFVBQVcsSUFBWTtRQUNuQixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1AsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELElBQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCxJQUFNLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUQsSUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDcEQsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ2YsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRztZQUN2QixPQUFPLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXO1NBQ3BDLENBQUMsQ0FBQztRQUNILElBQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RCxPQUFPLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBQ0wsY0FBQztBQUFELENBOUVBLEFBOEVDLElBQUE7QUFDRCxJQUFNLEtBQUssR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBRTVCLFNBQVMsT0FBTyxDQUFDLElBQUk7SUFDbkIsT0FBTyxJQUFJLEtBQUssRUFBRSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQTtBQUNoSCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsR0FBRztJQUN6QixtQkFBbUI7SUFDbkIsSUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQyxJQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDckIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDMUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDL0IsU0FBUztTQUNWO1FBQ0QsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUMvQztJQUVELG9CQUFvQjtJQUNwQixJQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDbEIsS0FBSyxJQUFNLEdBQUcsSUFBSSxTQUFTLEVBQUU7UUFDM0IsTUFBTSxDQUFDLElBQUksQ0FBSSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsU0FBSSxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUcsQ0FBQyxDQUFDO0tBQ2pGO0lBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFHRDs7Ozs7R0FLRztBQUVILFNBQVMsVUFBVSxDQUFDLEdBQVcsRUFBRSxPQUFlO0lBQzlDLElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ2xDLE9BQU8sR0FBRyxPQUFPLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQTtJQUNqQyxPQUFPLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtBQUN0RCxDQUFDO0FBQ0QsbUJBQW1CO0FBQ25CLFNBQVMsU0FBUyxDQUFDLEdBQVc7SUFDdEIsSUFBQSxLQUF5QixHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBekMsT0FBTyxRQUFBLEVBQUUsV0FBVyxRQUFxQixDQUFDO0lBQ2pELElBQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELE9BQVUsT0FBTyxTQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUksQ0FBQztBQUMzQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsT0FBTyxDQUFDLEdBQVcsRUFBRSxNQUFXO0lBQVgsdUJBQUEsRUFBQSxXQUFXO0lBRXZDLElBQUksVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMzQixJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDbEMsVUFBVSxJQUFJLEdBQUcsQ0FBQTtLQUNsQjtJQUVELGNBQWM7SUFDZCxJQUFJLE9BQU8sR0FBSSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFckMsSUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNqRCxJQUFNLFVBQVUsR0FBRyxVQUFRLFNBQVcsQ0FBQTtJQUV0QyxJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDckUsY0FBYyxHQUFHLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBRW5ELE9BQVUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxZQUFPLGNBQWdCLENBQUE7QUFDeEQsQ0FBQyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCBDcnlwdG9KUyBmcm9tIFwiY3J5cHRvLWpzXCI7XG5cblxuaW1wb3J0IEdhbWVEYXRhIGZyb20gJy4uL0dhbWVEYXRhJztcbmltcG9ydCBDcnlwdG9KUyA9IHJlcXVpcmUoJy4vY3J5cHRvLWpzLm1pbi5qcycpOyAgLy/lvJXnlKhBRVPmupDnoIFqc1xuXG4vLyBpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcblxuQGNjY2xhc3NcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEh0dHBVdGlsIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcbiAgLy/mjpLooYzmppx0eXBlMuS4uuiOt+WPlu+8jHR5cGUx5Li65LiK5LygXG4gIHN0YXRpYyBhc3luYyByYW5rRGF0YSh0eXBlLGNhbGxiYWNrLGRhdGEpOiBQcm9taXNlPGFueT4ge1xuICAgIGRhdGEuZ2FtZUlkID0gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uZ2FtZUlkO1xuICAgIGRhdGEudXNlcklkID0gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8udXNlcklkO1xuICAgIGNvbnN0IHRpbWUgPSBNYXRoLmZsb29yKChuZXcgRGF0ZSgpLmdldFRpbWUoKSkgLyAxMDAwKVxuICAgIGNvbnN0IHVybCA9IGFwaVNpZ24oYC9hcGkvZ2V0L3JhbmsvZGF0YT9nYW1lSWQ9JHtjb25maWcuZ2FtZUlkfSZkYXRhVHlwZT0ke3R5cGV9JnRpbWU9JHt0aW1lfWAsIGRhdGEpXG4gICAgdGhpcy5odHRwUG9zdCh1cmwsZGF0YSxjYWxsYmFjayk7XG4gIH1cbiAgXG4gIHN0YXRpYyBhc3luYyB1cGxvYWRVc2VyTG9nRGF0YShkYXRhLGNhbGxiYWNrKTogUHJvbWlzZTxhbnk+IHtcbiAgICBkYXRhLmdhbWVJZCA9IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmdhbWVJZDtcbiAgICBkYXRhLnVzZXJJZCA9IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnVzZXJJZDtcbiAgICBjb25zdCB1cmwgPSAnL2xvZy9jb2xsZWN0L2RhdGEnO1xuICAgIHRoaXMuaHR0cFBvc3QodXJsLGRhdGEsY2FsbGJhY2spO1xuICB9XG4gIC8v5pqC5pe255So5LiN5YiwXG4gIHN0YXRpYyBhc3luYyBnZXRVc2VyUmVjb3JkKGRhdGEsY2FsbGJhY2spOiBQcm9taXNlPGFueT4ge1xuICAgIGRhdGEuZ2FtZUlkID0gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uZ2FtZUlkO1xuICAgIGRhdGEudXNlcklkID0gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8udXNlcklkO1xuICAgIGNvbnN0IHRpbWUgPSBNYXRoLmZsb29yKChuZXcgRGF0ZSgpLmdldFRpbWUoKSkgLyAxMDAwKVxuICAgIGNvbnN0IHVybCA9IGFwaVNpZ24oYC9hcGkvZ2V0L3VzZXIvZGF0YT9nYW1lSWQ9JHtjb25maWcuZ2FtZUlkfSZ0aW1lPSR7dGltZX1gLCBkYXRhKVxuICAgIHRoaXMuaHR0cFBvc3QodXJsLGRhdGEsY2FsbGJhY2spO1xuICB9XG5cbiAgc3RhdGljIGh0dHBQb3N0KHVybCxkYXRhLGNhbGxCYWNrKXtcbiAgICAgIGRhdGEuZ2FtZUlkID0gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uZ2FtZUlkO1xuICAgICAgZGF0YS51c2VySWQgPSBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy51c2VySWQ7XG4gICAgICB2YXIgdXJsRGF0YSA9IFwiaHR0cDovL2FwaS5zcGFya3VzLmNuXCIgKyB1cmw7XG4gICAgICAvLyBjb25zb2xlLmxvZyhcInBhcmFtczpcIixKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICBsZXQgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgICB4aHIub3BlbignUE9TVCcsIHVybERhdGEpO1xuICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0ICYmIHhoci5zdGF0dXMgPT0gMjAwKSB7XG4gICAgICAgICAgICAgIHZhciBkYXRhID0geGhyLnJlc3BvbnNlVGV4dDtcbiAgICAgICAgICAgICAgaWYoIWRhdGEpe1xuICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLliJ3lp4vljJblpLHotKVcIik7XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnaHR0cCBzdWNjZXNzOicgKyBqc29uKTtcbiAgICAgICAgICAgICAgY2FsbEJhY2soanNvbik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAvLyAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGRhdGEpO1xuICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnaHR0cCBmYWlsOicgKyB1cmwpO1xuICAgICAgICAgICAgICBjYWxsQmFjayhqc29uKTtcbiAgICAgICAgICB9XG4gICAgICB9O1xuICAgICAgeGhyLnNlbmQoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICB9XG5cbiAgc3RhdGljIGh0dHBHZXQodXJsLGNhbGxCYWNrKXtcbiAgICAgIHZhciB1cmxEYXRhID0gXCJodHRwOi8vYXBpLnNwYXJrdXMuY25cIiArIHVybDtcbiAgICAgIGNvbnNvbGUubG9nKHVybERhdGEpO1xuICAgICAgbGV0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgeGhyLm9wZW4oJ0dFVCcsIHVybERhdGEpO1xuICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L3BsYWluJyk7XG4gICAgICBcbiAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09IDQgJiYgeGhyLnN0YXR1cyA9PSAyMDApIHtcbiAgICAgICAgICAgICAgdmFyIGRhdGEgPSB4aHIucmVzcG9uc2VUZXh0O1xuICAgICAgICAgICAgICBpZihkYXRhKXtcbiAgICAgICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShkYXRhKTtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuaW5mbygnaHR0cCBzdWNjZXNzOicgKyBqc29uKTtcbiAgICAgICAgICAgICAgICAgIGNhbGxCYWNrKGpzb24pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGVsc2UgY2FsbEJhY2soZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICAgIGNvbnNvbGUuaW5mbygnaHR0cCBmYWlsOicgKyB1cmwpO1xuICAgICAgICAgICAgICBjYWxsQmFjayhudWxsKTtcbiAgICAgICAgICB9XG4gICAgICB9O1xuICAgICAgeGhyLnNlbmQoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXNwb25zZUhhbmRsZXIocmVzcG9uc2U6IHsgZGF0YTogYW55IH0pIHtcbiAgcmV0dXJuIHJlc3BvbnNlLmRhdGFcbn1cbi8vIOWTjeW6lOaLpuaIquWZqFxuLy8gUnEuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZShyZXNwb25zZUhhbmRsZXIpXG5jb25zdCBjb25maWcgPSB7XG4gIGdhbWVJZDogXCIxMDAwMDlcIixcbiAgc2VjcmV0S2V5OiBcIkNNTmhPekJBXCIsXG4gIEVLOlwiaHVpMjMxJTFcIlxufTtcblxuaW50ZXJmYWNlIENyeXBvdG9UeXBlIHtcbiAgZW5jcnlwdEJ5REVTOiBhbnlcbiAgZGVjcnlwdEJ5REVTOiBhbnlcbiAgaG1hY1NoYTI1NjogYW55XG59XG4gXG5jbGFzcyBDcnlwb3RvIGltcGxlbWVudHMgQ3J5cG90b1R5cGUge1xuICAgIC8vIOWKoOWvhueahOWQkeaYjuWAvO+8jOiHquW3seagueaNrumhueebruWunumZheaDheWGteWumu+8jOmcgOimgei3n+WQjuerr+W8gOWPkeS/neaMgeS4gOiHtFxuICAgIHByaXZhdGUga2V5SGV4ID0gdGhpcy5nZXRIZXRLZXkoKVxuIFxuICAgIHByaXZhdGUgZ2V0SGV0S2V5KCkge1xuICAgICAgICByZXR1cm4gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoY29uZmlnLkVLKTtcbiAgICB9XG5cbiAgICAvKiogREVT5Yqg5a+GICovXG4gICAgZW5jcnlwdEJ5REVTKG1lc3NhZ2U6IHN0cmluZywgc2VjcmV0Pzogc3RyaW5nKSB7XG4gICAgICBpZighbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gbWVzc2FnZVxuICAgICAgfVxuICAgICAgY29uc3Qga2V5ID0gc2VjcmV0PyBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShzZWNyZXQpOiB0aGlzLmtleUhleFxuICAgICAgY29uc3QgZW5jcnlwdGVkID0gQ3J5cHRvSlMuREVTLmVuY3J5cHQobWVzc2FnZSwga2V5LCB7XG4gICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuRUNCLFxuICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGVuY3J5cHRlZC50b1N0cmluZygpXG4gICAgfVxuXG4gICAgLyoqIERFU+ino+WvhiAqL1xuICAgIGRlY3J5cHRCeURFUyhtZXNzYWdlOiBzdHJpbmcsIHNlY3JldD86IHN0cmluZykge1xuICAgICAgY29uc3Qga2V5ID0gc2VjcmV0PyBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShzZWNyZXQpOiB0aGlzLmtleUhleFxuXG4gICAgICBjb25zdCBkZWNyeXB0ZWQgPSBDcnlwdG9KUy5ERVMuZGVjcnlwdCh7XG4gICAgICAgIGNpcGhlcnRleHQ6IENyeXB0b0pTLmVuYy5CYXNlNjQucGFyc2UobWVzc2FnZSlcbiAgICAgIH0sIGtleSwge1xuICAgICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkVDQixcbiAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XG4gICAgICB9KVxuXG4gICAgICByZXR1cm4gZGVjcnlwdGVkLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KVxuICAgIH1cblxuICAgIC8qKiBobWFjU0hBMjU25Yqg5a+GICovXG4gICAgaG1hY1NoYTI1NihtZXNzYWdlOiBzdHJpbmcsIHNlY3JldD86IHN0cmluZykge1xuICAgICAgY29uc3Qga2V5SGV4ID0gc2VjcmV0PyBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShzZWNyZXQpOiB0aGlzLmtleUhleFxuICAgICAgXG4gICAgICBjb25zdCBoYXNoID0gQ3J5cHRvSlMuSG1hY1NIQTI1NihtZXNzYWdlLCBrZXlIZXgpO1xuICAgICAgcmV0dXJuIGhhc2gudG9TdHJpbmcoKVxuICAgIH1cblxuICAgIC8qKiBobWFjU0hBMjU26aqM6K+BICovXG4gICAgdmVyaWZ5SG1hY1NoYTI1NihtZXNzYWdlOiBzdHJpbmcsIHNpZ25hdHVyZTogc3RyaW5nKSB7XG4gICAgICBjb25zdCBoYXNoID0gQ3J5cHRvSlMuSG1hY1NIQTI1NihtZXNzYWdlLCB0aGlzLmtleUhleCk7XG4gICAgICByZXR1cm4gaGFzaC50b1N0cmluZygpID09PSBzaWduYXR1cmVcbiAgICB9XG4gXG4gICAgLyoqIENCQ+WKoOWvhiAqL1xuICAgIGVuY3J5cHRDQkMod29yZDogc3RyaW5nKSB7XG4gICAgICAgIGlmICghd29yZCkge1xuICAgICAgICAgICAgcmV0dXJuIHdvcmQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3JjcyA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKHdvcmQpO1xuICAgICAgICBjb25zdCBlbmNyeXB0ZWQgPSBDcnlwdG9KUy5BRVMuZW5jcnlwdChzcmNzLCB0aGlzLmtleUhleCwge1xuICAgICAgICAgICAgaXY6IHRoaXMua2V5SGV4LFxuICAgICAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsXG4gICAgICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuWmVyb1BhZGRpbmdcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBlbmNyeXB0ZWQudG9TdHJpbmcoKTsgXG4gICAgfVxuIFxuICAgIC8qKiBDQkPop6Plr4YgKi9cbiAgICBkZWNyeXB0Q0JDKHdvcmQ6IHN0cmluZykge1xuICAgICAgICBpZiAoIXdvcmQpIHtcbiAgICAgICAgICAgIHJldHVybiB3b3JkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVuY3J5cHRlZEhleFN0ciA9IENyeXB0b0pTLmVuYy5IZXgucGFyc2Uod29yZCk7XG4gICAgICAgIGNvbnN0IHNyY3MgPSBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeShlbmNyeXB0ZWRIZXhTdHIpO1xuICAgICAgICBjb25zdCBkZWNyeXB0ID0gQ3J5cHRvSlMuQUVTLmRlY3J5cHQoc3JjcywgdGhpcy5rZXlIZXgsIHtcbiAgICAgICAgICAgIGl2OiB0aGlzLmtleUhleCxcbiAgICAgICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLFxuICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlplcm9QYWRkaW5nXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBkZWNyeXB0ZWRTdHIgPSBkZWNyeXB0LnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcbiAgICAgICAgcmV0dXJuIGRlY3J5cHRlZFN0ci50b1N0cmluZygpO1xuICAgIH1cbn1cbmNvbnN0IGZ4Q3J5ID0gbmV3IENyeXBvdG8oKTtcblxuZnVuY3Rpb24gaXNFbXB0eShkYXRhKSB7XG4gIHJldHVybiBkYXRhID09PSBcIlwiIHx8IGRhdGEgPT09IG51bGwgfHwgZGF0YSA9PT0gdW5kZWZpbmVkIHx8IGRhdGEubGVuZ3RoID09PSAwIHx8IEpTT04uc3RyaW5naWZ5KGRhdGEpID09IFwie31cIlxufVxuXG5mdW5jdGlvbiBnZXRRdWVyeVN0cmluZyhvYmopIHtcbiAgLy8g6aaW5YWI5a+55a+56LGh55qE6ZSu6L+b6KGM5o6S5bqP5bm26L+H5ruk56m65YC8XG4gIGNvbnN0IHNvcnRlZEtleXMgPSBPYmplY3Qua2V5cyhvYmopLnNvcnQoKTtcbiAgY29uc3Qgc29ydGVkT2JqID0ge307XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydGVkS2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChpc0VtcHR5KG9ialtzb3J0ZWRLZXlzW2ldXSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBzb3J0ZWRPYmpbc29ydGVkS2V5c1tpXV0gPSBvYmpbc29ydGVkS2V5c1tpXV07XG4gIH1cbiAgXG4gIC8vIOeEtuWQjuWwhuaOkuW6j+WQjueahOWvueixoei9rOaNouS4uuafpeivouWtl+espuS4slxuICBjb25zdCBwYXJhbXMgPSBbXTtcbiAgZm9yIChjb25zdCBrZXkgaW4gc29ydGVkT2JqKSB7XG4gICAgcGFyYW1zLnB1c2goYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHNvcnRlZE9ialtrZXldKX1gKTtcbiAgfVxuICByZXR1cm4gcGFyYW1zLmpvaW4oJyYnKTtcbn1cblxuXG4vKipcbiAqIOe7hOijheetvuWQjeWtl+espuS4slxuICogQHBhcmFtIHN0cmluZyB1cmw6IOivt+axguWcsOWdgCBcbiAqIEBwYXJhbSBzdHJpbmcgcG9zdFN0cjogcG9zdOWPguaVsOeahGE9MSZiPTIgXG4gKiBAcmV0dXJucyBcbiAqL1xuXG5mdW5jdGlvbiBnZW5TaWduU3RyKHVybDogc3RyaW5nLCBwb3N0U3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgbGVzc1VybCA9IHVybC5yZXBsYWNlKCc/JywgJycpXG4gIGxlc3NVcmwgPSBsZXNzVXJsICsgXCImXCIgKyBwb3N0U3RyXG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoZnhDcnkuaG1hY1NoYTI1NihsZXNzVXJsKSlcbn1cbi8vIOWvueWPguaVsOi/m+ihjOe7n+S4gHVybGVuY29kZVxuZnVuY3Rpb24gdXJsZW5jb2RlKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgW2Jhc2VVcmwsIHF1ZXJ5U3RyaW5nXSA9IHVybC5zcGxpdChcIj9cIiwgMik7XG4gIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpO1xuICByZXR1cm4gYCR7YmFzZVVybH0/JHtwYXJhbXMudG9TdHJpbmcoKX1gO1xufVxuXG4vKipcbiAqIFxuICogQHBhcmFtIHVybCB7c3RyaW5nfSDmjqXlj6PlnLDlnYBcbiAqIEBwYXJhbSBwYXJhbXMge29iamVjdH0g6ZyA6KaB5Yqg5a+G55qE5Y+C5pWw5a+56LGhXG4gKi9cbmZ1bmN0aW9uIGFwaVNpZ24odXJsOiBzdHJpbmcsIHBhcmFtcyA9IHt9KSB7XG5cbiAgbGV0IGNvbnZlcnRVcmwgPSB1cmwudHJpbSgpXG4gIGlmIChjb252ZXJ0VXJsLmluZGV4T2YoJz8nKSA9PT0gLTEpIHtcbiAgICBjb252ZXJ0VXJsICs9ICc/J1xuICB9XG4gIFxuICAvLyDkvKDlhaXlj4LmlbDovazmjaLmi7zmjqXlrZfnrKbkuLJcbiAgbGV0IHBvc3RTdHIgPSAgZ2V0UXVlcnlTdHJpbmcocGFyYW1zKVxuIFxuICBjb25zdCBzaWduZWRTdHIgPSBnZW5TaWduU3RyKGNvbnZlcnRVcmwsIHBvc3RTdHIpXG4gIGNvbnN0IGVuY3J5cHRTdHIgPSBgc2lnbj0ke3NpZ25lZFN0cn1gXG5cbiAgbGV0IGVuY3J5cHRTaWduU3RyID0gZnhDcnkuZW5jcnlwdEJ5REVTKGVuY3J5cHRTdHIsIGNvbmZpZy5zZWNyZXRLZXkpXG4gIGVuY3J5cHRTaWduU3RyID0gZW5jb2RlVVJJQ29tcG9uZW50KGVuY3J5cHRTaWduU3RyKVxuXG4gIHJldHVybiBgJHt1cmxlbmNvZGUoY29udmVydFVybCl9Jl9wPSR7ZW5jcnlwdFNpZ25TdHJ9YFxufVxuXG4iXX0=
//------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/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, 'a1dd7qMiCpOLL3FDXJd9DGy', 'GameTool');
// Script/tool/GameTool.js
"use strict";
var _window$GameTool;
var StorageMessage = require("Storage").StorageMessage;
window.GameTool = (_window$GameTool = {
_startTime: 0,
_endTime: 0,
_totalTime: 0,
getSeedRandom: function getSeedRandom(min, max) {
//包含min 不包含max
max = max || 1;
min = min || 0;
GM_INFO.currSeed = (GM_INFO.currSeed * 9301 + 49297) % 233280;
var rnd = GM_INFO.currSeed / 233280.0;
var tmp = min + rnd * (max - min);
return parseInt(tmp);
},
getSetScreenResolutionFlag: function getSetScreenResolutionFlag() {
var size = cc.winSize;
var width = size.width;
var height = size.height;
if (height / width > 16.2 / 9) return false;
return true;
},
//判断全面屏适配
setFit: function setFit(canvas) {
var flag = GameTool.getSetScreenResolutionFlag();
if (flag) {// console.log("不是全面屏");
// canvas.fitWidth = false;
// canvas.fitHeight = true;
} else {// console.log("是全面屏");
// canvas.fitWidth = true;
// canvas.fitHeight = false;
}
return flag;
},
// submitScoreButtonFunc: function(score1,fen1){
// console.log("上传分数:",score1,fen1)
// // var score = score1;
// // var fen = fen1;
// // if (CC_WECHATGAME) {
// // window.wx.postMessage({
// // messageType: 3,
// // MAIN_MENU_NUM: "guan",
// // score: score,
// // MAIN_MENU_FEN: "score",
// // fen: fen,
// // });
// // } else {
// // cc.log("提交得分: x1 : " + score)
// // }
// // return true;
// },
submitScoreButtonFunc: function submitScoreButtonFunc(fen2, number) {
console.log("number=", number);
if (number == 0) {
console.log("上传分数:", fen2);
var fen = fen2;
if (CC_WECHATGAME) {
window.wx.postMessage({
messageType: 3,
MAIN_MENU_FEN: "score",
MAIN_MENU_NUM: "fen",
score: fen,
fen: 0
});
} else {
cc.log("提交得分: x1 : " + fen);
}
} else {
console.log("上传特殊分数:", fen2);
var fen = fen2;
if (CC_WECHATGAME) {
window.wx.postMessage({
messageType: 7,
MAIN_MENU_FEN: "score",
MAIN_MENU_NUM: "fen",
score: 0,
fen: fen
});
} else {
cc.log("提交得分: x1 : " + fen);
}
}
return true;
},
getTip: function getTip() {
var index = Math.floor(Math.random() * 4) + 1;
switch (index) {
case 1:
{
return "根据小球的位置,合理晃动手机,确保小球不掉出木板。";
}
case 2:
{
return "根据小球位置控制晃动幅度,过大或过小都不是个好选择。";
}
case 3:
{
return "不要被天上掉落的障碍吓到,有时候它反而会帮你保持平衡。";
}
case 4:
{
return "尝试着顶开掉落的障碍,是个很酷的玩法。";
}
}
},
beginTiming: function beginTiming() {
this._startTime = new Date().getTime();
},
endTiming: function endTiming() {
this._endTime = new Date().getTime(); // this._totalTime = endTime - this._startTime;
},
//如果是判断时常的游戏 调用此方法
updateScoreTime: function updateScoreTime() {
var endTime = new Date().getTime();
var tempTime = endTime - this._startTime;
if (tempTime < 0 || tempTime > 500) {
tempTime = Math.round(cc.director.getAnimationInterval() * 1000);
}
this._endTime += tempTime / 1000;
this._totalTime = this._endTime.toFixed(2);
GM_INFO.currScore = this._totalTime;
this._startTime = endTime;
},
//倒计时调用此方法
countDown: function countDown() {
this._endTime = new Date().getTime();
this._totalTime = parseInt((this._endTime - this._startTime) / 1000);
GM_INFO.remainingTime = GM_INFO.totalTime - this._totalTime;
},
httpRequest: function httpRequest(url, data, _success, _fail) {
console.log("进入网络请求:");
wx.getNetworkType({
success: function success(res) {
var networkType = res.networkType; // console.log(networkType);
//有网络状态下
if (networkType == "wifi" || networkType == "4g" || networkType == "3g" || networkType == "unknown") {
wx.request({
url: window.globalData.requestAPI + url,
data: data,
header: {
'content-type': 'application/json',
// 默认值
'Authorization': window.globalData.BASE64_JWT_TOKEN ? 'Bearer ' + window.globalData.BASE64_JWT_TOKEN : ''
},
method: 'POST',
success: function success(res) {
console.log('httpRequest:::::success', res);
_success(res);
},
fail: function fail(res) {
console.log('httpRequest:::::fail', res, "失败url为", url);
_fail(res);
}
});
} else {
_fail(res);
}
},
fail: function fail(res) {
_fail(res);
}
}); // console.log('httpRequest:::::', url, data, success, fail)
},
httpRequest_Notoken: function httpRequest_Notoken(url, data, _success2, _fail2) {
// console.log('httpRequest:::::', url, data, success, fail)
wx.getNetworkType({
success: function success(res) {
var networkType = res.networkType; // console.log(networkType);
//有网络状态下
if (networkType == "wifi" || networkType == "4g" || networkType == "3g" || networkType == "unknown") {
wx.request({
url: window.globalData.requestAPI + url,
data: data,
header: {
'content-type': 'application/json' // 默认值
},
method: 'POST',
success: function success(res) {
console.log('httpRequest:::::success', res);
_success2(res);
},
fail: function fail(res) {
console.log('httpRequest:::::fail', res, "失败url为", url);
_fail2(res);
}
});
} else {
_fail2(res);
}
},
fail: function fail(res) {
_fail2(res);
}
});
},
getGameInfo: function getGameInfo(node) {
var jg = false;
var nodes = node;
var data = {
'appid': window.globalData.appid
};
window.GameTool.httpRequest(window.globalData.getUserInfoUrl, data, function (res) {
window.globalData.gameUserInfo = res.data.king_user; //user_id在这里
console.log("拿到服务器的信息", res.data);
if (window.globalData.gameUserInfo) {
console.log("获得服务器游戏信息成功:", window.globalData.gameUserInfo);
if (window.globalData.gameUserInfo.unlock_1) window.GM_INFO.unlock_1 = window.globalData.gameUserInfo.unlock_1;
if (window.globalData.gameUserInfo.unlock_2) window.GM_INFO.unlock_2 = window.globalData.gameUserInfo.unlock_2; //如果服务器有金币信息
if (window.globalData.gameUserInfo.coin) {
//本地也有金币信息, 以本地为主,把本地金币信息同步到服务器
if (StorageMessage.getStorage("Coin")) {
if (window.globalData.gameUserInfo.coin != StorageMessage.getStorage("Coin")) {
window.GM_INFO.coin = StorageMessage.getStorage("Coin");
StorageMessage.setStorage("Coin", window.GM_INFO.coin);
}
} //如果本地没有金币信息 , 以服务器金币信息为主
else {
window.GM_INFO.coin = window.globalData.gameUserInfo.coin;
StorageMessage.setStorage("Coin", window.GM_INFO.coin);
}
} else {
//本地也有金币信息, 以本地为主,把本地金币信息同步到服务器
if (StorageMessage.getStorage("Coin")) {
window.GM_INFO.coin = StorageMessage.getStorage("Coin");
StorageMessage.setStorage("Coin", window.GM_INFO.coin);
} //如果本地没有金币信息 , 以服务器金币信息为主
else {
window.GM_INFO.coin = 200;
StorageMessage.setStorage("Coin", window.GM_INFO.coin);
}
}
cc.director.loadScene('GameBegin'); // console.log("即将进入这里");
// if(StorageMessage.getStorage("level")){
// // console.log("本地有等级信息;");
// // console.log("服务器信息等级为:",window.globalData.gameUserInfo.level);
// window.GM_INFO.level = StorageMessage.getStorage("level");
// var temp = window.GameTool.submitScoreButtonFunc(window.GM_INFO.level,window.GM_INFO.coin);
// // console.log("本地等级信息为:",window.GM_INFO.level);
// //本地存储等级 小于服务器等级, 等于本地数据丢失,这时以服务器数据为主重新构建游戏
// if(window.GM_INFO.level < window.globalData.gameUserInfo.level){
// // nodes.active = true;
// window.GM_INFO.level = window.globalData.gameUserInfo.level;
// var temp = window.GameTool.submitScoreButtonFunc(window.GM_INFO.level,window.GM_INFO.coin);
// window.GameTool.reset();
// }
// //正常进入游戏,以本地数据为主,服务器数据为辅
// else{
// console.log("本地数据大以本地主数据为主");
// // window.GameTool.setGameInfo(true);
// }
// }
// else{
// console.log("笨地没等级数据");
// // nodes.active = true;
// window.GM_INFO.level = window.globalData.gameUserInfo.level;
// var temp = window.GameTool.submitScoreButtonFunc(window.GM_INFO.level,window.GM_INFO.coin);
// window.GameTool.reset();
// }
if (CC_WECHATGAME) {
wx.onShow(function (res) {
if (res) {
if (res.query) {
console.log("分享中带的信息", res.query);
if (res.query.key1) {
window.GameTool.setFrindHelp(res.query.key1);
}
if (res.query.key2) {
window.GameTool.setFrindBlock(res.query.key2);
}
if (res.query.key3) {
window.GameTool.setFrindBlockMax(res.query.key3);
}
}
}
});
wx.onHide(function (res) {
console.log("检测退出游戏"); // window.arm = [];
// for(var i=0; i<12; i++){
// window.arm[i] = null;
// window.arm[i] = {error:"error"};
// }
// window.arm = StorageMessage.setStorage("arm",window.arm);
var temp = window.GameTool.submitScoreButtonFunc(window.GM_INFO.level, window.GM_INFO.coin);
window.GameTool.setGameInfo();
});
}
jg = true;
} else {
console.log("拿到服务器信息失败");
cc.director.loadScene("LoadScene");
}
}, function () {
jg = false;
console.log("get用户信息失败", res);
});
return jg;
},
//根据服务器数据重置所需要所有数据
reset: function reset() {
// if(window.globalData.gameUserInfo.arm)
// StorageMessage.setStorage("arm",window.globalData.gameUserInfo.arm);
// if(window.globalData.gameUserInfo.richest_coin)
// StorageMessage.setStorage("coin",parseInt(window.globalData.gameUserInfo.richest_coin));
// if(window.globalData.gameUserInfo.dimond)
// StorageMessage.setStorage("dimond",window.globalData.gameUserInfo.dimond);
// if(window.globalData.gameUserInfo.buy_time)
// StorageMessage.setStorage("buy_Time",window.globalData.gameUserInfo.buy_time);
// if(window.globalData.gameUserInfo.dimond_time)
// StorageMessage.setStorage("dimond_Time",window.globalData.gameUserInfo.dimond_time);
// if(window.globalData.gameUserInfo.level)
// StorageMessage.setStorage("level",window.globalData.gameUserInfo.level);
// if(window.globalData.gameUserInfo.total_Speed)
// StorageMessage.setStorage("total_Speed",parseInt(window.globalData.gameUserInfo.total_Speed));
// if(window.globalData.gameUserInfo.leave_time)
// StorageMessage.setStorage("leave_time",window.globalData.gameUserInfo.leave_time);
// if(window.globalData.gameUserInfo.reward1)
// StorageMessage.setStorage("share_Array",window.globalData.gameUserInfo.reward1);
// if(window.globalData.gameUserInfo.reward2)
// StorageMessage.setStorage("share_100",window.globalData.gameUserInfo.reward2);
// StorageMessage.setStorage("GM_INFO",window.GM_INFO);
console.log("本地数据丢失,重新启动游戏");
cc.director.loadScene('LoadScene');
},
setGameInfo: function setGameInfo(pd) {
var data = {// "richest_coin":window.coin+"",
// "arm":window.arm,
// "buy_time":window.buy_Time,
// "dimond":parseInt(window.dimond),
// "dimond_time":window.dimond_Time,
// "level":window.GM_INFO.level,
// "total_speed":window.total_Speed+"",
// "reward_1":window.GM_INFO.share_Array, //用于存储6个红包的领取信息
// "reward_2":window.share_100 //用于存储100个红包的领取信息
}; // console.log("存储之前检测:",window.arm,arms);
window.GameTool.httpRequest(window.globalData.richest, data, function (res) {
console.log('存储userInfo成功', res);
if (!pd) {
window.GM_INFO.leave_time = res.data.leave_time;
StorageMessage.setStorage("leave_time", window.GM_INFO.leave_time);
}
}, function (res) {
console.log('存储userInfo失败', res);
if (!pd) {
window.GM_INFO.leave_time = parseInt(new Date().valueOf() / 1000);
StorageMessage.setStorage("leave_time", data);
}
});
},
//输入秒,返回需要展示时间格式
getTimeMargin: function getTimeMargin(second) {
var total = second;
var hour = parseInt(total / (60 * 60)); //计算整数小时数
var afterHour = total - hour * 60 * 60; //取得算出小时数后剩余的秒数
var min = parseInt(afterHour / 60); //计算整数分
var afterMin = total - hour * 60 * 60 - min * 60; //取得算出分后剩余的秒数
return '剩余:' + hour + ':' + min + ':' + afterMin;
},
getTimeMargin2: function getTimeMargin2(second) {
var total = second;
var hour = parseInt(total / (60 * 60)); //计算整数小时数
var afterHour = total - hour * 60 * 60; //取得算出小时数后剩余的秒数
var min = parseInt(afterHour / 60); //计算整数分
if (min < 10) min = "0" + min;
var afterMin = total - hour * 60 * 60 - min * 60; //取得算出分后剩余的秒数
if (afterMin < 10) afterMin = "0" + afterMin;
return '剩余:' + min + ':' + afterMin;
},
setFrindBlock: function setFrindBlock(userid) {
// console.log("添加时候的userid");
var data = {
user_id: userid
}; // if(userid != window.globalData.gameUserInfo.user_id){
// console.log("进分享的不是自己");
// {
window.GameTool.httpRequest(window.globalData.entryBlock, data, function (res) {
console.log('添加红包助力信息成功', res);
}, function (res) {
console.log('添加红包助力信息失败', res);
}); // }
// }
// else{
// console.log("进入分享的是自己");
// }
}
}, _window$GameTool["getSeedRandom"] = function getSeedRandom(min, max) {
//包含min 不包含max
max = max || 1;
min = min || 0;
GM_INFO.currSeed = (GM_INFO.currSeed * 9301 + 49297) % 233280;
var rnd = GM_INFO.currSeed / 233280.0;
var tmp = min + rnd * (max - min);
return parseInt(tmp);
}, _window$GameTool.getTime = function getTime(time) {
var label = "";
var number_1 = parseInt(time / 60);
var number_2 = time - number_1 * 60;
if (number_1 < 10) {
number_1 = "0" + number_1;
}
if (number_2 < 10) {
number_2 = "0" + number_2;
}
label = number_1 + ":" + number_2;
return label;
}, _window$GameTool.getNumber = function getNumber(number, type) {
// console.log(type,"需要转换的数字为:",number);
var count = 1000;
var place = type - 3;
if (number > Math.pow(count, 8) * Math.pow(10, place)) {
if (number / Math.pow(count, 8) < 100) number = parseInt(number / Math.pow(count, 8) * 10) / 10 + "S";else number = parseInt(number / Math.pow(count, 8)) + "S";
} else if (number > Math.pow(count, 7) * Math.pow(10, place)) {
if (number / Math.pow(count, 7) < 100) number = parseInt(number / Math.pow(count, 7) * 10) / 10 + "s";else number = parseInt(number / Math.pow(count, 7)) + "s";
} else if (number > Math.pow(count, 6) * Math.pow(10, place)) {
if (number / Math.pow(count, 6) < 100) number = parseInt(number / Math.pow(count, 6) * 10) / 10 + "Q";else number = parseInt(number / Math.pow(count, 6)) + "Q";
} else if (number > Math.pow(count, 5) * Math.pow(10, place)) {
if (number / Math.pow(count, 5) < 100) number = parseInt(number / Math.pow(count, 5) * 10) / 10 + "q";else number = parseInt(number / Math.pow(count, 5)) + "q";
} else if (number > Math.pow(count, 4) * Math.pow(10, place)) {
if (number / Math.pow(count, 4) < 100) number = parseInt(number / Math.pow(count, 4) * 10) / 10 + "t";else number = parseInt(number / Math.pow(count, 4)) + "t";
} else if (number > Math.pow(count, 3) * Math.pow(10, place)) {
if (number / Math.pow(count, 3) < 100) number = parseInt(number / Math.pow(count, 3) * 10) / 10 + "b";else number = parseInt(number / Math.pow(count, 3)) + "b";
} else if (number > Math.pow(count, 2) * Math.pow(10, place)) {
if (number / Math.pow(count, 2) < 100) number = parseInt(number / Math.pow(count, 2) * 10) / 10 + "m";else number = parseInt(number / Math.pow(count, 2)) + "m";
} else if (number > Math.pow(count, 1) * Math.pow(10, place)) {
if (number / Math.pow(count, 1) < 100) {
number = parseInt(number / Math.pow(count, 1) * 10) / 10 + "k";
} else number = parseInt(number / Math.pow(count, 1)) + "k";
} else {
number = parseInt(number / Math.pow(count, 0)) + "";
} // console.log("结果为"+type+"位数",number);
return number;
}, _window$GameTool.begainTiming = function begainTiming() {
this._startTime = new Date().getTime();
}, _window$GameTool["endTiming"] = function endTiming() {
var endTime = new Date().getTime();
this._endTime = endTime;
this._totalTime = endTime - this._startTime;
}, _window$GameTool.getScoreTime = function getScoreTime() {
var endTime = new Date().getTime();
var tempTime = endTime - this._startTime;
if (tempTime < 0 || tempTime > 500) {
tempTime = Math.round(cc.director.getAnimationInterval() * 1000);
}
GM_INFO.currScore += tempTime;
this._startTime = endTime;
}, _window$GameTool.getFormatTime = function getFormatTime(time) {
var date = new Date();
date.setTime(time);
var ms = date.getMilliseconds(); // let msString = date.getMilliseconds();
var msString = parseInt(ms / 10) % 100;
var secondString = date.getSeconds();
var minString = date.getMinutes();
if (msString < 10) {
msString = "0" + msString;
}
if (secondString < 10) {
secondString = "0" + secondString;
}
secondString = secondString + ":";
if (minString < 10) {
minString = "0" + minString;
}
minString = minString + ":";
return minString + secondString + msString;
}, _window$GameTool.pushLister = function pushLister() {}, _window$GameTool.removeAllLister = function removeAllLister() {}, _window$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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFx0b29sXFxHYW1lVG9vbC5qcyJdLCJuYW1lcyI6WyJTdG9yYWdlTWVzc2FnZSIsInJlcXVpcmUiLCJ3aW5kb3ciLCJHYW1lVG9vbCIsIl9zdGFydFRpbWUiLCJfZW5kVGltZSIsIl90b3RhbFRpbWUiLCJnZXRTZWVkUmFuZG9tIiwibWluIiwibWF4IiwiR01fSU5GTyIsImN1cnJTZWVkIiwicm5kIiwidG1wIiwicGFyc2VJbnQiLCJnZXRTZXRTY3JlZW5SZXNvbHV0aW9uRmxhZyIsInNpemUiLCJjYyIsIndpblNpemUiLCJ3aWR0aCIsImhlaWdodCIsInNldEZpdCIsImNhbnZhcyIsImZsYWciLCJzdWJtaXRTY29yZUJ1dHRvbkZ1bmMiLCJmZW4yIiwibnVtYmVyIiwiY29uc29sZSIsImxvZyIsImZlbiIsIkNDX1dFQ0hBVEdBTUUiLCJ3eCIsInBvc3RNZXNzYWdlIiwibWVzc2FnZVR5cGUiLCJNQUlOX01FTlVfRkVOIiwiTUFJTl9NRU5VX05VTSIsInNjb3JlIiwiZ2V0VGlwIiwiaW5kZXgiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJiZWdpblRpbWluZyIsIkRhdGUiLCJnZXRUaW1lIiwiZW5kVGltaW5nIiwidXBkYXRlU2NvcmVUaW1lIiwiZW5kVGltZSIsInRlbXBUaW1lIiwicm91bmQiLCJkaXJlY3RvciIsImdldEFuaW1hdGlvbkludGVydmFsIiwidG9GaXhlZCIsImN1cnJTY29yZSIsImNvdW50RG93biIsInJlbWFpbmluZ1RpbWUiLCJ0b3RhbFRpbWUiLCJodHRwUmVxdWVzdCIsInVybCIsImRhdGEiLCJzdWNjZXNzIiwiZmFpbCIsImdldE5ldHdvcmtUeXBlIiwicmVzIiwibmV0d29ya1R5cGUiLCJyZXF1ZXN0IiwiZ2xvYmFsRGF0YSIsInJlcXVlc3RBUEkiLCJoZWFkZXIiLCJCQVNFNjRfSldUX1RPS0VOIiwibWV0aG9kIiwiaHR0cFJlcXVlc3RfTm90b2tlbiIsImdldEdhbWVJbmZvIiwibm9kZSIsImpnIiwibm9kZXMiLCJhcHBpZCIsImdldFVzZXJJbmZvVXJsIiwiZ2FtZVVzZXJJbmZvIiwia2luZ191c2VyIiwidW5sb2NrXzEiLCJ1bmxvY2tfMiIsImNvaW4iLCJnZXRTdG9yYWdlIiwic2V0U3RvcmFnZSIsImxvYWRTY2VuZSIsIm9uU2hvdyIsInF1ZXJ5Iiwia2V5MSIsInNldEZyaW5kSGVscCIsImtleTIiLCJzZXRGcmluZEJsb2NrIiwia2V5MyIsInNldEZyaW5kQmxvY2tNYXgiLCJvbkhpZGUiLCJ0ZW1wIiwibGV2ZWwiLCJzZXRHYW1lSW5mbyIsInJlc2V0IiwicGQiLCJyaWNoZXN0IiwibGVhdmVfdGltZSIsInZhbHVlT2YiLCJnZXRUaW1lTWFyZ2luIiwic2Vjb25kIiwidG90YWwiLCJob3VyIiwiYWZ0ZXJIb3VyIiwiYWZ0ZXJNaW4iLCJnZXRUaW1lTWFyZ2luMiIsInVzZXJpZCIsInVzZXJfaWQiLCJlbnRyeUJsb2NrIiwidGltZSIsImxhYmVsIiwibnVtYmVyXzEiLCJudW1iZXJfMiIsImdldE51bWJlciIsInR5cGUiLCJjb3VudCIsInBsYWNlIiwicG93IiwiYmVnYWluVGltaW5nIiwiZ2V0U2NvcmVUaW1lIiwiZ2V0Rm9ybWF0VGltZSIsImRhdGUiLCJzZXRUaW1lIiwibXMiLCJnZXRNaWxsaXNlY29uZHMiLCJtc1N0cmluZyIsInNlY29uZFN0cmluZyIsImdldFNlY29uZHMiLCJtaW5TdHJpbmciLCJnZXRNaW51dGVzIiwicHVzaExpc3RlciIsInJlbW92ZUFsbExpc3RlciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUlBLGNBQWMsR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBUCxDQUFtQkQsY0FBeEM7O0FBQ0FFLE1BQU0sQ0FBQ0MsUUFBUDtBQUNJQyxFQUFBQSxVQUFVLEVBQUUsQ0FEaEI7QUFFSUMsRUFBQUEsUUFBUSxFQUFFLENBRmQ7QUFHSUMsRUFBQUEsVUFBVSxFQUFFLENBSGhCO0FBSUlDLEVBQUFBLGFBQWEsRUFBRSx1QkFBVUMsR0FBVixFQUFl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O0FBQ0FrRixFQUFBQSxJQUFJLENBQUNDLE9BQUwsQ0FBYWIsSUFBYjtBQUVBLE1BQUljLEVBQUUsR0FBR0YsSUFBSSxDQUFDRyxlQUFMLEVBQVQsQ0FMMkIsQ0FNM0I7O0FBQ0EsTUFBSUMsUUFBUSxHQUFHbkgsUUFBUSxDQUFDaUgsRUFBRSxHQUFHLEVBQU4sQ0FBUixHQUFvQixHQUFuQztBQUVBLE1BQUlHLFlBQVksR0FBR0wsSUFBSSxDQUFDTSxVQUFMLEVBQW5CO0FBRUEsTUFBSUMsU0FBUyxHQUFHUCxJQUFJLENBQUNRLFVBQUwsRUFBaEI7O0FBRUEsTUFBSUosUUFBUSxHQUFHLEVBQWYsRUFBbUI7QUFDZkEsSUFBQUEsUUFBUSxHQUFHLE1BQU1BLFFBQWpCO0FBQ0g7O0FBQ0QsTUFBSUMsWUFBWSxHQUFHLEVBQW5CLEVBQXVCO0FBQ25CQSxJQUFBQSxZQUFZLEdBQUcsTUFBTUEsWUFBckI7QUFDSDs7QUFDREEsRUFBQUEsWUFBWSxHQUFHQSxZQUFZLEdBQUcsR0FBOUI7O0FBRUEsTUFBSUUsU0FBUyxHQUFHLEVBQWhCLEVBQW9CO0FBQ2hCQSxJQUFBQSxTQUFTLEdBQUcsTUFBTUEsU0FBbEI7QUFDSDs7QUFDREEsRUFBQUEsU0FBUyxHQUFHQSxTQUFTLEdBQUcsR0FBeEI7QUFFQSxTQUFPQSxTQUFTLEdBQUdGLFlBQVosR0FBMkJELFFBQWxDO0FBRUgsQ0Fsa0JMLG1CQW1rQklLLFVBbmtCSixHQW1rQmUsc0JBQVksQ0FFdEIsQ0Fya0JMLG1CQXNrQklDLGVBdGtCSixHQXNrQm9CLDJCQUFZLENBRTNCLENBeGtCTCIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsidmFyIFN0b3JhZ2VNZXNzYWdlID0gcmVxdWlyZShcIlN0b3JhZ2VcIikuU3RvcmFnZU1lc3NhZ2U7XHJcbndpbmRvdy5HYW1lVG9vbCA9IHtcclxuICAgIF9zdGFydFRpbWU6IDAsXHJcbiAgICBfZW5kVGltZTogMCxcclxuICAgIF90b3RhbFRpbWU6IDAsXHJcbiAgICBnZXRTZWVkUmFuZG9tOiBmdW5jdGlvbiAobWluLCBtYXgpIHsvL+WMheWQq21pbiDkuI3ljIXlkKttYXhcclxuICAgICAgICBtYXggPSBtYXggfHwgMTtcclxuICAgICAgICBtaW4gPSBtaW4gfHwgMDtcclxuICAgICAgICBHTV9JTkZPLmN1cnJTZWVkID0gKEdNX0lORk8uY3VyclNlZWQgKiA5MzAxICsgNDkyOTcpICUgMjMzMjgwO1xyXG4gICAgICAgIGxldCBybmQgPSBHTV9JTkZPLmN1cnJTZWVkIC8gMjMzMjgwLjA7XHJcbiAgICAgICAgbGV0IHRtcCA9IG1pbiArIHJuZCAqIChtYXggLSBtaW4pO1xyXG4gICAgICAgIHJldHVybiBwYXJzZUludCh0bXApO1xyXG4gICAgfSxcclxuICAgIFxyXG4gICAgZ2V0U2V0U2NyZWVuUmVzb2x1dGlvbkZsYWc6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBsZXQgc2l6ZSA9IGNjLndpblNpemU7XHJcbiAgICAgICAgbGV0IHdpZHRoID0gc2l6ZS53aWR0aDtcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQ7XHJcbiAgICAgICAgaWYgKChoZWlnaHQgLyB3aWR0aCkgPiAoMTYuMiAvIDkpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9LFxyXG4gICAgLy/liKTmlq3lhajpnaLlsY/pgILphY1cclxuICAgIHNldEZpdDogZnVuY3Rpb24gKGNhbnZhcykge1xyXG4gICAgICAgIGxldCBmbGFnID0gR2FtZVRvb2wuZ2V0U2V0U2NyZWVuUmVzb2x1dGlvbkZsYWcoKTtcclxuICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIFx0Ly8gY29uc29sZS5sb2coXCLkuI3mmK/lhajpnaLlsY9cIik7XHJcbiAgICAgICAgICAgIC8vIGNhbnZhcy5maXRXaWR0aCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyBjYW52YXMuZml0SGVpZ2h0ID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgIFx0Ly8gY29uc29sZS5sb2coXCLmmK/lhajpnaLlsY9cIik7XHJcbiAgICAgICAgICAgIC8vIGNhbnZhcy5maXRXaWR0aCA9IHRydWU7XHJcbiAgICAgICAgICAgIC8vIGNhbnZhcy5maXRIZWlnaHQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZsYWc7XHJcbiAgICB9LFxyXG5cclxuICAgIC8vIHN1Ym1pdFNjb3JlQnV0dG9uRnVuYzogZnVuY3Rpb24oc2NvcmUxLGZlbjEpe1xyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKFwi5LiK5Lyg5YiG5pWwOlwiLHNjb3JlMSxmZW4xKVxyXG4gICAgLy8gICAgIC8vIHZhciBzY29yZSA9IHNjb3JlMTtcclxuICAgIC8vICAgICAvLyB2YXIgZmVuID0gZmVuMTtcclxuICAgIC8vICAgICAvLyBpZiAoQ0NfV0VDSEFUR0FNRSkge1xyXG4gICAgLy8gICAgIC8vICAgICB3aW5kb3cud3gucG9zdE1lc3NhZ2Uoe1xyXG4gICAgLy8gICAgIC8vICAgICAgICAgbWVzc2FnZVR5cGU6IDMsXHJcbiAgICAvLyAgICAgLy8gICAgICAgICBNQUlOX01FTlVfTlVNOiBcImd1YW5cIixcclxuICAgIC8vICAgICAvLyAgICAgICAgIHNjb3JlOiBzY29yZSxcclxuICAgIC8vICAgICAvLyAgICAgICAgIE1BSU5fTUVOVV9GRU46IFwic2NvcmVcIixcclxuICAgIC8vICAgICAvLyAgICAgICAgIGZlbjogZmVuLFxyXG4gICAgLy8gICAgIC8vICAgICB9KTtcclxuICAgIC8vICAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICAgIC8vICAgICBjYy5sb2coXCLmj5DkuqTlvpfliIY6IHgxIDogXCIgKyBzY29yZSlcclxuICAgIC8vICAgICAvLyB9XHJcbiAgICAvLyAgICAgLy8gcmV0dXJuIHRydWU7XHJcbiAgICAvLyB9LFxyXG5cclxuXHJcbiAgICBzdWJtaXRTY29yZUJ1dHRvbkZ1bmM6IGZ1bmN0aW9uKGZlbjIsbnVtYmVyKXtcclxuICAgIFx0Y29uc29sZS5sb2coXCJudW1iZXI9XCIsbnVtYmVyKVxyXG4gICAgICAgIGlmKG51bWJlciA9PSAwKXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCLkuIrkvKDliIbmlbA6XCIsZmVuMilcclxuICAgICAgICAgICAgdmFyIGZlbiA9IGZlbjI7XHJcbiAgICAgICAgICAgIGlmIChDQ19XRUNIQVRHQU1FKSB7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cud3gucG9zdE1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUeXBlOiAzLFxyXG4gICAgICAgICAgICAgICAgICAgIE1BSU5fTUVOVV9GRU46IFwic2NvcmVcIixcclxuICAgICAgICAgICAgICAgICAgICBNQUlOX01FTlVfTlVNOiBcImZlblwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHNjb3JlOiBmZW4sXHJcbiAgICAgICAgICAgICAgICAgICAgZmVuOiAwLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjYy5sb2coXCLmj5DkuqTlvpfliIY6IHgxIDogXCIgKyBmZW4pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCLkuIrkvKDnibnmrorliIbmlbA6XCIsZmVuMilcclxuICAgICAgICAgICAgdmFyIGZlbiA9IGZlbjI7XHJcbiAgICAgICAgICAgIGlmIChDQ19XRUNIQVRHQU1FKSB7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cud3gucG9zdE1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUeXBlOiA3LFxyXG4gICAgICAgICAgICAgICAgICAgIE1BSU5fTUVOVV9GRU46IFwic2NvcmVcIixcclxuICAgICAgICAgICAgICAgICAgICBNQUlOX01FTlVfTlVNOiBcImZlblwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHNjb3JlOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgIGZlbjogZmVuLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjYy5sb2coXCLmj5DkuqTlvpfliIY6IHgxIDogXCIgKyBmZW4pXHJcbiAgICAgICAgICAgIH0gICBcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldFRpcDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGxldCBpbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDQpICsgMTtcclxuICAgICAgICBzd2l0Y2ggKGluZGV4KSB7XHJcbiAgICAgICAgICAgIGNhc2UgMToge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwi5qC55o2u5bCP55CD55qE5L2N572u77yM5ZCI55CG5pmD5Yqo5omL5py677yM56Gu5L+d5bCP55CD5LiN5o6J5Ye65pyo5p2/44CCXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlIDI6IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIuagueaNruWwj+eQg+S9jee9ruaOp+WItuaZg+WKqOW5heW6pu+8jOi/h+Wkp+aIlui/h+Wwj+mDveS4jeaYr+S4quWlvemAieaLqeOAglwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAzOiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCLkuI3opoHooqvlpKnkuIrmjonokL3nmoTpmpznoo3lkJPliLDvvIzmnInml7blgJnlroPlj43ogIzkvJrluK7kvaDkv53mjIHlubPooaHjgIJcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgNDoge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwi5bCd6K+V552A6aG25byA5o6J6JC955qE6Zqc56KN77yM5piv5Liq5b6I6YW355qE546p5rOV44CCXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgYmVnaW5UaW1pbmc6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLl9zdGFydFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgIH0sXHJcblxyXG4gICAgZW5kVGltaW5nOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5fZW5kVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIC8vIHRoaXMuX3RvdGFsVGltZSA9IGVuZFRpbWUgLSB0aGlzLl9zdGFydFRpbWU7XHJcbiAgICB9LFxyXG4gICAgLy/lpoLmnpzmmK/liKTmlq3ml7bluLjnmoTmuLjmiI8g6LCD55So5q2k5pa55rOVXHJcbiAgICB1cGRhdGVTY29yZVRpbWU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIGxldCB0ZW1wVGltZSA9IGVuZFRpbWUgLSB0aGlzLl9zdGFydFRpbWU7XHJcbiAgICAgICAgaWYgKHRlbXBUaW1lIDwgMCB8fCB0ZW1wVGltZSA+IDUwMCkge1xyXG4gICAgICAgICAgICB0ZW1wVGltZSA9IE1hdGgucm91bmQoY2MuZGlyZWN0b3IuZ2V0QW5pbWF0aW9uSW50ZXJ2YWwoKSAqIDEwMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9lbmRUaW1lICs9IHRlbXBUaW1lIC8gMTAwMDtcclxuICAgICAgICB0aGlzLl90b3RhbFRpbWUgPSB0aGlzLl9lbmRUaW1lLnRvRml4ZWQoMik7XHJcbiAgICAgICAgR01fSU5GTy5jdXJyU2NvcmUgPSB0aGlzLl90b3RhbFRpbWU7XHJcbiAgICAgICAgdGhpcy5fc3RhcnRUaW1lID0gZW5kVGltZTtcclxuICAgIH0sXHJcbiAgICAvL+WAkuiuoeaXtuiwg+eUqOatpOaWueazlVxyXG4gICAgY291bnREb3duOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5fZW5kVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIHRoaXMuX3RvdGFsVGltZSA9IHBhcnNlSW50KCh0aGlzLl9lbmRUaW1lIC0gdGhpcy5fc3RhcnRUaW1lKSAvIDEwMDApO1xyXG4gICAgICAgIEdNX0lORk8ucmVtYWluaW5nVGltZSA9IEdNX0lORk8udG90YWxUaW1lIC0gdGhpcy5fdG90YWxUaW1lO1xyXG4gICAgfSxcclxuXHJcbiAgICBodHRwUmVxdWVzdCh1cmwsIGRhdGEsIHN1Y2Nlc3MsIGZhaWwpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIui/m+WFpee9kee7nOivt+axgjpcIik7XHJcbiAgICAgICAgd3guZ2V0TmV0d29ya1R5cGUoe1xyXG4gICAgICAgICAgICBzdWNjZXNzKHJlcykge1xyXG4gICAgICAgICAgICAgIHZhciBuZXR3b3JrVHlwZSA9IHJlcy5uZXR3b3JrVHlwZTtcclxuICAgICAgICAgICAgLy8gICBjb25zb2xlLmxvZyhuZXR3b3JrVHlwZSk7XHJcbiAgICAgICAgICAgICAgLy/mnInnvZHnu5znirbmgIHkuItcclxuICAgICAgICAgICAgICBpZihuZXR3b3JrVHlwZSA9PSBcIndpZmlcIiB8fG5ldHdvcmtUeXBlID09IFwiNGdcIiB8fCBuZXR3b3JrVHlwZSA9PSBcIjNnXCIgfHwgbmV0d29ya1R5cGUgPT1cInVua25vd25cIil7XHJcbiAgICAgICAgICAgICAgICAgICAgd3gucmVxdWVzdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogd2luZG93Lmdsb2JhbERhdGEucmVxdWVzdEFQSSArIHVybCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAvLyDpu5jorqTlgLxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzp3aW5kb3cuZ2xvYmFsRGF0YS5CQVNFNjRfSldUX1RPS0VOPydCZWFyZXIgJyt3aW5kb3cuZ2xvYmFsRGF0YS5CQVNFNjRfSldUX1RPS0VOOicnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2h0dHBSZXF1ZXN0Ojo6OjpzdWNjZXNzJyxyZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWlsKHJlcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2h0dHBSZXF1ZXN0Ojo6OjpmYWlsJywgcmVzLFwi5aSx6LSldXJs5Li6XCIsdXJsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwocmVzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGZhaWwocmVzKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmYWlsKHJlcyl7XHJcbiAgICAgICAgICAgICAgICBmYWlsKHJlcylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAvLyBjb25zb2xlLmxvZygnaHR0cFJlcXVlc3Q6Ojo6OicsIHVybCwgZGF0YSwgc3VjY2VzcywgZmFpbClcclxuXHJcbiAgICB9LFxyXG5cclxuICAgIGh0dHBSZXF1ZXN0X05vdG9rZW4odXJsLCBkYXRhLCBzdWNjZXNzLCBmYWlsKSB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ2h0dHBSZXF1ZXN0Ojo6OjonLCB1cmwsIGRhdGEsIHN1Y2Nlc3MsIGZhaWwpXHJcbiAgICAgICAgd3guZ2V0TmV0d29ya1R5cGUoe1xyXG4gICAgICAgICAgICBzdWNjZXNzKHJlcykge1xyXG4gICAgICAgICAgICAgIHZhciBuZXR3b3JrVHlwZSA9IHJlcy5uZXR3b3JrVHlwZTtcclxuICAgICAgICAgICAgLy8gICBjb25zb2xlLmxvZyhuZXR3b3JrVHlwZSk7XHJcbiAgICAgICAgICAgICAgLy/mnInnvZHnu5znirbmgIHkuItcclxuICAgICAgICAgICAgICBpZihuZXR3b3JrVHlwZSA9PSBcIndpZmlcIiB8fG5ldHdvcmtUeXBlID09IFwiNGdcIiB8fCBuZXR3b3JrVHlwZSA9PSBcIjNnXCIgfHwgbmV0d29ya1R5cGUgPT1cInVua25vd25cIil7XHJcbiAgICAgICAgICAgICAgICAgICAgd3gucmVxdWVzdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogd2luZG93Lmdsb2JhbERhdGEucmVxdWVzdEFQSSArIHVybCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLCAvLyDpu5jorqTlgLxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MocmVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnaHR0cFJlcXVlc3Q6Ojo6OnN1Y2Nlc3MnLHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwocmVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnaHR0cFJlcXVlc3Q6Ojo6OmZhaWwnLCByZXMsXCLlpLHotKV1cmzkuLpcIix1cmwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbChyZXMpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBmYWlsKHJlcylcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmFpbChyZXMpe1xyXG4gICAgICAgICAgICAgICAgZmFpbChyZXMpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcblxyXG4gICAgfSxcclxuXHJcbiAgICBnZXRHYW1lSW5mbzogZnVuY3Rpb24obm9kZSl7XHJcbiAgICAgICAgdmFyIGpnID0gZmFsc2U7XHJcbiAgICAgICAgdmFyIG5vZGVzID0gbm9kZTtcclxuICAgICAgICBsZXQgZGF0YSA9IHtcclxuICAgICAgICAgICAgJ2FwcGlkJzogd2luZG93Lmdsb2JhbERhdGEuYXBwaWRcclxuICAgICAgICB9XHJcbiAgICAgICAgd2luZG93LkdhbWVUb29sLmh0dHBSZXF1ZXN0KHdpbmRvdy5nbG9iYWxEYXRhLmdldFVzZXJJbmZvVXJsLCBkYXRhLCBmdW5jdGlvbiAocmVzKSB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5nbG9iYWxEYXRhLmdhbWVVc2VySW5mbyA9IHJlcy5kYXRhLmtpbmdfdXNlcjsgIC8vdXNlcl9pZOWcqOi/memHjFxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIuaLv+WIsOacjeWKoeWZqOeahOS/oeaBr1wiLHJlcy5kYXRhKTtcclxuXHJcbiAgICAgICAgICAgIGlmKHdpbmRvdy5nbG9iYWxEYXRhLmdhbWVVc2VySW5mbyl7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuiOt+W+l+acjeWKoeWZqOa4uOaIj+S/oeaBr+aIkOWKnzpcIix3aW5kb3cuZ2xvYmFsRGF0YS5nYW1lVXNlckluZm8pO1xyXG4gICAgICAgICAgICAgICAgaWYod2luZG93Lmdsb2JhbERhdGEuZ2FtZVVzZXJJbmZvLnVubG9ja18xKVxyXG4gICAgICAgICAgICAgICAgd2luZG93LkdNX0lORk8udW5sb2NrXzEgPSB3aW5kb3cuZ2xvYmFsRGF0YS5nYW1lVXNlckluZm8udW5sb2NrXzE7XHJcbiAgICAgICAgICAgIGlmKHdpbmRvdy5nbG9iYWxEYXRhLmdhbWVVc2VySW5mby51bmxvY2tfMilcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5HTV9JTkZPLnVubG9ja18yID0gd2luZG93Lmdsb2JhbERhdGEuZ2FtZVVzZXJJbmZvLnVubG9ja18yO1xyXG4gICAgICAgICAgICAvL+WmguaenOacjeWKoeWZqOaciemHkeW4geS/oeaBr1xyXG4gICAgICAgICAgICBpZih3aW5kb3cuZ2xvYmFsRGF0YS5nYW1lVXNlckluZm8uY29pbil7XHJcbiAgICAgICAgICAgICAgICAvL+acrOWcsOS5n+aciemHkeW4geS/oeaBrywg5Lul5pys5Zyw5Li65Li7LOaKiuacrOWcsOmHkeW4geS/oeaBr+WQjOatpeWIsOacjeWKoeWZqFxyXG4gICAgICAgICAgICAgICAgaWYoU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcIkNvaW5cIikpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHdpbmRvdy5nbG9iYWxEYXRhLmdhbWVVc2VySW5mby5jb2luICE9IFN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJDb2luXCIpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LkdNX0lORk8uY29pbiA9IFN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJDb2luXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBTdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiQ29pblwiLHdpbmRvdy5HTV9JTkZPLmNvaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gICAvL+WmguaenOacrOWcsOayoeaciemHkeW4geS/oeaBryAsIOS7peacjeWKoeWZqOmHkeW4geS/oeaBr+S4uuS4u1xyXG4gICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cuR01fSU5GTy5jb2luID0gd2luZG93Lmdsb2JhbERhdGEuZ2FtZVVzZXJJbmZvLmNvaW47XHJcbiAgICAgICAgICAgICAgICAgICAgU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcIkNvaW5cIix3aW5kb3cuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgLy/mnKzlnLDkuZ/mnInph5HluIHkv6Hmga8sIOS7peacrOWcsOS4uuS4uyzmiormnKzlnLDph5HluIHkv6Hmga/lkIzmraXliLDmnI3liqHlmahcclxuICAgICAgICAgICAgICAgIGlmKFN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJDb2luXCIpKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LkdNX0lORk8uY29pbiA9IFN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJDb2luXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBTdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiQ29pblwiLHdpbmRvdy5HTV9JTkZPLmNvaW4pO1xyXG4gICAgICAgICAgICAgICAgfSAgIC8v5aaC5p6c5pys5Zyw5rKh5pyJ6YeR5biB5L+h5oGvICwg5Lul5pyN5Yqh5Zmo6YeR5biB5L+h5oGv5Li65Li7XHJcbiAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5HTV9JTkZPLmNvaW4gPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcIkNvaW5cIix3aW5kb3cuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKCdHYW1lQmVnaW4nKTtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLljbPlsIbov5vlhaXov5nph4xcIik7XHJcbiAgICAgICAgICAgIC8vIGlmKFN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJsZXZlbFwiKSl7XHJcbiAgICAgICAgICAgIC8vICAgICAvLyBjb25zb2xlLmxvZyhcIuacrOWcsOacieetiee6p+S/oeaBrztcIik7XHJcbiAgICAgICAgICAgIC8vICAgICAvLyBjb25zb2xlLmxvZyhcIuacjeWKoeWZqOS/oeaBr+etiee6p+S4ujpcIix3aW5kb3cuZ2xvYmFsRGF0YS5nYW1lVXNlckluZm8ubGV2ZWwpO1xyXG4gICAgICAgICAgICAvLyAgICAgd2luZG93LkdNX0lORk8ubGV2ZWwgPSBTdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwibGV2ZWxcIik7XHJcbiAgICAgICAgICAgIC8vICAgICB2YXIgdGVtcCA9IHdpbmRvdy5HYW1lVG9vbC5zdWJtaXRTY29yZUJ1dHRvbkZ1bmMod2luZG93LkdNX0lORk8ubGV2ZWwsd2luZG93LkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgIC8vICAgICAvLyBjb25zb2xlLmxvZyhcIuacrOWcsOetiee6p+S/oeaBr+S4ujpcIix3aW5kb3cuR01fSU5GTy5sZXZlbCk7XHJcbiAgICAgICAgICAgIC8vICAgICAvL+acrOWcsOWtmOWCqOetiee6pyDlsI/kuo7mnI3liqHlmajnrYnnuqcsIOetieS6juacrOWcsOaVsOaNruS4ouWksSzov5nml7bku6XmnI3liqHlmajmlbDmja7kuLrkuLvph43mlrDmnoTlu7rmuLjmiI9cclxuICAgICAgICAgICAgLy8gICAgIGlmKHdpbmRvdy5HTV9JTkZPLmxldmVsIDwgd2luZG93Lmdsb2JhbERhdGEuZ2FtZVVzZXJJbmZvLmxldmVsKXtcclxuICAgICAgICAgICAgLy8gICAgICAgICAvLyBub2Rlcy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIHdpbmRvdy5HTV9JTkZPLmxldmVsID0gd2luZG93Lmdsb2JhbERhdGEuZ2FtZVVzZXJJbmZvLmxldmVsO1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIHZhciB0ZW1wID0gd2luZG93LkdhbWVUb29sLnN1Ym1pdFNjb3JlQnV0dG9uRnVuYyh3aW5kb3cuR01fSU5GTy5sZXZlbCx3aW5kb3cuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAgICAgLy8gICAgICAgICB3aW5kb3cuR2FtZVRvb2wucmVzZXQoKTtcclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gICAgIC8v5q2j5bi46L+b5YWl5ri45oiPLOS7peacrOWcsOaVsOaNruS4uuS4uyzmnI3liqHlmajmlbDmja7kuLrovoVcclxuICAgICAgICAgICAgLy8gICAgIGVsc2V7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgY29uc29sZS5sb2coXCLmnKzlnLDmlbDmja7lpKfku6XmnKzlnLDkuLvmlbDmja7kuLrkuLtcIik7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgLy8gd2luZG93LkdhbWVUb29sLnNldEdhbWVJbmZvKHRydWUpO1xyXG4gICAgICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIC8vIGVsc2V7XHJcbiAgICAgICAgICAgIC8vICAgICBjb25zb2xlLmxvZyhcIuesqOWcsOayoeetiee6p+aVsOaNrlwiKTtcclxuICAgICAgICAgICAgLy8gICAgIC8vIG5vZGVzLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIC8vICAgICB3aW5kb3cuR01fSU5GTy5sZXZlbCA9IHdpbmRvdy5nbG9iYWxEYXRhLmdhbWVVc2VySW5mby5sZXZlbDtcclxuICAgICAgICAgICAgLy8gICAgIHZhciB0ZW1wID0gd2luZG93LkdhbWVUb29sLnN1Ym1pdFNjb3JlQnV0dG9uRnVuYyh3aW5kb3cuR01fSU5GTy5sZXZlbCx3aW5kb3cuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAgICAgLy8gICAgIHdpbmRvdy5HYW1lVG9vbC5yZXNldCgpO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIGlmIChDQ19XRUNIQVRHQU1FKSB7XHJcbiAgICAgICAgICAgICAgICB3eC5vblNob3coZnVuY3Rpb24ocmVzKXtcclxuICAgICAgICAgICAgICAgICAgICBpZihyZXMpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihyZXMucXVlcnkpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLliIbkuqvkuK3luKbnmoTkv6Hmga9cIixyZXMucXVlcnkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzLnF1ZXJ5LmtleTEpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5HYW1lVG9vbC5zZXRGcmluZEhlbHAocmVzLnF1ZXJ5LmtleTEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVzLnF1ZXJ5LmtleTIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5HYW1lVG9vbC5zZXRGcmluZEJsb2NrKHJlcy5xdWVyeS5rZXkyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlcy5xdWVyeS5rZXkzKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuR2FtZVRvb2wuc2V0RnJpbmRCbG9ja01heChyZXMucXVlcnkua2V5Myk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHd4Lm9uSGlkZShmdW5jdGlvbihyZXMpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5qOA5rWL6YCA5Ye65ri45oiPXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHdpbmRvdy5hcm0gPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBmb3IodmFyIGk9MDsgaTwxMjsgaSsrKXtcclxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgd2luZG93LmFybVtpXSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIHdpbmRvdy5hcm1baV0gPSB7ZXJyb3I6XCJlcnJvclwifTtcclxuICAgICAgICAgICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gd2luZG93LmFybSA9IFN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJhcm1cIix3aW5kb3cuYXJtKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IHdpbmRvdy5HYW1lVG9vbC5zdWJtaXRTY29yZUJ1dHRvbkZ1bmMod2luZG93LkdNX0lORk8ubGV2ZWwsd2luZG93LkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICAgICAgd2luZG93LkdhbWVUb29sLnNldEdhbWVJbmZvKCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBqZyA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5ou/5Yiw5pyN5Yqh5Zmo5L+h5oGv5aSx6LSlXCIpO1xyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiTG9hZFNjZW5lXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH0sZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJnZXTnlKjmiLfkv6Hmga/lpLHotKVcIixyZXMpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgcmV0dXJuIGpnO1xyXG4gICAgfSxcclxuICAgIC8v5qC55o2u5pyN5Yqh5Zmo5pWw5o2u6YeN572u5omA6ZyA6KaB5omA5pyJ5pWw5o2uXHJcbiAgICByZXNldDogZnVuY3Rpb24oKXtcclxuICAgICAgICAvLyBpZih3aW5kb3cuZ2xvYmFsRGF0YS5nYW1lVXNlckluZm8uYXJtKVxyXG4gICAgICAgIC8vICAgICBTdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiYXJtXCIsd2luZG93Lmdsb2JhbERhdGEuZ2FtZVVzZXJJbmZvLmFybSk7XHJcbiAgICAgICAgLy8gaWYod2luZG93Lmdsb2JhbERhdGEuZ2FtZVVzZXJJbmZvLnJpY2hlc3RfY29pbikgXHJcbiAgICAgICAgLy8gICAgIFN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJjb2luXCIscGFyc2VJbnQod2luZG93Lmdsb2JhbERhdGEuZ2FtZVVzZXJJbmZvLnJpY2hlc3RfY29pbikpO1xyXG4gICAgICAgIC8vIGlmKHdpbmRvdy5nbG9iYWxEYXRhLmdhbWVVc2VySW5mby5kaW1vbmQpXHJcbiAgICAgICAgLy8gICAgIFN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJkaW1vbmRcIix3aW5kb3cuZ2xvYmFsRGF0YS5nYW1lVXNlckluZm8uZGltb25kKTtcclxuICAgICAgICAvLyBpZih3aW5kb3cuZ2xvYmFsRGF0YS5nYW1lVXNlckluZm8uYnV5X3RpbWUpXHJcbiAgICAgICAgLy8gICAgIFN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJidXlfVGltZVwiLHdpbmRvdy5nbG9iYWxEYXRhLmdhbWVVc2VySW5mby5idXlfdGltZSk7XHJcbiAgICAgICAgLy8gaWYod2luZG93Lmdsb2JhbERhdGEuZ2FtZVVzZXJJbmZvLmRpbW9uZF90aW1lKVxyXG4gICAgICAgIC8vICAgICBTdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiZGltb25kX1RpbWVcIix3aW5kb3cuZ2xvYmFsRGF0YS5nYW1lVXNlckluZm8uZGltb25kX3RpbWUpO1xyXG4gICAgICAgIC8vIGlmKHdpbmRvdy5nbG9iYWxEYXRhLmdhbWVVc2VySW5mby5sZXZlbClcclxuICAgICAgICAvLyAgICAgU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcImxldmVsXCIsd2luZG93Lmdsb2JhbERhdGEuZ2FtZVVzZXJJbmZvLmxldmVsKTtcclxuICAgICAgICAvLyBpZih3aW5kb3cuZ2xvYmFsRGF0YS5nYW1lVXNlckluZm8udG90YWxfU3BlZWQpXHJcbiAgICAgICAgLy8gICAgIFN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJ0b3RhbF9TcGVlZFwiLHBhcnNlSW50KHdpbmRvdy5nbG9iYWxEYXRhLmdhbWVVc2VySW5mby50b3RhbF9TcGVlZCkpO1xyXG4gICAgICAgIC8vIGlmKHdpbmRvdy5nbG9iYWxEYXRhLmdhbWVVc2VySW5mby5sZWF2ZV90aW1lKVxyXG4gICAgICAgIC8vICAgICBTdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGVhdmVfdGltZVwiLHdpbmRvdy5nbG9iYWxEYXRhLmdhbWVVc2VySW5mby5sZWF2ZV90aW1lKTtcclxuICAgICAgICAvLyBpZih3aW5kb3cuZ2xvYmFsRGF0YS5nYW1lVXNlckluZm8ucmV3YXJkMSlcclxuICAgICAgICAvLyAgICAgU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInNoYXJlX0FycmF5XCIsd2luZG93Lmdsb2JhbERhdGEuZ2FtZVVzZXJJbmZvLnJld2FyZDEpO1xyXG4gICAgICAgIC8vIGlmKHdpbmRvdy5nbG9iYWxEYXRhLmdhbWVVc2VySW5mby5yZXdhcmQyKVxyXG4gICAgICAgIC8vICAgICBTdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwic2hhcmVfMTAwXCIsd2luZG93Lmdsb2JhbERhdGEuZ2FtZVVzZXJJbmZvLnJld2FyZDIpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIFN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJHTV9JTkZPXCIsd2luZG93LkdNX0lORk8pO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi5pys5Zyw5pWw5o2u5Lii5aSxLOmHjeaWsOWQr+WKqOa4uOaIj1wiKTtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoJ0xvYWRTY2VuZScpO1xyXG4gICAgfSxcclxuXHJcbiAgICBzZXRHYW1lSW5mbzogZnVuY3Rpb24ocGQpe1xyXG4gICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICAvLyBcInJpY2hlc3RfY29pblwiOndpbmRvdy5jb2luK1wiXCIsXHJcbiAgICAgICAgICAgIC8vIFwiYXJtXCI6d2luZG93LmFybSxcclxuICAgICAgICAgICAgLy8gXCJidXlfdGltZVwiOndpbmRvdy5idXlfVGltZSxcclxuICAgICAgICAgICAgLy8gXCJkaW1vbmRcIjpwYXJzZUludCh3aW5kb3cuZGltb25kKSxcclxuICAgICAgICAgICAgLy8gXCJkaW1vbmRfdGltZVwiOndpbmRvdy5kaW1vbmRfVGltZSxcclxuICAgICAgICAgICAgLy8gXCJsZXZlbFwiOndpbmRvdy5HTV9JTkZPLmxldmVsLFxyXG4gICAgICAgICAgICAvLyBcInRvdGFsX3NwZWVkXCI6d2luZG93LnRvdGFsX1NwZWVkK1wiXCIsXHJcbiAgICAgICAgICAgIC8vIFwicmV3YXJkXzFcIjp3aW5kb3cuR01fSU5GTy5zaGFyZV9BcnJheSwgICAgICAvL+eUqOS6juWtmOWCqDbkuKrnuqLljIXnmoTpooblj5bkv6Hmga9cclxuICAgICAgICAgICAgLy8gXCJyZXdhcmRfMlwiOndpbmRvdy5zaGFyZV8xMDAgICAgICAgICAgICAgICAgIC8v55So5LqO5a2Y5YKoMTAw5Liq57qi5YyF55qE6aKG5Y+W5L+h5oGvXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5a2Y5YKo5LmL5YmN5qOA5rWLOlwiLHdpbmRvdy5hcm0sYXJtcyk7XHJcbiAgICAgICAgd2luZG93LkdhbWVUb29sLmh0dHBSZXF1ZXN0KHdpbmRvdy5nbG9iYWxEYXRhLnJpY2hlc3QsIGRhdGEsIGZ1bmN0aW9uIChyZXMpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ+WtmOWCqHVzZXJJbmZv5oiQ5YqfJywgcmVzKTtcclxuICAgICAgICAgICAgaWYoIXBkKXtcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5HTV9JTkZPLmxlYXZlX3RpbWUgPSByZXMuZGF0YS5sZWF2ZV90aW1lO1xyXG4gICAgICAgICAgICAgICAgU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcImxlYXZlX3RpbWVcIix3aW5kb3cuR01fSU5GTy5sZWF2ZV90aW1lKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9LGZ1bmN0aW9uKHJlcyl7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCflrZjlgqh1c2VySW5mb+Wksei0pScsIHJlcyk7XHJcbiAgICAgICAgICAgIGlmKCFwZCl7XHJcbiAgICAgICAgICAgICAgICB3aW5kb3cuR01fSU5GTy5sZWF2ZV90aW1lID0gcGFyc2VJbnQobmV3IERhdGUoKS52YWx1ZU9mKCkvMTAwMCk7XHJcbiAgICAgICAgICAgICAgICBTdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGVhdmVfdGltZVwiLGRhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8v6L6T5YWl56eSLOi/lOWbnumcgOimgeWxleekuuaXtumXtOagvOW8j1xyXG4gICAgZ2V0VGltZU1hcmdpbjooc2Vjb25kKSA9PiB7XHJcbiAgICAgICAgbGV0IHRvdGFsID0gc2Vjb25kO1xyXG4gICAgICAgIGxldCBob3VyID0gcGFyc2VJbnQodG90YWwgLyAoNjAgKiA2MCkpOy8v6K6h566X5pW05pWw5bCP5pe25pWwXHJcbiAgICAgICAgbGV0IGFmdGVySG91ciA9IHRvdGFsIC0gaG91ciAqIDYwICogNjA7Ly/lj5blvpfnrpflh7rlsI/ml7bmlbDlkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICBsZXQgbWluID0gcGFyc2VJbnQoYWZ0ZXJIb3VyIC8gNjApOy8v6K6h566X5pW05pWw5YiGXHJcbiAgICAgICAgbGV0IGFmdGVyTWluID0gdG90YWwgLSBob3VyICogNjAgKiA2MCAtIG1pbiAqIDYwOy8v5Y+W5b6X566X5Ye65YiG5ZCO5Ymp5L2Z55qE56eS5pWwXHJcbiAgICAgICAgcmV0dXJuICfliankvZk6JyArIGhvdXIgKyAnOicgKyBtaW4gKyAnOicgKyBhZnRlck1pblxyXG4gICAgfSxcclxuXHJcbiAgICBnZXRUaW1lTWFyZ2luMjooc2Vjb25kKSA9PiB7XHJcbiAgICAgICAgbGV0IHRvdGFsID0gc2Vjb25kO1xyXG4gICAgICAgIGxldCBob3VyID0gcGFyc2VJbnQodG90YWwgLyAoNjAgKiA2MCkpOy8v6K6h566X5pW05pWw5bCP5pe25pWwXHJcbiAgICAgICAgbGV0IGFmdGVySG91ciA9IHRvdGFsIC0gaG91ciAqIDYwICogNjA7Ly/lj5blvpfnrpflh7rlsI/ml7bmlbDlkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICBsZXQgbWluID0gcGFyc2VJbnQoYWZ0ZXJIb3VyIC8gNjApOy8v6K6h566X5pW05pWw5YiGXHJcbiAgICAgICAgaWYobWluIDwgMTApIG1pbiA9IFwiMFwiK21pbjtcclxuICAgICAgICBsZXQgYWZ0ZXJNaW4gPSB0b3RhbCAtIGhvdXIgKiA2MCAqIDYwIC0gbWluICogNjA7Ly/lj5blvpfnrpflh7rliIblkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICBpZihhZnRlck1pbiA8IDEwKSBhZnRlck1pbiA9IFwiMFwiICsgYWZ0ZXJNaW47XHJcbiAgICAgICAgcmV0dXJuICfliankvZk6JyAgKyBtaW4gKyAnOicgKyBhZnRlck1pblxyXG4gICAgfSxcclxuXHJcbiAgICBzZXRGcmluZEJsb2NrOiBmdW5jdGlvbih1c2VyaWQpe1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5re75Yqg5pe25YCZ55qEdXNlcmlkXCIpO1xyXG4gICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICB1c2VyX2lkOnVzZXJpZFxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZih1c2VyaWQgIT0gd2luZG93Lmdsb2JhbERhdGEuZ2FtZVVzZXJJbmZvLnVzZXJfaWQpe1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIui/m+WIhuS6q+eahOS4jeaYr+iHquW3sVwiKTtcclxuICAgICAgICAgICAgLy8ge1xyXG4gICAgICAgICAgICAgICAgd2luZG93LkdhbWVUb29sLmh0dHBSZXF1ZXN0KHdpbmRvdy5nbG9iYWxEYXRhLmVudHJ5QmxvY2ssIGRhdGEsIGZ1bmN0aW9uIChyZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygn5re75Yqg57qi5YyF5Yqp5Yqb5L+h5oGv5oiQ5YqfJywgcmVzKVxyXG4gICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHJlcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCfmt7vliqDnuqLljIXliqnlipvkv6Hmga/lpLHotKUnLCByZXMpXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIGVsc2V7XHJcbiAgICAgICAgLy8gICAgIGNvbnNvbGUubG9nKFwi6L+b5YWl5YiG5Lqr55qE5piv6Ieq5bexXCIpO1xyXG4gICAgICAgIC8vIH1cclxuICAgIH0sXHJcblxyXG4gICAgLy8gc2V0RnJpbmRCbG9ja01heDogZnVuY3Rpb24odXNlcmlkKXtcclxuICAgIC8vICAgICAvLyBjb25zb2xlLmxvZyhcIua3u+WKoOaXtuWAmeeahHVzZXJpZFwiKTtcclxuICAgIC8vICAgICBsZXQgZGF0YSA9IHtcclxuICAgIC8vICAgICAgICAgdXNlcl9pZDp1c2VyaWRcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyAgICAgLy8gaWYodXNlcmlkICE9IHdpbmRvdy5nbG9iYWxEYXRhLmdhbWVVc2VySW5mby51c2VyX2lkKXtcclxuICAgIC8vICAgICAgICAgLy8gY29uc29sZS5sb2coXCLov5vliIbkuqvnmoTkuI3mmK/oh6rlt7FcIik7XHJcbiAgICAvLyAgICAgICAgIC8vIHtcclxuICAgIC8vICAgICAgICAgICAgIHdpbmRvdy5HYW1lVG9vbC5odHRwUmVxdWVzdCh3aW5kb3cuZ2xvYmFsRGF0YS5lbnRyeUJsb2NrTWF4LCBkYXRhLCBmdW5jdGlvbiAocmVzKSB7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+a3u+WKoOacgOWQjueahOWlveWPi+S/oeaBr+aIkOWKnycsIHJlcylcclxuICAgIC8vICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChyZXMpIHtcclxuICAgIC8vICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygn5re75Yqg5pyA5ZCO55qE5aW95Y+L5L+h5oGv5L+h5oGv5aSx6LSlJywgcmVzKVxyXG4gICAgLy8gICAgICAgICAgICAgfSlcclxuICAgIC8vICAgICAgICAgLy8gfVxyXG4gICAgLy8gICAgIC8vIH1cclxuICAgIC8vICAgICAvLyBlbHNle1xyXG4gICAgLy8gICAgIC8vICAgICBjb25zb2xlLmxvZyhcIui/m+WFpeWIhuS6q+eahOaYr+iHquW3sVwiKTtcclxuICAgIC8vICAgICAvLyB9XHJcbiAgICAvLyB9LFxyXG5cclxuXHJcbiAgICBnZXRTZWVkUmFuZG9tOiBmdW5jdGlvbiAobWluLCBtYXgpIHsvL+WMheWQq21pbiDkuI3ljIXlkKttYXhcclxuICAgICAgICBtYXggPSBtYXggfHwgMTtcclxuICAgICAgICBtaW4gPSBtaW4gfHwgMDtcclxuICAgICAgICBHTV9JTkZPLmN1cnJTZWVkID0gKEdNX0lORk8uY3VyclNlZWQgKiA5MzAxICsgNDkyOTcpICUgMjMzMjgwO1xyXG4gICAgICAgIGxldCBybmQgPSBHTV9JTkZPLmN1cnJTZWVkIC8gMjMzMjgwLjA7XHJcbiAgICAgICAgbGV0IHRtcCA9IG1pbiArIHJuZCAqIChtYXggLSBtaW4pO1xyXG4gICAgICAgIHJldHVybiBwYXJzZUludCh0bXApO1xyXG4gICAgfSxcclxuXHJcbiAgICAvL+WwhuaXtumXtOi9rOaNouS4ujU5OjIzXHJcbiAgICBnZXRUaW1lOiBmdW5jdGlvbih0aW1lKXtcclxuICAgICAgICB2YXIgbGFiZWwgPSBcIlwiO1xyXG4gICAgICAgIHZhciBudW1iZXJfMSA9IHBhcnNlSW50KHRpbWUvNjApO1xyXG4gICAgICAgIHZhciBudW1iZXJfMiA9IHRpbWUtbnVtYmVyXzEqNjA7XHJcbiAgICAgICAgaWYobnVtYmVyXzEgPCAxMCl7XHJcbiAgICAgICAgICAgIG51bWJlcl8xID0gXCIwXCIrbnVtYmVyXzE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKG51bWJlcl8yIDwgMTApe1xyXG4gICAgICAgICAgICBudW1iZXJfMiA9IFwiMFwiK251bWJlcl8yO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsYWJlbCA9IG51bWJlcl8xICsgXCI6XCIgKyBudW1iZXJfMjtcclxuXHJcbiAgICAgICAgcmV0dXJuIGxhYmVsO1xyXG4gICAgfSxcclxuICAgIC8vbnVtYmVyIOS4uuS8oOi/m+adpeeahOaVsOWAvCx0eXBl5Li65pyA5aSa5pi+56S65Yeg5L2N5pWwXHJcbiAgICBnZXROdW1iZXI6IGZ1bmN0aW9uKG51bWJlcix0eXBlKXtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyh0eXBlLFwi6ZyA6KaB6L2s5o2i55qE5pWw5a2X5Li6OlwiLG51bWJlcik7XHJcbiAgICAgICAgdmFyIGNvdW50ID0gMTAwMDtcclxuICAgICAgICB2YXIgcGxhY2UgPSB0eXBlIC0gMztcclxuICAgICAgICBpZihudW1iZXIgPiBNYXRoLnBvdyhjb3VudCw4KSpNYXRoLnBvdygxMCxwbGFjZSkpe1xyXG4gICAgICAgICAgICBpZihudW1iZXIvTWF0aC5wb3coY291bnQsOCkgPCAxMDApXHJcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBwYXJzZUludChudW1iZXIvTWF0aC5wb3coY291bnQsOCkqMTApLzEwK1wiU1wiO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBwYXJzZUludChudW1iZXIvTWF0aC5wb3coY291bnQsOCkpK1wiU1wiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bWJlciA+IE1hdGgucG93KGNvdW50LDcpKk1hdGgucG93KDEwLHBsYWNlKSl7XHJcbiAgICAgICAgICAgIGlmKG51bWJlci9NYXRoLnBvdyhjb3VudCw3KSA8IDEwMClcclxuICAgICAgICAgICAgICAgIG51bWJlciA9IHBhcnNlSW50KG51bWJlci9NYXRoLnBvdyhjb3VudCw3KSoxMCkvMTArXCJzXCI7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIG51bWJlciA9IHBhcnNlSW50KG51bWJlci9NYXRoLnBvdyhjb3VudCw3KSkrXCJzXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYobnVtYmVyID4gTWF0aC5wb3coY291bnQsNikqTWF0aC5wb3coMTAscGxhY2UpKXtcclxuICAgICAgICAgICAgaWYobnVtYmVyL01hdGgucG93KGNvdW50LDYpIDwgMTAwKVxyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gcGFyc2VJbnQobnVtYmVyL01hdGgucG93KGNvdW50LDYpKjEwKS8xMCtcIlFcIjtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gcGFyc2VJbnQobnVtYmVyL01hdGgucG93KGNvdW50LDYpKStcIlFcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihudW1iZXIgPiBNYXRoLnBvdyhjb3VudCw1KSpNYXRoLnBvdygxMCxwbGFjZSkpe1xyXG4gICAgICAgICAgICBpZihudW1iZXIvTWF0aC5wb3coY291bnQsNSkgPCAxMDApXHJcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBwYXJzZUludChudW1iZXIvTWF0aC5wb3coY291bnQsNSkqMTApLzEwK1wicVwiO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBwYXJzZUludChudW1iZXIvTWF0aC5wb3coY291bnQsNSkpK1wicVwiO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihudW1iZXIgPiBNYXRoLnBvdyhjb3VudCw0KSpNYXRoLnBvdygxMCxwbGFjZSkpe1xyXG4gICAgICAgICAgICBpZihudW1iZXIvTWF0aC5wb3coY291bnQsNCkgPCAxMDApXHJcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBwYXJzZUludChudW1iZXIvTWF0aC5wb3coY291bnQsNCkqMTApLzEwK1widFwiO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBwYXJzZUludChudW1iZXIvTWF0aC5wb3coY291bnQsNCkpK1widFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bWJlciA+IE1hdGgucG93KGNvdW50LDMpKk1hdGgucG93KDEwLHBsYWNlKSl7XHJcbiAgICAgICAgICAgIGlmKG51bWJlci9NYXRoLnBvdyhjb3VudCwzKSA8IDEwMClcclxuICAgICAgICAgICAgICAgIG51bWJlciA9IHBhcnNlSW50KG51bWJlci9NYXRoLnBvdyhjb3VudCwzKSoxMCkvMTArXCJiXCI7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIG51bWJlciA9IHBhcnNlSW50KG51bWJlci9NYXRoLnBvdyhjb3VudCwzKSkrXCJiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYobnVtYmVyID4gTWF0aC5wb3coY291bnQsMikqTWF0aC5wb3coMTAscGxhY2UpKXtcclxuICAgICAgICAgICAgaWYobnVtYmVyL01hdGgucG93KGNvdW50LDIpIDwgMTAwKVxyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gcGFyc2VJbnQobnVtYmVyL01hdGgucG93KGNvdW50LDIpKjEwKS8xMCtcIm1cIjtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gcGFyc2VJbnQobnVtYmVyL01hdGgucG93KGNvdW50LDIpKStcIm1cIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihudW1iZXIgPiBNYXRoLnBvdyhjb3VudCwxKSpNYXRoLnBvdygxMCxwbGFjZSkpe1xyXG4gICAgICAgICAgICBpZihudW1iZXIvTWF0aC5wb3coY291bnQsMSkgPCAxMDApe1xyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gcGFyc2VJbnQobnVtYmVyL01hdGgucG93KGNvdW50LDEpKjEwKS8xMCtcImtcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBwYXJzZUludChudW1iZXIvTWF0aC5wb3coY291bnQsMSkpK1wia1wiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBudW1iZXIgPSBwYXJzZUludChudW1iZXIvTWF0aC5wb3coY291bnQsMCkpK1wiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi57uT5p6c5Li6XCIrdHlwZStcIuS9jeaVsFwiLG51bWJlcik7XHJcbiAgICAgICAgcmV0dXJuIG51bWJlcjtcclxuICAgIH0sXHJcblxyXG5cclxuXHJcblxyXG5cclxuICAgIGJlZ2FpblRpbWluZzogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuX3N0YXJ0VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgfSxcclxuXHJcbiAgICBlbmRUaW1pbmc6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIHRoaXMuX2VuZFRpbWUgPSBlbmRUaW1lO1xyXG4gICAgICAgIHRoaXMuX3RvdGFsVGltZSA9IGVuZFRpbWUgLSB0aGlzLl9zdGFydFRpbWU7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldFNjb3JlVGltZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgbGV0IHRlbXBUaW1lID0gZW5kVGltZSAtIHRoaXMuX3N0YXJ0VGltZTtcclxuICAgICAgICBpZiAodGVtcFRpbWUgPCAwIHx8IHRlbXBUaW1lID4gNTAwKSB7XHJcbiAgICAgICAgICAgIHRlbXBUaW1lID0gTWF0aC5yb3VuZChjYy5kaXJlY3Rvci5nZXRBbmltYXRpb25JbnRlcnZhbCgpICogMTAwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEdNX0lORk8uY3VyclNjb3JlICs9IHRlbXBUaW1lO1xyXG4gICAgICAgIHRoaXMuX3N0YXJ0VGltZSA9IGVuZFRpbWU7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldEZvcm1hdFRpbWU6IGZ1bmN0aW9uICh0aW1lKSB7XHJcblxyXG4gICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICBkYXRlLnNldFRpbWUodGltZSk7XHJcblxyXG4gICAgICAgIGxldCBtcyA9IGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCk7XHJcbiAgICAgICAgLy8gbGV0IG1zU3RyaW5nID0gZGF0ZS5nZXRNaWxsaXNlY29uZHMoKTtcclxuICAgICAgICBsZXQgbXNTdHJpbmcgPSBwYXJzZUludChtcyAvIDEwKSAlIDEwMDtcclxuXHJcbiAgICAgICAgbGV0IHNlY29uZFN0cmluZyA9IGRhdGUuZ2V0U2Vjb25kcygpO1xyXG5cclxuICAgICAgICBsZXQgbWluU3RyaW5nID0gZGF0ZS5nZXRNaW51dGVzKCk7XHJcblxyXG4gICAgICAgIGlmIChtc1N0cmluZyA8IDEwKSB7XHJcbiAgICAgICAgICAgIG1zU3RyaW5nID0gXCIwXCIgKyBtc1N0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHNlY29uZFN0cmluZyA8IDEwKSB7XHJcbiAgICAgICAgICAgIHNlY29uZFN0cmluZyA9IFwiMFwiICsgc2Vjb25kU3RyaW5nO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZWNvbmRTdHJpbmcgPSBzZWNvbmRTdHJpbmcgKyBcIjpcIjtcclxuXHJcbiAgICAgICAgaWYgKG1pblN0cmluZyA8IDEwKSB7XHJcbiAgICAgICAgICAgIG1pblN0cmluZyA9IFwiMFwiICsgbWluU3RyaW5nO1xyXG4gICAgICAgIH1cclxuICAgICAgICBtaW5TdHJpbmcgPSBtaW5TdHJpbmcgKyBcIjpcIjtcclxuXHJcbiAgICAgICAgcmV0dXJuIG1pblN0cmluZyArIHNlY29uZFN0cmluZyArIG1zU3RyaW5nO1xyXG5cclxuICAgIH0sXHJcbiAgICBwdXNoTGlzdGVyOmZ1bmN0aW9uICgpIHtcclxuICAgICAgICBcclxuICAgIH0sXHJcbiAgICByZW1vdmVBbGxMaXN0ZXI6ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIFxyXG4gICAgfSxcclxuXHJcbn07Il19
//------QC-SOURCE-SPLIT------
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/Script/GameData.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, 'f2f0bI5PsVI+o18xF6G+KVa', 'GameData');
// Script/GameData.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 GameData = /** @class */ (function (_super) {
__extends(GameData, _super);
function GameData() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.label = null;
_this.text = 'hello';
return _this;
// update (dt) {}
}
GameData_1 = GameData;
// LEVEL_INFO: { number: number; }[];
// LEVEL_INFO:[];
// LIFE-CYCLE CALLBACKS:
GameData.prototype.onLoad = function () {
if (GameData_1._instance == null) {
GameData_1._instance = this;
cc.game.addPersistRootNode(this.node);
this.AudioManager = this.node.getComponent('BallAudioManager');
}
else {
this.node.destroy();
return;
}
};
GameData.prototype.start = function () {
this.GM_INFO = {
// isEnd: false,
mean_Time: 0,
total: 0,
currSeed: 203213,
gameId: '100009',
userId: 200139,
guide: true,
url: "http://api.sparkus.cn",
success: false,
matchId: null,
custom: 0
};
this.LEVEL_INFO = [
{
number: 3,
moveNumber: 0,
moveSpeed: 0,
maxDistance: 200,
maxMove: 1200,
repeat: 0 //是否重叠现在0 不重叠 1 重叠1个
},
{
number: 4,
moveNumber: 0,
moveSpeed: 0,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 4,
moveNumber: 0,
moveSpeed: 0,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 5,
moveNumber: 1,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 5,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 6,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 6,
moveNumber: 3,
moveSpeed: 4,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 7,
moveNumber: 0,
moveSpeed: 4,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 7,
moveNumber: 3,
moveSpeed: 4,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 7,
moveNumber: 3,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 8,
moveNumber: 3,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 8,
moveNumber: 5,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 9,
moveNumber: 3,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 9,
moveNumber: 5,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 10,
moveNumber: 5,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 3,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 4,
moveNumber: 0,
moveSpeed: 0,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 4,
moveNumber: 1,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 4,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 4,
moveNumber: 1,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 5,
moveNumber: 1,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 5,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 5,
moveNumber: 1,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 5,
moveNumber: 2,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 5,
moveNumber: 3,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 5,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 5,
moveNumber: 2,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 6,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 6,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 6,
moveNumber: 2,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 6,
moveNumber: 2,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 6,
moveNumber: 4,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 6,
moveNumber: 2,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 7,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 7,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 7,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 7,
moveNumber: 2,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 7,
moveNumber: 4,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 7,
moveNumber: 2,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 8,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 8,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 8,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 8,
moveNumber: 2,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 8,
moveNumber: 4,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 8,
moveNumber: 2,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 8,
moveNumber: 4,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 9,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
{
number: 9,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 9,
moveNumber: 5,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 1
},
{
number: 10,
moveNumber: 0,
moveSpeed: 6,
maxDistance: 200,
maxMove: 1200,
repeat: 0
},
];
this.CLICK_DATA =
{
type: 1,
success: false,
round: 0,
totalSunCount: 0,
movedSunCount: 0,
sunSpeed: 0,
overlapSunCount: 0,
colorList: [],
duration: 0,
difficultyLevel: 0,
sunList: [],
stepTimeList: [],
remainder: 120
};
this.GAME_DATA = [];
};
GameData.prototype.CLICK_init = function () {
this.CLICK_DATA =
{
type: 1,
success: false,
round: 0,
totalSunCount: 0,
movedSunCount: 0,
sunSpeed: 0,
overlapSunCount: 0,
colorList: [],
duration: 0,
difficultyLevel: 0,
sunList: [],
stepTimeList: [],
remainder: 120
};
};
var GameData_1;
__decorate([
property(cc.Label)
], GameData.prototype, "label", void 0);
__decorate([
property
], GameData.prototype, "text", void 0);
GameData = GameData_1 = __decorate([
ccclass
], GameData);
return GameData;
}(cc.Component));
exports.default = GameData;
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lRGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQXdmQztRQXJmRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7O1FBaWZ2QixpQkFBaUI7SUFDckIsQ0FBQztpQkF4Zm9CLFFBQVE7SUFzQnpCLHFDQUFxQztJQUNyQyxpQkFBaUI7SUFFakIsd0JBQXdCO0lBR3hCLHlCQUFNLEdBQU47UUFDSSxJQUFJLFVBQVEsQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFFO1lBQzVCLFVBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQzFCLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXRDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUNsRTthQUNJO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixPQUFPO1NBQ1Y7SUFDTCxDQUFDO0lBRUQsd0JBQUssR0FBTDtRQUNJLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDWCxnQkFBZ0I7WUFDaEIsU0FBUyxFQUFDLENBQUM7WUFDWCxLQUFLLEVBQUMsQ0FBQztZQUNQLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLE1BQU0sRUFBQyxRQUFRO1lBQ2YsTUFBTSxFQUFDLE1BQU07WUFDYixLQUFLLEVB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QyxFQUFFO2dCQUNWLFlBQVksRUFBQyxFQUFFO2dCQUNmLFNBQVMsRUFBQyxHQUFHO2FBQ2hCLENBQUE7UUFFTCxJQUFJLENBQUMsU0FBUyxHQUFHLEVBRWhCLENBQUE7SUFDTCxDQUFDO0lBRUQsNkJBQVUsR0FBVjtRQUNJLElBQUksQ0FBQyxVQUFVO1lBQ2Y7Z0JBQ0ksSUFBSSxFQUFDLENBQUM7Z0JBQ04sT0FBTyxFQUFDLEtBQUs7Z0JBQ2IsS0FBSyxFQUFDLENBQUM7Z0JBQ1AsYUFBYSxFQUFDLENBQUM7Z0JBQ2YsYUFBYSxFQUFDLENBQUM7Z0JBQ2YsUUFBUSxFQUFDLENBQUM7Z0JBQ1YsZUFBZSxFQUFDLENBQUM7Z0JBQ2pCLFNBQVMsRUFBQyxFQUFFO2dCQUNaLFFBQVEsRUFBQyxDQUFDO2dCQUNWLGVBQWUsRUFBQyxDQUFDO2dCQUNqQixPQUFPLEVBQUMsRUFBRTtnQkFDVixZQUFZLEVBQUMsRUFBRTtnQkFDZixTQUFTLEVBQUMsR0FBRzthQUNoQixDQUFBO0lBQ0wsQ0FBQzs7SUFsZkQ7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzsyQ0FDSTtJQUd2QjtRQURDLFFBQVE7MENBQ2M7SUFOTixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBd2Y1QjtJQUFELGVBQUM7Q0F4ZkQsQUF3ZkMsQ0F4ZnFDLEVBQUUsQ0FBQyxTQUFTLEdBd2ZqRDtrQkF4Zm9CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhbWVEYXRhIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIEdNX0lORk86IHt9O1xyXG4gICAgQXVkaW9NYW5hZ2VyOiBhbnk7XHJcblxyXG4gICAgR0FNRV9EQVRBOiBhbnlbXTtcclxuICAgIExFVkVMX0lORk86IHsgLy/nrKzkuIDpmr7luqZcclxuICAgICAgICBudW1iZXI6IG51bWJlcjsgLy/lpKrpmLPmgLvmlbAgXHJcbiAgICAgICAgbW92ZU51bWJlcjogbnVtYmVyOyAvL+WkqumYs+WPr+enu+WKqOS4quaVsFxyXG4gICAgICAgIG1vdmVTcGVlZDogbnVtYmVyOyAvL+WkqumYs+enu+WKqOmAn+W6puetiee6p1xyXG4gICAgICAgIG1heERpc3RhbmNlOiBudW1iZXI7IC8v5biD5bGA5ZCO56e75Yqo5pyA5aSn6Led56a7XHJcbiAgICAgICAgbWF4TW92ZTogbnVtYmVyOyAvL+WIneWni+W4g+WxgOacgOWkp+enu+WKqOi3neemu1xyXG4gICAgICAgIHJlcGVhdDogbnVtYmVyOyAvL+aYr+WQpumHjeWPoO+8jOeOsOWcqDAg5LiN6YeN5Y+gIDEg6YeN5Y+gMeS4qlxyXG4gICAgfVtdO1xyXG4gICAgQ0xJQ0tfREFUQTogeyB0eXBlOiBudW1iZXI7IHN1Y2Nlc3M6IGJvb2xlYW47IHJvdW5kOiBudW1iZXI7IHRvdGFsU3VuQ291bnQ6IG51bWJlcjsgbW92ZWRTdW5Db3VudDogbnVtYmVyOyBzdW5TcGVlZDogbnVtYmVyOyBvdmVybGFwU3VuQ291bnQ6IG51bWJlcjsgY29sb3JMaXN0OiBhbnlbXTsgZHVyYXRpb246IG51bWJlcjsgZGlmZmljdWx0eUxldmVsOiBudW1iZXI7IHN1bkxpc3Q6IGFueVtdOyBzdGVwVGltZUxpc3Q6IGFueVtdOyByZW1haW5kZXI6IG51bWJlcjsgfTtcclxuXHJcbiAgICAvLyBMRVZFTF9JTkZPOiB7IG51bWJlcjogbnVtYmVyOyB9W107XHJcbiAgICAvLyBMRVZFTF9JTkZPOltdO1xyXG5cclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIFxyXG4gICAgb25Mb2FkICgpIHtcclxuICAgICAgICBpZiAoR2FtZURhdGEuX2luc3RhbmNlID09IG51bGwpIHtcclxuICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlID0gdGhpcztcclxuICAgICAgICAgICAgY2MuZ2FtZS5hZGRQZXJzaXN0Um9vdE5vZGUodGhpcy5ub2RlKTtcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuQXVkaW9NYW5hZ2VyID0gdGhpcy5ub2RlLmdldENvbXBvbmVudCgnQmFsbEF1ZGlvTWFuYWdlcicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgdGhpcy5HTV9JTkZPID0geyBcclxuICAgICAgICAgICAgLy8gaXNFbmQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBtZWFuX1RpbWU6MCwgICAgICAgICAgICAgICAgLy/lubPlnYfmlL7nrq3pgJ/luqZcclxuICAgICAgICAgICAgdG90YWw6MCwgICAgICAgICAgICAgICAgICAgIC8v5oC75YWx5a+555qE5Liq5pWwXHJcbiAgICAgICAgICAgIGN1cnJTZWVkOiAyMDMyMTMsICAgICAgICAgICAvL+eUqOS6jumaj+acuuaVsOenjeWtkFxyXG4gICAgICAgICAgICBnYW1lSWQ6JzEwMDAwOScsXHJcbiAgICAgICAgICAgIHVzZXJJZDoyMDAxMzksXHJcbiAgICAgICAgICAgIGd1aWRlOnRydWUsICAgICAgICAgICAgICAgICAvL+aYr+WQpuacieW8leWvvFxyXG4gICAgICAgICAgICB1cmw6XCJodHRwOi8vYXBpLnNwYXJrdXMuY25cIixcclxuICAgICAgICAgICAgc3VjY2VzczpmYWxzZSxcclxuICAgICAgICAgICAgbWF0Y2hJZDpudWxsLFxyXG4gICAgICAgICAgICBjdXN0b206IDBcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuTEVWRUxfSU5GTyA9IFtcclxuICAgICAgICAgICAgeyAgIC8v56ys5LiA6Zq+5bqmXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6MywgICAgICAgLy/lpKrpmLPmgLvmlbAgXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjAsICAgLy/lpKrpmLPlj6/np7vliqjkuKrmlbBcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDowLCAgICAvL+WkqumYs+enu+WKqOmAn+W6puetiee6p1xyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLCAvL+W4g+WxgOWQjuenu+WKqOacgOWkp+i3neemu1xyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjAgICAgICAgIC8v5piv5ZCm6YeN5Y+g77yM546w5ZyoMCDkuI3ph43lj6AgMSDph43lj6Ax5LiqXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8v56ys5LqM6Zq+5bqmXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6NCxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MCxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDowLFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8v56ys5LiJ6Zq+5bqmXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6NCxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MCxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDowLFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8v56ys5Zub6Zq+5bqmXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6NSxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MSxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo2LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8v56ys5LqU6Zq+5bqmXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6NSxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MCxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo2LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8v56ys5YWt6Zq+5bqmXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6NixcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MCxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo2LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8v56ys5LiD6Zq+5bqmXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6NixcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MyxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo0LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8v56ys5YWr6Zq+5bqmXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6NyxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MCxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo0LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8v56ys5Lmd6Zq+5bqmXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6NyxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MyxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo0LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8v56ys5Y2B6Zq+5bqmXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6NyxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MyxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo2LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8v56ys5Y2B5LiA6Zq+5bqmXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6OCxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MyxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo2LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8v56ys5Y2B5LqM6Zq+5bqmXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6OCxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6NSxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo2LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8v56ys5Y2B5LiJ6Zq+5bqmXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6OSxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6MyxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo2LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjBcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8v56ys5Y2B5Zub6Zq+5bqmXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6OSxcclxuICAgICAgICAgICAgICAgIG1vdmVOdW1iZXI6NSxcclxuICAgICAgICAgICAgICAgIG1vdmVTcGVlZDo2LFxyXG4gICAgICAgICAgICAgICAgbWF4RGlzdGFuY2U6MjAwLFxyXG4gICAgICAgICAgICAgICAgbWF4TW92ZToxMjAwLFxyXG4gICAgICAgICAgICAgICAgcmVwZWF0OjFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8v56ys5Y2B5LqU6Zq+5bqmXHJcbiAgICAgICAgICAgICAgICBudW1iZXI6MTAsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjUsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzExIFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjMsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjAsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDowXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzEyIFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjQsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjAsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6MCxcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDowXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzEzIFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjQsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjEsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDowXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzE0IFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjQsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjAsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzE1IFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjQsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjEsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzE2IFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjUsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjEsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDowXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzE3IFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjUsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjAsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzE4IFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjUsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjEsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzE5IFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjUsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjIsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzIwIFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjUsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjMsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzIxIFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjUsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjAsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzIyIFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjUsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjIsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzIzIFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjYsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjAsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDowXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzI0IFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjYsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjAsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzI1IFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjYsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjIsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDowXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzI2IFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjYsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjIsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzI3IFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjYsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjQsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzI4IFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjYsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjIsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzI5IFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjcsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjAsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDowXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzMwIFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjcsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjAsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzMxIFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjcsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjAsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzMyIFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjcsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjIsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDowXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzMzIFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjcsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjQsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDowXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzM0IFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjcsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjIsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzM1IFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjgsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjAsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDowXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzM2IFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjgsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjAsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzM3IFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjgsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjAsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzM4IFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjgsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjIsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDowXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzM5IFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjgsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjQsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDowXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzQwIFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjgsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjIsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzQxIFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjgsXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjQsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzQyIFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjksXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjAsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDowXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzQzIFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjksXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjAsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzQ0IFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjksXHJcbiAgICAgICAgICAgICAgICBtb3ZlTnVtYmVyOjUsXHJcbiAgICAgICAgICAgICAgICBtb3ZlU3BlZWQ6NixcclxuICAgICAgICAgICAgICAgIG1heERpc3RhbmNlOjIwMCxcclxuICAgICAgICAgICAgICAgIG1heE1vdmU6MTIwMCxcclxuICAgICAgICAgICAgICAgIHJlcGVhdDoxXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvLzQ1IFxyXG4gICAgICAgICAgICAgICAgbnVtYmVyOjEwLFxyXG4gICAgICAgICAgICAgICAgbW92ZU51bWJlcjowLFxyXG4gICAgICAgICAgICAgICAgbW92ZVNwZWVkOjYsXHJcbiAgICAgICAgICAgICAgICBtYXhEaXN0YW5jZToyMDAsXHJcbiAgICAgICAgICAgICAgICBtYXhNb3ZlOjEyMDAsXHJcbiAgICAgICAgICAgICAgICByZXBlYXQ6MFxyXG4gICAgICAgICAgICB9LFxyXG5cclxuXHJcblxyXG4gICAgICAgIF1cclxuXHJcbiAgICAgICAgdGhpcy5DTElDS19EQVRBID0gXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHR5cGU6MSxcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6ZmFsc2UsXHJcbiAgICAgICAgICAgICAgICByb3VuZDowLFxyXG4gICAgICAgICAgICAgICAgdG90YWxTdW5Db3VudDowLFxyXG4gICAgICAgICAgICAgICAgbW92ZWRTdW5Db3VudDowLFxyXG4gICAgICAgICAgICAgICAgc3VuU3BlZWQ6MCxcclxuICAgICAgICAgICAgICAgIG92ZXJsYXBTdW5Db3VudDowLFxyXG4gICAgICAgICAgICAgICAgY29sb3JMaXN0OltdLFxyXG4gICAgICAgICAgICAgICAgZHVyYXRpb246MCxcclxuICAgICAgICAgICAgICAgIGRpZmZpY3VsdHlMZXZlbDowLFxyXG4gICAgICAgICAgICAgICAgc3VuTGlzdDpbXSxcclxuICAgICAgICAgICAgICAgIHN0ZXBUaW1lTGlzdDpbXSxcclxuICAgICAgICAgICAgICAgIHJlbWFpbmRlcjoxMjBcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkdBTUVfREFUQSA9IFtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgXVxyXG4gICAgfVxyXG5cclxuICAgIENMSUNLX2luaXQoKXtcclxuICAgICAgICB0aGlzLkNMSUNLX0RBVEEgPSBcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6MSxcclxuICAgICAgICAgICAgc3VjY2VzczpmYWxzZSxcclxuICAgICAgICAgICAgcm91bmQ6MCxcclxuICAgICAgICAgICAgdG90YWxTdW5Db3VudDowLFxyXG4gICAgICAgICAgICBtb3ZlZFN1bkNvdW50OjAsXHJcbiAgICAgICAgICAgIHN1blNwZWVkOjAsXHJcbiAgICAgICAgICAgIG92ZXJsYXBTdW5Db3VudDowLFxyXG4gICAgICAgICAgICBjb2xvckxpc3Q6W10sXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOjAsXHJcbiAgICAgICAgICAgIGRpZmZpY3VsdHlMZXZlbDowLFxyXG4gICAgICAgICAgICBzdW5MaXN0OltdLFxyXG4gICAgICAgICAgICBzdGVwVGltZUxpc3Q6W10sXHJcbiAgICAgICAgICAgIHJlbWFpbmRlcjoxMjBcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0=
//------QC-SOURCE-SPLIT------
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/Script/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, 'f2518+0IHRGOY+ueIhGtEeA', 'Notification');
// Script/Notification.ts
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Notification = void 0;
//全局通知
var Notification = {
_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.Notification = Notification;
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxOb3RpZmljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsTUFBTTtBQUNOLElBQUksWUFBWSxHQUFHO0lBQ2YsU0FBUyxFQUFFLEVBQUU7SUFDYixFQUFFLEVBQUUsVUFBVSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU07UUFDbEMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUMvQjtRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsSUFBSSxFQUFFLFVBQVUsTUFBTSxFQUFFLFNBQVM7UUFDN0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxJQUFJLEtBQUssS0FBSyxTQUFTO1lBQUUsT0FBTztRQUVoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNuQyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsSUFBSSxPQUFPO2dCQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDakU7SUFDTCxDQUFDO0lBRUQsR0FBRyxFQUFFLFVBQVUsTUFBTSxFQUFFLFFBQVE7UUFDM0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxJQUFJLEtBQUssS0FBSyxTQUFTO1lBQUUsT0FBTztRQUNoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNuQyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7Z0JBQzFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7Z0JBQ3JCLE1BQU07YUFDVDtTQUNKO0lBQ0wsQ0FBQztJQUVELFNBQVMsRUFBRSxVQUFVLE1BQU07UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDdkMsQ0FBQztJQUVELFlBQVksRUFBRTtRQUNWLEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUMxQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDckI7U0FDSjtJQUNMLENBQUM7Q0FDSixDQUFDO0FBRU8sb0NBQVkiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvL+WFqOWxgOmAmuefpVxudmFyIE5vdGlmaWNhdGlvbiA9IHtcbiAgICBfZXZlbnRNYXA6IFtdLFxuICAgIG9uOiBmdW5jdGlvbiAobWFzZ0lkLCBjYWxsYmFjaywgdGFyZ2V0KSB7XG4gICAgICAgIGlmICh0aGlzLl9ldmVudE1hcFttYXNnSWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2V2ZW50TWFwW21hc2dJZF0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9ldmVudE1hcFttYXNnSWRdLnB1c2goeyBjYWxsYmFjazogY2FsbGJhY2ssIHRhcmdldDogdGFyZ2V0IH0pO1xuICAgIH0sXG5cbiAgICBlbWl0OiBmdW5jdGlvbiAobWFzZ0lkLCBwYXJhbWV0ZXIpIHtcbiAgICAgICAgbGV0IGFycmF5ID0gdGhpcy5fZXZlbnRNYXBbbWFzZ0lkXTtcbiAgICAgICAgaWYgKGFycmF5ID09PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IGFycmF5W2ldO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQpIGVsZW1lbnQuY2FsbGJhY2suY2FsbChlbGVtZW50LnRhcmdldCwgcGFyYW1ldGVyKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBvZmY6IGZ1bmN0aW9uIChtYXNnSWQsIGNhbGxiYWNrKSB7XG4gICAgICAgIGxldCBhcnJheSA9IHRoaXMuX2V2ZW50TWFwW21hc2dJZF07XG4gICAgICAgIGlmIChhcnJheSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gYXJyYXlbaV07XG4gICAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNhbGxiYWNrID09PSBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIG9mZk1hc2dJZDogZnVuY3Rpb24gKG1hc2dJZCkge1xuICAgICAgICB0aGlzLl9ldmVudE1hcFttYXNnSWRdID0gdW5kZWZpbmVkO1xuICAgIH0sXG5cbiAgICByZW1vdmVBbGxNc2c6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yIChsZXQgayBpbiB0aGlzLl9ldmVudE1hcCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2V2ZW50TWFwW2tdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vZmZNYXNnSWQoayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnQgeyBOb3RpZmljYXRpb24gfTsiXX0=
//------QC-SOURCE-SPLIT------
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/Script/Helloworld.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, 'e1b90/rohdEk4SdmmEZANaD', 'Helloworld');
// Script/Helloworld.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 GameData_1 = require("./GameData");
var List_1 = require("./ListView/List");
var serverAPI_1 = require("./crypto/serverAPI");
// import { apiSign } from "./crypto/sign";
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
var Helloworld = /** @class */ (function (_super) {
__extends(Helloworld, _super);
function Helloworld() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.Player = null;
_this.selfNode = null;
_this.phone = null;
return _this;
}
Helloworld.prototype.onLoad = function () {
this.rankList = cc.find("ScrollView", this.node).getComponent(List_1.default);
this.listData = [];
this.selfData = null;
this.rankNumber = 100;
this.rankTotal = 100;
this.selfNode.opacity = 0;
};
Helloworld.prototype.start = function () {
this.getRank();
};
Helloworld.prototype.getRankData = function (data) {
if (data) {
console.log(data);
this.listData = data.data.list;
this.selfData = data.data.info;
var rankData = [];
var self = false;
for (var i = 0; i <= this.listData.length - 1; i++) {
rankData.push({ rank: (i + 1), name: this.listData[i].nickName, total: this.listData[i].totalSunCount, pic: this.listData[i].pic });
if (GameData_1.default._instance.GM_INFO.userId == this.listData[i].userId) {
self = true;
this.rankNumber = i;
this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = (i + 1) + "";
}
if (i == (this.listData.length - 1) && self == false) {
this.rankNumber = i;
this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = "99+";
}
}
this.rankList.setData(rankData);
if (this.selfData.nickName.length > 6) {
this.selfData.nickName = this.selfData.nickName.substring(0, 6) + "...";
}
this.selfNode.getChildByName("nameLab").getComponent(cc.Label).string = this.selfData.nickName;
this.selfNode.getChildByName("totalLab").getComponent(cc.Label).string = this.selfData.totalSunCount;
this.setPic(this.selfData.pic);
this.setPic2(this.selfData.pic);
if (this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string == "1") {
this.selfNode.getChildByName("rank").getChildByName("one").active = true;
}
else if (this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string == "2") {
this.selfNode.getChildByName("rank").getChildByName("two").active = true;
}
else if (this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string == "3") {
this.selfNode.getChildByName("rank").getChildByName("three").active = true;
}
else {
// this.selfNode.getChildByName("four").active = true;
}
this.selfNode.opacity = 255;
}
};
Helloworld.prototype.backClick = function () {
cc.director.loadScene("LoadScene");
};
Helloworld.prototype.playerAction = function () {
var _this = this;
//-254 377 210 453
var time = 1;
this.tween = cc.tween(this.Player)
.to(2, { position: cc.v3(210, 453, 0) })
.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;
}
}
setTimeout(function () {
if (_this.tween)
_this.tween.stop();
}, time * 2000);
};
Helloworld.prototype.getRank = function () {
var postData = {
"page": 1,
"pageSize": 100
};
serverAPI_1.default.rankData(2, this.getRankData.bind(this), postData);
};
Helloworld.prototype.setPic = function (pic) {
var _this = this;
this.phone.node.parent.getChildByName("icon").active = false;
this.phone.node.active = false;
var url = pic;
fetch(url)
.then(function (response) {
return response.headers.get('Content-Length');
})
.then(function (errNo) {
if (errNo == "5093") {
_this.phone.node.parent.getChildByName("icon").active = true;
}
})
.catch(function (error) {
console.error('Error fetching X-Info:', error);
});
var self = this;
cc.assetManager.loadRemote(url, { ext: '.jpg' }, function (err, texture) {
if (texture) {
_this.phone.node.active = true;
self.phone.spriteFrame = new cc.SpriteFrame(texture);
}
else {
console.log(err, texture);
}
});
};
Helloworld.prototype.setPic2 = function (pic) {
var _this = this;
this.Player.getChildByName("mask").getChildByName("icon").active = false;
this.Player.getChildByName("mask").getChildByName("phone").active = false;
var url = pic;
fetch(url)
.then(function (response) {
return response.headers.get('Content-Length');
})
.then(function (errNo) {
if (errNo == "5093") {
_this.Player.getChildByName("mask").getChildByName("icon").active = true;
}
})
.catch(function (error) {
console.error('Error fetching X-Info:', error);
});
var self = this;
cc.assetManager.loadRemote(url, { ext: '.jpg' }, function (err, texture) {
if (texture) {
_this.Player.getChildByName("mask").getChildByName("phone").active = true;
_this.Player.getChildByName("mask").getChildByName("phone").getComponent(cc.Sprite)
.spriteFrame = new cc.SpriteFrame(texture);
setTimeout(function () {
_this.playerAction();
}, 500);
// console.log("设置头像成功",err);
}
else {
// console.log("设置头像失败",url);
console.log(err, texture);
setTimeout(function () {
_this.playerAction();
}, 500);
}
});
};
__decorate([
property(cc.Node)
], Helloworld.prototype, "Player", void 0);
__decorate([
property(cc.Node)
], Helloworld.prototype, "selfNode", void 0);
__decorate([
property(cc.Sprite)
], Helloworld.prototype, "phone", void 0);
Helloworld = __decorate([
ccclass
], Helloworld);
return Helloworld;
}(cc.Component));
exports.default = Helloworld;
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxIZWxsb3dvcmxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUFrQztBQUNsQyx3Q0FBbUM7QUFDbkMsZ0RBQTBDO0FBQzFDLDJDQUEyQztBQUVyQyxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUc1QztJQUF3Qyw4QkFBWTtJQUFwRDtRQUFBLHFFQTRLQztRQXpLRyxZQUFNLEdBQVksSUFBSSxDQUFDO1FBR3ZCLGNBQVEsR0FBWSxJQUFJLENBQUM7UUFHekIsV0FBSyxHQUFjLElBQUksQ0FBQzs7SUFtSzVCLENBQUM7SUExSkcsMkJBQU0sR0FBTjtRQUNJLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxjQUFJLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFFLEdBQUcsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELDBCQUFLLEdBQUw7UUFDSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELGdDQUFXLEdBQVgsVUFBWSxJQUFJO1FBQ1osSUFBRyxJQUFJLEVBQUM7WUFDSixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDL0IsSUFBSSxDQUFD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QUFHLENBQUMsQ0FBQztnQkFDUiw2QkFBNkI7YUFDaEM7aUJBQ0c7Z0JBQ0EsNkJBQTZCO2dCQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBQyxPQUFPLENBQUMsQ0FBQTtnQkFDeEIsVUFBVSxDQUFDO29CQUNQLEtBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDeEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQ1g7UUFDTCxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUF2S0Q7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzs4Q0FDSztJQUd2QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO2dEQUNPO0lBR3pCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7NkNBQ0k7SUFUUCxVQUFVO1FBRDlCLE9BQU87T0FDYSxVQUFVLENBNEs5QjtJQUFELGlCQUFDO0NBNUtELEFBNEtDLENBNUt1QyxFQUFFLENBQUMsU0FBUyxHQTRLbkQ7a0JBNUtvQixVQUFVIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEdhbWVEYXRhIGZyb20gXCIuL0dhbWVEYXRhXCI7XHJcbmltcG9ydCBMaXN0IGZyb20gXCIuL0xpc3RWaWV3L0xpc3RcIjtcclxuaW1wb3J0IEh0dHBVdGlsIGZyb20gXCIuL2NyeXB0by9zZXJ2ZXJBUElcIjtcclxuLy8gaW1wb3J0IHsgYXBpU2lnbiB9IGZyb20gXCIuL2NyeXB0by9zaWduXCI7XHJcblxyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSGVsbG93b3JsZCBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBQbGF5ZXI6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgc2VsZk5vZGU6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGUpXHJcbiAgICBwaG9uZTogY2MuU3ByaXRlID0gbnVsbDtcclxuXHJcbiAgICBwcml2YXRlIHJhbmtMaXN0OiBMaXN0OyAgICAgICAgIC8v5o6S6KGM5qacXHJcbiAgICB0d2VlbjogY2MuVHdlZW48Y2MuTm9kZT47XHJcbiAgICBsaXN0RGF0YTogYW55O1xyXG4gICAgc2VsZkRhdGE6IGFueTtcclxuICAgIHJhbmtOdW1iZXI6IG51bWJlcjtcclxuICAgIHJhbmtUb3RhbDogbnVtYmVyO1xyXG5cclxuICAgIG9uTG9hZCgpIHtcclxuICAgICAgICB0aGlzLnJhbmtMaXN0ID0gY2MuZmluZChcIlNjcm9sbFZpZXdcIiwgdGhpcy5ub2RlKS5nZXRDb21wb25lbnQoTGlzdCk7XHJcbiAgICAgICAgdGhpcy5saXN0RGF0YSA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZkRhdGEgPSBudWxsO1xyXG4gICAgICAgIHRoaXMucmFua051bWJlciA9IDEwMDtcclxuICAgICAgICB0aGlzLnJhbmtUb3RhbD0gMTAwO1xyXG4gICAgICAgIHRoaXMuc2VsZk5vZGUub3BhY2l0eSA9IDA7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHN0YXJ0KCkge1xyXG4gICAgICAgIHRoaXMuZ2V0UmFuaygpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFJhbmtEYXRhKGRhdGEpe1xyXG4gICAgICAgIGlmKGRhdGEpe1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICAgICAgdGhpcy5saXN0RGF0YSA9IGRhdGEuZGF0YS5saXN0O1xyXG4gICAgICAgICAgICB0aGlzLnNlbGZEYXRhID0gZGF0YS5kYXRhLmluZm87XHJcbiAgICAgICAgICAgIGxldCByYW5rRGF0YSA9IFtdO1xyXG4gICAgICAgICAgICBsZXQgc2VsZiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDtpPD10aGlzLmxpc3REYXRhLmxlbmd0aC0xO2krKyl7XHJcbiAgICAgICAgICAgICAgICByYW5rRGF0YS5wdXNoKHtyYW5rOihpKzEpLCBuYW1lOnRoaXMubGlzdERhdGFbaV0ubmlja05hbWUsIHRvdGFsOnRoaXMubGlzdERhdGFbaV0udG90YWxTdW5Db3VudCwgcGljOnRoaXMubGlzdERhdGFbaV0ucGljfSk7XHJcbiAgICAgICAgICAgICAgICBpZihHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy51c2VySWQgPT0gdGhpcy5saXN0RGF0YVtpXS51c2VySWQpe1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmFua051bWJlciA9IGk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPShpKzEpICsgXCJcIjsgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZihpID09ICh0aGlzLmxpc3REYXRhLmxlbmd0aC0xKSAmJiBzZWxmID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJhbmtOdW1iZXIgPSBpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gXCI5OStcIjsgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5yYW5rTGlzdC5zZXREYXRhKHJhbmtEYXRhKTtcclxuICAgICAgICAgICAgaWYodGhpcy5zZWxmRGF0YS5uaWNrTmFtZS5sZW5ndGggPiA2KXtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZkRhdGEubmlja05hbWU9IHRoaXMuc2VsZkRhdGEubmlja05hbWUuc3Vic3RyaW5nKDAsNikgKyBcIi4uLlwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcIm5hbWVMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLnNlbGZEYXRhLm5pY2tOYW1lO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwidG90YWxMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLnNlbGZEYXRhLnRvdGFsU3VuQ291bnQ7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0UGljKHRoaXMuc2VsZkRhdGEucGljKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRQaWMyKHRoaXMuc2VsZkRhdGEucGljKTtcclxuICAgICAgICAgICAgaWYodGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPT0gXCIxXCIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJvbmVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID09IFwiMlwiKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidHdvXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZih0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9PSBcIjNcIil7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcInRocmVlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJmb3VyXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZWxmTm9kZS5vcGFjaXR5ID0gMjU1O1xyXG5cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBiYWNrQ2xpY2soKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJMb2FkU2NlbmVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgcGxheWVyQWN0aW9uKCl7XHJcbiAgICAgICAgLy8tMjU0IDM3NyAgMjEwIDQ1M1xyXG4gICAgICAgIGxldCB0aW1lID0gMTtcclxuICAgICAgICB0aGlzLnR3ZWVuID0gY2MudHdlZW4odGhpcy5QbGF5ZXIpXHJcbiAgICAgICAgLnRvKDIse3Bvc2l0aW9uOmNjLnYzKDIxMCw0NTMsMCl9KVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgIHRpbWUgPSAodGhpcy5saXN0RGF0YS5sZW5ndGggLSB0aGlzLnJhbmtOdW1iZXIpL3RoaXMubGlzdERhdGEubGVuZ3RoO1xyXG4gICAgICAgIGlmKHRoaXMubGlzdERhdGEubGVuZ3RoID49IDk5KXtcclxuICAgICAgICAgICAgaWYodGhpcy5yYW5rTnVtYmVyID49IDk5KXtcclxuICAgICAgICAgICAgICAgIHRpbWUgPSAoTWF0aC5yYW5kb20oKSo0OSsxKS8xMDBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZih0aGlzLnR3ZWVuKXRoaXMudHdlZW4uc3RvcCgpO1xyXG4gICAgICAgIH0sIHRpbWUqMjAwMCk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGdldFJhbmsoKXtcclxuICAgICAgICBsZXQgcG9zdERhdGEgPSB7XHJcbiAgICAgICAgICAgIFwicGFnZVwiOjEsXHJcbiAgICAgICAgICAgIFwicGFnZVNpemVcIjoxMDBcclxuICAgICAgICB9OyBcclxuICAgICAgICBIdHRwVXRpbC5yYW5rRGF0YSgyLHRoaXMuZ2V0UmFua0RhdGEuYmluZCh0aGlzKSxwb3N0RGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldFBpYyhwaWMpe1xyXG4gICAgICAgIHRoaXMucGhvbmUubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucGhvbmUubm9kZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBsZXQgdXJsID0gcGljO1xyXG4gICAgICAgIGZldGNoKHVybClcclxuICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5oZWFkZXJzLmdldCgnQ29udGVudC1MZW5ndGgnKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC50aGVuKGVyck5vID0+IHtcclxuICAgICAgICAgICAgaWYoZXJyTm8gPT0gXCI1MDkzXCIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5waG9uZS5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgWC1JbmZvOicsIGVycm9yKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgY2MuYXNzZXRNYW5hZ2VyLmxvYWRSZW1vdGUodXJsLCB7ZXh0OicuanBnJ30sKGVyciwgdGV4dHVyZTpjYy5UZXh0dXJlMkQpID0+IHtcclxuICAgICAgICAgICAgaWYodGV4dHVyZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBob25lLm5vZGUuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHNlbGYucGhvbmUuc3ByaXRlRnJhbWUgPSBuZXcgY2MuU3ByaXRlRnJhbWUodGV4dHVyZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycix0ZXh0dXJlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0UGljMihwaWMpe1xyXG4gICAgICAgIHRoaXMuUGxheWVyLmdldENoaWxkQnlOYW1lKFwibWFza1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJtYXNrXCIpLmdldENoaWxkQnlOYW1lKFwicGhvbmVcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgbGV0IHVybCA9IHBpYztcclxuICAgICAgICBmZXRjaCh1cmwpXHJcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ0NvbnRlbnQtTGVuZ3RoJyk7XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgLnRoZW4oZXJyTm8gPT4ge1xyXG4gICAgICAgICAgICBpZihlcnJObyA9PSBcIjUwOTNcIil7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIFgtSW5mbzonLCBlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIGNjLmFzc2V0TWFuYWdlci5sb2FkUmVtb3RlKHVybCwge2V4dDonLmpwZyd9LChlcnIsIHRleHR1cmU6Y2MuVGV4dHVyZTJEKSA9PiB7XHJcbiAgICAgICAgICAgIGlmKHRleHR1cmUpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJtYXNrXCIpLmdldENoaWxkQnlOYW1lKFwicGhvbmVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuUGxheWVyLmdldENoaWxkQnlOYW1lKFwibWFza1wiKS5nZXRDaGlsZEJ5TmFtZShcInBob25lXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpXHJcbiAgICAgICAgICAgICAgICAuc3ByaXRlRnJhbWUgPSBuZXcgY2MuU3ByaXRlRnJhbWUodGV4dHVyZSk7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXllckFjdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi6K6+572u5aS05YOP5oiQ5YqfXCIsZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLorr7nva7lpLTlg4/lpLHotKVcIix1cmwpO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyLHRleHR1cmUpXHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYXllckFjdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgfSwgNTAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
//------QC-SOURCE-SPLIT------
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/Script/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, 'b5d92kgCRlKu5IYKnaGPgoa', 'Storage');
// Script/Storage.js
"use strict";
// var jequry = require("jquery");
// var coinManager = require("coinManager");
var StorageMessage = {
getStorage: function getStorage(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 setStorage(key, value) {
//主动拉起分享接口
var temp = JSON.stringify(value);
cc.sys.localStorage.setItem(key, temp); // debugger;
// var temp = cc.sys.localStorage.getItem(key);
// debugger;
},
removeStorage: function removeStorage(key) {
//主动删除消息接口
if (cc.sys.localStorage.getItem(key)) {
cc.sys.localStorage.removeItem(key);
}
}
};
module.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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTdG9yYWdlLmpzIl0sIm5hbWVzIjpbIlN0b3JhZ2VNZXNzYWdlIiwiZ2V0U3RvcmFnZSIsImtleSIsInJlc3VsdCIsImNjIiwic3lzIiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsIkpTT04iLCJwYXJzZSIsInNldFN0b3JhZ2UiLCJ2YWx1ZSIsInRlbXAiLCJzdHJpbmdpZnkiLCJzZXRJdGVtIiwicmVtb3ZlU3RvcmFnZSIsInJlbW92ZUl0ZW0iLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFDQSxJQUFJQSxjQUFjLEdBQUc7QUFDakJDLEVBQUFBLFVBQVUsRUFBRyxvQkFBU0MsR0FBVCxFQUFhO0FBQ3RCLFFBQUlDLE1BQU0sR0FBRyxJQUFiOztBQUNBLFFBQUdDLEVBQUUsQ0FBQ0MsR0FBSCxDQUFPQyxZQUFQLENBQW9CQyxPQUFwQixDQUE0QkwsR0FBNUIsQ0FBSCxFQUFvQztBQUNsQyxVQUFJQyxNQUFNLEdBQUdDLEVBQUUsQ0FBQ0MsR0FBSCxDQUFPQyxZQUFQLENBQW9CQyxPQUFwQixDQUE0QkwsR0FBNUIsQ0FBYjtBQUNEOztBQUVELFFBQUdDLE1BQUgsRUFBVTtBQUNSQSxNQUFBQSxNQUFNLEdBQUdLLElBQUksQ0FBQ0MsS0FBTCxDQUFXTixNQUFYLENBQVQ7QUFDRDs7QUFDRCxXQUFPQSxNQUFQO0FBQ0gsR0FYZ0I7QUFZakJPLEVBQUFBLFVBQVUsRUFBRyxvQkFBU1IsR0FBVCxFQUFhUyxLQUFiLEVBQW1CO0FBQzVCO0FBQ0EsUUFBSUMsSUFBSSxHQUFHSixJQUFJLENBQUNLLFNBQUwsQ0FBZUYsS0FBZixDQUFYO0FBQ0FQLElBQUFBLEVBQUUsQ0FBQ0MsR0FBSCxDQUFPQyxZQUFQLENBQW9CUSxPQUFwQixDQUE0QlosR0FBNUIsRUFBaUNVLElBQWpDLEVBSDRCLENBSTVCO0FBQ0E7QUFDQTtBQUNILEdBbkJnQjtBQW9CakJHLEVBQUFBLGFBQWEsRUFBRyx1QkFBU2IsR0FBVCxFQUFhO0FBQzNCO0FBQ0EsUUFBR0UsRUFBRSxDQUFDQyxHQUFILENBQU9DLFlBQVAsQ0FBb0JDLE9BQXBCLENBQTRCTCxHQUE1QixDQUFILEVBQW9DO0FBQ2xDRSxNQUFBQSxFQUFFLENBQUNDLEdBQUgsQ0FBT0MsWUFBUCxDQUFvQlUsVUFBcEIsQ0FBK0JkLEdBQS9CO0FBQ0Q7QUFDRjtBQXpCZ0IsQ0FBckI7QUE0QkFlLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNmbEIsRUFBQUEsY0FBYyxFQUFFQTtBQURELENBQWpCIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIHZhciBqZXF1cnkgPSByZXF1aXJlKFwianF1ZXJ5XCIpO1xuLy8gdmFyIGNvaW5NYW5hZ2VyID0gcmVxdWlyZShcImNvaW5NYW5hZ2VyXCIpO1xudmFyIFN0b3JhZ2VNZXNzYWdlID0ge1xuICAgIGdldFN0b3JhZ2UgOiBmdW5jdGlvbihrZXkpe1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVsbDtcbiAgICAgICAgaWYoY2Muc3lzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpe1xuICAgICAgICAgIHZhciByZXN1bHQgPSBjYy5zeXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYocmVzdWx0KXtcbiAgICAgICAgICByZXN1bHQgPSBKU09OLnBhcnNlKHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIHNldFN0b3JhZ2UgOiBmdW5jdGlvbihrZXksdmFsdWUpe1xuICAgICAgICAvL+S4u+WKqOaLiei1t+WIhuS6q+aOpeWPo1xuICAgICAgICB2YXIgdGVtcCA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgY2Muc3lzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdGVtcClcbiAgICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAgIC8vIHZhciB0ZW1wID0gY2Muc3lzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgIH0sXG4gICAgcmVtb3ZlU3RvcmFnZSA6IGZ1bmN0aW9uKGtleSl7XG4gICAgICAvL+S4u+WKqOWIoOmZpOa2iOaBr+aOpeWPo1xuICAgICAgaWYoY2Muc3lzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpe1xuICAgICAgICBjYy5zeXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KVxuICAgICAgfVxuICAgIH0sXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgU3RvcmFnZU1lc3NhZ2U6IFN0b3JhZ2VNZXNzYWdlLFxufSJdfQ==
//------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";
// 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 GameData_1 = require("./GameData");
var Notification_1 = require("./Notification");
var serverAPI_1 = require("./crypto/serverAPI");
var GameManager = /** @class */ (function (_super) {
__extends(GameManager, _super);
function GameManager() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.ball = null;
_this.qiu1 = null;
_this.qiu2 = null;
_this.qiu3 = null;
_this.linePrefab = null;
_this.hit = null;
_this.bg1 = null;
_this.bg2 = null;
_this.time = null;
// LIFE-CYCLE CALLBACKS:
_this.begin = false;
_this.fuhuo = false;
_this.over = false;
_this.show = false;
_this.levelLabel = null;
return _this;
}
GameManager.prototype.onLoad = function () {
};
GameManager.prototype.start = function () {
this.fit();
this.init();
};
GameManager.prototype.fit = function () {
this.fitTop = 450; //600
this.fitBot = -600; //-700
var jg = this.setFit();
if (!jg) {
this.fitTop = 600;
this.fitBot = -700;
}
};
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.init = function () {
this.node.getChildByName("GameOver").zIndex = 100;
this.node.getChildByName("GameOver").active = false;
this.ball.zIndex = 100;
this.bg1 = this.node.getChildByName("bg1");
this.bg2 = this.node.getChildByName("bg2");
this.time = this.node.getChildByName("Top").getChildByName("time").getComponent(cc.Label);
this.node.getChildByName("showBtn").active = false;
this.begin = false;
this.over = false;
this.fuhuo = true;
this.pause = true;
this.show = false;
this.round = 0;
this.level = 2;
this.countTime = 60;
if (GameData_1.default._instance.GM_INFO.custom != 0) {
this.level = GameData_1.default._instance.GM_INFO.custom;
// this.levelLabel.string = this.level + "";
GameData_1.default._instance.GM_INFO.custom += 1;
this.countTime = 12000000;
}
// this.levelLabel.string = this.level + "";
this.timeCount = 0.1;
this.clickNow = 0;
this.clickCount = 0;
this.timeStart = 0;
this.repeat = -1;
this.numberRepeat = -1;
this.route_Array = [];
this.moveArray = [];
this.now_Array = [];
this.ball_Array = [];
this.Pos_Array = [];
this.time_Array = [];
this.color_Array = [];
GameData_1.default._instance.GAME_DATA = [];
GameData_1.default._instance.GM_INFO.success = false;
this.startTime = 0;
this.overTime = 0;
this.winTime = 0;
GameData_1.default._instance.GM_INFO.total = 0;
GameData_1.default._instance.GM_INFO.mean_Time = 0;
this.schedule(this.updateCountDownTime, 1);
this.startGame();
};
GameManager.prototype.backScene = function () {
cc.director.loadScene("LoadScene");
};
//下一关或者重新开始或者返回上一关根据level决定
GameManager.prototype.reStart = function (type) {
// if(GameData._instance.GM_INFO.custom != 0){
// cc.director.loadScene("LoadScene");
// return;
// }
this.node.getChildByName("showBtn").active = false;
this.destroyLine();
this.timeCount = 0.1;
this.clickNow = 0;
this.timeStart = 0;
this.repeat = -1;
this.numberRepeat = -1;
this.begin = false;
this.route_Array = [];
this.now_Array = [];
this.ball_Array = [];
this.Pos_Array = [];
this.moveArray = [];
this.time_Array = [];
this.color_Array = [];
if (type == 0) {
this.bgMove(1);
}
else if (type == 1) {
this.startGame();
}
else if (type == 2) {
this.bgMove(-1);
}
};
GameManager.prototype.begin_Guide = function () {
};
//获取时间戳
GameManager.prototype.getTime = function () {
var timestamp = new Date().getTime();
return timestamp;
};
//获胜
GameManager.prototype.passLevel = function () {
var _this = this;
this.destroyLine();
if (this.over == false && this.countTime >= 0) {
var timeArray_1 = [];
var timeCount = 0;
var ball_1 = this.ball_Array[0];
for (var i = 1; i < this.ball_Array.length; i++) {
var time = this.calculateDistance2(this.ball_Array[i].x, this.ball_Array[i].y, this.ball_Array[i - 1].x, this.ball_Array[i - 1].y);
timeArray_1.push(time);
}
var _loop_1 = function (k) {
setTimeout(function () {
cc.tween(ball_1)
.to(timeArray_1[k - 1], { x: _this.ball_Array[k].x, y: _this.ball_Array[k].y })
.call(function () {
_this.ball_Array[k].active = false;
if (k == _this.ball_Array.length - 1) {
setTimeout(function () {
_this.ball.opacity = 255;
_this.ball.position = cc.v3(ball_1.x, ball_1.y, 0);
ball_1.active = false;
_this.clearSun();
_this.reStart(0);
}, 200);
}
})
.start();
}, timeCount * 1000);
timeCount += (timeArray_1[k - 1] + 0.1);
};
for (var k = 1; k < this.ball_Array.length; k++) {
_loop_1(k);
}
}
};
//失败
GameManager.prototype.loseLevel = function (type) {
var _this = this;
this.destroyLine();
if (this.over == false && this.countTime >= 0) {
var ball_2 = this.ball_Array[0];
var _loop_2 = function (k) {
cc.tween(this_1.ball_Array[k])
.to(2, { x: ball_2.x, y: ball_2.y })
.call(function () {
_this.ball_Array[k].active = false;
if (k == _this.ball_Array.length - 1) {
_this.ball.opacity = 255;
_this.ball.position = cc.v3(ball_2.x, ball_2.y, 0);
_this.clearSun();
_this.reStart(type);
}
})
.start();
};
var this_1 = this;
for (var k = 1; k < this.ball_Array.length; k++) {
_loop_2(k);
}
}
};
GameManager.prototype.clearSun = function () {
for (var k = 0; k < this.ball_Array.length; k++) {
this.ball_Array[k].removeFromParent();
this.ball_Array[k] = null;
}
};
//点击太阳执行方法
GameManager.prototype.clickSun = function (data) {
var _this = this;
if (this.begin == true) {
this.clickCount += 1;
var clickTime = this.getTime();
this.time_Array.push((clickTime - this.timeStart));
this.timeStart = this.getTime();
if (data == this.clickNow) {
GameData_1.default._instance.AudioManager.playAudioButton();
if (this.clickNow > 0) {
this.createLine(cc.v2(this.ball_Array[this.clickNow - 1].x, this.ball_Array[this.clickNow - 1].y), cc.v2(this.ball_Array[this.clickNow].x, this.ball_Array[this.clickNow].y), 0.2);
}
this.clickNow += 1;
// GameData._instance.GM_INFO.total += 1;
setTimeout(function () {
if (_this.ball_Array[_this.clickNow - 1])
_this.ball_Array[_this.clickNow - 1].getChildByName("guang").active = false;
}, 200);
if (this.clickNow == this.now_Array.length) {
this.pause = true;
GameData_1.default._instance.GM_INFO.total += this.clickNow;
this.overTime = this.getTime();
GameData_1.default._instance.GM_INFO.mean_Time += (this.overTime - this.startTime);
console.log(GameData_1.default._instance.GM_INFO.mean_Time);
var finish_time = parseInt((this.overTime - this.startTime) / 100 + "");
this.startTime = 0;
this.overTime = 0;
var color = "y";
if (this.level < 4 && this.level > 1)
color = "yr";
else if (this.level >= 4)
color = "yrb";
var win_1 = this.node.getChildByName("Win");
win_1.active = true;
win_1.setScale(0);
GameData_1.default._instance.AudioManager.playWin();
this.round += 1;
var sunArray = [];
if (this.moveArray.length > 0) {
for (var m = 0; m < this.moveArray.length; m++) {
if (m == this.repeat || m == this.numberRepeat) {
this.moveArray[m] = 2;
}
sunArray.push(this.moveArray[m]);
}
}
else {
for (var m = 0; m < this.ball_Array.length; m++) {
if (m == this.repeat || m == this.numberRepeat) {
sunArray.push(2);
}
else
sunArray.push(0);
}
}
GameData_1.default._instance.CLICK_DATA =
{
type: 1,
success: true,
round: this.round,
totalSunCount: this.now_Array.length,
movedSunCount: GameData_1.default._instance.LEVEL_INFO[this.level - 1].moveNumber,
sunSpeed: GameData_1.default._instance.LEVEL_INFO[this.level - 1].moveSpeed,
overlapSunCount: GameData_1.default._instance.LEVEL_INFO[this.level - 1].repeat,
colorList: this.color_Array,
duration: finish_time / 10,
difficultyLevel: this.level,
sunList: sunArray,
stepTimeList: this.time_Array,
remainder: this.countTime
};
this.outPut();
this.setData();
cc.tween(win_1)
.delay(0.4)
.to(0.01, { scale: 2.5 })
.to(0.35, { scale: 1 })
.delay(0.4)
.call(function () {
win_1.active = false;
_this.destroyLine();
if (_this.over == false && _this.countTime >= 0) {
if (_this.level >= 15) {
GameData_1.default._instance.GM_INFO.success = true;
_this.level += 0;
// this.levelLabel.string = this.level + "";
_this.fuhuo = true;
_this.passLevel();
}
else {
_this.level += 1;
// this.levelLabel.string = this.level + "";
_this.fuhuo = true;
_this.passLevel();
}
}
})
.start();
}
}
else {
this.setLoss();
}
// this.hitAction(data)
}
};
GameManager.prototype.setLoss = function () {
GameData_1.default._instance.AudioManager.playWarning();
this.begin = false;
this.overTime = this.getTime();
GameData_1.default._instance.GM_INFO.mean_Time += (this.overTime - this.startTime);
console.log(GameData_1.default._instance.GM_INFO.mean_Time);
var finish_time = parseInt((this.overTime - this.startTime) / 100 + "");
this.startTime = 0;
this.overTime = 0;
var color = "y";
if (this.level < 4 && this.level > 1)
color = "yr";
else if (this.level >= 4)
color = "yrb";
this.round += 1;
var sunArray = [];
if (this.moveArray.length > 0) {
for (var m = 0; m < this.moveArray.length; m++) {
if (m == this.repeat || m == this.numberRepeat) {
this.moveArray[m] = 2;
}
sunArray.push(this.moveArray[m]);
}
}
else {
for (var m = 0; m < this.ball_Array.length; m++) {
if (m == this.repeat || m == this.numberRepeat) {
sunArray.push(2);
}
else
sunArray.push(0);
}
}
GameData_1.default._instance.CLICK_DATA =
{
type: 1,
success: false,
round: this.round,
totalSunCount: this.now_Array.length,
movedSunCount: GameData_1.default._instance.LEVEL_INFO[this.level - 1].moveNumber,
sunSpeed: GameData_1.default._instance.LEVEL_INFO[this.level - 1].moveSpeed,
overlapSunCount: GameData_1.default._instance.LEVEL_INFO[this.level - 1].repeat,
colorList: this.color_Array,
duration: finish_time / 10,
difficultyLevel: this.level,
sunList: sunArray,
stepTimeList: this.time_Array,
remainder: this.countTime
};
this.outPut();
this.setData();
if (this.fuhuo == true) {
this.fuhuo = false;
this.loseLevel(1);
}
else {
if (this.level > 2) {
this.level -= 1;
// this.levelLabel.string = this.level + "";
this.fuhuo = true;
// this.fuhuo = false;
this.loseLevel(2);
}
else {
this.loseLevel(1);
}
}
var over = this.node.getChildByName("Over");
cc.tween(over)
.to(0.25, { opacity: 255 })
.delay(0.1)
.to(0.2, { opacity: 0 })
.delay(0.1)
.to(0.15, { opacity: 255 })
.delay(0.1)
.to(0.1, { opacity: 0 })
.start();
};
GameManager.prototype.hitAction = function (data) {
var _this = this;
this.hit.active = true;
this.hit.opacity = 0;
this.hit.setPosition;
this.hit.setPosition(this.ball_Array[data].x + 35, this.ball_Array[data].y + 35);
cc.tween(this.hit)
.to(0, { opacity: 255 })
.to(0.2, { position: cc.v3(this.hit.x - 35, this.hit.y - 35, 0) })
.delay(0.2)
.to(0.1, { opacity: 0 })
.call(function () {
_this.hit.active = false;
})
.start();
};
//开始游戏
GameManager.prototype.startGame = function () {
if (this.over == false && this.countTime > 0) {
this.pause = true;
this.createSun();
this.begin = false;
cc.tween(this.ball)
.to(0.5, { opacity: 255, scale: 1.3 })
.start();
// this.runGame()
}
};
GameManager.prototype.runGame = function () {
var _this = this;
var time = -650;
var _loop_3 = function (i) {
time = this_2.now_Array[i].time * 1000 + time;
setTimeout(function () {
if (_this.over == false) {
var temp = _this.now_Array[i].timeCount;
if (temp > 0.5)
temp = 0.5;
if (i != 0) {
if (_this.ball && _this.now_Array[i]) {
_this.createLine(cc.v2(_this.ball.x, _this.ball.y), cc.v2(_this.now_Array[i].x, _this.now_Array[i].y), _this.now_Array[i].time - temp);
}
}
cc.tween(_this.ball)
.to(_this.now_Array[i].time - temp, { x: _this.now_Array[i].x, y: _this.now_Array[i].y })
.to(0.1, { scale: 1 })
.call(function () {
_this.createBall(i, _this.now_Array[i].color, _this.now_Array[i].speed, _this.now_Array[i].repeat);
if (i == _this.now_Array.length - 1) {
_this.ball.opacity = 0;
setTimeout(function () {
_this.destroyLine();
_this.beginGame();
if (GameData_1.default._instance.LEVEL_INFO[_this.level - 1].moveNumber < 1) {
_this.pause = false;
}
else {
_this.moveAction();
}
}, 150);
}
})
.start();
}
}, time);
};
var this_2 = this;
for (var i = 0; i < this.now_Array.length; i++) {
_loop_3(i);
}
};
GameManager.prototype.createMove = function () {
var _this = this;
if (this.over == false) {
var info = GameData_1.default._instance.LEVEL_INFO[this.level - 1];
//改变移动速度
var speed = 7;
if (info.moveSpeed >= 2) {
speed = 7 - info.moveSpeed / 2;
}
if (info.repeat == 1) {
this.repeat = parseInt((Math.random() * (info.number - 1) + 1) + "");
var tempNumber = 0;
// this.repeat = 4;
if (this.repeat > 4) {
this.numberRepeat = parseInt(Math.random() * 4 + "");
if (this.repeat == (info.number - 1)) //如果是最后一个 不能跟第一个重叠
this.numberRepeat = this.repeat - parseInt((Math.random() * 3 + 2) + "");
tempNumber = this.Pos_Array[this.numberRepeat];
this.Pos_Array[this.repeat] = tempNumber;
}
else { // 0 1 2 3 4 5
// 6 - 3 - 1 = 2 4 01 4
if (this.repeat == 0)
this.repeat = 1;
if ((info.number - 1 - this.repeat) == 2) {
this.numberRepeat = info.number - 1;
tempNumber = this.Pos_Array[this.numberRepeat];
}
else if ((info.number - 1 - this.repeat) == 1) {
this.numberRepeat = this.repeat - 2;
tempNumber = this.Pos_Array[this.numberRepeat];
}
else if ((info.number - 1 - this.repeat) == 0) {
this.numberRepeat = this.repeat - 2;
tempNumber = this.Pos_Array[this.numberRepeat];
}
else if ((info.number - 1 - this.repeat) > 2) {
this.numberRepeat = parseInt(Math.random() * (info.number - this.repeat - 2) + "") + this.repeat + 2;
tempNumber = this.Pos_Array[this.numberRepeat];
}
else {
this.numberRepeat = this.repeat - 2;
tempNumber = this.Pos_Array[this.numberRepeat];
}
this.Pos_Array[this.repeat] = tempNumber;
}
}
if (info.moveNumber > 0) {
//0 1 2 3 4 5 6 7 8 9
//可移动区分
var pos_1 = cc.v2(0, 0);
if (info.number == 3)
this.moveArray = [0, 1, 0];
else if (info.number == 4)
this.moveArray = [0, 0, 1, 0];
else if (info.number == 5)
this.moveArray = [0, 0, 1, 0, 0];
else if (info.number == 5)
this.moveArray = [0, 0, 1, 0, 0];
else if (info.number == 6)
this.moveArray = [0, 0, 1, 1, 0, 0];
else if (info.number == 7)
this.moveArray = [0, 0, 1, 1, 1, 0, 0];
else if (info.number == 8)
this.moveArray = [0, 0, 0, 1, 1, 1, 1, 0];
else if (info.number == 9)
this.moveArray = [0, 0, 1, 1, 1, 1, 1, 0, 0];
else if (info.number == 10)
this.moveArray = [0, 0, 0, 1, 1, 1, 1, 1, 0, 0];
var timeOut = 0;
//打乱可移动顺序
// this.moveArray .sort(() => Math.random() - 0.5);
// debugger;
//设置重叠
// this.repeat = -1;
// this.numberRepeat = -1;
//将重叠的设置为不可移动 1 1 1 1 0 0 1 0 0 0 / 2 7
for (var k = 0; k < this.moveArray.length; k++) {
if (this.moveArray[k] == 1 && (k == this.repeat || k == this.numberRepeat)) {
for (var m = this.moveArray.length - 1; m >= 0; m--) {
if (m != k && this.moveArray[m] == 0 && m != this.repeat && m != this.numberRepeat) {
this.moveArray[m] = 1;
this.moveArray[k] = 0;
m = -1;
}
}
}
}
var _loop_4 = function (i) {
if (this_3.moveArray[i] == 1) {
timeOut += 1;
setTimeout(function () {
pos_1 = _this.getPos2(true, i);
_this.Pos_Array[i] = pos_1;
}, timeOut * 300);
}
};
var this_3 = this;
for (var i = 0; i < this.Pos_Array.length; i++) {
_loop_4(i);
}
}
}
};
//移动后数据 重新刷一遍赋值
GameManager.prototype.updateArray = function () {
for (var i = 0; i < this.now_Array.length - 1; i++) {
this.now_Array[i].x = this.Pos_Array[i].x;
this.now_Array[i].y = this.Pos_Array[i].y;
}
};
//太阳初始化后移动方法
GameManager.prototype.moveAction = function () {
var _this = this;
this.updateArray();
var moveArray = this.moveArray;
var info = GameData_1.default._instance.LEVEL_INFO[this.level - 1];
//改变移动速度
var speed = 7;
if (info.moveSpeed >= 2) {
speed = 7 - info.moveSpeed / 2;
}
if (info.moveNumber > 0) {
//0 1 2 3 4 5 6 7 8 9
//可移动区分
var pos = cc.v2(0, 0);
// this.repeat = -1;
// this.numberRepeat = -1;
//将重叠的设置为不可移动 1 1 1 1 0 0 1 0 0 0 / 2 7
for (var k = 0; k < this.moveArray.length; k++) {
if (this.moveArray[k] == 1 && (k == this.repeat || k == this.numberRepeat)) {
for (var m = this.moveArray.length - 1; m >= 0; m--) {
if (m != k && this.moveArray[m] == 0 && m != this.repeat && m != this.numberRepeat) {
this.moveArray[m] = 1;
this.moveArray[k] = 0;
m = -1;
}
}
}
}
var lastNumber = 0;
//锁定最后一个可移动的
for (var j = 0; j < moveArray.length; j++) {
if (moveArray[j] == 1) {
lastNumber = j;
}
}
var _loop_5 = function (i) {
if (moveArray[i] == 1) {
if (i != lastNumber) { //如果不是最后一个移动的
var time = speed * this_4.calculateDistance3(this_4.ball_Array[i].x, this_4.ball_Array[i].y, this_4.Pos_Array[i].x, this_4.Pos_Array[i].y);
this_4.ball_Array[i].getComponent("Sun").move = true;
cc.tween(this_4.ball_Array[i])
.to(time, { position: this_4.Pos_Array[i] })
.call(function () {
_this.ball_Array[i].getComponent("Sun").move = false;
})
.start();
}
//如果是最后一个
else {
var time = speed * this_4.calculateDistance3(this_4.ball_Array[i].x, this_4.ball_Array[i].y, this_4.Pos_Array[i].x, this_4.Pos_Array[i].y);
this_4.ball_Array[i].getComponent("Sun").move = true;
cc.tween(this_4.ball_Array[i])
.to(time, { position: this_4.Pos_Array[i] })
.call(function () {
_this.ball_Array[i].getComponent("Sun").move = false;
})
.start();
}
}
};
var this_4 = this;
for (var i = 0; i < this.ball_Array.length; i++) {
_loop_5(i);
}
}
};
GameManager.prototype.beginGame = function () {
this.begin = true;
this.startTime = this.getTime();
this.timeStart = this.getTime();
this.pause = false;
// this.node.getChildByName("showBtn").active = true;
};
GameManager.prototype.getRandomArray = function (lastNumber) {
var num = parseInt(Math.random() * 8 - 4 + "");
var jg = num + lastNumber;
if (num > 1 || num < -1) {
if (num == 0 || (jg < 0 || jg >= this.Pos_Array.length)) {
jg = this.getRandomArray(lastNumber);
}
}
else {
jg = this.getRandomArray(lastNumber);
}
return jg;
};
//创建太阳所需数据
GameManager.prototype.createSun = function () {
var _this = this;
var levelData = GameData_1.default._instance.LEVEL_INFO[this.level - 1];
var tiemOut = 0;
var _loop_6 = function (l) {
tiemOut += 1;
setTimeout(function () {
if (_this.over == false) {
var pos = _this.getPos(false, l);
_this.Pos_Array.push(pos);
if (_this.Pos_Array.length == levelData.number) {
_this.createMove();
_this.createPos();
}
}
}, tiemOut * 100);
};
for (var l = 0; l < levelData.number; l++) {
_loop_6(l);
}
// 0 0 0 0 0 0 0 0 0 0 0
};
GameManager.prototype.createPos = function () {
var data = { x: this.ball.x, y: this.ball.y, time: 0, timeCount: 0, color: 0, speed: 0, repeat: false };
var levelData = GameData_1.default._instance.LEVEL_INFO[this.level - 1];
//颜色区分
var colorArray = [0, 1];
for (var j = 0; j < levelData.number - 2; j++) {
var colorTemp = parseInt(Math.random() * 3 + "");
if (levelData.number < 6 && colorTemp == 2)
colorTemp = 0;
colorArray.push(colorTemp);
colorArray.sort(function () { return Math.random() - 0.5; });
}
colorArray.sort(function () { return Math.random() - 0.5; });
if (levelData.number == 4)
colorArray = [0, 0, 0, 0];
this.color_Array = colorArray;
for (var i = 0; i < levelData.number; i++) {
var timeCount = this.timeCount + (0.6 - this.calculateDistance(this.ball.x, this.ball.y, this.Pos_Array[i].x, this.Pos_Array[i].y));
var time = this.calculateDistance(this.ball.x, this.ball.y, this.Pos_Array[i].x, this.Pos_Array[i].y) + timeCount;
data = { x: this.Pos_Array[i].x, y: this.Pos_Array[i].y, time: time, timeCount: timeCount, color: colorArray[i], speed: levelData.moveSpeed, repeat: false };
if (this.repeat == i) {
data.repeat = true;
}
else if (this.numberRepeat == i) {
data.repeat = true;
}
this.now_Array.push(data);
}
this.runGame();
};
GameManager.prototype.getPos = function (type, num) {
var posX = Math.random() * 620 - 310;
var posY = Math.random() * (this.fitTop - this.fitBot) + this.fitBot;
var point = cc.v2(posX, posY);
if (this.Pos_Array.length > 0) {
for (var i = 0; i < this.Pos_Array.length; i++) {
var distance = false;
var pd = false;
if (i == num)
pd = true;
distance = this.getDistance(posX, posY, this.Pos_Array[i].x, this.Pos_Array[i].y, pd);
if (distance == false) {
i = 10000;
point = this.getPos(type, num);
}
if (distance == true && i == (this.Pos_Array.length - 1)) {
i = 10000;
}
}
}
return point;
};
GameManager.prototype.getPos2 = function (type, num) {
var posX = Math.random() * 620 - 310;
var posY = Math.random() * (this.fitTop - this.fitBot) + this.fitBot;
var point = cc.v2(posX, posY);
if (this.Pos_Array.length > 0) {
for (var i = 0; i < this.Pos_Array.length; i++) {
var distance = false;
var pd = false;
if (i == num)
pd = true;
distance = this.getDistance2(posX, posY, this.Pos_Array[i].x, this.Pos_Array[i].y, pd);
if (distance == false) {
i = 10000;
point = this.getPos2(type, num);
}
if (distance == true && i == (this.Pos_Array.length - 1)) {
i = 10000;
}
}
}
return point;
};
GameManager.prototype.getDistance = function (x1, y1, x2, y2, num) {
var jg = false;
var dx = x2 - x1;
var dy = y2 - y1;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 160) {
if (num == true) {
if (distance < GameData_1.default._instance.LEVEL_INFO[this.level - 1].maxMove) {
jg = true;
}
else
jg = false;
}
else {
if (distance < GameData_1.default._instance.LEVEL_INFO[this.level - 1].maxMove) {
jg = true;
}
else
jg = false;
}
}
return jg;
};
GameManager.prototype.getDistance2 = function (x1, y1, x2, y2, num) {
var jg = false;
var dx = x2 - x1;
var dy = y2 - y1;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 160) {
if (num == true) {
if (distance < GameData_1.default._instance.LEVEL_INFO[this.level - 1].maxDistance)
jg = true;
else
jg = false;
}
else {
jg = true;
}
}
return jg;
};
GameManager.prototype.createBall = function (number, color, speed, repeat) {
var ball = null;
if (color == 0)
ball = cc.instantiate(this.qiu1);
else if (color == 1)
ball = cc.instantiate(this.qiu2);
else if (color == 2)
ball = cc.instantiate(this.qiu3);
ball.parent = this.node.getChildByName("Sun");
ball.zIndex = this.now_Array.length - number;
ball.setPosition(this.ball.x, this.ball.y);
ball.getComponent("Sun").init(number, color, speed, repeat);
this.ball_Array.push(ball);
};
GameManager.prototype.destroyLine = function () {
for (var i = 0; i < this.node.getChildByName("Line").children.length; i++) {
if (this.node.getChildByName("Line").children[i]) {
this.node.getChildByName("Line").children[i].removeFromParent();
this.node.getChildByName("Line").children[i] = null;
}
}
this.node.getChildByName("Line").removeAllChildren();
};
GameManager.prototype.createLine = function (start, end, time) {
var line = cc.instantiate(this.linePrefab);
line.parent = this.node.getChildByName("Line");
line.setPosition(start.x, start.y);
var dx = end.x - start.x;
var dy = end.y - start.y;
var distance = Math.sqrt(dx * dx + dy * dy);
line.height = distance;
line.getComponent(cc.Sprite).fillRange = 0;
line.angle = -this.calculateAngle(start.x, start.y, end.x, end.y);
cc.tween(line.getComponent(cc.Sprite))
.to(time, { fillRange: 1 })
.start();
};
GameManager.prototype.calculateAngle = function (x1, y1, x2, y2) {
var angle = Math.atan2(y2 - y1, x2 - x1) * 180 / Math.PI - 90;
return -angle;
};
GameManager.prototype.calculateDistance = function (x1, y1, x2, y2) {
var dx = x2 - x1;
var dy = y2 - y1;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 800)
distance = 800;
var time = distance / 800 * 0.6;
return time;
};
GameManager.prototype.calculateDistance2 = function (x1, y1, x2, y2) {
var dx = x2 - x1;
var dy = y2 - y1;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 1200)
distance = 1200;
var time = distance / 1200 * 1;
return time;
};
GameManager.prototype.calculateDistance3 = function (x1, y1, x2, y2) {
var dx = x2 - x1;
var dy = y2 - y1;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 1200)
distance = 1200;
var time = distance / 1200 * 1.5;
return time;
};
//背景移动
GameManager.prototype.bgMove = function (type) {
var _this = this;
var random = Math.random() * 300 + 300;
var posX = Math.random() * 600 - 300;
var y1 = this.bg1.y - random * type;
// let y2 = this.bg2.y - random*type;
var time1 = 0.7 * (random / 400);
cc.tween(this.ball)
.to(0.3, { scale: 1.3 })
.to(time1, { x: posX })
.start();
cc.tween(this.bg1)
.delay(0.3)
.to(time1, { y: y1 })
.start();
// cc.tween(this.bg2)
// .delay(0.3)
// .to(time1,{y:y2})
// .start();
setTimeout(function () {
// if(this.over == false && GameData._instance.GM_INFO.custom == 0){
// this.startGame();
// }
if (_this.over == false) {
_this.startGame();
}
}, time1 * 1500);
};
//时间格式转换
GameManager.prototype.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;
};
//如果是倒计时 调用此方法
GameManager.prototype.updateCountDownTime = function () {
if (this.countTime > 0 && this.pause == false) {
this.countTime -= 1;
this.time.string = this.getTimeMargin(this.countTime);
if (this.countTime < 5) {
cc.tween(this.time.node)
.to(0.25, { scale: 1.5, color: cc.color(255, 0, 0) })
.to(0.25, { scale: 1, color: cc.color(255, 255, 255) })
.start();
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.begin = false;
this.over = true;
this.unschedule(this.updateCountDownTime);
this.setLoss();
var time = 0;
console.log(GameData_1.default._instance.GM_INFO.mean_Time, this.clickCount);
if (this.clickCount > 0)
time = parseInt(GameData_1.default._instance.GM_INFO.mean_Time / this.clickCount + "");
GameData_1.default._instance.GM_INFO.mean_Time = parseInt(time / 100 + "");
GameData_1.default._instance.GM_INFO.mean_Time = GameData_1.default._instance.GM_INFO.mean_Time / 10;
console.log(GameData_1.default._instance.GM_INFO.mean_Time);
this.setRank(time);
}
}
};
GameManager.prototype.setData = function () {
var data = GameData_1.default._instance.GAME_DATA;
var matchId = this.getMatchId();
var postData = {
"matchId": matchId,
"data": data
};
// console.log("上传数据:",postData)
serverAPI_1.default.uploadUserLogData(postData, function () { });
};
GameManager.prototype.getMatchId = function () {
var matchId = cc.sys.localStorage.getItem("matchId");
if (matchId == "undifend" || matchId == null) {
matchId = this.setMatchId();
}
else {
var char = parseInt(matchId[10]);
char += 1;
matchId = matchId.slice(0, 10) + char + "";
GameData_1.default._instance.GM_INFO.matchId = matchId;
cc.sys.localStorage.setItem("matchId", matchId);
}
return matchId;
};
GameManager.prototype.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);
GameData_1.default._instance.GM_INFO.matchId = data;
return data;
};
GameManager.prototype.setRank = function (time) {
var postData = {
"type": 1,
"reactionTime": time,
"totalSunCount": GameData_1.default._instance.GM_INFO.total,
"success": GameData_1.default._instance.GM_INFO.success
};
console.log(postData);
serverAPI_1.default.rankData(1, function () { }, postData);
this.node.getChildByName("GameOver").active = true;
this.node.getChildByName("GameOver").opacity = 0;
cc.tween(this.node.getChildByName("GameOver"))
.to(0.4, { opacity: 255 })
.delay(2)
.to(0.4, { opacity: 50 })
.call(function () {
cc.director.loadScene("OverScene");
})
.start();
};
GameManager.prototype.outPut = function () {
var data = GameData_1.default._instance.CLICK_DATA;
GameData_1.default._instance.GAME_DATA = [];
// if(data.succeed == true) this.label1.string = "成功/失败:成功";
// else if(data.succeed == false) this.label1.string = "成功/失败:失败";
// this.label2.string = "太阳总数量:"+data.sun_total;
// this.label3.string = "太阳移动数量:"+data.sun_move;
// this.label4.string = "太阳移动速度:"+data.sun_speed;
// this.label5.string = "太阳重叠个数:"+data.sun_overlap;
// if(data.sun_color == "y") this.label6.string = "太阳颜色:yellow";
// else if(data.sun_color == "yr") this.label6.string = "太阳颜色:yellow,red";
// else if(data.sun_color == "yrb") this.label6.string = "太阳颜色:yellow,red,black";
// this.label7.string = "完成时间:"+data.finish_time+"s";
// this.label8.string = "难度等级:"+data.sun_difficulty+"级";
// if(data.sun_color == "y") console.log("太阳颜色:","yellow" );
// else if(data.sun_color == "yr") console.log("太阳颜色:","yellow,red" );
// else if(data.sun_color == "yrb") console.log("太阳颜色:","yellow,red,black" );
GameData_1.default._instance.GAME_DATA.push(GameData_1.default._instance.CLICK_DATA);
GameData_1.default._instance.CLICK_init();
};
GameManager.prototype.showNumber = function () {
if (this.show == false)
this.show = true;
else if (this.show == true)
this.show = false;
for (var i = 0; i < this.ball_Array.length; i++) {
this.ball_Array[i].getComponent("Sun").showNumber(this.show);
}
};
GameManager.prototype.onEnable = function () {
Notification_1.Notification.on("clickSun", this.clickSun, this);
// Notification.on("HammerPlay", this.HammerPlay, this);
};
GameManager.prototype.onDisable = function () {
// Notification.off("rightAnswers", this.rightAnswers);
Notification_1.Notification.off("clickSun", this.clickSun);
};
GameManager.prototype.update = function (dt) {
};
__decorate([
property(cc.Node)
], GameManager.prototype, "ball", void 0);
__decorate([
property(cc.Prefab)
], GameManager.prototype, "qiu1", void 0);
__decorate([
property(cc.Prefab)
], GameManager.prototype, "qiu2", void 0);
__decorate([
property(cc.Prefab)
], GameManager.prototype, "qiu3", void 0);
__decorate([
property(cc.Prefab)
], GameManager.prototype, "linePrefab", void 0);
__decorate([
property(cc.Node)
], GameManager.prototype, "hit", void 0);
__decorate([
property(cc.Label)
], GameManager.prototype, "levelLabel", 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUMxQyx1Q0FBa0M7QUFDbEMsK0NBQThDO0FBQzlDLGdEQUEwQztBQUUxQztJQUF5QywrQkFBWTtJQUFyRDtRQUFBLHFFQTBtQ0M7UUF2bUNHLFVBQUksR0FBWSxJQUFJLENBQUM7UUFFckIsVUFBSSxHQUFjLElBQUksQ0FBQztRQUV2QixVQUFJLEdBQWMsSUFBSSxDQUFDO1FBRXZCLFVBQUksR0FBYyxJQUFJLENBQUM7UUFFdkIsZ0JBQVUsR0FBYyxJQUFJLENBQUM7UUFFN0IsU0FBRyxHQUFZLElBQUksQ0FBQztRQUVwQixTQUFHLEdBQVksSUFBSSxDQUFDO1FBQ3BCLFNBQUcsR0FBWSxJQUFJLENBQUM7UUFDcEIsVUFBSSxHQUFhLElBQUksQ0FBQztRQUV0Qix3QkFBd0I7UUFDeEIsV0FBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFVBQUksR0FBWSxLQUFLLENBQUM7UUFDdEIsVUFBSSxHQUFZLEtBQUssQ0FBQztRQXNCdEIsZ0JBQVUsR0FBYSxJQUFJLENBQUM7O0lBNmpDaEMsQ0FBQztJQXJqQ0csNEJBQU0sR0FBTjtJQUVBLENBQUM7SUFFRCwyQkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1gsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFDRCx5QkFBRyxHQUFIO1FBQ0ksSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBRSxLQUFLO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNO1FBQzFCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2QixJQUFHLENBQUMsRUFBRSxFQUFDO1lBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7WUFDbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQztTQUN0QjtJQUNMLENBQUM7SUFFRCxnREFBMEIsR0FBMUI7UUFDSSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDO1FBQ3RCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDdkIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2hELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxTQUFTO0lBQ1QsNEJBQU0sR0FBTjtRQUNJLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQzdDLElBQUksSUFBSSxFQUFFO1NBQ1Q7YUFBTTtTQUNOO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU87SUFDUCwwQkFBSSxHQUFKO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUN2QixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxRixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ25ELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFHLGtCQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFDO1lBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUMvQyw0Q0FBNEM7WUFDNUMsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7U0FDN0I7UUFDRCw0Q0FBNEM7UUFFNUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLGtCQUFRLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDbEMsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDakIsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFFckMsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFHMUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCwrQkFBUyxHQUFUO1FBQ0ksRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUdELDhCQUE4QjtJQUM5Qiw2QkFBTyxHQUFQLFVBQVEsSUFBSTtRQUNSLDhDQUE4QztRQUM5QywwQ0FBMEM7UUFDMUMsY0FBYztRQUNkLElBQUk7UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ25ELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFFdEIsSUFBRyxJQUFJLElBQUksQ0FBQyxFQUFDO1lBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsQjthQUNJLElBQUcsSUFBSSxJQUFJLENBQUMsRUFBQztZQUNkLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNwQjthQUNJLElBQUcsSUFBSSxJQUFJLENBQUMsRUFBQztZQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNuQjtJQUVMLENBQUM7SUFFRCxpQ0FBVyxHQUFYO0lBRUEsQ0FBQztJQUVELE9BQU87SUFDUCw2QkFBTyxHQUFQO1FBQ0ksSUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN2QyxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSTtJQUNKLCtCQUFTLEdBQVQ7UUFBQSxpQkFpQ0M7UUFoQ0csSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLEVBQUM7WUFDekMsSUFBSSxXQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ25CLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztZQUNsQixJQUFJLE1BQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztnQkFDeEMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUN4RSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELFdBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDeEI7b0NBQ08sQ0FBQztnQkFDTCxVQUFVLENBQUM7b0JBQ1AsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFJLENBQUM7eUJBQ2IsRUFBRSxDQUFDLFdBQVMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxDQUFDLEVBQUMsS0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEtBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUM7eUJBQ2xFLElBQUksQ0FBQzt3QkFDRixLQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7d0JBQ2xDLElBQUcsQ0FBQyxJQUFJLEtBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFDLENBQUMsRUFBQzs0QkFDN0IsVUFBVSxDQUFDO2dDQUNQLEtBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztnQ0FDeEIsS0FBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFJLENBQUMsQ0FBQyxFQUFDLE1BQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0NBQzVDLE1BQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2dDQUNwQixLQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0NBQ2hCLEtBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ3BCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQzt5QkFDWDtvQkFDTCxDQUFDLENBQUM7eUJBQ0QsS0FBSyxFQUFFLENBQUM7Z0JBQ2IsQ0FBQyxFQUFFLFNBQVMsR0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbkIsU0FBUyxJQUFJLENBQUMsV0FBUyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxHQUFHLENBQUMsQ0FBQzs7WUFsQnRDLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7d0JBQW5DLENBQUM7YUFtQlI7U0FDSjtJQUVMLENBQUM7SUFDRCxJQUFJO0lBQ0osK0JBQVMsR0FBVCxVQUFVLElBQUk7UUFBZCxpQkFvQkM7UUFuQkcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLEVBQUM7WUFDekMsSUFBSSxNQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQ0FDdEIsQ0FBQztnQkFDTCxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUMzQixFQUFFLENBQUMsQ0FBQyxFQUFDLEVBQUMsQ0FBQyxFQUFDLE1BQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLE1BQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQztxQkFDekIsSUFBSSxDQUFDO29CQUNGLEtBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztvQkFDbEMsSUFBRyxDQUFDLElBQUksS0FBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxFQUFDO3dCQUM3QixLQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7d0JBQ3hCLEtBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBSSxDQUFDLENBQUMsRUFBQyxNQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUM1QyxLQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ2hCLEtBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQ3RCO2dCQUNMLENBQUMsQ0FBQztxQkFDRCxLQUFLLEVBQUUsQ0FBQTs7O1lBWlosS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTt3QkFBbkMsQ0FBQzthQWFSO1NBQ0o7SUFFTCxDQUFDO0lBRUQsOEJBQVEsR0FBUjtRQUNJLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztZQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDN0I7SUFDTCxDQUFDO0lBRUQsVUFBVTtJQUNWLDhCQUFRLEdBQVIsVUFBUyxJQUFJO1FBQWIsaUJBK0dDO1FBOUdHLElBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUM7WUFDbEIsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUM7WUFDckIsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO1lBQ2xELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hDLElBQUcsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUM7Z0JBQ3JCLGtCQUFRLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDbEQsSUFBRyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBQztvQkFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUM1RixFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDeEUsR0FBRyxDQUFDLENBQUM7aUJBQ1I7Z0JBQ0QsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUM7Z0JBQ25CLHlDQUF5QztnQkFFekMsVUFBVSxDQUFDO29CQUNQLElBQUcsS0FBSSxDQUFDLFVBQVUsQ0FBQyxLQUFJLENBQUMsUUFBUSxHQUFDLENBQUMsQ0FBQzt3QkFDL0IsS0FBSSxDQUFDLFVBQVUsQ0FBQyxLQUFJLENBQUMsUUFBUSxHQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2dCQUNoRixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBR1IsSUFBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFDO29CQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztvQkFDbEIsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO29CQUVsRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDL0Isa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUN6RSxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDbEQsSUFBSSxXQUFXLEdBQUcsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUMsR0FBRyxHQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNwRSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztvQkFBQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztvQkFDdEMsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO29CQUNoQixJQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQzt3QkFBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO3lCQUM1QyxJQUFHLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQzt3QkFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDO29CQUN2QyxJQUFJLEtBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUMsS0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7b0JBQUMsS0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDbkMsa0JBQVEsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUMxQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztvQkFDaEIsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO29CQUNsQixJQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQzt3QkFDekIsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUcsQ0FBQyxHQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFDLENBQUMsRUFBRSxFQUFDOzRCQUN0QyxJQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFDO2dDQUMxQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQzs2QkFDekI7NEJBQ0QsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7eUJBQ3BDO3FCQUNKO3lCQUNHO3dCQUNBLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFHLENBQUMsR0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBQyxDQUFDLEVBQUUsRUFBQzs0QkFDdkMsSUFBRyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBQztnQ0FDMUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzs2QkFDcEI7O2dDQUVHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7eUJBQ3hCO3FCQUNKO29CQUNELGtCQUFRLENBQUMsU0FBUyxDQUFDLFVBQVU7d0JBQ3pCOzRCQUNJLElBQUksRUFBQyxDQUFDOzRCQUNOLE9BQU8sRUFBQyxJQUFJOzRCQUNaLEtBQUssRUFBQyxJQUFJLENBQUMsS0FBSzs0QkFDaEIsYUFBYSxFQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTs0QkFDbkMsYUFBYSxFQUFDLGtCQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVU7NEJBQ3BFLFFBQVEsRUFBQyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTOzRCQUM5RCxlQUFlLEVBQUMsa0JBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTs0QkFDbEUsU0FBUyxFQUFDLElBQUksQ0FBQyxXQUFXOzRCQUMxQixRQUFRLEVBQUMsV0FBVyxHQUFDLEVBQUU7NEJBQ3ZCLGVBQWUsRUFBQyxJQUFJLENBQUMsS0FBSzs0QkFDMUIsT0FBTyxFQUFDLFFBQVE7NEJBQ2hCLFlBQVksRUFBQyxJQUFJLENBQUMsVUFBVTs0QkFDNUIsU0FBUyxFQUFDLElBQUksQ0FBQyxTQUFTO3lCQUMzQixDQUFBO29CQUVMLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDZCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2YsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFHLENBQUM7eUJBQ1osS0FBSyxDQUFDLEdBQUcsQ0FBQzt5QkFDVixFQUFFLENBQUMsSUFBSSxFQUFDLEVBQUMsS0FBSyxFQUFDLEdBQUcsRUFBQyxDQUFDO3lCQUNwQixFQUFFLENBQUMsSUFBSSxFQUFDLEVBQUMsS0FBSyxFQUFDLENBQUMsRUFBQyxDQUFDO3lCQUNsQixLQUFLLENBQUMsR0FBRyxDQUFDO3lCQUNWLElBQUksQ0FBQzt3QkFDRixLQUFHLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQzt3QkFDbkIsS0FBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO3dCQUNuQixJQUFHLEtBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxJQUFJLEtBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxFQUFDOzRCQUN6QyxJQUFHLEtBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFDO2dDQUNoQixrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQ0FDMUMsS0FBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7Z0NBQ2hCLDRDQUE0QztnQ0FDNUMsS0FBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7Z0NBRWxCLEtBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzs2QkFDcEI7aUNBQ0c7Z0NBQ0EsS0FBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7Z0NBQ2hCLDRDQUE0QztnQ0FDNUMsS0FBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7Z0NBRWxCLEtBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzs2QkFDcEI7eUJBQ0o7b0JBRUwsQ0FBQyxDQUFDO3lCQUNELEtBQUssRUFBRSxDQUFDO2lCQUNaO2FBQ0o7aUJBQ0c7Z0JBQ0EsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2xCO1lBQ0QsdUJBQXVCO1NBQzFCO0lBRUwsQ0FBQztJQUVELDZCQUFPLEdBQVA7UUFDSSxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDL0Isa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELElBQUksV0FBVyxHQUFHLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFDLEdBQUcsR0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUNoQixJQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQztZQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7YUFDNUMsSUFBRyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUM7WUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ2hCLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUN6QixLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRyxDQUFDLEdBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUMsQ0FBQyxFQUFFLEVBQUM7Z0JBQ3RDLElBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUM7b0JBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUN6QjtnQkFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNwQztTQUNKO2FBQ0c7WUFDQSxLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRyxDQUFDLEdBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUMsQ0FBQyxFQUFFLEVBQUM7Z0JBQ3ZDLElBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUM7b0JBQzFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3BCOztvQkFFRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3hCO1NBQ0o7UUFFRCxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVO1lBQzdCO2dCQUNJLElBQUksRUFBQyxDQUFDO2dCQUNOLE9BQU8sRUFBQyxLQUFLO2dCQUNiLEtBQUssRUFBQyxJQUFJLENBQUMsS0FBSztnQkFDaEIsYUFBYSxFQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTTtnQkFDbkMsYUFBYSxFQUFDLGtCQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVU7Z0JBQ3BFLFFBQVEsRUFBQyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUM5RCxlQUFlLEVBQUMsa0JBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTTtnQkFDbEUsU0FBUyxFQUFDLElBQUksQ0FBQyxXQUFXO2dCQUMxQixRQUFRLEVBQUMsV0FBVyxHQUFDLEVBQUU7Z0JBQ3ZCLGVBQWUsRUFBQyxJQUFJLENBQUMsS0FBSztnQkFDMUIsT0FBTyxFQUFDLFFBQVE7Z0JBQ2hCLFlBQVksRUFBQyxJQUFJLENBQUMsVUFBVTtnQkFDNUIsU0FBUyxFQUFDLElBQUksQ0FBQyxTQUFTO2FBQzNCLENBQUE7UUFDRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixJQUFHLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFDO1lBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDckI7YUFDRztZQUNBLElBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUM7Z0JBQ2QsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7Z0JBQ2hCLDRDQUE0QztnQkFDNUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7Z0JBQ2xCLHNCQUFzQjtnQkFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyQjtpQkFDRztnQkFDQSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3JCO1NBQ0o7UUFDRCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQzthQUNiLEVBQUUsQ0FBQyxJQUFJLEVBQUMsRUFBQyxPQUFPLEVBQUMsR0FBRyxFQUFDLENBQUM7YUFDdEIsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLEVBQUUsQ0FBQyxHQUFHLEVBQUMsRUFBQyxPQUFPLEVBQUMsQ0FBQyxFQUFDLENBQUM7YUFDbkIsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLEVBQUUsQ0FBQyxJQUFJLEVBQUMsRUFBQyxPQUFPLEVBQUMsR0FBRyxFQUFDLENBQUM7YUFDdEIsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLEVBQUUsQ0FBQyxHQUFHLEVBQUMsRUFBQyxPQUFPLEVBQUMsQ0FBQyxFQUFDLENBQUM7YUFDbkIsS0FBSyxFQUFFLENBQUM7SUFDYixDQUFDO0lBRUQsK0JBQVMsR0FBVCxVQUFVLElBQUk7UUFBZCxpQkFhQztRQVpHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQTtRQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBQyxFQUFFLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2FBQ2pCLEVBQUUsQ0FBQyxDQUFDLEVBQUMsRUFBQyxPQUFPLEVBQUMsR0FBRyxFQUFDLENBQUM7YUFDbkIsRUFBRSxDQUFDLEdBQUcsRUFBQyxFQUFDLFFBQVEsRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFDLEVBQUUsRUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQzthQUN2RCxLQUFLLENBQUMsR0FBRyxDQUFDO2FBQ1YsRUFBRSxDQUFDLEdBQUcsRUFBQyxFQUFDLE9BQU8sRUFBQyxDQUFDLEVBQUMsQ0FBQzthQUNuQixJQUFJLENBQUM7WUFDRixLQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDNUIsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxFQUFFLENBQUM7SUFDYixDQUFDO0lBRUQsTUFBTTtJQUNOLCtCQUFTLEdBQVQ7UUFDSSxJQUFHLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFDO1lBQ3hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUNuQixFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ2xCLEVBQUUsQ0FBQyxHQUFHLEVBQUMsRUFBQyxPQUFPLEVBQUMsR0FBRyxFQUFDLEtBQUssRUFBQyxHQUFHLEVBQUMsQ0FBQztpQkFDL0IsS0FBSyxFQUFFLENBQUM7WUFDVCxpQkFBaUI7U0FDcEI7SUFDTCxDQUFDO0lBRUQsNkJBQU8sR0FBUDtRQUFBLGlCQXlDQztRQXhDRyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQztnQ0FDUixDQUFDO1lBQ0wsSUFBSSxHQUFHLE9BQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQzFDLFVBQVUsQ0FBQztnQkFDUCxJQUFHLEtBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxFQUFDO29CQUNsQixJQUFJLElBQUksR0FBRyxLQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztvQkFDdkMsSUFBRyxJQUFJLEdBQUcsR0FBRzt3QkFBRSxJQUFJLEdBQUcsR0FBRyxDQUFDO29CQUMxQixJQUFHLENBQUMsSUFBSSxDQUFDLEVBQUM7d0JBQ04sSUFBRyxLQUFJLENBQUMsSUFBSSxJQUFJLEtBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUM7NEJBQzlCLEtBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsS0FBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDN0YsS0FBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUMsSUFBSSxDQUFDLENBQUM7eUJBQ2hDO3FCQUNKO29CQUVELEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQzt5QkFDbEIsRUFBRSxDQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFDLElBQUksRUFBQyxFQUFDLENBQUMsRUFBQyxLQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsS0FBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQzt5QkFDN0UsRUFBRSxDQUFDLEdBQUcsRUFBQyxFQUFDLEtBQUssRUFBQyxDQUFDLEVBQUMsQ0FBQzt5QkFDakIsSUFBSSxDQUFDO3dCQUNGLEtBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLEtBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQzVGLElBQUcsQ0FBQyxJQUFJLEtBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFFLENBQUMsRUFBQzs0QkFDN0IsS0FBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDOzRCQUN0QixVQUFVLENBQUM7Z0NBQ1AsS0FBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dDQUNuQixLQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0NBQ2pCLElBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUksQ0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFDLENBQUMsRUFBQztvQ0FDeEQsS0FBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7aUNBQ3RCO3FDQUNHO29DQUNBLEtBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztpQ0FDckI7NEJBRUwsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO3lCQUNYO29CQUNMLENBQUMsQ0FBQzt5QkFDRCxLQUFLLEVBQUUsQ0FBQTtpQkFDWDtZQUVMLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQzs7O1FBcENiLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7b0JBQWpDLENBQUM7U0FzQ1I7SUFDTCxDQUFDO0lBRUQsZ0NBQVUsR0FBVjtRQUFBLGlCQTJGQztRQTFGRyxJQUFHLElBQUksQ0FBQyxJQUFJLElBQUksS0FBSyxFQUFDO1lBQ2xCLElBQUksSUFBSSxHQUFHLGtCQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELFFBQVE7WUFDUixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDZCxJQUFHLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxFQUFDO2dCQUNuQixLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUMsQ0FBQyxDQUFDO2FBQ2hDO1lBQ0QsSUFBRyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQztnQkFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBSSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRSxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7Z0JBQ25CLG1CQUFtQjtnQkFDbkIsSUFBRyxJQUFJLENBQUMsTUFBTSxHQUFJLENBQUMsRUFBQztvQkFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztvQkFDbkQsSUFBRyxJQUFJLENBQUMsTUFBTSxJQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsRUFBRyxrQkFBa0I7d0JBQ3ZELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBSSxRQUFRLENBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFFLEVBQUUsQ0FBQyxDQUFBO29CQUN2RSxVQUFVLEdBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBRSxHQUFHLFVBQVUsQ0FBQztpQkFDN0M7cUJBQ0csRUFBRSxlQUFlO29CQUNqQix5QkFBeUI7b0JBQ3pCLElBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSyxDQUFDO3dCQUFFLElBQUksQ0FBQyxNQUFNLEdBQUksQ0FBQyxDQUFDO29CQUN2QyxJQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBRSxJQUFJLENBQUMsRUFBQzt3QkFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzt3QkFDcEMsVUFBVSxHQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO3FCQUNuRDt5QkFDSSxJQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBRSxJQUFJLENBQUMsRUFBQzt3QkFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzt3QkFDcEMsVUFBVSxHQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO3FCQUNuRDt5QkFDSSxJQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBRSxJQUFJLENBQUMsRUFBQzt3QkFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzt3QkFDcEMsVUFBVSxHQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO3FCQUNuRDt5QkFDSSxJQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBRSxHQUFHLENBQUMsRUFBQzt3QkFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBQyxJQUFJLENBQUMsTUFBTSxHQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUksQ0FBQyxDQUFFO3dCQUNsRyxVQUFVLEdBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7cUJBQ25EO3lCQUNHO3dCQUNBLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7d0JBQ3BDLFVBQVUsR0FBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztxQkFDbkQ7b0JBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDO2lCQUM1QzthQUNKO1lBQ0QsSUFBRyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBQztnQkFDbkIscUJBQXFCO2dCQUNyQixPQUFPO2dCQUNQLElBQUksS0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQixJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQztvQkFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztxQkFDekMsSUFBRyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUM7b0JBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNoRCxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQztvQkFBRSxJQUFJLENBQUMsU0FBUyxHQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNuRCxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQztvQkFBRSxJQUFJLENBQUMsU0FBUyxHQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNuRCxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQztvQkFBRSxJQUFJLENBQUMsU0FBUyxHQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztxQkFDckQsSUFBRyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUM7b0JBQUUsSUFBSSxDQUFDLFNBQVMsR0FBSSxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN2RCxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQztvQkFBRSxJQUFJLENBQUMsU0FBUyxHQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN6RCxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQztv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WUFDbEMsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBQyxDQUFDLEdBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0MsSUFBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxTQUFTLElBQUksQ0FBQztnQkFBRSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1lBQ3pELFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDM0IsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFNLE9BQUEsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsRUFBbkIsQ0FBbUIsQ0FBQyxDQUFDO1NBQzlDO1FBQ0QsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFNLE9BQUEsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsRUFBbkIsQ0FBbUIsQ0FBQyxDQUFDO1FBQzNDLElBQUcsU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQUUsVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFHOUIsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUMsQ0FBQyxFQUFFLEVBQUM7WUFDaEMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsR0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9ILElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLFNBQVMsQ0FBQztZQUM3RyxJQUFJLEdBQUcsRUFBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxLQUFLLEVBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBQyxTQUFTLENBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxLQUFLLEVBQUMsQ0FBQztZQUM5SSxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFDO2dCQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQzthQUN0QjtpQkFDSSxJQUFHLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxFQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQzthQUN0QjtZQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBRTdCO1FBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCw0QkFBTSxHQUFOLFVBQU8sSUFBSSxFQUFDLEdBQUc7UUFDWCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNuQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBRWpFLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxDQUFDO1FBRTdCLElBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQ3pCLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBQyxDQUFDLEVBQUUsRUFBQztnQkFDckMsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUM7Z0JBQ2YsSUFBRyxDQUFDLElBQUksR0FBRztvQkFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDO2dCQUN2QixRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFBO2dCQUNqRixJQUFHLFFBQVEsSUFBSSxLQUFLLEVBQUM7b0JBQ2pCLENBQUMsR0FBRyxLQUFLLENBQUM7b0JBQ1YsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNqQztnQkFDRCxJQUFHLFFBQVEsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLEVBQUM7b0JBQ2xELENBQUMsR0FBRyxLQUFLLENBQUM7aUJBQ2I7YUFDTDtTQUNIO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELDZCQUFPLEdBQVAsVUFBUSxJQUFJLEVBQUMsR0FBRztRQUVaLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ25DLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFakUsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFHN0IsSUFBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7WUFDekIsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFDLENBQUMsRUFBRSxFQUFDO2dCQUNyQyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztnQkFDZixJQUFHLENBQUMsSUFBSSxHQUFHO29CQUFFLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQ3ZCLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUE7Z0JBQ2xGLElBQUcsUUFBUSxJQUFJLEtBQUssRUFBQztvQkFDakIsQ0FBQyxHQUFHLEtBQUssQ0FBQztvQkFDVixLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ2xDO2dCQUNELElBQUcsUUFBUSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsRUFBQztvQkFDbEQsQ0FBQyxHQUFHLEtBQUssQ0FBQztpQkFDYjthQUNMO1NBQ0g7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsaUNBQVcsR0FBWCxVQUFZLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBQyxHQUFHO1FBQzFCLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNmLElBQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQUcsUUFBUSxHQUFHLEdBQUcsRUFBQztZQUNkLElBQUcsR0FBRyxJQUFJLElBQUksRUFBQztnQkFDWCxJQUFHLFFBQVEsR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUM7b0JBQzlELEVBQUUsR0FBRyxJQUFJLENBQUM7aUJBQ2I7O29CQUNJLEVBQUUsR0FBRyxLQUFLLENBQUM7YUFDbkI7aUJBQ0c7Z0JBQ0EsSUFBRyxRQUFRLEdBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFDO29CQUM5RCxFQUFFLEdBQUcsSUFBSSxDQUFDO2lCQUNiOztvQkFDSSxFQUFFLEdBQUcsS0FBSyxDQUFDO2FBQ25CO1NBQ0o7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxrQ0FBWSxHQUFaLFVBQWEsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFDLEdBQUc7UUFDM0IsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQ2YsSUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEMsSUFBRyxRQUFRLEdBQUcsR0FBRyxFQUFDO1lBQ2QsSUFBRyxHQUFHLElBQUksSUFBSSxFQUFDO2dCQUNYLElBQUcsUUFBUSxHQUFHLGtCQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVc7b0JBQUUsRUFBRSxHQUFHLElBQUksQ0FBQzs7b0JBQzVFLEVBQUUsR0FBRyxLQUFLLENBQUM7YUFDbkI7aUJBQ0c7Z0JBQ0EsRUFBRSxHQUFHLElBQUksQ0FBQzthQUNiO1NBQ0o7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFHRCxnQ0FBVSxHQUFWLFVBQVcsTUFBTSxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsTUFBTTtRQUNoQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7UUFDaEIsSUFBRyxLQUFLLElBQUksQ0FBQztZQUFDLElBQUksR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMxQyxJQUFHLEtBQUssSUFBSSxDQUFDO1lBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQy9DLElBQUcsS0FBSyxJQUFJLENBQUM7WUFBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUM3QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELGlDQUFXLEdBQVg7UUFDSSxLQUFJLElBQUksQ0FBQyxHQUFFLENBQUMsRUFBRSxDQUFDLEdBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBQyxDQUFDLEVBQUUsRUFBQztZQUNsRSxJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBQztnQkFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7YUFDdkQ7U0FDSjtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVELGdDQUFVLEdBQVYsVUFBVyxLQUFLLEVBQUMsR0FBRyxFQUFDLElBQUk7UUFDckIsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRWxDLElBQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMzQixJQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUMsRUFBRSxHQUFHLEVBQUUsR0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztRQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsS0FBSyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRCxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3JDLEVBQUUsQ0FBQyxJQUFJLEVBQUMsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLENBQUM7YUFDdEIsS0FBSyxFQUFFLENBQUM7SUFDYixDQUFDO0lBRUQsb0NBQWMsR0FBZCxVQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDekIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUMsRUFBRSxFQUFDLEVBQUUsR0FBQyxFQUFFLENBQUMsR0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDdkQsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNsQixDQUFDO0lBRUQsdUNBQWlCLEdBQWpCLFVBQWtCLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7UUFDNUIsSUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEMsSUFBRyxRQUFRLEdBQUcsR0FBRztZQUFFLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFDbEMsSUFBTSxJQUFJLEdBQUcsUUFBUSxHQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELHdDQUFrQixHQUFsQixVQUFtQixFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1FBQzdCLElBQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLElBQUcsUUFBUSxHQUFHLElBQUk7WUFBRSxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3BDLElBQU0sSUFBSSxHQUFHLFFBQVEsR0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCx3Q0FBa0IsR0FBbEIsVUFBbUIsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtRQUM3QixJQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUMsRUFBRSxHQUFHLEVBQUUsR0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QyxJQUFHLFFBQVEsR0FBRyxJQUFJO1lBQUUsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNwQyxJQUFNLElBQUksR0FBRyxRQUFRLEdBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNqQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTTtJQUNOLDRCQUFNLEdBQU4sVUFBTyxJQUFJO1FBQVgsaUJBZ0NDO1FBL0JHLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ3JDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBRW5DLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sR0FBQyxJQUFJLENBQUM7UUFDbEMscUNBQXFDO1FBQ3JDLElBQUksS0FBSyxHQUFHLEdBQUcsR0FBQyxDQUFDLE1BQU0sR0FBQyxHQUFHLENBQUMsQ0FBQztRQUU3QixFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7YUFDbEIsRUFBRSxDQUFDLEdBQUcsRUFBQyxFQUFDLEtBQUssRUFBQyxHQUFHLEVBQUMsQ0FBQzthQUNuQixFQUFFLENBQUMsS0FBSyxFQUFDLEVBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxDQUFDO2FBQ2xCLEtBQUssRUFBRSxDQUFDO1FBRVQsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2FBQ2pCLEtBQUssQ0FBQyxHQUFHLENBQUM7YUFDVixFQUFFLENBQUMsS0FBSyxFQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDO2FBQ2hCLEtBQUssRUFBRSxDQUFDO1FBRVQscUJBQXFCO1FBQ3JCLGNBQWM7UUFDZCxvQkFBb0I7UUFDcEIsWUFBWTtRQUVaLFVBQVUsQ0FBQztZQUNQLG9FQUFvRTtZQUNwRSx3QkFBd0I7WUFDeEIsSUFBSTtZQUNKLElBQUcsS0FBSSxDQUFDLElBQUksSUFBSSxLQUFLLEVBQUM7Z0JBQ2xCLEtBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUNwQjtRQUVMLENBQUMsRUFBRSxLQUFLLEdBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUNELFFBQVE7SUFDUixtQ0FBYSxHQUFiLFVBQWMsTUFBYTtRQUN2QixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxLQUFLLEdBQUcsTUFBTSxDQUFDO1FBQ2YsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBLFNBQVM7UUFDOUMsSUFBSSxTQUFTLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUEsZUFBZTtRQUN0RCxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLEdBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQSxPQUFPO1FBQy9DLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDakIsSUFBRyxHQUFHLEdBQUcsRUFBRTtZQUFFLENBQUMsR0FBRyxHQUFHLEdBQUMsR0FBRyxDQUFDO1FBQ3pCLElBQUksUUFBUSxHQUFHLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUEsYUFBYTtRQUM5RCxJQUFJLElBQUksR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUcsUUFBUSxHQUFHLEVBQUU7WUFBRSxJQUFJLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQztRQUN4QyxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFBO0lBQ3pCLENBQUM7SUFHRCxjQUFjO0lBQ2QseUNBQW1CLEdBQW5CO1FBQ0ksSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssRUFBRTtZQUMzQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN0RCxJQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFDO2dCQUNsQixFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO3FCQUN2QixFQUFFLENBQUMsSUFBSSxFQUFDLEVBQUMsS0FBSyxFQUFDLEdBQUcsRUFBQyxLQUFLLEVBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUM7cUJBQzVDLEVBQUUsQ0FBQyxJQUFJLEVBQUMsRUFBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDLEtBQUssRUFBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQztxQkFDOUMsS0FBSyxFQUFFLENBQUE7Z0JBQ1IsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzVDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO3FCQUNiLEVBQUUsQ0FBQyxHQUFHLEVBQUMsRUFBQyxPQUFPLEVBQUMsR0FBRyxFQUFDLENBQUM7cUJBQ3JCLEtBQUssQ0FBQyxHQUFHLENBQUM7cUJBQ1YsRUFBRSxDQUFDLEdBQUcsRUFBQyxFQUFDLE9BQU8sRUFBQyxDQUFDLEVBQUMsQ0FBQztxQkFDbkIsS0FBSyxFQUFFLENBQUM7YUFDWjtZQUNELElBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLEVBQUM7Z0JBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2dCQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNmLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDYixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNsRSxJQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQztvQkFBRSxJQUFJLEdBQUcsUUFBUSxDQUFDLGtCQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFFbkcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsSUFBSSxHQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFFL0Qsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxHQUFFLEVBQUUsQ0FBQztnQkFDaEYsT0FBTyxDQUFDLEdBQUcsQ0FBRSxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDdEI7U0FDSjtJQUNMLENBQUM7SUFFRCw2QkFBTyxHQUFQO1FBQ0ksSUFBSSxJQUFJLEdBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO1FBQ3hDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVoQyxJQUFJLFFBQVEsR0FBRztZQUNYLFNBQVMsRUFBQyxPQUFPO1lBQ2pCLE1BQU0sRUFBRSxJQUFJO1NBQ2YsQ0FBQztRQUNGLGdDQUFnQztRQUNoQyxtQkFBUSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBQyxjQUFXLENBQUMsQ0FBQyxDQUFBO0lBQ3JELENBQUM7SUFFRCxnQ0FBVSxHQUFWO1FBQ0ksSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JELElBQUcsT0FBTyxJQUFJLFVBQVUsSUFBSSxPQUFPLElBQUUsSUFBSSxFQUFDO1lBQ3RDLE9BQU8sR0FBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDaEM7YUFDRztZQUNBLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNqQyxJQUFJLElBQUksQ0FBQyxDQUFDO1lBQ1YsT0FBTyxHQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7WUFDNUMsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDN0MsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBQyxPQUFPLENBQUMsQ0FBQztTQUNsRDtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRCxnQ0FBVSxHQUFWO1FBQ0ksZUFBZTtRQUNmLElBQU0sVUFBVSxHQUFHLGdFQUFnRSxDQUFDO1FBQ3BGLGdCQUFnQjtRQUNoQixJQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFFckIsbUJBQW1CO1FBQ25CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDckIsbUJBQW1CO1lBQ3ZCLElBQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsRSxjQUFjO1lBQ2QsSUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNsRCxZQUFZO1lBQ1osU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM5QjtRQUNELElBQUksSUFBSSxHQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN4QyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELDZCQUFPLEdBQVAsVUFBUSxJQUFJO1FBQ1IsSUFBSSxRQUFRLEdBQUc7WUFDWCxNQUFNLEVBQUMsQ0FBQztZQUNSLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGVBQWUsRUFBRSxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSztZQUNqRCxTQUFTLEVBQUUsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU87U0FFaEQsQ0FBQztRQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEIsbUJBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFDLGNBQVcsQ0FBQyxFQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNqRCxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzdDLEVBQUUsQ0FBQyxHQUFHLEVBQUMsRUFBQyxPQUFPLEVBQUMsR0FBRyxFQUFDLENBQUM7YUFDckIsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNSLEVBQUUsQ0FBQyxHQUFHLEVBQUMsRUFBQyxPQUFPLEVBQUMsRUFBRSxFQUFDLENBQUM7YUFDcEIsSUFBSSxDQUFDO1lBQ0YsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxFQUFFLENBQUE7SUFFWixDQUFDO0lBRUQsNEJBQU0sR0FBTjtRQUVJLElBQUksSUFBSSxHQUFHLGtCQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztRQUN6QyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2xDLCtEQUErRDtRQUMvRCxxRUFBcUU7UUFDckUsZ0RBQWdEO1FBQ2hELGdEQUFnRDtRQUNoRCxpREFBaUQ7UUFDakQsbURBQW1EO1FBQ25ELGlFQUFpRTtRQUNqRSw2RUFBNkU7UUFDN0UsbUZBQW1GO1FBRW5GLHFEQUFxRDtRQUNyRCx3REFBd0Q7UUFFeEQsK0RBQStEO1FBQy9ELHlFQUF5RTtRQUN6RSxnRkFBZ0Y7UUFFaEYsa0JBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRSxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsZ0NBQVUsR0FBVjtRQUNJLElBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7YUFDbkMsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUM3QyxLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUM7WUFDdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoRTtJQUNMLENBQUM7SUFHRCw4QkFBUSxHQUFSO1FBQ0ksMkJBQVksQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakQsd0RBQXdEO0lBQzVELENBQUM7SUFFRCwrQkFBUyxHQUFUO1FBQ0ksdURBQXVEO1FBQ3ZELDJCQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUdELDRCQUFNLEdBQU4sVUFBUSxFQUFFO0lBRVYsQ0FBQztJQXRtQ0Q7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzs2Q0FDRztJQUVyQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDOzZDQUNHO0lBRXZCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7NkNBQ0c7SUFFdkI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQzs2Q0FDRztJQUV2QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO21EQUNTO0lBRTdCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7NENBQ0U7SUFnQ3BCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7bURBQ1M7SUE3Q1gsV0FBVztRQUQvQixPQUFPO09BQ2EsV0FBVyxDQTBtQy9CO0lBQUQsa0JBQUM7Q0ExbUNELEFBMG1DQyxDQTFtQ3dDLEVBQUUsQ0FBQyxTQUFTLEdBMG1DcEQ7a0JBMW1Db0IsV0FBVyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5pbXBvcnQgR2FtZURhdGEgZnJvbSAnLi9HYW1lRGF0YSc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbiB9IGZyb20gJy4vTm90aWZpY2F0aW9uJztcclxuaW1wb3J0IEh0dHBVdGlsIGZyb20gJy4vY3J5cHRvL3NlcnZlckFQSSc7XHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhbWVNYW5hZ2VyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGJhbGw6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLlByZWZhYilcclxuICAgIHFpdTE6IGNjLlByZWZhYiA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuUHJlZmFiKVxyXG4gICAgcWl1MjogY2MuUHJlZmFiID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5QcmVmYWIpXHJcbiAgICBxaXUzOiBjYy5QcmVmYWIgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLlByZWZhYilcclxuICAgIGxpbmVQcmVmYWI6IGNjLlByZWZhYiA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGhpdDogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgYmcxOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIGJnMjogY2MuTm9kZSA9IG51bGw7XHJcbiAgICB0aW1lOiBjYy5MYWJlbCA9IG51bGw7XHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcbiAgICBiZWdpbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgZnVodW86IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIG92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHNob3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGNvdW50VGltZTpudW1iZXI7XHJcbiAgICB0aW1lQ291bnQ6bnVtYmVyO1xyXG4gICAgZml0VG9wOm51bWJlcjtcclxuICAgIGZpdEJvdDpudW1iZXI7XHJcbiAgICBsZXZlbDpudW1iZXI7XHJcbiAgICBjbGlja05vdzpudW1iZXI7XHJcbiAgICBzdGFydFRpbWU6bnVtYmVyO1xyXG4gICAgb3ZlclRpbWU6bnVtYmVyO1xyXG4gICAgd2luVGltZTpudW1iZXI7XHJcbiAgICBjbGlja0NvdW50Om51bWJlcjtcclxuICAgIHRpbWVTdGFydDpudW1iZXI7XHJcbiAgICByb3V0ZV9BcnJheTogYW55W107XHJcbiAgICBub3dfQXJyYXk6IGFueVtdO1xyXG4gICAgYmFsbF9BcnJheTogYW55W107XHJcbiAgICBMaW5lX0FycmF5OiBhbnlbXTtcclxuICAgIFBvc19BcnJheTogYW55W107XHJcbiAgICB0aW1lX0FycmF5OiBhbnlbXTtcclxuICAgIGNvbG9yX0FycmF5OiBhbnlbXTtcclxuXHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgbGV2ZWxMYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG4gICAgc3RhdGljIF9pbnN0YW5jZTogYW55O1xyXG4gICAgbW92ZUFycmF5OiBudW1iZXJbXTtcclxuICAgIHJlcGVhdDogbnVtYmVyO1xyXG4gICAgbnVtYmVyUmVwZWF0OiBudW1iZXI7XHJcbiAgICByb3VuZDogbnVtYmVyO1xyXG4gICAgcGF1c2U6IGJvb2xlYW47XHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgICAgIHRoaXMuZml0KCk7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcbiAgICBmaXQoKXtcclxuICAgICAgICB0aGlzLmZpdFRvcCA9IDQ1MDsgIC8vNjAwXHJcbiAgICAgICAgdGhpcy5maXRCb3QgPSAtNjAwOyAvLy03MDBcclxuICAgICAgICB2YXIgamcgPSB0aGlzLnNldEZpdCgpO1xyXG4gICAgICAgIGlmKCFqZyl7XHJcbiAgICAgICAgICAgIHRoaXMuZml0VG9wID0gNjAwO1xyXG4gICAgICAgICAgICB0aGlzLmZpdEJvdCA9IC03MDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFNldFNjcmVlblJlc29sdXRpb25GbGFnICgpIHtcclxuICAgICAgICBsZXQgc2l6ZSA9IGNjLndpblNpemU7XHJcbiAgICAgICAgbGV0IHdpZHRoID0gc2l6ZS53aWR0aDtcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQ7XHJcbiAgICAgICAgaWYgKChoZWlnaHQgLyB3aWR0aCkgPiAoMTYuMiAvIDkpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICAvL+WIpOaWreWFqOmdouWxj+mAgumFjVxyXG4gICAgc2V0Rml0ICgpIHtcclxuICAgICAgICBsZXQgZmxhZyA9IHRoaXMuZ2V0U2V0U2NyZWVuUmVzb2x1dGlvbkZsYWcoKTtcclxuICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmbGFnO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Yid5aeL5YyW5pWw5o2uXHJcbiAgICBpbml0KCl7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZU92ZXJcIikuekluZGV4ID0gMTAwO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkdhbWVPdmVyXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuYmFsbC56SW5kZXggPSAxMDA7XHJcbiAgICAgICAgdGhpcy5iZzEgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJiZzFcIik7XHJcbiAgICAgICAgdGhpcy5iZzIgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJiZzJcIik7XHJcbiAgICAgICAgdGhpcy50aW1lID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiVG9wXCIpLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInNob3dCdG5cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5iZWdpbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub3ZlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZnVodW8gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucGF1c2UgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucm91bmQgPSAwOyBcclxuICAgICAgICB0aGlzLmxldmVsID0gMjtcclxuICAgICAgICB0aGlzLmNvdW50VGltZSA9IDYwO1xyXG4gICAgICAgIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmN1c3RvbSAhPSAwKXtcclxuICAgICAgICAgICAgdGhpcy5sZXZlbCA9IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmN1c3RvbTtcclxuICAgICAgICAgICAgLy8gdGhpcy5sZXZlbExhYmVsLnN0cmluZyA9IHRoaXMubGV2ZWwgKyBcIlwiO1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5jdXN0b20gKz0gMTtcclxuICAgICAgICAgICAgdGhpcy5jb3VudFRpbWUgPSAxMjAwMDAwMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdGhpcy5sZXZlbExhYmVsLnN0cmluZyA9IHRoaXMubGV2ZWwgKyBcIlwiO1xyXG4gXHJcbiAgICAgICAgdGhpcy50aW1lQ291bnQgPSAwLjE7XHJcbiAgICAgICAgdGhpcy5jbGlja05vdyA9IDA7XHJcbiAgICAgICAgdGhpcy5jbGlja0NvdW50ID0gMDtcclxuICAgICAgICB0aGlzLnRpbWVTdGFydCA9IDA7XHJcbiAgICAgICAgdGhpcy5yZXBlYXQgPSAtMTtcclxuICAgICAgICB0aGlzLm51bWJlclJlcGVhdCA9IC0xO1xyXG4gICAgICAgIHRoaXMucm91dGVfQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLm1vdmVBcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMubm93X0FycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5iYWxsX0FycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5Qb3NfQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLnRpbWVfQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLmNvbG9yX0FycmF5ID0gW107XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdBTUVfREFUQSA9IFtdO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnN1Y2Nlc3MgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IDA7XHJcbiAgICAgICAgdGhpcy5vdmVyVGltZSA9IDA7XHJcbiAgICAgICAgdGhpcy53aW5UaW1lID0gMDtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy50b3RhbCA9IDA7XHJcblxyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLm1lYW5fVGltZSA9IDA7XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZSh0aGlzLnVwZGF0ZUNvdW50RG93blRpbWUsMSk7XHJcblxyXG5cclxuICAgICAgICB0aGlzLnN0YXJ0R2FtZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGJhY2tTY2VuZSgpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkxvYWRTY2VuZVwiKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy/kuIvkuIDlhbPvvIzmiJbogIXph43mlrDlvIDlp4vvvIzmiJbogIXov5Tlm57kuIrkuIDlhbPvvIzmoLnmja5sZXZlbOWGs+WumlxyXG4gICAgcmVTdGFydCh0eXBlKXtcclxuICAgICAgICAvLyBpZihHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5jdXN0b20gIT0gMCl7XHJcbiAgICAgICAgLy8gICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkxvYWRTY2VuZVwiKTtcclxuICAgICAgICAvLyAgICAgcmV0dXJuO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJzaG93QnRuXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZGVzdHJveUxpbmUoKTtcclxuICAgICAgICB0aGlzLnRpbWVDb3VudCA9IDAuMTtcclxuICAgICAgICB0aGlzLmNsaWNrTm93ID0gMDtcclxuICAgICAgICB0aGlzLnRpbWVTdGFydCA9IDA7XHJcbiAgICAgICAgdGhpcy5yZXBlYXQgPSAtMTtcclxuICAgICAgICB0aGlzLm51bWJlclJlcGVhdCA9IC0xO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuYmVnaW4gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJvdXRlX0FycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5ub3dfQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLmJhbGxfQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLlBvc19BcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMubW92ZUFycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy50aW1lX0FycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5jb2xvcl9BcnJheSA9IFtdO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmKHR5cGUgPT0gMCl7XHJcbiAgICAgICAgICAgIHRoaXMuYmdNb3ZlKDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHR5cGUgPT0gMSl7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRHYW1lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodHlwZSA9PSAyKXtcclxuICAgICAgICAgICAgdGhpcy5iZ01vdmUoLTEpO1xyXG4gICAgICAgIH1cclxuICAgIFxyXG4gICAgfVxyXG5cclxuICAgIGJlZ2luX0d1aWRlKCl7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8v6I635Y+W5pe26Ze05oizXHJcbiAgICBnZXRUaW1lKCl7XHJcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgcmV0dXJuIHRpbWVzdGFtcDtcclxuICAgIH1cclxuXHJcbiAgICAvL+iOt+iDnFxyXG4gICAgcGFzc0xldmVsKCl7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95TGluZSgpO1xyXG4gICAgICAgIGlmKHRoaXMub3ZlciA9PSBmYWxzZSAmJiB0aGlzLmNvdW50VGltZSA+PSAwKXtcclxuICAgICAgICAgICAgbGV0IHRpbWVBcnJheSA9IFtdO1xyXG4gICAgICAgICAgICBsZXQgdGltZUNvdW50ID0gMDtcclxuICAgICAgICAgICAgbGV0IGJhbGwgPSB0aGlzLmJhbGxfQXJyYXlbMF07XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0xOyBpPCB0aGlzLmJhbGxfQXJyYXkubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgbGV0IHRpbWUgPSB0aGlzLmNhbGN1bGF0ZURpc3RhbmNlMih0aGlzLmJhbGxfQXJyYXlbaV0ueCx0aGlzLmJhbGxfQXJyYXlbaV0ueSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJhbGxfQXJyYXlbaS0xXS54LHRoaXMuYmFsbF9BcnJheVtpLTFdLnkpO1xyXG4gICAgICAgICAgICAgICAgdGltZUFycmF5LnB1c2godGltZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9yKGxldCBrPTE7IGs8IHRoaXMuYmFsbF9BcnJheS5sZW5ndGg7IGsrKyl7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjYy50d2VlbihiYWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIC50byh0aW1lQXJyYXlbay0xXSx7eDp0aGlzLmJhbGxfQXJyYXlba10ueCx5OnRoaXMuYmFsbF9BcnJheVtrXS55fSlcclxuICAgICAgICAgICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWxsX0FycmF5W2tdLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihrID09IHRoaXMuYmFsbF9BcnJheS5sZW5ndGgtMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhbGwub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhbGwucG9zaXRpb24gPSBjYy52MyhiYWxsLngsYmFsbC55LDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhbGwuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhclN1bigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVTdGFydCgwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICAgICAgfSwgdGltZUNvdW50KjEwMDApO1xyXG4gICAgICAgICAgICAgICAgdGltZUNvdW50ICs9ICh0aW1lQXJyYXlbay0xXSswLjEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIC8v5aSx6LSlXHJcbiAgICBsb3NlTGV2ZWwodHlwZSl7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95TGluZSgpO1xyXG4gICAgICAgIGlmKHRoaXMub3ZlciA9PSBmYWxzZSAmJiB0aGlzLmNvdW50VGltZSA+PSAwKXtcclxuICAgICAgICAgICAgbGV0IGJhbGwgPSB0aGlzLmJhbGxfQXJyYXlbMF07XHJcbiAgICAgICAgICAgIGZvcihsZXQgaz0xOyBrPCB0aGlzLmJhbGxfQXJyYXkubGVuZ3RoOyBrKyspe1xyXG4gICAgICAgICAgICAgICAgY2MudHdlZW4odGhpcy5iYWxsX0FycmF5W2tdKVxyXG4gICAgICAgICAgICAgICAgLnRvKDIse3g6YmFsbC54LHk6YmFsbC55fSlcclxuICAgICAgICAgICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFsbF9BcnJheVtrXS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBpZihrID09IHRoaXMuYmFsbF9BcnJheS5sZW5ndGgtMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFsbC5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhbGwucG9zaXRpb24gPSBjYy52MyhiYWxsLngsYmFsbC55LDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFyU3VuKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVTdGFydCh0eXBlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnN0YXJ0KClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJTdW4oKXtcclxuICAgICAgICBmb3IobGV0IGs9MDsgazwgdGhpcy5iYWxsX0FycmF5Lmxlbmd0aDsgaysrKXtcclxuICAgICAgICAgICAgdGhpcy5iYWxsX0FycmF5W2tdLnJlbW92ZUZyb21QYXJlbnQoKTtcclxuICAgICAgICAgICAgdGhpcy5iYWxsX0FycmF5W2tdID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/ngrnlh7vlpKrpmLPmiafooYzmlrnms5VcclxuICAgIGNsaWNrU3VuKGRhdGEpe1xyXG4gICAgICAgIGlmKHRoaXMuYmVnaW4gPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIHRoaXMuY2xpY2tDb3VudCArPSAxO1xyXG4gICAgICAgICAgICBsZXQgY2xpY2tUaW1lID0gdGhpcy5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIHRoaXMudGltZV9BcnJheS5wdXNoKChjbGlja1RpbWUgLSB0aGlzLnRpbWVTdGFydCkpXHJcbiAgICAgICAgICAgIHRoaXMudGltZVN0YXJ0ID0gdGhpcy5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGlmKGRhdGEgPT0gdGhpcy5jbGlja05vdyl7XHJcbiAgICAgICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQXVkaW9NYW5hZ2VyLnBsYXlBdWRpb0J1dHRvbigpO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5jbGlja05vdyA+IDApe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlTGluZShjYy52Mih0aGlzLmJhbGxfQXJyYXlbdGhpcy5jbGlja05vdy0xXS54LHRoaXMuYmFsbF9BcnJheVt0aGlzLmNsaWNrTm93LTFdLnkpLFxyXG4gICAgICAgICAgICAgICAgICAgIGNjLnYyKHRoaXMuYmFsbF9BcnJheVt0aGlzLmNsaWNrTm93XS54LHRoaXMuYmFsbF9BcnJheVt0aGlzLmNsaWNrTm93XS55KSxcclxuICAgICAgICAgICAgICAgICAgICAwLjIpOyAgIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jbGlja05vdyArPSAxO1xyXG4gICAgICAgICAgICAgICAgLy8gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8udG90YWwgKz0gMTtcclxuICAgICAgXHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmJhbGxfQXJyYXlbdGhpcy5jbGlja05vdy0xXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWxsX0FycmF5W3RoaXMuY2xpY2tOb3ctMV0uZ2V0Q2hpbGRCeU5hbWUoXCJndWFuZ1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmNsaWNrTm93ID09IHRoaXMubm93X0FycmF5Lmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXVzZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8udG90YWwgKz0gdGhpcy5jbGlja05vdztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVyVGltZSA9IHRoaXMuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLm1lYW5fVGltZSArPSAodGhpcy5vdmVyVGltZSAtIHRoaXMuc3RhcnRUaW1lKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5tZWFuX1RpbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmaW5pc2hfdGltZSA9IHBhcnNlSW50KCh0aGlzLm92ZXJUaW1lIC0gdGhpcy5zdGFydFRpbWUpLzEwMCtcIlwiKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IDA7IHRoaXMub3ZlclRpbWUgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb2xvciA9IFwieVwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubGV2ZWwgPCA0ICYmIHRoaXMubGV2ZWwgPiAxKWNvbG9yID0gXCJ5clwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYodGhpcy5sZXZlbCA+PSA0KSBjb2xvciA9IFwieXJiXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHdpbiA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIldpblwiKTtcclxuICAgICAgICAgICAgICAgICAgICB3aW4uYWN0aXZlID0gdHJ1ZTsgd2luLnNldFNjYWxlKDApO1xyXG4gICAgICAgICAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5BdWRpb01hbmFnZXIucGxheVdpbigpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91bmQgKz0gMTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc3VuQXJyYXkgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm1vdmVBcnJheS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBtPTAgOyBtPHRoaXMubW92ZUFycmF5Lmxlbmd0aDttKyspe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobSA9PSB0aGlzLnJlcGVhdCB8fCBtID09IHRoaXMubnVtYmVyUmVwZWF0KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVBcnJheVttXSA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW5BcnJheS5wdXNoKHRoaXMubW92ZUFycmF5W21dKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IG09MCA7IG08dGhpcy5iYWxsX0FycmF5Lmxlbmd0aDttKyspe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobSA9PSB0aGlzLnJlcGVhdCB8fCBtID09IHRoaXMubnVtYmVyUmVwZWF0KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW5BcnJheS5wdXNoKDIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bkFycmF5LnB1c2goMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEgPSBcclxuICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZToxLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzczp0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91bmQ6dGhpcy5yb3VuZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsU3VuQ291bnQ6dGhpcy5ub3dfQXJyYXkubGVuZ3RoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZWRTdW5Db3VudDpHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GT1t0aGlzLmxldmVsLTFdLm1vdmVOdW1iZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW5TcGVlZDpHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GT1t0aGlzLmxldmVsLTFdLm1vdmVTcGVlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJsYXBTdW5Db3VudDpHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GT1t0aGlzLmxldmVsLTFdLnJlcGVhdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yTGlzdDp0aGlzLmNvbG9yX0FycmF5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246ZmluaXNoX3RpbWUvMTAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmaWN1bHR5TGV2ZWw6dGhpcy5sZXZlbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bkxpc3Q6c3VuQXJyYXksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwVGltZUxpc3Q6dGhpcy50aW1lX0FycmF5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyOnRoaXMuY291bnRUaW1lXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3V0UHV0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREYXRhKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MudHdlZW4od2luKVxyXG4gICAgICAgICAgICAgICAgICAgIC5kZWxheSgwLjQpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRvKDAuMDEse3NjYWxlOjIuNX0pXHJcbiAgICAgICAgICAgICAgICAgICAgLnRvKDAuMzUse3NjYWxlOjF9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5kZWxheSgwLjQpXHJcbiAgICAgICAgICAgICAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbi5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95TGluZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm92ZXIgPT0gZmFsc2UgJiYgdGhpcy5jb3VudFRpbWUgPj0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmxldmVsID49IDE1KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5zdWNjZXNzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxldmVsICs9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5sZXZlbExhYmVsLnN0cmluZyA9IHRoaXMubGV2ZWwgKyBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZnVodW8gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXNzTGV2ZWwoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sZXZlbCArPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMubGV2ZWxMYWJlbC5zdHJpbmcgPSB0aGlzLmxldmVsICsgXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZ1aHVvID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXNzTGV2ZWwoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldExvc3MoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyB0aGlzLmhpdEFjdGlvbihkYXRhKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgc2V0TG9zcygpe1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5BdWRpb01hbmFnZXIucGxheVdhcm5pbmcoKTtcclxuICAgICAgICB0aGlzLmJlZ2luID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vdmVyVGltZSA9IHRoaXMuZ2V0VGltZSgpO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLm1lYW5fVGltZSArPSAodGhpcy5vdmVyVGltZSAtIHRoaXMuc3RhcnRUaW1lKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5tZWFuX1RpbWUpO1xyXG4gICAgICAgIGxldCBmaW5pc2hfdGltZSA9IHBhcnNlSW50KCh0aGlzLm92ZXJUaW1lIC0gdGhpcy5zdGFydFRpbWUpLzEwMCtcIlwiKTtcclxuICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IDA7IHRoaXMub3ZlclRpbWUgPSAwO1xyXG4gICAgICAgIGxldCBjb2xvciA9IFwieVwiO1xyXG4gICAgICAgIGlmKHRoaXMubGV2ZWwgPCA0ICYmIHRoaXMubGV2ZWwgPiAxKWNvbG9yID0gXCJ5clwiO1xyXG4gICAgICAgIGVsc2UgaWYodGhpcy5sZXZlbCA+PSA0KSBjb2xvciA9IFwieXJiXCI7XHJcbiAgICAgICAgdGhpcy5yb3VuZCArPSAxO1xyXG4gICAgICAgIGxldCBzdW5BcnJheSA9IFtdO1xyXG4gICAgICAgIGlmKHRoaXMubW92ZUFycmF5Lmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICBmb3IobGV0IG09MCA7IG08dGhpcy5tb3ZlQXJyYXkubGVuZ3RoO20rKyl7XHJcbiAgICAgICAgICAgICAgICBpZihtID09IHRoaXMucmVwZWF0IHx8IG0gPT0gdGhpcy5udW1iZXJSZXBlYXQpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZUFycmF5W21dID0gMjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHN1bkFycmF5LnB1c2godGhpcy5tb3ZlQXJyYXlbbV0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGZvcihsZXQgbT0wIDsgbTx0aGlzLmJhbGxfQXJyYXkubGVuZ3RoO20rKyl7XHJcbiAgICAgICAgICAgICAgICBpZihtID09IHRoaXMucmVwZWF0IHx8IG0gPT0gdGhpcy5udW1iZXJSZXBlYXQpe1xyXG4gICAgICAgICAgICAgICAgICAgIHN1bkFycmF5LnB1c2goMik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgc3VuQXJyYXkucHVzaCgwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuIFxyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBID0gXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOjEsXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6ZmFsc2UsXHJcbiAgICAgICAgICAgIHJvdW5kOnRoaXMucm91bmQsXHJcbiAgICAgICAgICAgIHRvdGFsU3VuQ291bnQ6dGhpcy5ub3dfQXJyYXkubGVuZ3RoLFxyXG4gICAgICAgICAgICBtb3ZlZFN1bkNvdW50OkdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPW3RoaXMubGV2ZWwtMV0ubW92ZU51bWJlcixcclxuICAgICAgICAgICAgc3VuU3BlZWQ6R2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk9bdGhpcy5sZXZlbC0xXS5tb3ZlU3BlZWQsXHJcbiAgICAgICAgICAgIG92ZXJsYXBTdW5Db3VudDpHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GT1t0aGlzLmxldmVsLTFdLnJlcGVhdCxcclxuICAgICAgICAgICAgY29sb3JMaXN0OnRoaXMuY29sb3JfQXJyYXksXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOmZpbmlzaF90aW1lLzEwLFxyXG4gICAgICAgICAgICBkaWZmaWN1bHR5TGV2ZWw6dGhpcy5sZXZlbCxcclxuICAgICAgICAgICAgc3VuTGlzdDpzdW5BcnJheSxcclxuICAgICAgICAgICAgc3RlcFRpbWVMaXN0OnRoaXMudGltZV9BcnJheSxcclxuICAgICAgICAgICAgcmVtYWluZGVyOnRoaXMuY291bnRUaW1lXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub3V0UHV0KCk7XHJcbiAgICAgICAgdGhpcy5zZXREYXRhKCk7XHJcbiAgICAgICAgaWYodGhpcy5mdWh1byA9PSB0cnVlKXtcclxuICAgICAgICAgICAgdGhpcy5mdWh1byA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmxvc2VMZXZlbCgxKTtcclxuICAgICAgICB9IFxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubGV2ZWwgPiAyKXtcclxuICAgICAgICAgICAgICAgIHRoaXMubGV2ZWwgLT0gMTtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMubGV2ZWxMYWJlbC5zdHJpbmcgPSB0aGlzLmxldmVsICsgXCJcIjtcclxuICAgICAgICAgICAgICAgIHRoaXMuZnVodW8gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5mdWh1byA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb3NlTGV2ZWwoMik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9zZUxldmVsKDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBvdmVyID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiT3ZlclwiKTtcclxuICAgICAgICBjYy50d2VlbihvdmVyKVxyXG4gICAgICAgIC50bygwLjI1LHtvcGFjaXR5OjI1NX0pXHJcbiAgICAgICAgLmRlbGF5KDAuMSlcclxuICAgICAgICAudG8oMC4yLHtvcGFjaXR5OjB9KVxyXG4gICAgICAgIC5kZWxheSgwLjEpXHJcbiAgICAgICAgLnRvKDAuMTUse29wYWNpdHk6MjU1fSlcclxuICAgICAgICAuZGVsYXkoMC4xKVxyXG4gICAgICAgIC50bygwLjEse29wYWNpdHk6MH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgaGl0QWN0aW9uKGRhdGEpe1xyXG4gICAgICAgIHRoaXMuaGl0LmFjdGl2ZSA9IHRydWU7IHRoaXMuaGl0Lm9wYWNpdHkgPSAwO1xyXG4gICAgICAgIHRoaXMuaGl0LnNldFBvc2l0aW9uXHJcbiAgICAgICAgdGhpcy5oaXQuc2V0UG9zaXRpb24odGhpcy5iYWxsX0FycmF5W2RhdGFdLngrMzUsdGhpcy5iYWxsX0FycmF5W2RhdGFdLnkrMzUpO1xyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMuaGl0KVxyXG4gICAgICAgIC50bygwLHtvcGFjaXR5OjI1NX0pXHJcbiAgICAgICAgLnRvKDAuMix7cG9zaXRpb246Y2MudjModGhpcy5oaXQueC0zNSx0aGlzLmhpdC55LTM1LDApfSlcclxuICAgICAgICAuZGVsYXkoMC4yKVxyXG4gICAgICAgIC50bygwLjEse29wYWNpdHk6MH0pXHJcbiAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgIHRoaXMuaGl0LmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy/lvIDlp4vmuLjmiI9cclxuICAgIHN0YXJ0R2FtZSgpe1xyXG4gICAgICAgIGlmKHRoaXMub3ZlciA9PSBmYWxzZSAmJiB0aGlzLmNvdW50VGltZSA+IDApe1xyXG4gICAgICAgICAgICB0aGlzLnBhdXNlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVTdW4oKTtcclxuICAgICAgICAgICAgdGhpcy5iZWdpbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYy50d2Vlbih0aGlzLmJhbGwpXHJcbiAgICAgICAgICAgIC50bygwLjUse29wYWNpdHk6MjU1LHNjYWxlOjEuM30pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLnJ1bkdhbWUoKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBydW5HYW1lKCl7XHJcbiAgICAgICAgbGV0IHRpbWUgPSAtNjUwO1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMubm93X0FycmF5Lmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgdGltZSA9IHRoaXMubm93X0FycmF5W2ldLnRpbWUqMTAwMCArIHRpbWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5vdmVyID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcCA9IHRoaXMubm93X0FycmF5W2ldLnRpbWVDb3VudDtcclxuICAgICAgICAgICAgICAgICAgICBpZih0ZW1wID4gMC41KSB0ZW1wID0gMC41O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGkgIT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuYmFsbCAmJiB0aGlzLm5vd19BcnJheVtpXSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUxpbmUoY2MudjIodGhpcy5iYWxsLngsdGhpcy5iYWxsLnkpLGNjLnYyKHRoaXMubm93X0FycmF5W2ldLngsdGhpcy5ub3dfQXJyYXlbaV0ueSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vd19BcnJheVtpXS50aW1lLXRlbXApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMuYmFsbClcclxuICAgICAgICAgICAgICAgICAgICAudG8odGhpcy5ub3dfQXJyYXlbaV0udGltZS10ZW1wLHt4OnRoaXMubm93X0FycmF5W2ldLngseTp0aGlzLm5vd19BcnJheVtpXS55fSlcclxuICAgICAgICAgICAgICAgICAgICAudG8oMC4xLHtzY2FsZToxfSlcclxuICAgICAgICAgICAgICAgICAgICAuY2FsbCgoKT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZUJhbGwoaSx0aGlzLm5vd19BcnJheVtpXS5jb2xvcix0aGlzLm5vd19BcnJheVtpXS5zcGVlZCx0aGlzLm5vd19BcnJheVtpXS5yZXBlYXQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihpID09IHRoaXMubm93X0FycmF5Lmxlbmd0aCAtMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhbGwub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3lMaW5lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbkdhbWUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GT1t0aGlzLmxldmVsLTFdLm1vdmVOdW1iZXI8MSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlQWN0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxNTApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAuc3RhcnQoKVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSwgdGltZSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlTW92ZSgpe1xyXG4gICAgICAgIGlmKHRoaXMub3ZlciA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgIGxldCBpbmZvID0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk9bdGhpcy5sZXZlbC0xXTtcclxuICAgICAgICAgICAgLy/mlLnlj5jnp7vliqjpgJ/luqZcclxuICAgICAgICAgICAgdmFyIHNwZWVkID0gNztcclxuICAgICAgICAgICAgaWYoaW5mby5tb3ZlU3BlZWQgPj0gMil7XHJcbiAgICAgICAgICAgICAgICBzcGVlZCA9IDcgLSBpbmZvLm1vdmVTcGVlZC8yO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGluZm8ucmVwZWF0ID09IDEpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXBlYXQgID0gcGFyc2VJbnQoKE1hdGgucmFuZG9tKCkqKGluZm8ubnVtYmVyLTEpKzEpICsgXCJcIik7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGVtcE51bWJlciA9IDA7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnJlcGVhdCA9IDQ7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLnJlcGVhdCAgPiA0KXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm51bWJlclJlcGVhdCA9IHBhcnNlSW50KE1hdGgucmFuZG9tKCkqNCArIFwiXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMucmVwZWF0ICA9PSAoaW5mby5udW1iZXItMSkpICAvL+WmguaenOaYr+acgOWQjuS4gOS4qiDkuI3og73ot5/nrKzkuIDkuKrph43lj6BcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm51bWJlclJlcGVhdCA9IHRoaXMucmVwZWF0ICAtIHBhcnNlSW50KCAoTWF0aC5yYW5kb20oKSozICsgMikrIFwiXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgdGVtcE51bWJlciA9ICB0aGlzLlBvc19BcnJheVt0aGlzLm51bWJlclJlcGVhdF07XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Qb3NfQXJyYXlbdGhpcy5yZXBlYXQgXSA9IHRlbXBOdW1iZXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNleyAvLyAwIDEgMiAzIDQgNSBcclxuICAgICAgICAgICAgICAgICAgICAvLyA2IC0gMyAtIDEgID0gMiA0ICAwMSA0XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5yZXBlYXQgID09IDApIHRoaXMucmVwZWF0ICA9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoKGluZm8ubnVtYmVyLTEtdGhpcy5yZXBlYXQgKSA9PSAyKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJSZXBlYXQgPSBpbmZvLm51bWJlciAtIDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBOdW1iZXIgPSAgdGhpcy5Qb3NfQXJyYXlbdGhpcy5udW1iZXJSZXBlYXRdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKChpbmZvLm51bWJlci0xLXRoaXMucmVwZWF0ICkgPT0gMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyUmVwZWF0ID0gdGhpcy5yZXBlYXQgLSAyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wTnVtYmVyID0gIHRoaXMuUG9zX0FycmF5W3RoaXMubnVtYmVyUmVwZWF0XTtcclxuICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoKGluZm8ubnVtYmVyLTEtdGhpcy5yZXBlYXQgKSA9PSAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJSZXBlYXQgPSB0aGlzLnJlcGVhdCAtIDI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBOdW1iZXIgPSAgdGhpcy5Qb3NfQXJyYXlbdGhpcy5udW1iZXJSZXBlYXRdO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZigoaW5mby5udW1iZXItMS10aGlzLnJlcGVhdCApID4gMil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyUmVwZWF0ID0gcGFyc2VJbnQoTWF0aC5yYW5kb20oKSooaW5mby5udW1iZXItdGhpcy5yZXBlYXQgLTIpICsgXCJcIikgKyB0aGlzLnJlcGVhdCAgKyAyIDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcE51bWJlciA9ICB0aGlzLlBvc19BcnJheVt0aGlzLm51bWJlclJlcGVhdF07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyUmVwZWF0ID0gdGhpcy5yZXBlYXQgLSAyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wTnVtYmVyID0gIHRoaXMuUG9zX0FycmF5W3RoaXMubnVtYmVyUmVwZWF0XTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Qb3NfQXJyYXlbdGhpcy5yZXBlYXRdID0gdGVtcE51bWJlcjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihpbmZvLm1vdmVOdW1iZXIgPiAwKXtcclxuICAgICAgICAgICAgICAgIC8vMCAxIDIgMyA0IDUgNiA3IDggOVxyXG4gICAgICAgICAgICAgICAgLy/lj6/np7vliqjljLrliIZcclxuICAgICAgICAgICAgICAgIGxldCBwb3MgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgaWYoaW5mby5udW1iZXIgPT0gMykgdGhpcy5tb3ZlQXJyYXkgPSBbMCwxLDBdO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihpbmZvLm51bWJlciA9PSA0KSB0aGlzLm1vdmVBcnJheSA9IFswLDAsMSwwXTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYoaW5mby5udW1iZXIgPT0gNSkgdGhpcy5tb3ZlQXJyYXkgID0gWzAsMCwxLDAsMF07XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKGluZm8ubnVtYmVyID09IDUpIHRoaXMubW92ZUFycmF5ICA9IFswLDAsMSwwLDBdO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihpbmZvLm51bWJlciA9PSA2KSB0aGlzLm1vdmVBcnJheSAgPSBbMCwwLDEsMSwwLDBdO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihpbmZvLm51bWJlciA9PSA3KSB0aGlzLm1vdmVBcnJheSAgPSBbMCwwLDEsMSwxLDAsMF07XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKGluZm8ubnVtYmVyID09IDgpIHRoaXMubW92ZUFycmF5ICA9IFswLDAsMCwxLDEsMSwxLDBdO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihpbmZvLm51bWJlciA9PSA5KSB0aGlzLm1vdmVBcnJheSAgPSBbMCwwLDEsMSwxLDEsMSwwLDBdO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZihpbmZvLm51bWJlciA9PSAxMCkgdGhpcy5tb3ZlQXJyYXkgID0gWzAsMCwwLDEsMSwxLDEsMSwwLDBdO1xyXG4gICAgICAgICAgICAgICAgbGV0IHRpbWVPdXQgPSAwO1xyXG4gICAgICAgICAgICAgICAgLy/miZPkubHlj6/np7vliqjpobrluo9cclxuICAgICAgICAgICAgICAgIC8vIHRoaXMubW92ZUFycmF5IC5zb3J0KCgpID0+IE1hdGgucmFuZG9tKCkgLSAwLjUpO1xyXG4gICAgICAgICAgICAgICAgLy8gZGVidWdnZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8v6K6+572u6YeN5Y+gXHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnJlcGVhdCA9IC0xO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5udW1iZXJSZXBlYXQgPSAtMTtcclxuXHJcbiAgICAgICAgICAgICAgICAvL+WwhumHjeWPoOeahOiuvue9ruS4uuS4jeWPr+enu+WKqCAgMSAxIDEgMSAwIDAgMSAwIDAgMCAgIC8gMiA3XHJcbiAgICAgICAgICAgIGZvcihsZXQgayA9MDsgazx0aGlzLm1vdmVBcnJheS5sZW5ndGg7aysrKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubW92ZUFycmF5W2tdPT0xICYmIChrID09IHRoaXMucmVwZWF0IHx8IGsgPT0gdGhpcy5udW1iZXJSZXBlYXQpKXtcclxuICAgICAgICAgICAgICAgICAgICBmb3IobGV0IG0gPSB0aGlzLm1vdmVBcnJheS5sZW5ndGgtMTsgbSA+PSAwOyBtLS0pe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihtICE9IGsgJiYgdGhpcy5tb3ZlQXJyYXlbbV0gPT0gMCAmJiBtIT0gdGhpcy5yZXBlYXQgJiYgbSE9IHRoaXMubnVtYmVyUmVwZWF0KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZUFycmF5W21dID0gMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZUFycmF5W2tdID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gID0gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZm9yKGxldCBpID0wOyBpPHRoaXMuUG9zX0FycmF5Lmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5tb3ZlQXJyYXkgW2ldID09IDEpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRpbWVPdXQgKz0gMTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gdGhpcy5nZXRQb3MyKHRydWUsaSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuUG9zX0FycmF5W2ldID0gcG9zO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sIHRpbWVPdXQqMzAwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIC8v56e75Yqo5ZCO5pWw5o2uIOmHjeaWsOWIt+S4gOmBjei1i+WAvFxyXG4gICAgdXBkYXRlQXJyYXkoKXtcclxuICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLm5vd19BcnJheS5sZW5ndGgtMTtpKyspe1xyXG4gICAgICAgICAgICB0aGlzLm5vd19BcnJheVtpXS54ID0gdGhpcy5Qb3NfQXJyYXlbaV0ueDtcclxuICAgICAgICAgICAgdGhpcy5ub3dfQXJyYXlbaV0ueSA9IHRoaXMuUG9zX0FycmF5W2ldLnk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/lpKrpmLPliJ3lp4vljJblkI7np7vliqjmlrnms5VcclxuICAgICBtb3ZlQWN0aW9uKCl7XHJcbiAgICAgICAgdGhpcy51cGRhdGVBcnJheSgpO1xyXG4gICAgICAgIGxldCBtb3ZlQXJyYXkgPSB0aGlzLm1vdmVBcnJheTtcclxuICAgICAgICBsZXQgaW5mbyA9IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPW3RoaXMubGV2ZWwtMV07XHJcbiAgICAgICAgLy/mlLnlj5jnp7vliqjpgJ/luqZcclxuICAgICAgICB2YXIgc3BlZWQgPSA3O1xyXG4gICAgICAgIGlmKGluZm8ubW92ZVNwZWVkID49IDIpe1xyXG4gICAgICAgICAgICBzcGVlZCA9IDcgLSBpbmZvLm1vdmVTcGVlZC8yO1xyXG4gICAgICAgIH0gIFxyXG4gICAgICAgIFxyXG5cclxuICAgICAgICBpZihpbmZvLm1vdmVOdW1iZXIgPiAwKXtcclxuICAgICAgICAgICAgLy8wIDEgMiAzIDQgNSA2IDcgOCA5XHJcbiAgICAgICAgICAgIC8v5Y+v56e75Yqo5Yy65YiGXHJcbiAgICAgICAgICAgIGxldCBwb3MgPSBjYy52MigwLDApO1xyXG5cclxuXHJcbiAgICAgICAgICAgIC8vIHRoaXMucmVwZWF0ID0gLTE7XHJcbiAgICAgICAgICAgIC8vIHRoaXMubnVtYmVyUmVwZWF0ID0gLTE7XHJcblxyXG4gICAgICAgICAgICAgICAgLy/lsIbph43lj6DnmoTorr7nva7kuLrkuI3lj6/np7vliqggIDEgMSAxIDEgMCAwIDEgMCAwIDAgICAvIDIgN1xyXG4gICAgICAgICAgICBmb3IobGV0IGsgPTA7IGs8dGhpcy5tb3ZlQXJyYXkubGVuZ3RoO2srKyl7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm1vdmVBcnJheVtrXT09MSAmJiAoayA9PSB0aGlzLnJlcGVhdCB8fCBrID09IHRoaXMubnVtYmVyUmVwZWF0KSl7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBtID0gdGhpcy5tb3ZlQXJyYXkubGVuZ3RoLTE7IG0gPj0gMDsgbS0tKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYobSAhPSBrICYmIHRoaXMubW92ZUFycmF5W21dID09IDAgJiYgbSE9IHRoaXMucmVwZWF0ICYmIG0hPSB0aGlzLm51bWJlclJlcGVhdCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVBcnJheVttXSA9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVBcnJheVtrXSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtICA9IC0xO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgbGFzdE51bWJlciA9IDA7XHJcbiAgICAgICAgICAgIC8v6ZSB5a6a5pyA5ZCO5LiA5Liq5Y+v56e75Yqo55qEXHJcbiAgICAgICAgICAgIGZvcihsZXQgaiA9MDsgajxtb3ZlQXJyYXkubGVuZ3RoO2orKyl7XHJcbiAgICAgICAgICAgICAgICBpZihtb3ZlQXJyYXlbal09PTEpe1xyXG4gICAgICAgICAgICAgICAgICAgIGxhc3ROdW1iZXIgPSBqO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBmb3IobGV0IGkgPTA7IGk8dGhpcy5iYWxsX0FycmF5Lmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgaWYobW92ZUFycmF5W2ldID09IDEpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGkgIT0gbGFzdE51bWJlcil7ICAgIC8v5aaC5p6c5LiN5piv5pyA5ZCO5LiA5Liq56e75Yqo55qEXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0aW1lID0gc3BlZWQqdGhpcy5jYWxjdWxhdGVEaXN0YW5jZTModGhpcy5iYWxsX0FycmF5W2ldLngsdGhpcy5iYWxsX0FycmF5W2ldLnksdGhpcy5Qb3NfQXJyYXlbaV0ueCx0aGlzLlBvc19BcnJheVtpXS55KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWxsX0FycmF5W2ldLmdldENvbXBvbmVudChcIlN1blwiKS5tb3ZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MudHdlZW4odGhpcy5iYWxsX0FycmF5W2ldKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAudG8odGltZSx7cG9zaXRpb246dGhpcy5Qb3NfQXJyYXlbaV19KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFsbF9BcnJheVtpXS5nZXRDb21wb25lbnQoXCJTdW5cIikubW92ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy/lpoLmnpzmmK/mnIDlkI7kuIDkuKpcclxuICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGltZSA9IHNwZWVkKnRoaXMuY2FsY3VsYXRlRGlzdGFuY2UzKHRoaXMuYmFsbF9BcnJheVtpXS54LHRoaXMuYmFsbF9BcnJheVtpXS55LHRoaXMuUG9zX0FycmF5W2ldLngsdGhpcy5Qb3NfQXJyYXlbaV0ueSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFsbF9BcnJheVtpXS5nZXRDb21wb25lbnQoXCJTdW5cIikubW92ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMuYmFsbF9BcnJheVtpXSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnRvKHRpbWUse3Bvc2l0aW9uOnRoaXMuUG9zX0FycmF5W2ldfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWxsX0FycmF5W2ldLmdldENvbXBvbmVudChcIlN1blwiKS5tb3ZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYmVnaW5HYW1lKCl7XHJcbiAgICAgICAgdGhpcy5iZWdpbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zdGFydFRpbWUgPSB0aGlzLmdldFRpbWUoKTtcclxuICAgICAgICB0aGlzLnRpbWVTdGFydCA9IHRoaXMuZ2V0VGltZSgpO1xyXG4gICAgICAgIHRoaXMucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICAvLyB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJzaG93QnRuXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UmFuZG9tQXJyYXkobGFzdE51bWJlcil7XHJcbiAgICAgICAgbGV0IG51bSA9ICBwYXJzZUludChNYXRoLnJhbmRvbSgpKjggLSA0ICsgXCJcIik7XHJcbiAgICAgICAgbGV0IGpnID0gbnVtICsgbGFzdE51bWJlcjtcclxuICAgICAgICBpZihudW0gPiAxIHx8IG51bSA8LTEpe1xyXG4gICAgICAgICAgICBpZiggbnVtID09IDAgfHwgKCBqZzwwIHx8IGpnID49IHRoaXMuUG9zX0FycmF5Lmxlbmd0aCkpe1xyXG4gICAgICAgICAgICAgICAgamcgPSB0aGlzLmdldFJhbmRvbUFycmF5KGxhc3ROdW1iZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGpnID0gdGhpcy5nZXRSYW5kb21BcnJheShsYXN0TnVtYmVyKTtcclxuICAgICAgICB9XHJcbiAgICAgICBcclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG4gICAgLy/liJvlu7rlpKrpmLPmiYDpnIDmlbDmja5cclxuICAgIGNyZWF0ZVN1bigpe1xyXG4gICAgICAgIGxldCBsZXZlbERhdGEgPSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GT1t0aGlzLmxldmVsLTFdO1xyXG4gICAgICAgIGxldCB0aWVtT3V0ID0gMDtcclxuICAgICAgICBmb3IobGV0IGw9MDsgbDxsZXZlbERhdGEubnVtYmVyO2wrKyl7XHJcbiAgICAgICAgICAgIHRpZW1PdXQgKz0gMTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm92ZXIgPT0gZmFsc2Upe1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSB0aGlzLmdldFBvcyhmYWxzZSxsKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlBvc19BcnJheS5wdXNoKHBvcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5Qb3NfQXJyYXkubGVuZ3RoID09IGxldmVsRGF0YS5udW1iZXIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZU1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVQb3MoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9LCB0aWVtT3V0KjEwMCk7XHJcbiBcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gMCAwIDAgMCAwIDAgICAgIDAgICAgMCAwIDAgMFxyXG5cclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVQb3MoKXtcclxuICAgICAgICBsZXQgZGF0YSA9IHt4OnRoaXMuYmFsbC54LHk6dGhpcy5iYWxsLnksdGltZTowLHRpbWVDb3VudDowLGNvbG9yOjAsc3BlZWQ6MCxyZXBlYXQ6ZmFsc2V9O1xyXG4gICAgICAgIGxldCBsZXZlbERhdGEgPSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GT1t0aGlzLmxldmVsLTFdO1xyXG4gICAgICAgIC8v6aKc6Imy5Yy65YiGXHJcbiAgICAgICAgbGV0IGNvbG9yQXJyYXkgPSBbMCwxXTtcclxuICAgICAgICBmb3IobGV0IGo9MDsgajxsZXZlbERhdGEubnVtYmVyLTI7aisrKXtcclxuICAgICAgICAgICAgbGV0IGNvbG9yVGVtcCA9IHBhcnNlSW50KE1hdGgucmFuZG9tKCkqMytcIlwiKTtcclxuICAgICAgICAgICAgaWYobGV2ZWxEYXRhLm51bWJlciA8IDYgJiYgY29sb3JUZW1wID09IDIpIGNvbG9yVGVtcCA9IDA7XHJcbiAgICAgICAgICAgIGNvbG9yQXJyYXkucHVzaChjb2xvclRlbXApO1xyXG4gICAgICAgICAgICBjb2xvckFycmF5LnNvcnQoKCkgPT4gTWF0aC5yYW5kb20oKSAtIDAuNSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbG9yQXJyYXkuc29ydCgoKSA9PiBNYXRoLnJhbmRvbSgpIC0gMC41KTtcclxuICAgICAgICBpZihsZXZlbERhdGEubnVtYmVyID09IDQpIGNvbG9yQXJyYXkgPSBbMCwwLDAsMF07XHJcbiAgICAgICAgdGhpcy5jb2xvcl9BcnJheSA9IGNvbG9yQXJyYXk7XHJcblxyXG5cclxuICAgICAgICBmb3IobGV0IGk9MDsgaTxsZXZlbERhdGEubnVtYmVyO2krKyl7XHJcbiAgICAgICAgICAgIGxldCB0aW1lQ291bnQgPSB0aGlzLnRpbWVDb3VudCArICgwLjYtdGhpcy5jYWxjdWxhdGVEaXN0YW5jZSh0aGlzLmJhbGwueCx0aGlzLmJhbGwueSx0aGlzLlBvc19BcnJheVtpXS54LHRoaXMuUG9zX0FycmF5W2ldLnkpKTtcclxuICAgICAgICAgICAgbGV0IHRpbWUgPSB0aGlzLmNhbGN1bGF0ZURpc3RhbmNlKHRoaXMuYmFsbC54LHRoaXMuYmFsbC55LHRoaXMuUG9zX0FycmF5W2ldLngsdGhpcy5Qb3NfQXJyYXlbaV0ueSkrdGltZUNvdW50O1xyXG4gICAgICAgICAgICBkYXRhID0ge3g6dGhpcy5Qb3NfQXJyYXlbaV0ueCx5OnRoaXMuUG9zX0FycmF5W2ldLnksdGltZTp0aW1lLHRpbWVDb3VudDp0aW1lQ291bnQsY29sb3I6Y29sb3JBcnJheVtpXSxzcGVlZDpsZXZlbERhdGEubW92ZVNwZWVkLHJlcGVhdDpmYWxzZX07XHJcbiAgICAgICAgICAgIGlmKHRoaXMucmVwZWF0ID09IGkpe1xyXG4gICAgICAgICAgICAgICAgZGF0YS5yZXBlYXQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYodGhpcy5udW1iZXJSZXBlYXQgPT0gaSl7XHJcbiAgICAgICAgICAgICAgICBkYXRhLnJlcGVhdCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5ub3dfQXJyYXkucHVzaChkYXRhKTtcclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnJ1bkdhbWUoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQb3ModHlwZSxudW0pe1xyXG4gICAgICAgIGxldCBwb3NYID0gTWF0aC5yYW5kb20oKSo2MjAgLSAzMTA7XHJcbiAgICAgICAgbGV0IHBvc1kgPSBNYXRoLnJhbmRvbSgpKih0aGlzLmZpdFRvcC10aGlzLmZpdEJvdCkgKyB0aGlzLmZpdEJvdDtcclxuXHJcbiAgICAgICAgbGV0IHBvaW50ID0gY2MudjIocG9zWCxwb3NZKTtcclxuICAgICAgIFxyXG4gICAgICAgIGlmKHRoaXMuUG9zX0FycmF5Lmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLlBvc19BcnJheS5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgIGxldCBkaXN0YW5jZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBpZihpID09IG51bSkgcGQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgZGlzdGFuY2UgPSB0aGlzLmdldERpc3RhbmNlKHBvc1gscG9zWSx0aGlzLlBvc19BcnJheVtpXS54LHRoaXMuUG9zX0FycmF5W2ldLnkscGQpXHJcbiAgICAgICAgICAgICAgICBpZihkaXN0YW5jZSA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgaSA9IDEwMDAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHBvaW50ID0gdGhpcy5nZXRQb3ModHlwZSxudW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYoZGlzdGFuY2UgPT0gdHJ1ZSAmJiBpID09ICh0aGlzLlBvc19BcnJheS5sZW5ndGgtMSkpe1xyXG4gICAgICAgICAgICAgICAgICAgIGkgPSAxMDAwMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwb2ludDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQb3MyKHR5cGUsbnVtKXtcclxuXHJcbiAgICAgICAgbGV0IHBvc1ggPSBNYXRoLnJhbmRvbSgpKjYyMCAtIDMxMDtcclxuICAgICAgICBsZXQgcG9zWSA9IE1hdGgucmFuZG9tKCkqKHRoaXMuZml0VG9wLXRoaXMuZml0Qm90KSArIHRoaXMuZml0Qm90O1xyXG5cclxuICAgICAgICBsZXQgcG9pbnQgPSBjYy52Mihwb3NYLHBvc1kpO1xyXG4gICAgICAgXHJcbiBcclxuICAgICAgICBpZih0aGlzLlBvc19BcnJheS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5Qb3NfQXJyYXkubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICBsZXQgZGlzdGFuY2UgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGxldCBwZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYoaSA9PSBudW0pIHBkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGRpc3RhbmNlID0gdGhpcy5nZXREaXN0YW5jZTIocG9zWCxwb3NZLHRoaXMuUG9zX0FycmF5W2ldLngsdGhpcy5Qb3NfQXJyYXlbaV0ueSxwZClcclxuICAgICAgICAgICAgICAgIGlmKGRpc3RhbmNlID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgICAgICBpID0gMTAwMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9pbnQgPSB0aGlzLmdldFBvczIodHlwZSxudW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYoZGlzdGFuY2UgPT0gdHJ1ZSAmJiBpID09ICh0aGlzLlBvc19BcnJheS5sZW5ndGgtMSkpe1xyXG4gICAgICAgICAgICAgICAgICAgIGkgPSAxMDAwMDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwb2ludDtcclxuICAgIH1cclxuXHJcbiAgICBnZXREaXN0YW5jZSh4MSwgeTEsIHgyLCB5MixudW0pIHtcclxuICAgICAgICB2YXIgamcgPSBmYWxzZTtcclxuICAgICAgICBjb25zdCBkeCA9IHgyIC0geDE7XHJcbiAgICAgICAgY29uc3QgZHkgPSB5MiAtIHkxO1xyXG4gICAgICAgIHZhciBkaXN0YW5jZSA9IE1hdGguc3FydChkeCpkeCArIGR5KmR5KTtcclxuICAgICAgICBpZihkaXN0YW5jZSA+IDE2MCl7XHJcbiAgICAgICAgICAgIGlmKG51bSA9PSB0cnVlKXtcclxuICAgICAgICAgICAgICAgIGlmKGRpc3RhbmNlIDwgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk9bdGhpcy5sZXZlbC0xXS5tYXhNb3ZlKXtcclxuICAgICAgICAgICAgICAgICAgICBqZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgZWxzZSBqZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBpZihkaXN0YW5jZSA8IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPW3RoaXMubGV2ZWwtMV0ubWF4TW92ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgamcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgIGVsc2UgamcgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGlzdGFuY2UyKHgxLCB5MSwgeDIsIHkyLG51bSkge1xyXG4gICAgICAgIHZhciBqZyA9IGZhbHNlO1xyXG4gICAgICAgIGNvbnN0IGR4ID0geDIgLSB4MTtcclxuICAgICAgICBjb25zdCBkeSA9IHkyIC0geTE7XHJcbiAgICAgICAgdmFyIGRpc3RhbmNlID0gTWF0aC5zcXJ0KGR4KmR4ICsgZHkqZHkpO1xyXG4gICAgICAgIGlmKGRpc3RhbmNlID4gMTYwKXtcclxuICAgICAgICAgICAgaWYobnVtID09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgaWYoZGlzdGFuY2UgPCBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GT1t0aGlzLmxldmVsLTFdLm1heERpc3RhbmNlKSBqZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGpnID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIGpnID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNyZWF0ZUJhbGwobnVtYmVyLGNvbG9yLHNwZWVkLHJlcGVhdCl7XHJcbiAgICAgICAgbGV0IGJhbGwgPSBudWxsO1xyXG4gICAgICAgIGlmKGNvbG9yID09IDApYmFsbCA9IGNjLmluc3RhbnRpYXRlKHRoaXMucWl1MSk7XHJcbiAgICAgICAgZWxzZSBpZihjb2xvciA9PSAxKWJhbGwgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLnFpdTIpO1xyXG4gICAgICAgIGVsc2UgaWYoY29sb3IgPT0gMiliYWxsID0gY2MuaW5zdGFudGlhdGUodGhpcy5xaXUzKTtcclxuICAgICAgICBiYWxsLnBhcmVudCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlN1blwiKTtcclxuICAgICAgICBiYWxsLnpJbmRleCA9IHRoaXMubm93X0FycmF5Lmxlbmd0aCAtIG51bWJlcjtcclxuICAgICAgICBiYWxsLnNldFBvc2l0aW9uKHRoaXMuYmFsbC54LHRoaXMuYmFsbC55KTtcclxuICAgICAgICBiYWxsLmdldENvbXBvbmVudChcIlN1blwiKS5pbml0KG51bWJlcixjb2xvcixzcGVlZCxyZXBlYXQpO1xyXG4gICAgICAgIHRoaXMuYmFsbF9BcnJheS5wdXNoKGJhbGwpO1xyXG4gICAgfVxyXG5cclxuICAgIGRlc3Ryb3lMaW5lKCkge1xyXG4gICAgICAgIGZvcihsZXQgaSA9MDsgaTwgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiTGluZVwiKS5jaGlsZHJlbi5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgaWYodGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiTGluZVwiKS5jaGlsZHJlbltpXSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJMaW5lXCIpLmNoaWxkcmVuW2ldLnJlbW92ZUZyb21QYXJlbnQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkxpbmVcIikuY2hpbGRyZW5baV0gPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkxpbmVcIikucmVtb3ZlQWxsQ2hpbGRyZW4oKTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVMaW5lKHN0YXJ0LGVuZCx0aW1lKXtcclxuICAgICAgICBsZXQgbGluZSA9IGNjLmluc3RhbnRpYXRlKHRoaXMubGluZVByZWZhYik7XHJcbiAgICAgICAgbGluZS5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJMaW5lXCIpO1xyXG4gICAgICAgIGxpbmUuc2V0UG9zaXRpb24oc3RhcnQueCxzdGFydC55KTtcclxuICAgIFxyXG4gICAgICAgIGNvbnN0IGR4ID0gZW5kLnggLSBzdGFydC54O1xyXG4gICAgICAgIGNvbnN0IGR5ID0gZW5kLnkgLSBzdGFydC55O1xyXG4gICAgICAgIHZhciBkaXN0YW5jZSA9IE1hdGguc3FydChkeCpkeCArIGR5KmR5KTtcclxuICAgICAgICBsaW5lLmhlaWdodCA9IGRpc3RhbmNlO1xyXG4gICAgICAgIGxpbmUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuZmlsbFJhbmdlID0gMDtcclxuICAgICAgICBsaW5lLmFuZ2xlID0gLXRoaXMuY2FsY3VsYXRlQW5nbGUoc3RhcnQueCxzdGFydC55LGVuZC54LGVuZC55KTtcclxuICAgICAgICBjYy50d2VlbihsaW5lLmdldENvbXBvbmVudChjYy5TcHJpdGUpKVxyXG4gICAgICAgIC50byh0aW1lLHtmaWxsUmFuZ2U6MX0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2FsY3VsYXRlQW5nbGUoeDEsIHkxLCB4MiwgeTIpIHtcclxuICAgICAgICB2YXIgYW5nbGUgPSBNYXRoLmF0YW4yKHkyLXkxLHgyLXgxKSoxODAgLyBNYXRoLlBJIC0gOTA7XHJcbiAgICAgICAgcmV0dXJuIC1hbmdsZTtcclxuICAgIH1cclxuXHJcbiAgICBjYWxjdWxhdGVEaXN0YW5jZSh4MSwgeTEsIHgyLCB5Mikge1xyXG4gICAgICAgIGNvbnN0IGR4ID0geDIgLSB4MTtcclxuICAgICAgICBjb25zdCBkeSA9IHkyIC0geTE7XHJcbiAgICAgICAgdmFyIGRpc3RhbmNlID0gTWF0aC5zcXJ0KGR4KmR4ICsgZHkqZHkpO1xyXG4gICAgICAgIGlmKGRpc3RhbmNlID4gODAwKSBkaXN0YW5jZSA9IDgwMDtcclxuICAgICAgICBjb25zdCB0aW1lID0gZGlzdGFuY2UvODAwICogMC42O1xyXG4gICAgICAgIHJldHVybiB0aW1lO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbGN1bGF0ZURpc3RhbmNlMih4MSwgeTEsIHgyLCB5Mikge1xyXG4gICAgICAgIGNvbnN0IGR4ID0geDIgLSB4MTtcclxuICAgICAgICBjb25zdCBkeSA9IHkyIC0geTE7XHJcbiAgICAgICAgdmFyIGRpc3RhbmNlID0gTWF0aC5zcXJ0KGR4KmR4ICsgZHkqZHkpO1xyXG4gICAgICAgIGlmKGRpc3RhbmNlID4gMTIwMCkgZGlzdGFuY2UgPSAxMjAwO1xyXG4gICAgICAgIGNvbnN0IHRpbWUgPSBkaXN0YW5jZS8xMjAwICogMTtcclxuICAgICAgICByZXR1cm4gdGltZTtcclxuICAgIH1cclxuXHJcbiAgICBjYWxjdWxhdGVEaXN0YW5jZTMoeDEsIHkxLCB4MiwgeTIpIHtcclxuICAgICAgICBjb25zdCBkeCA9IHgyIC0geDE7XHJcbiAgICAgICAgY29uc3QgZHkgPSB5MiAtIHkxO1xyXG4gICAgICAgIHZhciBkaXN0YW5jZSA9IE1hdGguc3FydChkeCpkeCArIGR5KmR5KTtcclxuICAgICAgICBpZihkaXN0YW5jZSA+IDEyMDApIGRpc3RhbmNlID0gMTIwMDtcclxuICAgICAgICBjb25zdCB0aW1lID0gZGlzdGFuY2UvMTIwMCAqIDEuNTtcclxuICAgICAgICByZXR1cm4gdGltZTtcclxuICAgIH1cclxuXHJcbiAgICAvL+iDjOaZr+enu+WKqFxyXG4gICAgYmdNb3ZlKHR5cGUpe1xyXG4gICAgICAgIGxldCByYW5kb20gPSBNYXRoLnJhbmRvbSgpKjMwMCArIDMwMDtcclxuICAgICAgICBsZXQgcG9zWCA9IE1hdGgucmFuZG9tKCkqNjAwIC0gMzAwO1xyXG4gICAgXHJcbiAgICAgICAgbGV0IHkxID0gdGhpcy5iZzEueSAtIHJhbmRvbSp0eXBlO1xyXG4gICAgICAgIC8vIGxldCB5MiA9IHRoaXMuYmcyLnkgLSByYW5kb20qdHlwZTtcclxuICAgICAgICBsZXQgdGltZTEgPSAwLjcqKHJhbmRvbS80MDApO1xyXG5cclxuICAgICAgICBjYy50d2Vlbih0aGlzLmJhbGwpXHJcbiAgICAgICAgLnRvKDAuMyx7c2NhbGU6MS4zfSlcclxuICAgICAgICAudG8odGltZTEse3g6cG9zWH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcblxyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMuYmcxKVxyXG4gICAgICAgIC5kZWxheSgwLjMpXHJcbiAgICAgICAgLnRvKHRpbWUxLHt5OnkxfSlcclxuICAgICAgICAuc3RhcnQoKTtcclxuXHJcbiAgICAgICAgLy8gY2MudHdlZW4odGhpcy5iZzIpXHJcbiAgICAgICAgLy8gLmRlbGF5KDAuMylcclxuICAgICAgICAvLyAudG8odGltZTEse3k6eTJ9KVxyXG4gICAgICAgIC8vIC5zdGFydCgpO1xyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgLy8gaWYodGhpcy5vdmVyID09IGZhbHNlICYmIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmN1c3RvbSA9PSAwKXtcclxuICAgICAgICAgICAgLy8gICAgIHRoaXMuc3RhcnRHYW1lKCk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgaWYodGhpcy5vdmVyID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRHYW1lKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgXHJcbiAgICAgICAgfSwgdGltZTEqMTUwMCk7XHJcbiAgICB9XHJcbiAgICAvL+aXtumXtOagvOW8j+i9rOaNolxyXG4gICAgZ2V0VGltZU1hcmdpbihzZWNvbmQ6bnVtYmVyKSB7XHJcbiAgICAgICAgbGV0IHRvdGFsID0gMDtcclxuICAgICAgICB0b3RhbCA9IHNlY29uZDtcclxuICAgICAgICBsZXQgaG91ciA9IDA7XHJcbiAgICAgICAgaG91ciA9IHBhcnNlSW50KCh0b3RhbCAvIDM2MDApICsgXCJcIik7Ly/orqHnrpfmlbTmlbDlsI/ml7bmlbBcclxuICAgICAgICBsZXQgYWZ0ZXJIb3VyID0gdG90YWwgLSBob3VyICogNjAgKiA2MDsvL+WPluW+l+eul+WHuuWwj+aXtuaVsOWQjuWJqeS9meeahOenkuaVsFxyXG4gICAgICAgIGxldCBtaW4gPSBwYXJzZUludCgoYWZ0ZXJIb3VyIC8gNjApK1wiXCIpOy8v6K6h566X5pW05pWw5YiGXHJcbiAgICAgICAgbGV0IG0gPSBcIlwiICsgbWluOyAgXHJcbiAgICAgICAgaWYobWluIDwgMTApIG0gPSBcIjBcIittaW47XHJcbiAgICAgICAgbGV0IGFmdGVyTWluID0gdG90YWwgLSBob3VyICogNjAgKiA2MCAtIG1pbiAqIDYwOy8v5Y+W5b6X566X5Ye65YiG5ZCO5Ymp5L2Z55qE56eS5pWwXHJcbiAgICAgICAgbGV0IG1pYW8gPSBhZnRlck1pbiArIFwiXCI7XHJcbiAgICAgICAgaWYoYWZ0ZXJNaW4gPCAxMCkgbWlhbyA9IFwiMFwiICsgYWZ0ZXJNaW47XHJcbiAgICAgICAgcmV0dXJuIG0gKyAnOicgKyBtaWFvXHJcbiAgICB9XHJcblxyXG4gICAgXHJcbiAgICAvL+WmguaenOaYr+WAkuiuoeaXtiDosIPnlKjmraTmlrnms5VcclxuICAgIHVwZGF0ZUNvdW50RG93blRpbWUgKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmNvdW50VGltZSA+IDAgJiYgdGhpcy5wYXVzZSA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvdW50VGltZSAtPSAxO1xyXG4gICAgICAgICAgICB0aGlzLnRpbWUuc3RyaW5nID0gdGhpcy5nZXRUaW1lTWFyZ2luKHRoaXMuY291bnRUaW1lKTtcclxuICAgICAgICAgICAgaWYodGhpcy5jb3VudFRpbWUgPCA1KXtcclxuICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMudGltZS5ub2RlKVxyXG4gICAgICAgICAgICAgICAgLnRvKDAuMjUse3NjYWxlOjEuNSxjb2xvcjpjYy5jb2xvcigyNTUsMCwwKX0pXHJcbiAgICAgICAgICAgICAgICAudG8oMC4yNSx7c2NhbGU6MSxjb2xvcjpjYy5jb2xvcigyNTUsMjU1LDI1NSl9KVxyXG4gICAgICAgICAgICAgICAgLnN0YXJ0KClcclxuICAgICAgICAgICAgICAgIGxldCBvdmVyID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiT3ZlclwiKTtcclxuICAgICAgICAgICAgICAgIGNjLnR3ZWVuKG92ZXIpXHJcbiAgICAgICAgICAgICAgICAudG8oMC4yLHtvcGFjaXR5OjI1NX0pXHJcbiAgICAgICAgICAgICAgICAuZGVsYXkoMC4xKVxyXG4gICAgICAgICAgICAgICAgLnRvKDAuMix7b3BhY2l0eTowfSlcclxuICAgICAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHRoaXMuY291bnRUaW1lIDw9IDApe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iZWdpbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMudW5zY2hlZHVsZSh0aGlzLnVwZGF0ZUNvdW50RG93blRpbWUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRMb3NzKCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGltZSA9IDA7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5tZWFuX1RpbWUsdGhpcy5jbGlja0NvdW50KTtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuY2xpY2tDb3VudCA+IDApIHRpbWUgPSBwYXJzZUludChHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5tZWFuX1RpbWUvdGhpcy5jbGlja0NvdW50ICsgXCJcIik7XHJcbiAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLm1lYW5fVGltZSA9IHBhcnNlSW50KHRpbWUvMTAwICsgXCJcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubWVhbl9UaW1lID0gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubWVhbl9UaW1lIC8xMDtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5tZWFuX1RpbWUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRSYW5rKHRpbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldERhdGEoKXtcclxuICAgICAgICBsZXQgZGF0YSA9IEdhbWVEYXRhLl9pbnN0YW5jZS5HQU1FX0RBVEE7XHJcbiAgICAgICAgbGV0IG1hdGNoSWQgPSB0aGlzLmdldE1hdGNoSWQoKTtcclxuICBcclxuICAgICAgICBsZXQgcG9zdERhdGEgPSB7XHJcbiAgICAgICAgICAgIFwibWF0Y2hJZFwiOm1hdGNoSWQsXHJcbiAgICAgICAgICAgIFwiZGF0YVwiOiBkYXRhXHJcbiAgICAgICAgfTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4iuS8oOaVsOaNrjpcIixwb3N0RGF0YSlcclxuICAgICAgICBIdHRwVXRpbC51cGxvYWRVc2VyTG9nRGF0YShwb3N0RGF0YSxmdW5jdGlvbigpe30pXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TWF0Y2hJZCAoKXtcclxuICAgICAgICBsZXQgbWF0Y2hJZCA9IGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIm1hdGNoSWRcIik7XHJcbiAgICAgICAgaWYobWF0Y2hJZCA9PSBcInVuZGlmZW5kXCIgfHwgbWF0Y2hJZD09bnVsbCl7XHJcbiAgICAgICAgICAgIG1hdGNoSWQgPSAgdGhpcy5zZXRNYXRjaElkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGxldCBjaGFyID0gcGFyc2VJbnQobWF0Y2hJZFsxMF0pO1xyXG4gICAgICAgICAgICBjaGFyICs9IDE7XHJcbiAgICAgICAgICAgIG1hdGNoSWQgID0gbWF0Y2hJZC5zbGljZSgwLCAxMCkgKyBjaGFyICsgXCJcIjtcclxuICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubWF0Y2hJZCA9IG1hdGNoSWQ7XHJcbiAgICAgICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIm1hdGNoSWRcIixtYXRjaElkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1hdGNoSWQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TWF0Y2hJZCAoKXtcclxuICAgICAgICAvLyDlrprkuYnljIXlkKvlj6/nlKjlrZfnrKbnmoTlrZfnrKbpm4ZcclxuICAgICAgICBjb25zdCBjaGFyYWN0ZXJzID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNDU2Nzg5JztcclxuICAgICAgICAvLyDliJvlu7rkuIDkuKrmlbDnu4Tku6Xkv53lrZjpmo/mnLrlrZfnrKZcclxuICAgICAgICBjb25zdCB1dWlkQXJyYXkgPSBbXTtcclxuICAgICAgICBcclxuICAgICAgICAvLyDlvqrnjq8xMOasoSDnlJ/miJAxMOS9jeeahFVVSURcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIC8vIOeUn+aIkOmaj+acuue0ouW8le+8jOiMg+WbtOaYr+Wtl+espumbhueahOmVv+W6plxyXG4gICAgICAgICAgICBjb25zdCByYW5kb21JbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJhY3RlcnMubGVuZ3RoKTtcclxuICAgICAgICAgICAgLy8g5LuO5a2X56ym6ZuG5Lit6I635Y+W6ZqP5py65a2X56ymXHJcbiAgICAgICAgICAgIGNvbnN0IHJhbmRvbUNoYXIgPSBjaGFyYWN0ZXJzLmNoYXJBdChyYW5kb21JbmRleCk7XHJcbiAgICAgICAgICAgIC8vIOWwhuWtl+espua3u+WKoOWIsOaVsOe7hOS4rVxyXG4gICAgICAgICAgICB1dWlkQXJyYXkucHVzaChyYW5kb21DaGFyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGRhdGEgPSAgdXVpZEFycmF5LmpvaW4oJycpICsgMSArIFwiXCI7XHJcbiAgICAgICAgY2Muc3lzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKFwibWF0Y2hOdW1iZXJcIiwxKTtcclxuICAgICAgICBjYy5zeXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJtYXRjaElkXCIsZGF0YSk7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubWF0Y2hJZCA9IGRhdGE7XHJcbiAgICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0UmFuayh0aW1lKXtcclxuICAgICAgICBsZXQgcG9zdERhdGEgPSB7XHJcbiAgICAgICAgICAgIFwidHlwZVwiOjEsXHJcbiAgICAgICAgICAgIFwicmVhY3Rpb25UaW1lXCI6IHRpbWUsXHJcbiAgICAgICAgICAgIFwidG90YWxTdW5Db3VudFwiOiBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy50b3RhbCxcclxuICAgICAgICAgICAgXCJzdWNjZXNzXCI6IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnN1Y2Nlc3NcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zb2xlLmxvZyhwb3N0RGF0YSk7XHJcbiAgICAgICAgSHR0cFV0aWwucmFua0RhdGEoMSxmdW5jdGlvbigpe30scG9zdERhdGEpO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkdhbWVPdmVyXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZU92ZXJcIikub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZU92ZXJcIikpXHJcbiAgICAgICAgLnRvKDAuNCx7b3BhY2l0eToyNTV9KVxyXG4gICAgICAgIC5kZWxheSgyKVxyXG4gICAgICAgIC50bygwLjQse29wYWNpdHk6NTB9KVxyXG4gICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJPdmVyU2NlbmVcIik7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuc3RhcnQoKVxyXG4gICAgICBcclxuICAgIH1cclxuXHJcbiAgICBvdXRQdXQoKXtcclxuXHJcbiAgICAgICAgbGV0IGRhdGEgPSBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQTtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR0FNRV9EQVRBID0gW107XHJcbiAgICAgICAgLy8gaWYoZGF0YS5zdWNjZWVkID09IHRydWUpICAgIHRoaXMubGFiZWwxLnN0cmluZyA9IFwi5oiQ5YqfL+Wksei0pTrmiJDlip9cIjtcclxuICAgICAgICAvLyBlbHNlIGlmKGRhdGEuc3VjY2VlZCA9PSBmYWxzZSkgICAgdGhpcy5sYWJlbDEuc3RyaW5nID0gXCLmiJDlip8v5aSx6LSlOuWksei0pVwiO1xyXG4gICAgICAgIC8vIHRoaXMubGFiZWwyLnN0cmluZyA9IFwi5aSq6Ziz5oC75pWw6YePOlwiK2RhdGEuc3VuX3RvdGFsO1xyXG4gICAgICAgIC8vIHRoaXMubGFiZWwzLnN0cmluZyA9IFwi5aSq6Ziz56e75Yqo5pWw6YePOlwiK2RhdGEuc3VuX21vdmU7XHJcbiAgICAgICAgLy8gdGhpcy5sYWJlbDQuc3RyaW5nID0gXCLlpKrpmLPnp7vliqjpgJ/luqY6XCIrZGF0YS5zdW5fc3BlZWQ7XHJcbiAgICAgICAgLy8gdGhpcy5sYWJlbDUuc3RyaW5nID0gXCLlpKrpmLPph43lj6DkuKrmlbA6XCIrZGF0YS5zdW5fb3ZlcmxhcDtcclxuICAgICAgICAvLyBpZihkYXRhLnN1bl9jb2xvciA9PSBcInlcIikgIHRoaXMubGFiZWw2LnN0cmluZyA9IFwi5aSq6Ziz6aKc6ImyOnllbGxvd1wiO1xyXG4gICAgICAgIC8vIGVsc2UgaWYoZGF0YS5zdW5fY29sb3IgPT0gXCJ5clwiKSAgICB0aGlzLmxhYmVsNi5zdHJpbmcgPSBcIuWkqumYs+minOiJsjp5ZWxsb3cscmVkXCI7XHJcbiAgICAgICAgLy8gZWxzZSBpZihkYXRhLnN1bl9jb2xvciA9PSBcInlyYlwiKSAgIHRoaXMubGFiZWw2LnN0cmluZyA9IFwi5aSq6Ziz6aKc6ImyOnllbGxvdyxyZWQsYmxhY2tcIjtcclxuICAgXHJcbiAgICAgICAgLy8gdGhpcy5sYWJlbDcuc3RyaW5nID0gXCLlrozmiJDml7bpl7Q6XCIrZGF0YS5maW5pc2hfdGltZStcInNcIjtcclxuICAgICAgICAvLyB0aGlzLmxhYmVsOC5zdHJpbmcgPSBcIumavuW6puetiee6pzpcIitkYXRhLnN1bl9kaWZmaWN1bHR5K1wi57qnXCI7XHJcblxyXG4gICAgICAgIC8vIGlmKGRhdGEuc3VuX2NvbG9yID09IFwieVwiKSAgICBjb25zb2xlLmxvZyhcIuWkqumYs+minOiJsu+8mlwiLFwieWVsbG93XCIgKTtcclxuICAgICAgICAvLyBlbHNlIGlmKGRhdGEuc3VuX2NvbG9yID09IFwieXJcIikgICAgY29uc29sZS5sb2coXCLlpKrpmLPpopzoibLvvJpcIixcInllbGxvdyxyZWRcIiApO1xyXG4gICAgICAgIC8vIGVsc2UgaWYoZGF0YS5zdW5fY29sb3IgPT0gXCJ5cmJcIikgICAgY29uc29sZS5sb2coXCLlpKrpmLPpopzoibLvvJpcIixcInllbGxvdyxyZWQsYmxhY2tcIiApO1xyXG5cclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR0FNRV9EQVRBLnB1c2goR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEpO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19pbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd051bWJlcigpe1xyXG4gICAgICAgIGlmKHRoaXMuc2hvdyA9PSBmYWxzZSkgdGhpcy5zaG93ID0gdHJ1ZTtcclxuICAgICAgICBlbHNlIGlmKHRoaXMuc2hvdyA9PSB0cnVlKSB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLmJhbGxfQXJyYXkubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICB0aGlzLmJhbGxfQXJyYXlbaV0uZ2V0Q29tcG9uZW50KFwiU3VuXCIpLnNob3dOdW1iZXIodGhpcy5zaG93KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIG9uRW5hYmxlICgpIHtcclxuICAgICAgICBOb3RpZmljYXRpb24ub24oXCJjbGlja1N1blwiLCB0aGlzLmNsaWNrU3VuLCB0aGlzKTtcclxuICAgICAgICAvLyBOb3RpZmljYXRpb24ub24oXCJIYW1tZXJQbGF5XCIsIHRoaXMuSGFtbWVyUGxheSwgdGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgb25EaXNhYmxlICgpIHtcclxuICAgICAgICAvLyBOb3RpZmljYXRpb24ub2ZmKFwicmlnaHRBbnN3ZXJzXCIsIHRoaXMucmlnaHRBbnN3ZXJzKTtcclxuICAgICAgICBOb3RpZmljYXRpb24ub2ZmKFwiY2xpY2tTdW5cIiwgdGhpcy5jbGlja1N1bik7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHVwZGF0ZSAoZHQpIHtcclxuICBcclxuICAgIH1cclxufVxyXG4iXX0=
//------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 });
// 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 _a = cc._decorator, ccclass = _a.ccclass, property = _a.property, requireComponent = _a.requireComponent;
var GameData_1 = require("./GameData");
// import { apiSign } from "./crypto/sign";
var NewClass = /** @class */ (function (_super) {
__extends(NewClass, _super);
function NewClass() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.label = null;
_this.text = 'hello';
return _this;
// update (dt) {}
}
NewClass.prototype.start = function () {
GameData_1.default._instance.GM_INFO.userId = this.getUserId();
if (GameData_1.default._instance.GM_INFO.userId == null) {
var url = "http://api.sparkus.cn/api/user/auth/login?domain=hui32579WdYPsgYq&callback=http://train.sparkus.cn/test/Sun_moves/";
window.location.href = url;
}
else {
GameData_1.default._instance.GM_INFO.userId = parseInt(GameData_1.default._instance.GM_INFO.userId);
}
};
NewClass.prototype.createTexture = function () {
var _this = this;
var url = "http://static.sparkus.cn/shoot-sun/assets/resources/native/7a/7a8b41ad-9425-44e2-8f55-7740f12b0e0a.jpg";
cc.assetManager.loadRemote(url, function (err, texture) {
console.log(err, texture);
if (texture) {
var sprite = _this.node.getChildByName("icon").getComponent(cc.Sprite);
sprite.spriteFrame = new cc.SpriteFrame(texture);
}
});
};
NewClass.prototype.getUserId = function () {
var pathStr = window.location.search;
var arr = pathStr.split("&");
if (pathStr.length >= 0 && arr.length > 0) {
var arr2_1 = [];
arr.map(function (item) {
arr2_1.push(item.split("=")[1]);
});
GameData_1.default._instance.GM_INFO.userId = arr2_1[0] + "";
return arr2_1[0];
}
else {
return null;
}
};
NewClass.prototype.startGame = function () {
GameData_1.default._instance.GM_INFO.custom = 0;
cc.director.loadScene("GuideScene");
};
NewClass.prototype.clickBtn = function (event, data) {
GameData_1.default._instance.GM_INFO.custom = parseInt(data);
cc.director.loadScene("GameScene");
};
NewClass.prototype.openLevel = function () {
this.node.getChildByName("Level").active = true;
};
NewClass.prototype.closeBtn = function () {
this.node.getChildByName("Level").active = false;
};
NewClass.prototype.back = function (data) {
// debugger;
};
NewClass.prototype.openBtn = function () {
GameData_1.default._instance.GM_INFO.custom = 0;
cc.director.loadScene("GuideScene");
};
NewClass.prototype.openRank = function () {
cc.director.loadScene("RankScene");
};
__decorate([
property(cc.Label)
], NewClass.prototype, "label", void 0);
__decorate([
property
], NewClass.prototype, "text", void 0);
NewClass = __decorate([
ccclass
], NewClass);
return NewClass;
}(cc.Component));
exports.default = NewClass;
cc._RF.pop();
}
if (nodeEnv) {
__define(__module.exports, __require, __module);
}
else {
__quick_compile_project__.registerModuleFunc(__filename, function () {
__define(__module.exports, __require, __module);
});
}
})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxMb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGO0FBQzVFLElBQUEsS0FBd0MsRUFBRSxDQUFDLFVBQVUsRUFBcEQsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFBLEVBQUUsZ0JBQWdCLHNCQUFpQixDQUFDO0FBQzVELHVDQUFrQztBQUdsQywyQ0FBMkM7QUFHM0M7SUFBc0MsNEJBQVk7SUFBbEQ7UUFBQSxxRUFpRkM7UUE5RUcsV0FBSyxHQUFhLElBQUksQ0FBQztRQUd2QixVQUFJLEdBQVcsT0FBTyxDQUFDOztRQTBFdkIsaUJBQWlCO0lBQ3JCLENBQUM7SUF4RUcsd0JBQUssR0FBTDtRQUNJLGtCQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JELElBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUM7WUFDekMsSUFBSSxHQUFHLEdBQUcsb0hBQW9ILENBQUM7WUFDL0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1NBQzlCO2FBQ0c7WUFDQSxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbkY7SUFFTCxDQUFDO0lBRUQsZ0NBQWEsR0FBYjtRQUFBLGlCQVNDO1FBUkcsSUFBSSxHQUFHLEdBQUcsd0dBQXdHLENBQUM7UUFDbkgsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLFVBQUMsR0FBRyxFQUFFLE9BQW9CO1lBQ3RELE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ3hCLElBQUcsT0FBTyxFQUFDO2dCQUNQLElBQUksTUFBTSxHQUFHLEtBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RFLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3BEO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRU8sNEJBQVMsR0FBakI7UUFDSSxJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUVyQyxJQUFJLEdBQUcsR0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBRyxDQUFDLElBQUUsR0FBRyxDQUFDLE1BQU0sR0FBQyxDQUFDLEVBQUU7WUFDbEMsSUFBSSxNQUFJLEdBQUMsRUFBRSxDQUFDO1lBQ1osR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFBLElBQUk7Z0JBQ1IsTUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDakMsQ0FBQyxDQUFDLENBQUE7WUFDRixrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDakQsT0FBTyxNQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEI7YUFBTTtZQUNILE9BQU8sSUFBSSxDQUFBO1NBQ2Q7SUFDTCxDQUFDO0lBRUQsNEJBQVMsR0FBVDtRQUNJLGtCQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCwyQkFBUSxHQUFSLFVBQVMsS0FBSyxFQUFDLElBQUk7UUFDZixrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRCxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsNEJBQVMsR0FBVDtRQUNJLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDcEQsQ0FBQztJQUVELDJCQUFRLEdBQVI7UUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3JELENBQUM7SUFFRCx1QkFBSSxHQUFKLFVBQUssSUFBSTtRQUNMLFlBQVk7SUFDaEIsQ0FBQztJQUVELDBCQUFPLEdBQVA7UUFDSSxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUN0QyxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsMkJBQVEsR0FBUjtRQUNJLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXZDLENBQUM7SUEzRUQ7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzsyQ0FDSTtJQUd2QjtRQURDLFFBQVE7MENBQ2M7SUFOTixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBaUY1QjtJQUFELGVBQUM7Q0FqRkQsQUFpRkMsQ0FqRnFDLEVBQUUsQ0FBQyxTQUFTLEdBaUZqRDtrQkFqRm9CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eSwgcmVxdWlyZUNvbXBvbmVudH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5pbXBvcnQgR2FtZURhdGEgZnJvbSBcIi4vR2FtZURhdGFcIjtcclxuaW1wb3J0IEh0dHBVdGlsIGZyb20gXCIuL2NyeXB0by9zZXJ2ZXJBUElcIjtcclxuaW1wb3J0IFJxIGZyb20gXCIuL2NyeXB0by9zZXJ2ZXJBUElcIjtcclxuLy8gaW1wb3J0IHsgYXBpU2lnbiB9IGZyb20gXCIuL2NyeXB0by9zaWduXCI7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgbGFiZWw6IGNjLkxhYmVsID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHlcclxuICAgIHRleHQ6IHN0cmluZyA9ICdoZWxsbyc7XHJcblxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy51c2VySWQgPSB0aGlzLmdldFVzZXJJZCgpO1xyXG4gICAgICAgIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnVzZXJJZCA9PSBudWxsKXtcclxuICAgICAgICAgICAgbGV0IHVybCA9IFwiaHR0cDovL2FwaS5zcGFya3VzLmNuL2FwaS91c2VyL2F1dGgvbG9naW4/ZG9tYWluPWh1aTMyNTc5V2RZUHNnWXEmY2FsbGJhY2s9aHR0cDovL3RyYWluLnNwYXJrdXMuY24vdGVzdC9TdW5fbW92ZXMvXCI7XHJcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy51c2VySWQgPSBwYXJzZUludChHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy51c2VySWQpO1xyXG4gICAgICAgIH1cclxuIFxyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZVRleHR1cmUoKXtcclxuICAgICAgICBsZXQgdXJsID0gXCJodHRwOi8vc3RhdGljLnNwYXJrdXMuY24vc2hvb3Qtc3VuL2Fzc2V0cy9yZXNvdXJjZXMvbmF0aXZlLzdhLzdhOGI0MWFkLTk0MjUtNDRlMi04ZjU1LTc3NDBmMTJiMGUwYS5qcGdcIjtcclxuICAgICAgICBjYy5hc3NldE1hbmFnZXIubG9hZFJlbW90ZSh1cmwsIChlcnIsIHRleHR1cmU6Y2MuVGV4dHVyZTJEKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycix0ZXh0dXJlKVxyXG4gICAgICAgICAgICBpZih0ZXh0dXJlKXtcclxuICAgICAgICAgICAgICAgIHZhciBzcHJpdGUgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpO1xyXG4gICAgICAgICAgICAgICAgc3ByaXRlLnNwcml0ZUZyYW1lID0gbmV3IGNjLlNwcml0ZUZyYW1lKHRleHR1cmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFVzZXJJZCgpIHtcclxuICAgICAgICBsZXQgcGF0aFN0ciA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XHJcblxyXG4gICAgICAgIGxldCBhcnI9cGF0aFN0ci5zcGxpdChcIiZcIik7XHJcbiAgICAgICAgaWYgKHBhdGhTdHIubGVuZ3RoPj0gMCYmYXJyLmxlbmd0aD4wKSB7XHJcbiAgICAgICAgICAgIGxldCBhcnIyPVtdO1xyXG4gICAgICAgICAgICBhcnIubWFwKGl0ZW09PntcclxuICAgICAgICAgICAgICAgIGFycjIucHVzaChpdGVtLnNwbGl0KFwiPVwiKVsxXSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8udXNlcklkID0gYXJyMlswXSArIFwiXCI7XHJcbiAgICAgICAgICAgIHJldHVybiBhcnIyWzBdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0R2FtZSgpe1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmN1c3RvbSA9IDA7XHJcbiAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR3VpZGVTY2VuZVwiKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgY2xpY2tCdG4oZXZlbnQsZGF0YSl7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uY3VzdG9tID0gcGFyc2VJbnQoZGF0YSk7XHJcbiAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgfSAgIFxyXG5cclxuICAgIG9wZW5MZXZlbCgpe1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkxldmVsXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VCdG4oKXtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJMZXZlbFwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBiYWNrKGRhdGEpe1xyXG4gICAgICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5CdG4oKXtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5jdXN0b20gPSAwO1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkd1aWRlU2NlbmVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblJhbmsoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJSYW5rU2NlbmVcIik7XHJcblxyXG4gICAgfVxyXG4gICBcclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19
//------QC-SOURCE-SPLIT------
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/Script/BallAudioManager.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, 'bd9f78XOD5PmLTjk2rLYBiz', 'BallAudioManager');
// Script/BallAudioManager.js
"use strict";
cc.Class({
"extends": cc.Component,
properties: {
//背景音乐
audioGameBgm0: {
"default": null,
type: cc.AudioClip
},
// 按钮点击
audioButtonClick: {
"default": null,
type: cc.AudioClip
},
// 报警音效
audioWarning: {
"default": null,
type: cc.AudioClip
},
//游戏开始音效
audioWin: {
"default": null,
type: cc.AudioClip
},
reward: false,
finish: false,
rewardCount: 0
},
ctor: function ctor() {
this.mAudioMap = {};
/**
* 默认音量大小
* @type {number}
*/
this.bgMusicVolume = 0.1;
this.effectMusicVolume = 1;
this.mMusicSwitch = 1;
this.mEffectSwitch = 1;
},
play: function play(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;
}
var context = cc.audioEngine.play(audioSource, loop, volume);
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 {
var context = wx.createInnerAudioContext();
context.autoplay = true;
context.loop = loop;
context.obeyMuteSwitch = true;
context.volume = volume;
if (callback) {
context.onEnded(function () {
callback.call(this);
}.bind(this));
} else {
context.offEnded();
} // var audioPath = cc.url.raw("resources/BallMaster/sounds" + audioSource.name + ".mp3");
context.src = audioSource.nativeUrl;
context.play();
this.mAudioMap[audioSource] = context; // cc.wwx.OutPut.log('play audio effect wx: ' + audioSource.nativeUrl);
return audioSource;
}
},
save: function save() {// 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);
},
onLoad: function onLoad() {
var _this = this;
// cc.wwx.Storage.getItem(cc.wwx.Storage.Key_Setting_Music_Volume, function(volume) {
// this.mMusicSwitch = parseInt(volume);
// }.bind(this), 1);
// cc.wwx.Storage.getItem(cc.wwx.Storage.Key_Setting_Effect_Volume, function(volume) {
// this.mEffectSwitch = parseInt(volume);
// }.bind(this), 1);
this.reward = false;
this.finish = false;
this.rewardCount = 0;
window.addEventListener('rewardCanUse', function () {
// 此时激励可用 游戏内部逻辑
_this.reward = true;
});
'undefined' != typeof window['reward'] ? window.dispatchEvent(window['reward']) : "";
this.preload();
},
preload: function preload() {
if (!(cc.sys.platform === cc.sys.WECHAT_GAME)) {
return;
}
var musics = [this.audioGameBgm0];
musics.forEach(function (path) {// var musicPath = wxDownloader.REMOTE_SERVER_ROOT + path;
// if (musicPath != wxDownloader.REMOTE_SERVER_ROOT && musicPath.endsWith('.mp3')) {
// cc.loader.load(musicPath, function(err, remoteUrl) {
// if (err) {
// cc.error(err.message || err);
// return;
// }
// });
// }
});
},
getAudioMusicSwitch: function getAudioMusicSwitch() {
return this.mMusicSwitch;
},
getAudioEffectSwitch: function getAudioEffectSwitch() {
return this.mEffectSwitch;
},
trunAudioSound: function trunAudioSound(on) {
this.switchMusic(on);
this.switchEffect(on);
},
switchMusic: function switchMusic(on) {
if (this.mMusicSwitch != (on ? 1 : 0)) {
this.mMusicSwitch = 1 - this.mMusicSwitch; // this.save();
}
if (on) {
this.playMusicGame();
} else {
this.stopMusic();
}
},
switchEffect: function switchEffect(on) {
if (this.mEffectSwitch != (on ? 1 : 0)) {
this.mEffectSwitch = 1 - this.mEffectSwitch; // this.save();
}
},
onHide: function onHide() {
cc.audioEngine.pauseAll(); // if (CC_JSB) {
// } else {
// for (var key in this.mAudioMap) {
// if (key === this.mMusicKey) {
// this.mAudioMap[key].pause();
// } else {
// this.mAudioMap[key].stop();
// }
// }
// }
},
onShow: function onShow() {
cc.audioEngine.resumeAll(); // if (CC_JSB) {
// } else {
// if (!this.mMusicSwitch) return;
// var context = this.mAudioMap[this.mMusicKey];
// if (context) {
// context.play();
// }
// }
},
playMusic: function playMusic(key, callback, loop) {
loop = typeof loop == 'undefined' || loop ? true : false;
this.stopMusic();
this.mMusicKey = this.play(key, loop, callback, true);
},
/**
* 游戏背景音乐
*/
playMusicGame: function playMusicGame() {
this.playMusic(this.audioGameBgm0);
},
/**
* 停止背景音乐播放
*/
stopMusic: function stopMusic() {
// 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);
}
},
// 炸弹、火箭爆炸音效
playBomb: function playBomb() {
return this.play(this.audioBomb, false);
},
//激光音效
playJiGuang: function playJiGuang() {
return this.play(this.audioJiGuang, false);
},
//技能音效
playItem1: function playItem1() {
return this.play(this.audioItem1, false);
},
/*
* 游戏开始音效
*
*/
playGameStart: function playGameStart() {
return this.play(this.audioGameStart, false);
},
/*
* 失败的游戏结束
*/
playGameOver: function playGameOver() {
return this.play(this.audioGameOver, false);
},
/*
* 成功的游戏结束
*/
playGameResultFailed: function playGameResultFailed() {
return this.play(this.audioGameResultFail, false);
},
/*
* 成功的游戏结束
*/
playGameResultSuccess: function playGameResultSuccess() {
return this.play(this.audioGameResultSuccess, false);
},
/**
* 报警的音效
*/
playWarning: function playWarning() {
return this.play(this.audioWarning, false);
},
playWin: function playWin() {
return this.play(this.audioWin, false);
},
/*
* 方块碰撞的声音
*/
playBrick: function playBrick() {
return this.play(this.brickSound, false);
},
//方块破碎的声音
brickBoom: function brickBoom() {
return this.play(this.audioObj, false);
},
/**
* 按钮
*/
playAudioButton: function playAudioButton() {
return this.play(this.audioButtonClick, false);
},
playRandomMatch: function playRandomMatch() {
this.playMusic(this.randomMatchSound);
},
playMatchFoundSound: function playMatchFoundSound() {
this.stopMusic();
return this.play(this.matchFoundSound, 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxCYWxsQXVkaW9NYW5hZ2VyLmpzIl0sIm5hbWVzIjpbImNjIiwiQ2xhc3MiLCJDb21wb25lbnQiLCJwcm9wZXJ0aWVzIiwiYXVkaW9HYW1lQmdtMCIsInR5cGUiLCJBdWRpb0NsaXAiLCJhdWRpb0J1dHRvbkNsaWNrIiwiYXVkaW9XYXJuaW5nIiwiYXVkaW9XaW4iLCJyZXdhcmQiLCJmaW5pc2giLCJyZXdhcmRDb3VudCIsImN0b3IiLCJtQXVkaW9NYXAiLCJiZ011c2ljVm9sdW1lIiwiZWZmZWN0TXVzaWNWb2x1bWUiLCJtTXVzaWNTd2l0Y2giLCJtRWZmZWN0U3dpdGNoIiwicGxheSIsImF1ZGlvU291cmNlIiwibG9vcCIsImNhbGxiYWNrIiwiaXNCZ011c2ljIiwidm9sdW1lIiwic3lzIiwiaXNCcm93c2VyIiwiYnJpY2tTb3VuZCIsImNvbnRleHQiLCJhdWRpb0VuZ2luZSIsInNldEZpbmlzaENhbGxiYWNrIiwiY2FsbCIsImJpbmQiLCJ3eCIsImNyZWF0ZUlubmVyQXVkaW9Db250ZXh0IiwiYXV0b3BsYXkiLCJvYmV5TXV0ZVN3aXRjaCIsIm9uRW5kZWQiLCJvZmZFbmRlZCIsInNyYyIsIm5hdGl2ZVVybCIsInNhdmUiLCJvbkxvYWQiLCJ3aW5kb3ciLCJhZGRFdmVudExpc3RlbmVyIiwiZGlzcGF0Y2hFdmVudCIsInByZWxvYWQiLCJwbGF0Zm9ybSIsIldFQ0hBVF9HQU1FIiwibXVzaWNzIiwiZm9yRWFjaCIsInBhdGgiLCJnZXRBdWRpb011c2ljU3dpdGNoIiwiZ2V0QXVkaW9FZmZlY3RTd2l0Y2giLCJ0cnVuQXVkaW9Tb3VuZCIsIm9uIiwic3dpdGNoTXVzaWMiLCJzd2l0Y2hFZmZlY3QiLCJwbGF5TXVzaWNHYW1lIiwic3RvcE11c2ljIiwib25IaWRlIiwicGF1c2VBbGwiLCJvblNob3ciLCJyZXN1bWVBbGwiLCJwbGF5TXVzaWMiLCJrZXkiLCJtTXVzaWNLZXkiLCJzdG9wIiwicGxheUJvbWIiLCJhdWRpb0JvbWIiLCJwbGF5SmlHdWFuZyIsImF1ZGlvSmlHdWFuZyIsInBsYXlJdGVtMSIsImF1ZGlvSXRlbTEiLCJwbGF5R2FtZVN0YXJ0IiwiYXVkaW9HYW1lU3RhcnQiLCJwbGF5R2FtZU92ZXIiLCJhdWRpb0dhbWVPdmVyIiwicGxheUdhbWVSZXN1bHRGYWlsZWQiLCJhdWRpb0dhbWVSZXN1bHRGYWlsIiwicGxheUdhbWVSZXN1bHRTdWNjZXNzIiwiYXVkaW9HYW1lUmVzdWx0U3VjY2VzcyIsInBsYXlXYXJuaW5nIiwicGxheVdpbiIsInBsYXlCcmljayIsImJyaWNrQm9vbSIsImF1ZGlvT2JqIiwicGxheUF1ZGlvQnV0dG9uIiwicGxheVJhbmRvbU1hdGNoIiwicmFuZG9tTWF0Y2hTb3VuZCIsInBsYXlNYXRjaEZvdW5kU291bmQiLCJtYXRjaEZvdW5kU291bmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUFBLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTO0FBQ0wsYUFBU0QsRUFBRSxDQUFDRSxTQURQO0FBRUxDLEVBQUFBLFVBQVUsRUFBQztBQUNQO0FBQ0FDLElBQUFBLGFBQWEsRUFBQztBQUNWLGlCQUFRLElBREU7QUFFVkMsTUFBQUEsSUFBSSxFQUFDTCxFQUFFLENBQUNNO0FBRkUsS0FGUDtBQU1QO0FBQ0FDLElBQUFBLGdCQUFnQixFQUFDO0FBQ2IsaUJBQVEsSUFESztBQUViRixNQUFBQSxJQUFJLEVBQUNMLEVBQUUsQ0FBQ007QUFGSyxLQVBWO0FBV1A7QUFDQUUsSUFBQUEsWUFBWSxFQUFDO0FBQ1QsaUJBQVEsSUFEQztBQUVUSCxNQUFBQSxJQUFJLEVBQUNMLEVBQUUsQ0FBQ007QUFGQyxLQVpOO0FBaUJQO0FBQ0FHLElBQUFBLFFBQVEsRUFBQztBQUNMLGlCQUFRLElBREg7QUFFTEosTUFBQUEsSUFBSSxFQUFDTCxFQUFFLENBQUNNO0FBRkgsS0FsQkY7QUF1QlBJLElBQUFBLE1BQU0sRUFBRSxLQXZCRDtBQXdCUEMsSUFBQUEsTUFBTSxFQUFFLEtBeEJEO0FBeUJQQyxJQUFBQSxXQUFX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TDtBQUNKO0FBQ0E7QUFDSUMsRUFBQUEscUJBN1FLLG1DQThRTDtBQUNJLFdBQU8sS0FBSzdELElBQUwsQ0FBVSxLQUFLOEQsc0JBQWYsRUFBc0MsS0FBdEMsQ0FBUDtBQUNILEdBaFJJOztBQWlSTDtBQUNKO0FBQ0E7QUFDSUMsRUFBQUEsV0FwUksseUJBcVJMO0FBQ0ksV0FBTyxLQUFLL0QsSUFBTCxDQUFVLEtBQUtYLFlBQWYsRUFBNEIsS0FBNUIsQ0FBUDtBQUVILEdBeFJJO0FBMFJMMkUsRUFBQUEsT0ExUksscUJBMlJMO0FBQ0ksV0FBTyxLQUFLaEUsSUFBTCxDQUFVLEtBQUtWLFFBQWYsRUFBd0IsS0FBeEIsQ0FBUDtBQUNILEdBN1JJOztBQStSTDtBQUNKO0FBQ0E7QUFDSTJFLEVBQUFBLFNBbFNLLHVCQW1TTDtBQUNJLFdBQU8sS0FBS2pFLElBQUwsQ0FBVSxLQUFLUSxVQUFmLEVBQTBCLEtBQTFCLENBQVA7QUFDSCxHQXJTSTtBQXNTTDtBQUNBMEQsRUFBQUEsU0F2U0ssdUJBdVNNO0FBQ1AsV0FBTyxLQUFLbEUsSUFBTCxDQUFVLEtBQUttRSxRQUFmLEVBQXdCLEtBQXhCLENBQVA7QUFDSCxHQXpTSTs7QUEwU0w7QUFDSjtBQUNBO0FBQ0lDLEVBQUFBLGVBN1NLLDZCQTZTYztBQUNmLFdBQU8sS0FBS3BFLElBQUwsQ0FBVSxLQUFLWixnQkFBZixFQUFpQyxLQUFqQyxDQUFQO0FBQ0gsR0EvU0k7QUFpVExpRixFQUFBQSxlQWpUSyw2QkFrVEw7QUFDSSxTQUFLeEIsU0FBTCxDQUFlLEtBQUt5QixnQkFBcEI7QUFDSCxHQXBUSTtBQXFUTEMsRUFBQUEsbUJBclRLLGlDQXNUTDtBQUNJLFNBQUsvQixTQUFMO0FBQ0EsV0FBTyxLQUFLeEMsSUFBTCxDQUFVLEtBQUt3RSxlQUFmLEVBQWdDLEtBQWhDLENBQVA7QUFDSDtBQXpUSSxDQUFUIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJjYy5DbGFzcyh7XG4gICAgZXh0ZW5kczogY2MuQ29tcG9uZW50LFxuICAgIHByb3BlcnRpZXM6e1xuICAgICAgICAvL+iDjOaZr+mfs+S5kFxuICAgICAgICBhdWRpb0dhbWVCZ20wOntcbiAgICAgICAgICAgIGRlZmF1bHQ6bnVsbCxcbiAgICAgICAgICAgIHR5cGU6Y2MuQXVkaW9DbGlwXG4gICAgICAgIH0sXG4gICAgICAgIC8vIOaMiemSrueCueWHu1xuICAgICAgICBhdWRpb0J1dHRvbkNsaWNrOntcbiAgICAgICAgICAgIGRlZmF1bHQ6bnVsbCxcbiAgICAgICAgICAgIHR5cGU6Y2MuQXVkaW9DbGlwXG4gICAgICAgIH0sXG4gICAgICAgIC8vIOaKpeitpumfs+aViFxuICAgICAgICBhdWRpb1dhcm5pbmc6e1xuICAgICAgICAgICAgZGVmYXVsdDpudWxsLFxuICAgICAgICAgICAgdHlwZTpjYy5BdWRpb0NsaXBcbiAgICAgICAgfSxcblxuICAgICAgICAvL+a4uOaIj+W8gOWni+mfs+aViFxuICAgICAgICBhdWRpb1dpbjp7XG4gICAgICAgICAgICBkZWZhdWx0Om51bGwsXG4gICAgICAgICAgICB0eXBlOmNjLkF1ZGlvQ2xpcFxuICAgICAgICB9LFxuXG4gICAgICAgIHJld2FyZDogZmFsc2UsXG4gICAgICAgIGZpbmlzaDogZmFsc2UsXG4gICAgICAgIHJld2FyZENvdW50OiAwXG5cbiAgICB9LFxuICAgIGN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5tQXVkaW9NYXAgPSB7fTtcblxuICAgICAgICAvKipcbiAgICAgICAgICog6buY6K6k6Z+z6YeP5aSn5bCPXG4gICAgICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmJnTXVzaWNWb2x1bWUgPSAwLjE7XG4gICAgICAgIHRoaXMuZWZmZWN0TXVzaWNWb2x1bWUgPSAxO1xuXG4gICAgICAgIHRoaXMubU11c2ljU3dpdGNoID0gMTtcbiAgICAgICAgdGhpcy5tRWZmZWN0U3dpdGNoID0gMTtcbiAgICB9LFxuICAgIHBsYXkgOiBmdW5jdGlvbihhdWRpb1NvdXJjZSwgbG9vcCwgY2FsbGJhY2ssIGlzQmdNdXNpYykge1xuICAgICAgICBpZiAoaXNCZ011c2ljICYmICF0aGlzLm1NdXNpY1N3aXRjaCkgcmV0dXJuO1xuICAgICAgICBpZiAoIWlzQmdNdXNpYyAmJiAhdGhpcy5tRWZmZWN0U3dpdGNoKSByZXR1cm47XG5cbiAgICAgICAgdmFyIHZvbHVtZSA9IGlzQmdNdXNpYyA/IHRoaXMuYmdNdXNpY1ZvbHVtZSA6IHRoaXMuZWZmZWN0TXVzaWNWb2x1bWU7XG5cbiAgICAgICAgaWYgKGNjLnN5cy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIGlmKGF1ZGlvU291cmNlID09IHRoaXMuYnJpY2tTb3VuZCl7XG4gICAgICAgICAgICAgICAgdm9sdW1lID0gMC4xO1xuICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIHZhciBjb250ZXh0ID0gY2MuYXVkaW9FbmdpbmUucGxheShhdWRpb1NvdXJjZSwgbG9vcCwgdm9sdW1lKTtcbiAgICAgICAgICAgIGlmIChjYWxsYmFjayl7XG4gICAgICAgICAgICAgICAgY2MuYXVkaW9FbmdpbmUuc2V0RmluaXNoQ2FsbGJhY2soY29udGV4dCwgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzKTtcbiAgICAgICAgICAgICAgICB9LmJpbmQodGhpcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gY2Mud3d4Lk91dFB1dC5sb2coJ3BsYXkgYXVkaW8gZWZmZWN0IGlzQnJvd3NlcjogJyArIGNvbnRleHQuc3JjKTtcblxuICAgICAgICAgICAgdGhpcy5tQXVkaW9NYXBbYXVkaW9Tb3VyY2VdID0gY29udGV4dDtcbiAgICAgICAgICAgIHJldHVybiBhdWRpb1NvdXJjZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBjb250ZXh0ID0gd3guY3JlYXRlSW5uZXJBdWRpb0NvbnRleHQoKTtcbiAgICAgICAgICAgIGNvbnRleHQuYXV0b3BsYXkgPSB0cnVlO1xuICAgICAgICAgICAgY29udGV4dC5sb29wID0gbG9vcDtcbiAgICAgICAgICAgIGNvbnRleHQub2JleU11dGVTd2l0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgY29udGV4dC52b2x1bWUgPSB2b2x1bWU7XG5cbiAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGNvbnRleHQub25FbmRlZChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzKTtcbiAgICAgICAgICAgICAgICB9LmJpbmQodGhpcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm9mZkVuZGVkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAgICAgLy8gdmFyIGF1ZGlvUGF0aCA9IGNjLnVybC5yYXcoXCJyZXNvdXJjZXMvQmFsbE1hc3Rlci9zb3VuZHNcIiArIGF1ZGlvU291cmNlLm5hbWUgKyBcIi5tcDNcIik7XG4gICAgICAgICAgICBjb250ZXh0LnNyYyA9IGF1ZGlvU291cmNlLm5hdGl2ZVVybDtcbiAgICAgICAgICAgIGNvbnRleHQucGxheSgpXG4gICAgICAgICAgICB0aGlzLm1BdWRpb01hcFthdWRpb1NvdXJjZV0gPSBjb250ZXh0O1xuICAgICAgICBcbiAgICAgICAgICAgIC8vIGNjLnd3eC5PdXRQdXQubG9nKCdwbGF5IGF1ZGlvIGVmZmVjdCB3eDogJyArIGF1ZGlvU291cmNlLm5hdGl2ZVVybCk7XG4gICAgICAgIFxuICAgICAgICAgICAgcmV0dXJuIGF1ZGlvU291cmNlO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIHNhdmU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gY2Mud3d4LlN0b3JhZ2Uuc2V0SXRlbShjYy53d3guU3RvcmFnZS5LZXlfU2V0dGluZ19NdXNpY19Wb2x1bWUsIHRoaXMubU11c2ljU3dpdGNoKTtcbiAgICAgICAgLy8gY2Mud3d4LlN0b3JhZ2Uuc2V0SXRlbShjYy53d3guU3RvcmFnZS5LZXlfU2V0dGluZ19FZmZlY3RfVm9sdW1lLCB0aGlzLm1FZmZlY3RTd2l0Y2gpO1xuICAgIH0sXG4gICAgb25Mb2FkKCkge1xuICAgICAgICAvLyBjYy53d3guU3RvcmFnZS5nZXRJdGVtKGNjLnd3eC5TdG9yYWdlLktleV9TZXR0aW5nX011c2ljX1ZvbHVtZSwgZnVuY3Rpb24odm9sdW1lKSB7XG4gICAgICAgIC8vICAgICB0aGlzLm1NdXNpY1N3aXRjaCA9IHBhcnNlSW50KHZvbHVtZSk7XG4gICAgICAgIC8vIH0uYmluZCh0aGlzKSwgMSk7XG5cbiAgICAgICAgLy8gY2Mud3d4LlN0b3JhZ2UuZ2V0SXRlbShjYy53d3guU3RvcmFnZS5LZXlfU2V0dGluZ19FZmZlY3RfVm9sdW1lLCBmdW5jdGlvbih2b2x1bWUpIHtcbiAgICAgICAgLy8gICAgIHRoaXMubUVmZmVjdFN3aXRjaCA9IHBhcnNlSW50KHZvbHVtZSk7XG4gICAgICAgIC8vIH0uYmluZCh0aGlzKSwgMSk7XG5cblxuICAgICAgICB0aGlzLnJld2FyZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZpbmlzaCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJld2FyZENvdW50ID0gMDtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jld2FyZENhblVzZScsICgpID0+IHtcbiAgICAgICAgICAgIC8vIOatpOaXtua/gOWKseWPr+eUqCDmuLjmiI/lhoXpg6jpgLvovpFcbiAgICAgICAgICAgIHRoaXMucmV3YXJkID0gdHJ1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgJ3VuZGVmaW5lZCcgIT0gdHlwZW9mIHdpbmRvd1sncmV3YXJkJ10gPyBcbiAgICAgICAgd2luZG93LmRpc3BhdGNoRXZlbnQod2luZG93WydyZXdhcmQnXSk6XCJcIlxuXG4gICAgICAgIHRoaXMucHJlbG9hZCgpO1xuICAgIH0sXG4gICAgcHJlbG9hZCA6IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAoIShjYy5zeXMucGxhdGZvcm0gPT09IGNjLnN5cy5XRUNIQVRfR0FNRSkpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgdmFyIG11c2ljcyA9IFtcbiAgICAgICAgICAgIHRoaXMuYXVkaW9HYW1lQmdtMCxcbiAgICAgICAgXTtcbiAgICAgICAgbXVzaWNzLmZvckVhY2goZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICAgICAgLy8gdmFyIG11c2ljUGF0aCA9IHd4RG93bmxvYWRlci5SRU1PVEVfU0VSVkVSX1JPT1QgKyBwYXRoO1xuICAgICAgICAgICAgLy8gaWYgKG11c2ljUGF0aCAhPSB3eERvd25sb2FkZXIuUkVNT1RFX1NFUlZFUl9ST09UICYmIG11c2ljUGF0aC5lbmRzV2l0aCgnLm1wMycpKSB7XG4gICAgICAgICAgICAvLyAgICAgY2MubG9hZGVyLmxvYWQobXVzaWNQYXRoLCBmdW5jdGlvbihlcnIsIHJlbW90ZVVybCkge1xuICAgICAgICAgICAgLy8gICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAvLyAgICAgICAgICAgICBjYy5lcnJvcihlcnIubWVzc2FnZSB8fCBlcnIpO1xuICAgICAgICAgICAgLy8gICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgLy8gICAgICAgICB9XG4gICAgICAgICAgICAvLyAgICAgfSk7XG4gICAgICAgICAgICAvLyB9XG4gICAgICAgIH0pXG4gICAgfSxcblxuICAgIGdldEF1ZGlvTXVzaWNTd2l0Y2goKVxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubU11c2ljU3dpdGNoO1xuXG4gICAgfSxcbiAgICBnZXRBdWRpb0VmZmVjdFN3aXRjaCgpXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5tRWZmZWN0U3dpdGNoO1xuICAgIH0sXG4gICAgdHJ1bkF1ZGlvU291bmQob24pXG4gICAge1xuICAgICAgICB0aGlzLnN3aXRjaE11c2ljKG9uKTtcbiAgICAgICAgdGhpcy5zd2l0Y2hFZmZlY3Qob24pXG4gICAgfSxcbiAgICBzd2l0Y2hNdXNpYyA6IGZ1bmN0aW9uKG9uKSB7XG4gICAgICAgIGlmICh0aGlzLm1NdXNpY1N3aXRjaCAhPSAob24/MTowKSlcbiAgICAgICAge1xuICAgICAgICAgICAgdGhpcy5tTXVzaWNTd2l0Y2ggPSAxLXRoaXMubU11c2ljU3dpdGNoO1xuICAgICAgICAgICAgLy8gdGhpcy5zYXZlKCk7XG4gICAgICAgICAgICBcbiAgICAgICAgfVxuICAgICAgICBpZihvbilcbiAgICAgICAge1xuICAgICAgICAgICAgdGhpcy5wbGF5TXVzaWNHYW1lKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgICB0aGlzLnN0b3BNdXNpYygpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBzd2l0Y2hFZmZlY3QgOiBmdW5jdGlvbihvbikge1xuICAgICAgICBpZiAodGhpcy5tRWZmZWN0U3dpdGNoICE9IChvbj8xOjApKXtcbiAgICAgICAgICAgIHRoaXMubUVmZmVjdFN3aXRjaCA9IDEtdGhpcy5tRWZmZWN0U3dpdGNoO1xuICAgICAgICAgICAgLy8gdGhpcy5zYXZlKCk7XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAgb25IaWRlICgpIHtcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUucGF1c2VBbGwoKTtcblxuICAgICAgICAvLyBpZiAoQ0NfSlNCKSB7XG4gICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgIC8vICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5tQXVkaW9NYXApIHtcbiAgICAgICAgLy8gICAgICAgICBpZiAoa2V5ID09PSB0aGlzLm1NdXNpY0tleSkge1xuICAgICAgICAvLyAgICAgICAgICAgICB0aGlzLm1BdWRpb01hcFtrZXldLnBhdXNlKCk7XG4gICAgICAgIC8vICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5tQXVkaW9NYXBba2V5XS5zdG9wKCk7XG4gICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvLyB9XG4gICAgfSxcblxuICAgIG9uU2hvdyAoKSB7XG4gICAgICAgIGNjLmF1ZGlvRW5naW5lLnJlc3VtZUFsbCgpO1xuXG4gICAgICAgIC8vIGlmIChDQ19KU0IpIHtcbiAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgLy8gICAgIGlmICghdGhpcy5tTXVzaWNTd2l0Y2gpIHJldHVybjtcbiAgICAgICAgLy8gICAgIHZhciBjb250ZXh0ID0gdGhpcy5tQXVkaW9NYXBbdGhpcy5tTXVzaWNLZXldO1xuICAgICAgICAvLyAgICAgaWYgKGNvbnRleHQpIHtcbiAgICAgICAgLy8gICAgICAgICBjb250ZXh0LnBsYXkoKTtcbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gfVxuICAgIH0sXG4gICAgcGxheU11c2ljIDogZnVuY3Rpb24oa2V5LCBjYWxsYmFjaywgbG9vcCkge1xuXG4gICAgICAgIGxvb3AgPSB0eXBlb2YgbG9vcCA9PSAndW5kZWZpbmVkJyAgfHwgbG9vcCA/IHRydWUgOiBmYWxzZTtcblxuICAgICAgICB0aGlzLnN0b3BNdXNpYygpO1xuICAgICAgICB0aGlzLm1NdXNpY0tleSA9IHRoaXMucGxheShrZXksIGxvb3AsIGNhbGxiYWNrLCB0cnVlKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOa4uOaIj+iDjOaZr+mfs+S5kFxuICAgICAqL1xuICAgIHBsYXlNdXNpY0dhbWUgKCkge1xuICAgICAgICB0aGlzLnBsYXlNdXNpYyh0aGlzLmF1ZGlvR2FtZUJnbTApO1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog5YGc5q2i6IOM5pmv6Z+z5LmQ5pKt5pS+XG4gICAgICovXG4gICAgc3RvcE11c2ljICgpIHtcbiAgICAgICAgLy8gY2Mud3d4Lk91dFB1dC5sb2coJ3N0b3BNdXNpYyBhdWRpbyBlZmZlY3Qgd3g6ICcgKyB0aGlzLm1NdXNpY0tleSk7XG5cbiAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLm1BdWRpb01hcFt0aGlzLm1NdXNpY0tleV07XG5cbiAgICAgICAgaWYgKHR5cGVvZihjb250ZXh0KSAhPSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgaWYgKGNjLnN5cy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zdG9wKGNvbnRleHQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNjLmF1ZGlvRW5naW5lLnN0b3AoY29udGV4dCk7XG5cbiAgICAgICAgfVxuICAgIH0sXG4gICAgLy8g54K45by544CB54Gr566t54iG54K46Z+z5pWIXG4gICAgcGxheUJvbWIgKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wbGF5KHRoaXMuYXVkaW9Cb21iLCBmYWxzZSk7XG4gICAgfSxcbiAgICAvL+a/gOWFiemfs+aViFxuICAgIHBsYXlKaUd1YW5nKClcbiAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYXkodGhpcy5hdWRpb0ppR3VhbmcsIGZhbHNlKTtcbiAgICB9LFxuICAgIC8v5oqA6IO96Z+z5pWIXG4gICAgcGxheUl0ZW0xKClcbiAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYXkodGhpcy5hdWRpb0l0ZW0xLCBmYWxzZSk7XG4gICAgfSxcbiAgICAvKlxuICAgICAqIOa4uOaIj+W8gOWni+mfs+aViFxuICAgICAqXG4gICAgICovXG4gICAgIHBsYXlHYW1lU3RhcnQoKVxuICAgICB7XG4gICAgICAgICByZXR1cm4gdGhpcy5wbGF5KHRoaXMuYXVkaW9HYW1lU3RhcnQsIGZhbHNlKTtcbiAgICAgfSxcbiAgICAgLypcbiAgICAgICog5aSx6LSl55qE5ri45oiP57uT5p2fXG4gICAgICAqL1xuICAgICBwbGF5R2FtZU92ZXIoKVxuICAgICB7XG4gICAgICAgICByZXR1cm4gdGhpcy5wbGF5KHRoaXMuYXVkaW9HYW1lT3ZlcixmYWxzZSk7XG4gICAgIH0sXG4gICAgLypcbiAgICAgICog5oiQ5Yqf55qE5ri45oiP57uT5p2fXG4gICAgICAqL1xuICAgIHBsYXlHYW1lUmVzdWx0RmFpbGVkKClcbiAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYXkodGhpcy5hdWRpb0dhbWVSZXN1bHRGYWlsLGZhbHNlKTtcbiAgICB9LFxuICAgIC8qXG4gICog5oiQ5Yqf55qE5ri45oiP57uT5p2fXG4gICovXG4gICAgcGxheUdhbWVSZXN1bHRTdWNjZXNzKClcbiAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYXkodGhpcy5hdWRpb0dhbWVSZXN1bHRTdWNjZXNzLGZhbHNlKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaKpeitpueahOmfs+aViFxuICAgICAqL1xuICAgIHBsYXlXYXJuaW5nKClcbiAgICB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYXkodGhpcy5hdWRpb1dhcm5pbmcsZmFsc2UpO1xuXG4gICAgfSxcblxuICAgIHBsYXlXaW4oKVxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxheSh0aGlzLmF1ZGlvV2luLGZhbHNlKTtcbiAgICB9LFxuXG4gICAgLypcbiAgICAgKiDmlrnlnZfnorDmkp7nmoTlo7Dpn7NcbiAgICAgKi9cbiAgICBwbGF5QnJpY2soKVxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxheSh0aGlzLmJyaWNrU291bmQsZmFsc2UpO1xuICAgIH0sXG4gICAgLy/mlrnlnZfnoLTnoo7nmoTlo7Dpn7NcbiAgICBicmlja0Jvb20oKXtcbiAgICAgICAgcmV0dXJuIHRoaXMucGxheSh0aGlzLmF1ZGlvT2JqLGZhbHNlKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaMiemSrlxuICAgICAqL1xuICAgIHBsYXlBdWRpb0J1dHRvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYXkodGhpcy5hdWRpb0J1dHRvbkNsaWNrLCBmYWxzZSk7XG4gICAgfSxcblxuICAgIHBsYXlSYW5kb21NYXRjaCgpXG4gICAge1xuICAgICAgICB0aGlzLnBsYXlNdXNpYyh0aGlzLnJhbmRvbU1hdGNoU291bmQpO1xuICAgIH0sXG4gICAgcGxheU1hdGNoRm91bmRTb3VuZCgpXG4gICAge1xuICAgICAgICB0aGlzLnN0b3BNdXNpYygpO1xuICAgICAgICByZXR1cm4gdGhpcy5wbGF5KHRoaXMubWF0Y2hGb3VuZFNvdW5kLCBmYWxzZSk7XG4gICAgfVxufSk7Il19
//------QC-SOURCE-SPLIT------
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/Script/GuideManager.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, '3fd2fh6vHNJeISUizW09xat', 'GuideManager');
// Script/GuideManager.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 });
// 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 GameData_1 = require("./GameData");
var Notification_1 = require("./Notification");
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;
// LIFE-CYCLE CALLBACKS:
_this.dialog = null;
_this.ball = null;
_this.qiu1 = null;
_this.linePrefab = null;
return _this;
// update (dt) {}
}
// onLoad () {}
NewClass.prototype.start = function () {
this.custom = 1;
this.init();
this.startGuide(0);
};
NewClass.prototype.init = function () {
this.ball.zIndex = 100;
this.Pos_Array = [];
this.ball_Array = [];
this.begin = false;
this.clickNow = 0;
this.tip = null;
};
NewClass.prototype.startGuide = function (type) {
var _this = this;
var num = this.custom;
var time = 0.5;
var delay = 1.5;
var name = "tip" + num;
if (type != 0) {
cc.tween(this.node)
.to(time, { opacity: 255 })
.call(function () {
_this.custom += 1;
if (type != 0)
_this.custom = 2;
if (_this.custom == 2)
_this.createSun1();
else if (_this.custom == 3)
_this.createSun2();
else if (_this.custom == 4) {
_this.begin = true;
}
else if (_this.custom == 5)
cc.director.loadScene("GameScene");
})
.start();
}
else {
this.tip = this.dialog.getChildByName(name);
this.tip.active = true;
this.tip.opacity = 0;
cc.tween(this.tip)
.to(time, { opacity: 255 })
.start();
// cc.tween(tip)
// .to(time,{opacity:255})
// .delay(delay)
// .to(time,{opacity:0})
// .call(() =>{
// this.custom += 1;
// if(type != 0) this.custom = 2;
// if( this.custom == 2) this.createSun1();
// else if( this.custom == 3) this.createSun2();
// else if( this.custom == 4) this.begin = true;
// else if( this.custom == 5) cc.director.loadScene("GameScene");
// })
// .start();
}
};
//创建太阳
NewClass.prototype.createSun1 = function () {
var _this = this;
this.ball_Array = [];
this.Pos_Array.push(cc.v2(-250, -216), cc.v2(200, -115), cc.v2(-35, -500));
var time1 = this.calculateDistance(this.ball.x, this.ball.y, this.Pos_Array[0].x, this.Pos_Array[0].y);
this.ball.opacity = 0;
cc.tween(this.ball)
.to(time1, { position: this.Pos_Array[0] })
.call(function () {
_this.createBall(0, 0, 0, false);
})
.delay(1)
.call(function () {
_this.startGuide(0);
})
.start();
};
NewClass.prototype.beginClick = function () {
for (var i = 0; i < this.ball_Array.length; i++) {
this.ball_Array[i].getComponent("Sun").move = false;
}
};
NewClass.prototype.clickBtn = function () {
cc.director.loadScene("GameScene");
};
NewClass.prototype.next = function () {
var _this = this;
var time = 0.5;
cc.tween(this.tip)
.to(time, { opacity: 0 })
.call(function () {
_this.custom += 1;
// if(type != 0) this.custom = 2;
if (_this.custom == 2)
_this.createSun1();
else if (_this.custom == 3)
_this.createSun2();
else if (_this.custom == 4)
_this.begin = true;
else if (_this.custom == 5)
cc.director.loadScene("GameScene");
})
.start();
};
NewClass.prototype.createSun2 = function () {
var _this = this;
var time2 = this.calculateDistance(this.Pos_Array[0].x, this.Pos_Array[0].y, this.Pos_Array[1].x, this.Pos_Array[1].y);
var time3 = this.calculateDistance(this.Pos_Array[1].x, this.Pos_Array[1].y, this.Pos_Array[2].x, this.Pos_Array[2].y);
this.ball.opacity = 255;
this.createLine(cc.v2(this.ball.x, this.ball.y), cc.v2(this.Pos_Array[1].x, this.Pos_Array[1].y), 0.5);
cc.tween(this.ball)
.to(time2, { position: this.Pos_Array[1] })
.call(function () {
_this.createBall(1, 0, 0, false);
})
.delay(0.5)
.call(function () {
_this.createLine(cc.v2(_this.ball.x, _this.ball.y), cc.v2(_this.Pos_Array[2].x, _this.Pos_Array[2].y), 0.5);
})
.to(time3, { position: this.Pos_Array[2] })
.call(function () {
_this.createBall(2, 0, 0, false);
_this.ball.opacity = 0;
})
.delay(0.2)
.call(function () {
_this.destroyLine();
_this.startGuide(0);
})
.start();
};
NewClass.prototype.createBall = function (number, color, speed, repeat) {
var ball = null;
ball = cc.instantiate(this.qiu1);
ball.parent = this.node.getChildByName("Sun");
ball.zIndex = this.Pos_Array.length - number;
ball.setPosition(this.ball.x, this.ball.y);
ball.getComponent("Sun").init(number, color, speed, repeat);
ball.getComponent("Sun").move = true;
this.ball_Array.push(ball);
};
NewClass.prototype.calculateDistance = function (x1, y1, x2, y2) {
var dx = x2 - x1;
var dy = y2 - y1;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance > 800)
distance = 800;
var time = distance / 800 * 0.8;
return time;
};
//移动创建下一个太阳
NewClass.prototype.moveSun = function () {
};
//获胜
NewClass.prototype.passLevel = function () {
var _this = this;
this.destroyLine();
var timeArray = [];
var timeCount = 0;
var ball = this.ball_Array[0];
for (var i = 1; i < this.ball_Array.length; i++) {
var time = this.calculateDistance(this.ball_Array[i].x, this.ball_Array[i].y, this.ball_Array[i - 1].x, this.ball_Array[i - 1].y);
timeArray.push(time);
}
var _loop_1 = function (k) {
setTimeout(function () {
cc.tween(ball)
.to(timeArray[k - 1], { x: _this.ball_Array[k].x, y: _this.ball_Array[k].y })
.call(function () {
_this.ball_Array[k].active = false;
if (k == _this.ball_Array.length - 1) {
setTimeout(function () {
_this.ball.opacity = 255;
_this.ball.position = cc.v3(ball.x, ball.y, 0);
_this.ball.active = false;
_this.startGuide(0);
}, 200);
}
})
.start();
}, timeCount * 1000);
timeCount += (timeArray[k - 1] + 0.1);
};
for (var k = 1; k < this.ball_Array.length; k++) {
_loop_1(k);
}
};
//点击太阳执行方法
NewClass.prototype.clickSun = function (data) {
var _this = this;
if (this.begin == true) {
if (data == this.clickNow) {
GameData_1.default._instance.AudioManager.playAudioButton();
if (this.clickNow > 0) {
this.createLine(cc.v2(this.ball_Array[this.clickNow - 1].x, this.ball_Array[this.clickNow - 1].y), cc.v2(this.ball_Array[this.clickNow].x, this.ball_Array[this.clickNow].y), 0.2);
}
this.clickNow += 1;
GameData_1.default._instance.GM_INFO.total += 1;
setTimeout(function () {
if (_this.ball_Array[_this.clickNow - 1])
_this.ball_Array[_this.clickNow - 1].getChildByName("guang").active = false;
}, 200);
if (this.clickNow == 3) {
var win_1 = this.node.getChildByName("Win");
win_1.active = true;
win_1.setScale(0);
cc.tween(win_1)
.delay(0.4)
.to(0.01, { scale: 2.5 })
.to(0.35, { scale: 1 })
.delay(0.6)
.call(function () {
win_1.active = false;
setTimeout(function () {
_this.passLevel();
}, 400);
})
.start();
}
}
else {
GameData_1.default._instance.AudioManager.playWarning();
this.begin = false;
this.loseLevel(1);
var over = this.node.getChildByName("Over");
cc.tween(over)
.to(0.25, { opacity: 255 })
.delay(0.1)
.to(0.2, { opacity: 0 })
.delay(0.1)
.to(0.15, { opacity: 255 })
.delay(0.1)
.to(0.1, { opacity: 0 })
.start();
}
}
};
NewClass.prototype.loseLevel = function (type) {
var _this = this;
this.destroyLine();
var ball = this.ball_Array[0];
var _loop_2 = function (k) {
cc.tween(this_1.ball_Array[k])
.to(0.6, { x: ball.x, y: ball.y })
.call(function () {
_this.ball_Array[k].active = false;
if (k == _this.ball_Array.length - 1) {
_this.ball.opacity = 0;
_this.ball.position = cc.v3(ball.x, ball.y, 0);
_this.clearSun();
_this.custom = 1;
_this.startGuide(1);
}
})
.start();
};
var this_1 = this;
for (var k = 1; k < this.ball_Array.length; k++) {
_loop_2(k);
}
};
NewClass.prototype.clearSun = function () {
for (var k = 0; k < this.ball_Array.length; k++) {
this.ball_Array[k].removeFromParent();
this.ball_Array[k] = null;
}
this.ball_Array = [];
};
//获取时间戳
NewClass.prototype.getTime = function () {
var timestamp = new Date().getTime();
return timestamp;
};
NewClass.prototype.destroyLine = function () {
for (var i = 0; i < this.node.getChildByName("Line").children.length; i++) {
if (this.node.getChildByName("Line").children[i]) {
this.node.getChildByName("Line").children[i].removeFromParent();
this.node.getChildByName("Line").children[i] = null;
}
}
this.node.getChildByName("Line").removeAllChildren();
};
NewClass.prototype.createLine = function (start, end, time) {
var line = cc.instantiate(this.linePrefab);
line.parent = this.node.getChildByName("Line");
line.setPosition(start.x, start.y);
var dx = end.x - start.x;
var dy = end.y - start.y;
var distance = Math.sqrt(dx * dx + dy * dy);
line.height = distance;
line.getComponent(cc.Sprite).fillRange = 0;
line.angle = -this.calculateAngle(start.x, start.y, end.x, end.y);
cc.tween(line.getComponent(cc.Sprite))
.to(time, { fillRange: 1 })
.start();
};
NewClass.prototype.calculateAngle = function (x1, y1, x2, y2) {
var angle = Math.atan2(y2 - y1, x2 - x1) * 180 / Math.PI - 90;
return -angle;
};
NewClass.prototype.onEnable = function () {
Notification_1.Notification.on("clickSun", this.clickSun, this);
};
NewClass.prototype.onDisable = function () {
Notification_1.Notification.off("clickSun", this.clickSun);
};
__decorate([
property(cc.Node)
], NewClass.prototype, "dialog", void 0);
__decorate([
property(cc.Node)
], NewClass.prototype, "ball", void 0);
__decorate([
property(cc.Prefab)
], NewClass.prototype, "qiu1", void 0);
__decorate([
property(cc.Prefab)
], NewClass.prototype, "linePrefab", 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHdWlkZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7QUFDbEYsdUNBQWtDO0FBQ2xDLCtDQUE4QztBQUN4QyxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQXFWQztRQW5WRyx3QkFBd0I7UUFFeEIsWUFBTSxHQUFZLElBQUksQ0FBQztRQUV2QixVQUFJLEdBQVksSUFBSSxDQUFDO1FBRXJCLFVBQUksR0FBYyxJQUFJLENBQUM7UUFFdkIsZ0JBQVUsR0FBYyxJQUFJLENBQUM7O1FBMFU3QixpQkFBaUI7SUFDckIsQ0FBQztJQXBVRyxlQUFlO0lBRWYsd0JBQUssR0FBTDtRQUNJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNaLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELHVCQUFJLEdBQUo7UUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELDZCQUFVLEdBQVYsVUFBVyxJQUFJO1FBQWYsaUJB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Q0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzdGLEdBQUcsQ0FBQyxDQUFDO1FBQ0wsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ2xCLEVBQUUsQ0FBQyxLQUFLLEVBQUMsRUFBQyxRQUFRLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDO2FBQ3RDLElBQUksQ0FBQztZQUNGLEtBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLElBQUksQ0FBQztZQUNGLEtBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsS0FBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDN0YsR0FBRyxDQUFDLENBQUM7UUFDVCxDQUFDLENBQUM7YUFDRCxFQUFFLENBQUMsS0FBSyxFQUFDLEVBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQzthQUN0QyxJQUFJLENBQUM7WUFDRixLQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLEtBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsR0FBRyxDQUFDO2FBQ1YsSUFBSSxDQUFDO1lB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QUMsRUFBQyxDQUFDO2FBQ3RCLEtBQUssRUFBRSxDQUFDO0lBQ2IsQ0FBQztJQUVELGlDQUFjLEdBQWQsVUFBZSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1FBQ3pCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFDLEVBQUUsRUFBQyxFQUFFLEdBQUMsRUFBRSxDQUFDLEdBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ3ZELE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDbEIsQ0FBQztJQUVELDJCQUFRLEdBQVI7UUFDSSwyQkFBWSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsNEJBQVMsR0FBVDtRQUNJLDJCQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQTlVRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzRDQUNLO0lBRXZCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MENBQ0c7SUFFckI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQzswQ0FDRztJQUV2QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO2dEQUNTO0lBVlosUUFBUTtRQUQ1QixPQUFPO09BQ2EsUUFBUSxDQXFWNUI7SUFBRCxlQUFDO0NBclZELEFBcVZDLENBclZxQyxFQUFFLENBQUMsU0FBUyxHQXFWakQ7a0JBclZvQixRQUFRIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5pbXBvcnQgR2FtZURhdGEgZnJvbSAnLi9HYW1lRGF0YSc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbiB9IGZyb20gJy4vTm90aWZpY2F0aW9uJztcclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGRpYWxvZzogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGJhbGw6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLlByZWZhYilcclxuICAgIHFpdTE6IGNjLlByZWZhYiA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuUHJlZmFiKVxyXG4gICAgbGluZVByZWZhYjogY2MuUHJlZmFiID0gbnVsbDtcclxuICAgIGNsaWNrTm93Om51bWJlcjtcclxuICAgIGN1c3RvbTogbnVtYmVyO1xyXG4gICAgUG9zX0FycmF5OiBhbnk7XHJcbiAgICBiYWxsX0FycmF5OiBhbnk7XHJcbiAgICBiZWdpbjogYm9vbGVhbjtcclxuICAgIHRpcDogY2MuTm9kZTtcclxuICAgIC8vIG9uTG9hZCAoKSB7fVxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgICAgICB0aGlzLmN1c3RvbSA9IDE7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgICAgdGhpcy5zdGFydEd1aWRlKDApO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQoKXtcclxuICAgICAgICB0aGlzLmJhbGwuekluZGV4ID0gMTAwO1xyXG4gICAgICAgIHRoaXMuUG9zX0FycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5iYWxsX0FycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5iZWdpbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2xpY2tOb3cgPSAwO1xyXG4gICAgICAgIHRoaXMudGlwID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydEd1aWRlKHR5cGUpe1xyXG4gICAgICAgIGxldCBudW0gPSB0aGlzLmN1c3RvbTtcclxuICAgICAgICBsZXQgdGltZSA9IDAuNTtcclxuICAgICAgICBsZXQgZGVsYXkgPSAxLjU7XHJcbiAgICAgICAgbGV0IG5hbWUgPSBcInRpcFwiICsgbnVtO1xyXG5cclxuICAgICAgICBpZih0eXBlIT0wKXtcclxuICAgICAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlKVxyXG4gICAgICAgICAgICAudG8odGltZSx7b3BhY2l0eToyNTV9KVxyXG4gICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tICs9IDE7XHJcbiAgICAgICAgICAgICAgICBpZih0eXBlICE9IDApIHRoaXMuY3VzdG9tID0gMjtcclxuICAgICAgICAgICAgICAgIGlmKCB0aGlzLmN1c3RvbSA9PSAyKSAgdGhpcy5jcmVhdGVTdW4xKCk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKCB0aGlzLmN1c3RvbSA9PSAzKSAgdGhpcy5jcmVhdGVTdW4yKCk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKCB0aGlzLmN1c3RvbSA9PSA0KXtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9ICBcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYoIHRoaXMuY3VzdG9tID09IDUpIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkdhbWVTY2VuZVwiKTtcclxuICAgIFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy50aXAgPSB0aGlzLmRpYWxvZy5nZXRDaGlsZEJ5TmFtZShuYW1lKTtcclxuICAgICAgICAgICAgdGhpcy50aXAuYWN0aXZlID0gdHJ1ZTsgdGhpcy50aXAub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMudGlwKVxyXG4gICAgICAgICAgICAudG8odGltZSx7b3BhY2l0eToyNTV9KVxyXG4gICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICAgICAgLy8gY2MudHdlZW4odGlwKVxyXG4gICAgICAgICAgICAvLyAudG8odGltZSx7b3BhY2l0eToyNTV9KVxyXG4gICAgICAgICAgICAvLyAuZGVsYXkoZGVsYXkpXHJcbiAgICAgICAgICAgIC8vIC50byh0aW1lLHtvcGFjaXR5OjB9KVxyXG4gICAgICAgICAgICAvLyAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgLy8gICAgIHRoaXMuY3VzdG9tICs9IDE7XHJcbiAgICAgICAgICAgIC8vICAgICBpZih0eXBlICE9IDApIHRoaXMuY3VzdG9tID0gMjtcclxuICAgICAgICAgICAgLy8gICAgIGlmKCB0aGlzLmN1c3RvbSA9PSAyKSAgdGhpcy5jcmVhdGVTdW4xKCk7XHJcbiAgICAgICAgICAgIC8vICAgICBlbHNlIGlmKCB0aGlzLmN1c3RvbSA9PSAzKSAgdGhpcy5jcmVhdGVTdW4yKCk7XHJcbiAgICAgICAgICAgIC8vICAgICBlbHNlIGlmKCB0aGlzLmN1c3RvbSA9PSA0KSAgdGhpcy5iZWdpbiA9IHRydWU7XHJcbiAgICAgICAgICAgIC8vICAgICBlbHNlIGlmKCB0aGlzLmN1c3RvbSA9PSA1KSBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICBcclxuICAgICAgICAgICAgLy8gfSlcclxuICAgICAgICAgICAgLy8gLnN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIC8v5Yib5bu65aSq6ZizXHJcbiAgICBjcmVhdGVTdW4xKCl7XHJcbiAgICAgICAgdGhpcy5iYWxsX0FycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5Qb3NfQXJyYXkucHVzaChjYy52MigtMjUwLC0yMTYpLGNjLnYyKDIwMCwtMTE1KSxjYy52MigtMzUsLTUwMCkpO1xyXG4gICAgICAgIGxldCB0aW1lMSA9IHRoaXMuY2FsY3VsYXRlRGlzdGFuY2UodGhpcy5iYWxsLngsdGhpcy5iYWxsLnksdGhpcy5Qb3NfQXJyYXlbMF0ueCx0aGlzLlBvc19BcnJheVswXS55KVxyXG4gICAgICAgIHRoaXMuYmFsbC5vcGFjaXR5ID0gMDtcclxuICAgICAgICBjYy50d2Vlbih0aGlzLmJhbGwpXHJcbiAgICAgICAgLnRvKHRpbWUxLHtwb3NpdGlvbjp0aGlzLlBvc19BcnJheVswXX0pXHJcbiAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlQmFsbCgwLDAsMCxmYWxzZSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuZGVsYXkoMSlcclxuICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgdGhpcy5zdGFydEd1aWRlKDApO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgYmVnaW5DbGljaygpe1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMuYmFsbF9BcnJheS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIHRoaXMuYmFsbF9BcnJheVtpXS5nZXRDb21wb25lbnQoXCJTdW5cIikubW92ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjbGlja0J0bigpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkdhbWVTY2VuZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBuZXh0KCl7XHJcbiAgICAgICAgbGV0IHRpbWUgPSAwLjU7XHJcbiAgICAgICAgY2MudHdlZW4odGhpcy50aXApXHJcbiAgICAgICAgLnRvKHRpbWUse29wYWNpdHk6MH0pXHJcbiAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tICs9IDE7XHJcbiAgICAgICAgICAgIC8vIGlmKHR5cGUgIT0gMCkgdGhpcy5jdXN0b20gPSAyO1xyXG4gICAgICAgICAgICBpZiggdGhpcy5jdXN0b20gPT0gMikgIHRoaXMuY3JlYXRlU3VuMSgpO1xyXG4gICAgICAgICAgICBlbHNlIGlmKCB0aGlzLmN1c3RvbSA9PSAzKSAgdGhpcy5jcmVhdGVTdW4yKCk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYoIHRoaXMuY3VzdG9tID09IDQpICB0aGlzLmJlZ2luID0gdHJ1ZTtcclxuICAgICAgICAgICAgZWxzZSBpZiggdGhpcy5jdXN0b20gPT0gNSkgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG5cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZVN1bjIoKXtcclxuICAgICAgICBsZXQgdGltZTIgPSB0aGlzLmNhbGN1bGF0ZURpc3RhbmNlKHRoaXMuUG9zX0FycmF5WzBdLngsdGhpcy5Qb3NfQXJyYXlbMF0ueSx0aGlzLlBvc19BcnJheVsxXS54LHRoaXMuUG9zX0FycmF5WzFdLnkpXHJcbiAgICAgICAgbGV0IHRpbWUzID0gdGhpcy5jYWxjdWxhdGVEaXN0YW5jZSh0aGlzLlBvc19BcnJheVsxXS54LHRoaXMuUG9zX0FycmF5WzFdLnksdGhpcy5Qb3NfQXJyYXlbMl0ueCx0aGlzLlBvc19BcnJheVsyXS55KVxyXG4gICAgICAgIHRoaXMuYmFsbC5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgIHRoaXMuY3JlYXRlTGluZShjYy52Mih0aGlzLmJhbGwueCx0aGlzLmJhbGwueSksY2MudjIodGhpcy5Qb3NfQXJyYXlbMV0ueCx0aGlzLlBvc19BcnJheVsxXS55KSxcclxuICAgICAgICAwLjUpO1xyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMuYmFsbClcclxuICAgICAgICAudG8odGltZTIse3Bvc2l0aW9uOnRoaXMuUG9zX0FycmF5WzFdfSlcclxuICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVCYWxsKDEsMCwwLGZhbHNlKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5kZWxheSgwLjUpXHJcbiAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlTGluZShjYy52Mih0aGlzLmJhbGwueCx0aGlzLmJhbGwueSksY2MudjIodGhpcy5Qb3NfQXJyYXlbMl0ueCx0aGlzLlBvc19BcnJheVsyXS55KSxcclxuICAgICAgICAgICAgMC41KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC50byh0aW1lMyx7cG9zaXRpb246dGhpcy5Qb3NfQXJyYXlbMl19KVxyXG4gICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUJhbGwoMiwwLDAsZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLmJhbGwub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuZGVsYXkoMC4yKVxyXG4gICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3lMaW5lKCk7XHJcbiAgICAgICAgICAgIHRoaXMuc3RhcnRHdWlkZSgwKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuXHJcbiAgICBjcmVhdGVCYWxsKG51bWJlcixjb2xvcixzcGVlZCxyZXBlYXQpe1xyXG4gICAgICAgIGxldCBiYWxsID0gbnVsbDtcclxuICAgICAgICBiYWxsID0gY2MuaW5zdGFudGlhdGUodGhpcy5xaXUxKTtcclxuICAgICAgICBiYWxsLnBhcmVudCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlN1blwiKTtcclxuICAgICAgICBiYWxsLnpJbmRleCA9IHRoaXMuUG9zX0FycmF5Lmxlbmd0aCAtIG51bWJlcjtcclxuICAgICAgICBiYWxsLnNldFBvc2l0aW9uKHRoaXMuYmFsbC54LHRoaXMuYmFsbC55KTtcclxuICAgICAgICBiYWxsLmdldENvbXBvbmVudChcIlN1blwiKS5pbml0KG51bWJlcixjb2xvcixzcGVlZCxyZXBlYXQpO1xyXG4gICAgICAgIGJhbGwuZ2V0Q29tcG9uZW50KFwiU3VuXCIpLm1vdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYmFsbF9BcnJheS5wdXNoKGJhbGwpO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbGN1bGF0ZURpc3RhbmNlKHgxLCB5MSwgeDIsIHkyKSB7XHJcbiAgICAgICAgY29uc3QgZHggPSB4MiAtIHgxO1xyXG4gICAgICAgIGNvbnN0IGR5ID0geTIgLSB5MTtcclxuICAgICAgICB2YXIgZGlzdGFuY2UgPSBNYXRoLnNxcnQoZHgqZHggKyBkeSpkeSk7XHJcbiAgICAgICAgaWYoZGlzdGFuY2UgPiA4MDApIGRpc3RhbmNlID0gODAwO1xyXG4gICAgICAgIGNvbnN0IHRpbWUgPSBkaXN0YW5jZS84MDAgKiAwLjg7XHJcbiAgICAgICAgcmV0dXJuIHRpbWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy/np7vliqjliJvlu7rkuIvkuIDkuKrlpKrpmLNcclxuICAgIG1vdmVTdW4oKXtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLy/ojrfog5xcclxuICAgIHBhc3NMZXZlbCgpe1xyXG4gICAgICAgIHRoaXMuZGVzdHJveUxpbmUoKTtcclxuICAgICAgICBsZXQgdGltZUFycmF5ID0gW107XHJcbiAgICAgICAgbGV0IHRpbWVDb3VudCA9IDA7XHJcbiAgICAgICAgbGV0IGJhbGwgPSB0aGlzLmJhbGxfQXJyYXlbMF07XHJcbiAgICAgICAgZm9yKGxldCBpPTE7IGk8IHRoaXMuYmFsbF9BcnJheS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIGxldCB0aW1lID0gdGhpcy5jYWxjdWxhdGVEaXN0YW5jZSh0aGlzLmJhbGxfQXJyYXlbaV0ueCx0aGlzLmJhbGxfQXJyYXlbaV0ueSxcclxuICAgICAgICAgICAgICAgIHRoaXMuYmFsbF9BcnJheVtpLTFdLngsdGhpcy5iYWxsX0FycmF5W2ktMV0ueSk7XHJcbiAgICAgICAgICAgIHRpbWVBcnJheS5wdXNoKHRpbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IobGV0IGs9MTsgazwgdGhpcy5iYWxsX0FycmF5Lmxlbmd0aDsgaysrKXtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjYy50d2VlbihiYWxsKVxyXG4gICAgICAgICAgICAgICAgLnRvKHRpbWVBcnJheVtrLTFdLHt4OnRoaXMuYmFsbF9BcnJheVtrXS54LHk6dGhpcy5iYWxsX0FycmF5W2tdLnl9KVxyXG4gICAgICAgICAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWxsX0FycmF5W2tdLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGsgPT0gdGhpcy5iYWxsX0FycmF5Lmxlbmd0aC0xKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhbGwub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFsbC5wb3NpdGlvbiA9IGNjLnYzKGJhbGwueCxiYWxsLnksMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhbGwuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0R3VpZGUoMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDIwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICB9LCB0aW1lQ291bnQqMTAwMCk7XHJcbiAgICAgICAgICAgIHRpbWVDb3VudCArPSAodGltZUFycmF5W2stMV0rMC4xKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/ngrnlh7vlpKrpmLPmiafooYzmlrnms5VcclxuICAgIGNsaWNrU3VuKGRhdGEpe1xyXG4gICAgICAgIGlmKHRoaXMuYmVnaW4gPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIGlmKGRhdGEgPT0gdGhpcy5jbGlja05vdyl7XHJcbiAgICAgICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQXVkaW9NYW5hZ2VyLnBsYXlBdWRpb0J1dHRvbigpO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5jbGlja05vdyA+IDApe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlTGluZShjYy52Mih0aGlzLmJhbGxfQXJyYXlbdGhpcy5jbGlja05vdy0xXS54LHRoaXMuYmFsbF9BcnJheVt0aGlzLmNsaWNrTm93LTFdLnkpLFxyXG4gICAgICAgICAgICAgICAgICAgIGNjLnYyKHRoaXMuYmFsbF9BcnJheVt0aGlzLmNsaWNrTm93XS54LHRoaXMuYmFsbF9BcnJheVt0aGlzLmNsaWNrTm93XS55KSxcclxuICAgICAgICAgICAgICAgICAgICAwLjIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jbGlja05vdyArPSAxO1xyXG4gICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8udG90YWwgKz0gMTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuYmFsbF9BcnJheVt0aGlzLmNsaWNrTm93LTFdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJhbGxfQXJyYXlbdGhpcy5jbGlja05vdy0xXS5nZXRDaGlsZEJ5TmFtZShcImd1YW5nXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSwgMjAwKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5jbGlja05vdyA9PSAzKXtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgd2luID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiV2luXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHdpbi5hY3RpdmUgPSB0cnVlOyB3aW4uc2V0U2NhbGUoMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MudHdlZW4od2luKVxyXG4gICAgICAgICAgICAgICAgICAgIC5kZWxheSgwLjQpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRvKDAuMDEse3NjYWxlOjIuNX0pXHJcbiAgICAgICAgICAgICAgICAgICAgLnRvKDAuMzUse3NjYWxlOjF9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5kZWxheSgwLjYpXHJcbiAgICAgICAgICAgICAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbi5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhc3NMZXZlbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCA0MDApO1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5BdWRpb01hbmFnZXIucGxheVdhcm5pbmcoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvc2VMZXZlbCgxKVxyXG4gICAgICAgICAgICAgICAgbGV0IG92ZXIgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJPdmVyXCIpO1xyXG4gICAgICAgICAgICAgICAgY2MudHdlZW4ob3ZlcilcclxuICAgICAgICAgICAgICAgIC50bygwLjI1LHtvcGFjaXR5OjI1NX0pXHJcbiAgICAgICAgICAgICAgICAuZGVsYXkoMC4xKVxyXG4gICAgICAgICAgICAgICAgLnRvKDAuMix7b3BhY2l0eTowfSlcclxuICAgICAgICAgICAgICAgIC5kZWxheSgwLjEpXHJcbiAgICAgICAgICAgICAgICAudG8oMC4xNSx7b3BhY2l0eToyNTV9KVxyXG4gICAgICAgICAgICAgICAgLmRlbGF5KDAuMSlcclxuICAgICAgICAgICAgICAgIC50bygwLjEse29wYWNpdHk6MH0pXHJcbiAgICAgICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsb3NlTGV2ZWwodHlwZSl7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95TGluZSgpO1xyXG4gICAgICAgIGxldCBiYWxsID0gdGhpcy5iYWxsX0FycmF5WzBdO1xyXG4gICAgICAgIGZvcihsZXQgaz0xOyBrPCB0aGlzLmJhbGxfQXJyYXkubGVuZ3RoOyBrKyspe1xyXG4gICAgICAgICAgICBjYy50d2Vlbih0aGlzLmJhbGxfQXJyYXlba10pXHJcbiAgICAgICAgICAgIC50bygwLjYse3g6YmFsbC54LHk6YmFsbC55fSlcclxuICAgICAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhbGxfQXJyYXlba10uYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBpZihrID09IHRoaXMuYmFsbF9BcnJheS5sZW5ndGgtMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWxsLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFsbC5wb3NpdGlvbiA9IGNjLnYzKGJhbGwueCxiYWxsLnksMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhclN1bigpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VzdG9tID0gMTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0R3VpZGUoMSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyU3VuKCl7XHJcbiAgICAgICAgZm9yKGxldCBrPTA7IGs8IHRoaXMuYmFsbF9BcnJheS5sZW5ndGg7IGsrKyl7XHJcbiAgICAgICAgICAgIHRoaXMuYmFsbF9BcnJheVtrXS5yZW1vdmVGcm9tUGFyZW50KCk7XHJcbiAgICAgICAgICAgIHRoaXMuYmFsbF9BcnJheVtrXSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYmFsbF9BcnJheSA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIC8v6I635Y+W5pe26Ze05oizXHJcbiAgICBnZXRUaW1lKCl7XHJcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgcmV0dXJuIHRpbWVzdGFtcDtcclxuICAgIH1cclxuXHJcbiAgICBkZXN0cm95TGluZSgpIHtcclxuICAgICAgICBmb3IobGV0IGkgPTA7IGk8IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkxpbmVcIikuY2hpbGRyZW4ubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkxpbmVcIikuY2hpbGRyZW5baV0pe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiTGluZVwiKS5jaGlsZHJlbltpXS5yZW1vdmVGcm9tUGFyZW50KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJMaW5lXCIpLmNoaWxkcmVuW2ldID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJMaW5lXCIpLnJlbW92ZUFsbENoaWxkcmVuKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY3JlYXRlTGluZShzdGFydCxlbmQsdGltZSl7XHJcbiAgICAgICAgbGV0IGxpbmUgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLmxpbmVQcmVmYWIpO1xyXG4gICAgICAgIGxpbmUucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiTGluZVwiKTtcclxuICAgICAgICBsaW5lLnNldFBvc2l0aW9uKHN0YXJ0Lngsc3RhcnQueSk7XHJcbiAgICBcclxuICAgICAgICBjb25zdCBkeCA9IGVuZC54IC0gc3RhcnQueDtcclxuICAgICAgICBjb25zdCBkeSA9IGVuZC55IC0gc3RhcnQueTtcclxuICAgICAgICB2YXIgZGlzdGFuY2UgPSBNYXRoLnNxcnQoZHgqZHggKyBkeSpkeSk7XHJcbiAgICAgICAgbGluZS5oZWlnaHQgPSBkaXN0YW5jZTtcclxuICAgICAgICBsaW5lLmdldENvbXBvbmVudChjYy5TcHJpdGUpLmZpbGxSYW5nZSA9IDA7XHJcbiAgICAgICAgbGluZS5hbmdsZSA9IC10aGlzLmNhbGN1bGF0ZUFuZ2xlKHN0YXJ0Lngsc3RhcnQueSxlbmQueCxlbmQueSk7XHJcbiAgICAgICAgY2MudHdlZW4obGluZS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKSlcclxuICAgICAgICAudG8odGltZSx7ZmlsbFJhbmdlOjF9KVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBjYWxjdWxhdGVBbmdsZSh4MSwgeTEsIHgyLCB5Mikge1xyXG4gICAgICAgIHZhciBhbmdsZSA9IE1hdGguYXRhbjIoeTIteTEseDIteDEpKjE4MCAvIE1hdGguUEkgLSA5MDtcclxuICAgICAgICByZXR1cm4gLWFuZ2xlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRW5hYmxlICgpIHtcclxuICAgICAgICBOb3RpZmljYXRpb24ub24oXCJjbGlja1N1blwiLCB0aGlzLmNsaWNrU3VuLCB0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRpc2FibGUgKCkge1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5vZmYoXCJjbGlja1N1blwiLCB0aGlzLmNsaWNrU3VuKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ==
//------QC-SOURCE-SPLIT------
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/Script/test.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, 'f7f5dfmKidObZiMLtuBdAiq', 'test');
// Script/test.ts
if (this.level == 1) {
var data = { x: -200, y: -380, time: 0, timeCount: 0 };
var timeCount = this.timeCount + (0.8 - this.calculateDistance(this.ball.x, this.ball.y, -200, -380));
var time = this.calculateDistance(this.ball.x, this.ball.y, -200, -380) + timeCount;
data = { x: -200, y: -380, time: time, timeCount: timeCount };
this.now_Array.push(data);
timeCount = this.timeCount + (0.8 - this.calculateDistance(this.ball.x, this.ball.y, -250, -300));
time = this.calculateDistance(this.now_Array[this.now_Array.length - 1].x, this.now_Array[this.now_Array.length - 1].y, -250, -300) + timeCount;
data = { x: -250, y: -300, time: time, timeCount: timeCount };
this.now_Array.push(data);
timeCount = this.timeCount + (0.8 - this.calculateDistance(this.ball.x, this.ball.y, -300, 500));
time = this.calculateDistance(this.now_Array[this.now_Array.length - 1].x, this.now_Array[this.now_Array.length - 1].y, -300, 500) + timeCount;
data = { x: -300, y: 500, time: time, timeCount: timeCount };
this.now_Array.push(data);
timeCount = this.timeCount + (0.8 - this.calculateDistance(this.ball.x, this.ball.y, 208, 280));
time = this.calculateDistance(this.now_Array[this.now_Array.length - 1].x, this.now_Array[this.now_Array.length - 1].y, 208, 280) + timeCount;
data = { x: 208, y: 280, time: time, timeCount: timeCount };
this.now_Array.push(data);
timeCount = this.timeCount + (0.8 - this.calculateDistance(this.ball.x, this.ball.y, 208, -280));
time = this.calculateDistance(this.now_Array[this.now_Array.length - 1].x, this.now_Array[this.now_Array.length - 1].y, 208, -280) + timeCount;
data = { x: 208, y: -280, time: time, timeCount: timeCount };
this.now_Array.push(data);
}
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFx0ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUM7SUFDZixJQUFJLElBQUksR0FBRyxFQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLEVBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLENBQUM7SUFDOUMsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsR0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLEdBQUcsQ0FBQyxHQUFDLFNBQVMsQ0FBQztJQUMvRSxJQUFJLEdBQUcsRUFBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxDQUFDO0lBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTFCLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxHQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0YsSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDbkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxHQUFHLENBQUMsR0FBQyxTQUFTLENBQUM7SUFDbkUsSUFBSSxHQUFHLEVBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsQ0FBQztJQUNyRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUxQixTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsR0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFHLEVBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1RixJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNuRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsRUFBQyxHQUFHLENBQUMsR0FBQyxTQUFTLENBQUM7SUFDbEUsSUFBSSxHQUFHLEVBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRyxFQUFDLENBQUMsRUFBQyxHQUFHLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLENBQUM7SUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFMUIsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLEdBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLEdBQUcsRUFBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNGLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ25FLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsRUFBQyxHQUFHLENBQUMsR0FBQyxTQUFTLENBQUM7SUFDakUsSUFBSSxHQUFHLEVBQUMsQ0FBQyxFQUFDLEdBQUcsRUFBQyxDQUFDLEVBQUMsR0FBRyxFQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsU0FBUyxFQUFDLFNBQVMsRUFBQyxDQUFDO0lBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTFCLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxHQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxHQUFHLEVBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVGLElBQUksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ25FLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsRUFBQyxDQUFDLEdBQUcsQ0FBQyxHQUFDLFNBQVMsQ0FBQztJQUNsRSxJQUFJLEdBQUcsRUFBQyxDQUFDLEVBQUMsR0FBRyxFQUFDLENBQUMsRUFBQyxDQUFDLEdBQUcsRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztDQUM3QiIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImlmKHRoaXMubGV2ZWwgPT0gMSl7XHJcbiAgICBsZXQgZGF0YSA9IHt4Oi0yMDAseTotMzgwLHRpbWU6MCx0aW1lQ291bnQ6MH07XHJcbiAgICBsZXQgdGltZUNvdW50ID0gdGhpcy50aW1lQ291bnQgKyAoMC44LXRoaXMuY2FsY3VsYXRlRGlzdGFuY2UodGhpcy5iYWxsLngsdGhpcy5iYWxsLnksLTIwMCwtMzgwKSk7XHJcbiAgICBsZXQgdGltZSA9IHRoaXMuY2FsY3VsYXRlRGlzdGFuY2UodGhpcy5iYWxsLngsdGhpcy5iYWxsLnksLTIwMCwtMzgwKSt0aW1lQ291bnQ7XHJcbiAgICBkYXRhID0ge3g6LTIwMCx5Oi0zODAsdGltZTp0aW1lLHRpbWVDb3VudDp0aW1lQ291bnR9O1xyXG4gICAgdGhpcy5ub3dfQXJyYXkucHVzaChkYXRhKTtcclxuXHJcbiAgICB0aW1lQ291bnQgPSB0aGlzLnRpbWVDb3VudCArICgwLjgtdGhpcy5jYWxjdWxhdGVEaXN0YW5jZSh0aGlzLmJhbGwueCx0aGlzLmJhbGwueSwtMjUwLC0zMDApKTtcclxuICAgIHRpbWUgPSB0aGlzLmNhbGN1bGF0ZURpc3RhbmNlKHRoaXMubm93X0FycmF5W3RoaXMubm93X0FycmF5Lmxlbmd0aC0xXS54LFxyXG4gICAgICAgIHRoaXMubm93X0FycmF5W3RoaXMubm93X0FycmF5Lmxlbmd0aC0xXS55LC0yNTAsLTMwMCkrdGltZUNvdW50O1xyXG4gICAgZGF0YSA9IHt4Oi0yNTAseTotMzAwLHRpbWU6dGltZSx0aW1lQ291bnQ6dGltZUNvdW50fTtcclxuICAgIHRoaXMubm93X0FycmF5LnB1c2goZGF0YSk7XHJcblxyXG4gICAgdGltZUNvdW50ID0gdGhpcy50aW1lQ291bnQgKyAoMC44LXRoaXMuY2FsY3VsYXRlRGlzdGFuY2UodGhpcy5iYWxsLngsdGhpcy5iYWxsLnksLTMwMCw1MDApKTtcclxuICAgIHRpbWUgPSB0aGlzLmNhbGN1bGF0ZURpc3RhbmNlKHRoaXMubm93X0FycmF5W3RoaXMubm93X0FycmF5Lmxlbmd0aC0xXS54LFxyXG4gICAgICAgIHRoaXMubm93X0FycmF5W3RoaXMubm93X0FycmF5Lmxlbmd0aC0xXS55LC0zMDAsNTAwKSt0aW1lQ291bnQ7XHJcbiAgICBkYXRhID0ge3g6LTMwMCx5OjUwMCx0aW1lOnRpbWUsdGltZUNvdW50OnRpbWVDb3VudH07XHJcbiAgICB0aGlzLm5vd19BcnJheS5wdXNoKGRhdGEpO1xyXG5cclxuICAgIHRpbWVDb3VudCA9IHRoaXMudGltZUNvdW50ICsgKDAuOC10aGlzLmNhbGN1bGF0ZURpc3RhbmNlKHRoaXMuYmFsbC54LHRoaXMuYmFsbC55LDIwOCwyODApKTtcclxuICAgIHRpbWUgPSB0aGlzLmNhbGN1bGF0ZURpc3RhbmNlKHRoaXMubm93X0FycmF5W3RoaXMubm93X0FycmF5Lmxlbmd0aC0xXS54LFxyXG4gICAgICAgIHRoaXMubm93X0FycmF5W3RoaXMubm93X0FycmF5Lmxlbmd0aC0xXS55LDIwOCwyODApK3RpbWVDb3VudDtcclxuICAgIGRhdGEgPSB7eDoyMDgseToyODAsdGltZTp0aW1lLHRpbWVDb3VudDp0aW1lQ291bnR9O1xyXG4gICAgdGhpcy5ub3dfQXJyYXkucHVzaChkYXRhKTtcclxuXHJcbiAgICB0aW1lQ291bnQgPSB0aGlzLnRpbWVDb3VudCArICgwLjgtdGhpcy5jYWxjdWxhdGVEaXN0YW5jZSh0aGlzLmJhbGwueCx0aGlzLmJhbGwueSwyMDgsLTI4MCkpO1xyXG4gICAgdGltZSA9IHRoaXMuY2FsY3VsYXRlRGlzdGFuY2UodGhpcy5ub3dfQXJyYXlbdGhpcy5ub3dfQXJyYXkubGVuZ3RoLTFdLngsXHJcbiAgICAgICAgdGhpcy5ub3dfQXJyYXlbdGhpcy5ub3dfQXJyYXkubGVuZ3RoLTFdLnksMjA4LC0yODApK3RpbWVDb3VudDtcclxuICAgIGRhdGEgPSB7eDoyMDgseTotMjgwLHRpbWU6dGltZSx0aW1lQ291bnQ6dGltZUNvdW50fTtcclxuICAgIHRoaXMubm93X0FycmF5LnB1c2goZGF0YSk7XHJcbn0iXX0=
//------QC-SOURCE-SPLIT------
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/Script/Sun.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, '4be67sdkexCyqLl0NHd9N1f', 'Sun');
// Script/Sun.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 Notification_1 = require("./Notification");
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 () {
this.touch = true;
this.move = false;
this._color = 0;
this._speed = 0;
var shan = this.node.getChildByName("shan");
cc.tween(shan)
.repeatForever(cc.tween()
.to(1, { opacity: 0, scale: 0.5, })
.delay(0.2)
.to(1, { opacity: 255, scale: 1.2 })
.delay(0.5))
.start();
};
NewClass.prototype.init = function (_id, color, speed, repeat) {
this.id_Number = _id;
this._color = color;
this._speed = speed;
this._repeat = repeat;
};
NewClass.prototype.showNumber = function (type) {
this.node.getChildByName("number").active = type;
if (type == true)
this.node.getChildByName("number").getComponent(cc.Label).string = this.id_Number + "";
};
NewClass.prototype.clickBtn = function () {
var temp = this.node.parent.parent.name;
// console.log(temp,this.move,this.touch);
if (this.move == false && this.touch == true) {
if (this.node.parent.parent.name == "GameNode") {
if (this.node.parent.parent.getComponent("GameManager").begin == true) {
cc.tween(this.node.getChildByName("action"))
.to(0.5, { opacity: 0, scale: 1.8 })
.start();
cc.tween(this.node)
.to(0.3, { scale: 1.3 })
.to(0.3, { scale: 1 })
.start();
this.touch = false;
this.node.zIndex = -1;
Notification_1.Notification.emit("clickSun", this.id_Number);
}
}
else {
this.touch = false;
this.node.zIndex = -1;
Notification_1.Notification.emit("clickSun", this.id_Number);
}
}
};
NewClass.prototype.clickBtn2 = function () {
if (this.touch == true && this.node.parent.parent.getComponent("GuideManager").begin == true) {
this.touch = false;
this.node.zIndex = -1;
Notification_1.Notification.emit("clickSun", this.id_Number);
}
};
NewClass.prototype.update = function (dt) {
};
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTdW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFNUUsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFFMUMsK0NBQThDO0FBRzlDO0lBQXNDLDRCQUFZO0lBQWxEOztJQWlGQSxDQUFDO0lBekVHLHdCQUF3QjtJQUV4QixlQUFlO0lBRWYsd0JBQUssR0FBTDtRQUNJLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTVDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ2IsYUFBYSxDQUNWLEVBQUUsQ0FBQyxLQUFLLEVBQUU7YUFDVCxFQUFFLENBQUMsQ0FBQyxFQUFDLEVBQUMsT0FBTyxFQUFDLENBQUMsRUFBQyxLQUFLLEVBQUMsR0FBRyxHQUFFLENBQUM7YUFDNUIsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLEVBQUUsQ0FBQyxDQUFDLEVBQUMsRUFBQyxPQUFPLEVBQUMsR0FBRyxFQUFDLEtBQUssRUFBQyxHQUFHLEVBQUMsQ0FBQzthQUM3QixLQUFLLENBQUMsR0FBRyxDQUFDLENBQ2Q7YUFDQSxLQUFLLEVBQUUsQ0FBQztJQUViLENBQUM7SUFFRCx1QkFBSSxHQUFKLFVBQUssR0FBRyxFQUFDLEtBQUssRUFB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QUFDO0lBaEZnQixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBaUY1QjtJQUFELGVBQUM7Q0FqRkQsQUFpRkMsQ0FqRnFDLEVBQUUsQ0FBQyxTQUFTLEdBaUZqRDtrQkFqRm9CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuaW1wb3J0IEdhbWVNYW5hZ2VyIGZyb20gJy4vR2FtZU1hbmFnZXInO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb24gfSBmcm9tICcuL05vdGlmaWNhdGlvbic7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgaWRfTnVtYmVyOm51bWJlclxyXG4gICAgX3NwZWVkOm51bWJlclxyXG4gICAgX2NvbG9yOm51bWJlclxyXG4gICAgdG91Y2g6Ym9vbGVhblxyXG4gICAgX3JlcGVhdDpib29sZWFuXHJcbiAgICBtb3ZlOmJvb2xlYW5cclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIC8vIG9uTG9hZCAoKSB7fVxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgICAgICB0aGlzLnRvdWNoID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1vdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9jb2xvciA9IDA7XHJcbiAgICAgICAgdGhpcy5fc3BlZWQgPSAwO1xyXG4gICAgICAgIHZhciBzaGFuID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwic2hhblwiKTtcclxuXHJcbiAgICAgICAgY2MudHdlZW4oc2hhbilcclxuICAgICAgICAucmVwZWF0Rm9yZXZlcihcclxuICAgICAgICAgICAgY2MudHdlZW4oKVxyXG4gICAgICAgICAgICAudG8oMSx7b3BhY2l0eTowLHNjYWxlOjAuNSx9KVxyXG4gICAgICAgICAgICAuZGVsYXkoMC4yKVxyXG4gICAgICAgICAgICAudG8oMSx7b3BhY2l0eToyNTUsc2NhbGU6MS4yfSlcclxuICAgICAgICAgICAgLmRlbGF5KDAuNSlcclxuICAgICAgICApXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGluaXQoX2lkLGNvbG9yLHNwZWVkLHJlcGVhdCl7XHJcbiAgICAgICAgdGhpcy5pZF9OdW1iZXIgID0gX2lkO1xyXG4gICAgICAgIHRoaXMuX2NvbG9yID0gY29sb3I7XHJcbiAgICAgICAgdGhpcy5fc3BlZWQgPSBzcGVlZDtcclxuICAgICAgICB0aGlzLl9yZXBlYXQgPSByZXBlYXQ7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd051bWJlcih0eXBlKXtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJudW1iZXJcIikuYWN0aXZlID0gdHlwZTtcclxuICAgICAgICBpZih0eXBlID09IHRydWUpXHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIm51bWJlclwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuaWRfTnVtYmVyICsgXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBjbGlja0J0bigpe1xyXG4gICAgICAgIHZhciB0ZW1wID0gdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQubmFtZTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyh0ZW1wLHRoaXMubW92ZSx0aGlzLnRvdWNoKTtcclxuICAgICAgICBpZiggdGhpcy5tb3ZlID09IGZhbHNlICYmIHRoaXMudG91Y2ggPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5wYXJlbnQucGFyZW50Lm5hbWUgPT0gXCJHYW1lTm9kZVwiKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZS5wYXJlbnQucGFyZW50LmdldENvbXBvbmVudChcIkdhbWVNYW5hZ2VyXCIpLmJlZ2luID09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImFjdGlvblwiKSlcclxuICAgICAgICAgICAgICAgICAgICAudG8oMC41LHtvcGFjaXR5OjAsc2NhbGU6MS44fSlcclxuICAgICAgICAgICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRvKDAuMyx7c2NhbGU6MS4zfSlcclxuICAgICAgICAgICAgICAgICAgICAudG8oMC4zLHtzY2FsZToxfSlcclxuICAgICAgICAgICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnpJbmRleCA9IC0xO1xyXG4gICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbi5lbWl0KFwiY2xpY2tTdW5cIix0aGlzLmlkX051bWJlcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIHRoaXMudG91Y2ggPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS56SW5kZXggPSAtMTtcclxuICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbi5lbWl0KFwiY2xpY2tTdW5cIix0aGlzLmlkX051bWJlcik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNsaWNrQnRuMigpe1xyXG4gICAgICAgIGlmKCB0aGlzLnRvdWNoID09IHRydWUgJiYgdGhpcy5ub2RlLnBhcmVudC5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiR3VpZGVNYW5hZ2VyXCIpLmJlZ2luID09IHRydWUpe1xyXG4gICAgICAgICAgICB0aGlzLnRvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS56SW5kZXggPSAtMTtcclxuICAgICAgICAgICAgTm90aWZpY2F0aW9uLmVtaXQoXCJjbGlja1N1blwiLHRoaXMuaWRfTnVtYmVyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlIChkdCkge1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
//------QC-SOURCE-SPLIT------
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/Script/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/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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxjcnlwdG9cXGNyeXB0by1qcy5taW4uanMiXSwibmFtZXMiOlsidCIsInIiLCJleHBvcnRzIiwibW9kdWxlIiwiZGVmaW5lIiwiYW1kIiwiQ3J5cHRvSlMiLCJlIiwiT2JqZWN0IiwiY3JlYXRlIiwicHJvdG90eXBlIiwiaSIsIm4iLCJsaWIiLCJvIiwiQmFzZSIsImV4dGVuZCIsIm1peEluIiwiaGFzT3duUHJvcGVydHkiLCJpbml0IiwiJHN1cGVyIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJ0b1N0cmluZyIsImNsb25lIiwicyIsIldvcmRBcnJheSIsIndvcmRzIiwic2lnQnl0ZXMiLCJsZW5ndGgiLCJjIiwic3RyaW5naWZ5IiwiY29uY2F0IiwiY2xhbXAiLCJjZWlsIiwiY2FsbCIsInNsaWNlIiwicmFuZG9tIiwiYSIsInB1c2giLCJlbmMiLCJIZXgiLCJqb2luIiwicGFyc2UiLCJwYXJzZUludCIsInN1YnN0ciIsImgiLCJMYXRpbjEiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJjaGFyQ29kZUF0IiwibCIsIlV0ZjgiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJFcnJvciIsInVuZXNjYXBlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZiIsIkJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0iLCJyZXNldCIsIl9kYXRhIiwiX25EYXRhQnl0ZXMiLCJfYXBwZW5kIiwiX3Byb2Nlc3MiLCJibG9ja1NpemUiLCJtYXgiLCJfbWluQnVmZmVyU2l6ZSIsIm1pbiIsIl9kb1Byb2Nlc3NCbG9jayIsInUiLCJzcGxpY2UiLCJIYXNoZXIiLCJjZmciLCJfZG9SZXNldCIsInVwZGF0ZSIsImZpbmFsaXplIiwiX2RvRmluYWxpemUiLCJfY3JlYXRlSGVscGVyIiwiX2NyZWF0ZUhtYWNIZWxwZXIiLCJITUFDIiwiYWxnbyIsIk1hdGgiLCJCYXNlNjQiLCJfbWFwIiwiY2hhckF0IiwiX3JldmVyc2VNYXAiLCJpbmRleE9mIiwiYWJzIiwic2luIiwiTUQ1IiwiX2hhc2giLCJkIiwidiIsInAiLCJfIiwieSIsImciLCJCIiwidyIsImsiLCJTIiwibSIsIngiLCJiIiwiSCIsInoiLCJBIiwiQyIsIkQiLCJmbG9vciIsIkhtYWNNRDUiLCJTSEExIiwiSG1hY1NIQTEiLCJzcXJ0IiwicG93IiwiU0hBMjU2IiwiSG1hY1NIQTI1NiIsIlV0ZjE2IiwiVXRmMTZCRSIsIlV0ZjE2TEUiLCJBcnJheUJ1ZmZlciIsIlVpbnQ4QXJyYXkiLCJJbnQ4QXJyYXkiLCJVaW50OENsYW1wZWRBcnJheSIsIkludDE2QXJyYXkiLCJVaW50MTZBcnJheSIsIkludDMyQXJyYXkiLCJVaW50MzJBcnJheSIsIkZsb2F0MzJBcnJheSIsIkZsb2F0NjRBcnJheSIsImJ1ZmZlciIsImJ5dGVPZmZzZXQiLCJieXRlTGVuZ3RoIiwiUklQRU1EMTYwIiwiUiIsIkUiLCJNIiwiRiIsIkhtYWNSSVBFTUQxNjAiLCJfaGFzaGVyIiwiX29LZXkiLCJfaUtleSIsIlBCS0RGMiIsImtleVNpemUiLCJoYXNoZXIiLCJpdGVyYXRpb25zIiwiY29tcHV0ZSIsIkV2cEtERiIsIlNIQTIyNCIsIkhtYWNTSEEyMjQiLCJ4NjQiLCJXb3JkIiwiaGlnaCIsImxvdyIsInRvWDMyIiwiU0hBMyIsIm91dHB1dExlbmd0aCIsIl9zdGF0ZSIsIkhtYWNTSEEzIiwiU0hBNTEyIiwiUCIsIlciLCJPIiwiVSIsIkkiLCJLIiwiWCIsIkwiLCJqIiwiTiIsIlQiLCJaIiwicSIsIkciLCJKIiwiJCIsIlEiLCJWIiwiWSIsInR0IiwicnQiLCJldCIsIml0IiwibnQiLCJvdCIsInN0IiwiYXQiLCJjdCIsImh0IiwibHQiLCJmdCIsInV0IiwiZHQiLCJ2dCIsInB0IiwiX3QiLCJ5dCIsImd0IiwiQnQiLCJ3dCIsImt0IiwiU3QiLCJtdCIsInh0IiwiYnQiLCJIbWFjU0hBNTEyIiwiU0hBMzg0IiwiSG1hY1NIQTM4NCIsIkNpcGhlciIsImNyZWF0ZUVuY3J5cHRvciIsIl9FTkNfWEZPUk1fTU9ERSIsImNyZWF0ZURlY3J5cHRvciIsIl9ERUNfWEZPUk1fTU9ERSIsIl94Zm9ybU1vZGUiLCJfa2V5IiwicHJvY2VzcyIsIml2U2l6ZSIsImVuY3J5cHQiLCJkZWNyeXB0IiwiU3RyZWFtQ2lwaGVyIiwibW9kZSIsIkJsb2NrQ2lwaGVyTW9kZSIsIkVuY3J5cHRvciIsIkRlY3J5cHRvciIsIl9jaXBoZXIiLCJfaXYiLCJDQkMiLCJfcHJldkJsb2NrIiwicHJvY2Vzc0Jsb2NrIiwiZW5jcnlwdEJsb2NrIiwiZGVjcnlwdEJsb2NrIiwicGFkIiwiUGtjczciLCJ1bnBhZCIsIkJsb2NrQ2lwaGVyIiwicGFkZGluZyIsIml2IiwiX21vZGUiLCJfX2NyZWF0b3IiLCJDaXBoZXJQYXJhbXMiLCJmb3JtYXR0ZXIiLCJmb3JtYXQiLCJPcGVuU1NMIiwiY2lwaGVydGV4dCIsInNhbHQiLCJTZXJpYWxpemFibGVDaXBoZXIiLCJrZXkiLCJhbGdvcml0aG0iLCJfcGFyc2UiLCJrZGYiLCJleGVjdXRlIiwiUGFzc3dvcmRCYXNlZENpcGhlciIsIkNGQiIsIkVDQiIsIkFuc2lYOTIzIiwiSXNvMTAxMjYiLCJJc285Nzk3MSIsIlplcm9QYWRkaW5nIiwiT0ZCIiwiX2tleXN0cmVhbSIsIk5vUGFkZGluZyIsIkFFUyIsIl9uUm91bmRzIiwiX2tleVByaW9yUmVzZXQiLCJfa2V5U2NoZWR1bGUiLCJfaW52S2V5U2NoZWR1bGUiLCJfZG9DcnlwdEJsb2NrIiwiX2xCbG9jayIsIl9yQmxvY2siLCJERVMiLCJfc3ViS2V5cyIsIl9pbnZTdWJLZXlzIiwiVHJpcGxlREVTIiwiX2RlczEiLCJfZGVzMiIsIl9kZXMzIiwiX1MiLCJfaSIsIl9qIiwiUkM0IiwiUkM0RHJvcCIsImRyb3AiLCJDVFJHbGFkbWFuIiwiX2NvdW50ZXIiLCJfWCIsIl9DIiwiX2IiLCJSYWJiaXQiLCJDVFIiLCJSYWJiaXRMZWdhY3kiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsQ0FBQyxVQUFTQSxDQUFULEVBQVdDLENBQVgsRUFBYTtBQUFDLGNBQVUsT0FBT0MsT0FBakIsR0FBeUJDLE1BQU0sQ0FBQ0QsT0FBUCxHQUFlQSxPQUFPLEdBQUNELENBQUMsRUFBakQsR0FBb0QsY0FBWSxPQUFPRyxNQUFuQixJQUEyQkEsTUFBTSxDQUFDQyxHQUFsQyxHQUFzQ0QsTUFBTSxDQUFDLEVBQUQsRUFBSUgsQ0FBSixDQUE1QyxHQUFtREQsQ0FBQyxDQUFDTSxRQUFGLEdBQVdMLENBQUMsRUFBbkg7QUFBc0gsQ0FBcEksU0FBMEksWUFBVTtBQUFDLE1BQUlELENBQUMsR0FBQ0EsQ0FBQyxJQUFFLFVBQVNBLENBQVQsRUFBV0MsQ0FBWCxFQUFhO0FBQUMsUUFBSU0sQ0FBQyxHQUFDQyxNQUFNLENBQUNDLE1BQVAsSUFBZSxZQUFVO0FBQUMsZUFBU1QsQ0FBVCxHQUFZLENBQUU7O0FBQUEsYUFBTyxVQUFTQyxDQUFULEVBQVc7QUFBQyxZQUFJTSxDQUFKO0FBQU0sZUFBT1AsQ0FBQyxDQUFDVSxTQUFGLEdBQVlULENBQVosRUFBY00sQ0FBQyxHQUFDLElBQUlQLENBQUosRUFBaEIsRUFBc0JBLENBQUMsQ0FBQ1UsU0FBRixHQUFZLElBQWxDLEVBQXVDSCxDQUE5QztBQUFnRCxPQUF6RTtBQUEwRSxLQUFuRyxFQUFyQjtBQUFBLFFBQTJISSxDQUFDLEdBQUMsRUFBN0g7QUFBQSxRQUFnSUMsQ0FBQyxHQUFDRCxDQUFDLENBQUNFLEdBQUYsR0FBTSxFQUF4STtBQUFBLFFBQTJJQyxDQUFDLEdBQUNGLENBQUMsQ0FBQ0csSUFBRixHQUFPLFlBQVU7QUFBQyxhQUFNO0FBQUNDLFFBQUFBLE1BQU0sRUFBQyxnQkFBU2hCLENBQVQsRUFBVztBQUFDLGNBQUlDLENBQUMsR0FBQ00sQ0FBQyxDQUFDLElBQUQsQ0FBUDtBQUFjLGlCQUFPUCxDQUFDLElBQUVDLENBQUMsQ0FBQ2dCLEtBQUYsQ0FBUWpCLENBQVIsQ0FBSCxFQUFjQyxDQUFDLENBQUNpQixjQUFGLENBQWlCLE1BQWpCLEtBQTBCLEtBQUtDLElBQUwsS0FBWWxCLENBQUMsQ0FBQ2tCLElBQXhDLEtBQStDbEIsQ0FBQyxDQUFDa0IsSUFBRixHQUFPLFlBQVU7QUFBQ2xCLFlBQUFBLENBQUMsQ0FBQ21CLE1BQUYsQ0FBU0QsSUFBVCxDQUFjRSxLQUFkLENBQW9CLElBQXBCLEVBQXlCQyxTQUF6QjtBQUFvQyxXQUFyRyxDQUFkLEVBQXFIckIsQ0FBQyxDQUFDa0IsSUFBRixDQUFPVCxTQUFQLEdBQWlCVCxDQUF0SSxFQUF3SUEsQ0FBQyxDQUFDbUIsTUFBRixHQUFTLElBQWpKLEVBQXNKbkIsQ0FBN0o7QUFBK0osU0FBak07QUFBa01RLFFBQUFBLE1BQU0sRUFBQyxrQkFBVTtBQUFDLGNBQUlULENBQUMsR0FBQyxLQUFLZ0IsTUFBTCxFQUFOO0FBQW9CLGlCQUFPaEIsQ0FBQyxDQUFDbUIsSUFBRixDQUFPRSxLQUFQLENBQWFyQixDQUFiLEVBQWVzQixTQUFmLEdBQTBCdEIsQ0FBakM7QUFBbUMsU0FBM1E7QUFBNFFtQixRQUFBQSxJQUFJLEVBQUMsZ0JBQVUsQ0FBRSxDQUE3UjtBQUE4UkYsUUFBQUEsS0FBSyxFQUFDLGVBQVNqQixDQUFULEVBQVc7QUFBQyxlQUFJLElBQUlDLENBQVIsSUFBYUQsQ0FBYjtBQUFlQSxZQUFBQSxDQUFDLENBQUNrQixjQUFGLENBQWlCakIsQ0FBakIsTUFBc0IsS0FBS0EsQ0FBTCxJQUFRRCxDQUFDLENBQUNDLENBQUQsQ0FBL0I7QUFBZjs7QUFBbURELFVBQUFBLENBQUMsQ0FBQ2tCLGNBQUYsQ0FBaUIsVUFBakIsTUFBK0IsS0FBS0ssUUFBTCxHQUFjdkIsQ0FBQyxDQUFDdUIsUUFBL0M7QUFBeUQsU0FBNVo7QUFBNlpDLFFBQUFBLEtBQUssRUFBQyxpQkFBVTtBQUFDLGlCQUFPLEtBQUtMLElBQUwsQ0FBVVQsU0FBVixDQUFvQk0sTUFBcEIsQ0FBMkIsSUFBM0IsQ0FBUDtBQUF3QztBQUF0ZCxPQUFOO0FBQThkLEtBQXplLEVBQXBKO0FBQUEsUUFBZ29CUyxDQUFDLEdBQUNiLENBQUMsQ0FBQ2MsU0FBRixHQUFZWixDQUFDLENBQUNFLE1BQUYsQ0FBUztBQUFDRyxNQUFBQSxJQUFJLEVBQUMsY0FBU25CLENBQVQsRUFBV08sQ0FBWCxFQUFhO0FBQUNQLFFBQUFBLENBQUMsR0FBQyxLQUFLMkIsS0FBTCxHQUFXM0IsQ0FBQyxJQUFFLEVBQWhCLEVBQW1CTyxDQUFDLElBQUVOLENBQUgsR0FBSyxLQUFLMkIsUUFBTCxHQUFjckIsQ0FBbkIsR0FBcUIsS0FBS3FCLFFBQUwsR0FBYyxJQUFFNUIsQ0FBQyxDQUFDNkIsTUFBMUQ7QUFBaUUsT0FBckY7QUFBc0ZOLE1BQUFBLFFBQVEsRUFBQyxrQkFBU3ZCLENBQVQsRUFBVztBQUFDLGVBQU0sQ0FBQ0EsQ0FBQyxJQUFFOEIsQ0FBSixFQUFPQyxTQUFQLENBQWlCLElBQWpCLENBQU47QUFBNkIsT0FBeEk7QUFBeUlDLE1BQUFBLE1BQU0sRUFBQyxnQkFBU2hDLENBQVQsRUFBVztBQUFDLFlBQUlDLENBQUMsR0FBQyxLQUFLMEIsS0FBWDtBQUFBLFlBQWlCcEIsQ0FBQyxHQUFDUCxDQUFDLENBQUMyQixLQUFyQjtBQUFBLFlBQTJCaEIsQ0FBQyxHQUFDLEtBQUtpQixRQUFsQztBQUFBLFlBQTJDaEIsQ0FBQyxHQUFDWixDQUFDLENBQUM0QixRQUEvQztBQUF3RCxZQUFHLEtBQUtLLEtBQUwsSUFBYXRCLENBQUMsR0FBQyxDQUFsQixFQUFvQixLQUFJLElBQUlHLENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQ0YsQ0FBZCxFQUFnQkUsQ0FBQyxFQUFqQixFQUFvQjtBQUFDLGNBQUlXLENBQUMsR0FBQ2xCLENBQUMsQ0FBQ08sQ0FBQyxLQUFHLENBQUwsQ0FBRCxLQUFXLEtBQUdBLENBQUMsR0FBQyxDQUFGLEdBQUksQ0FBbEIsR0FBb0IsR0FBMUI7QUFBOEJiLFVBQUFBLENBQUMsQ0FBQ1UsQ0FBQyxHQUFDRyxDQUFGLEtBQU0sQ0FBUCxDQUFELElBQVlXLENBQUMsSUFBRSxLQUFHLENBQUNkLENBQUMsR0FBQ0csQ0FBSCxJQUFNLENBQU4sR0FBUSxDQUExQjtBQUE0QixTQUFuRyxNQUF3RyxLQUFJLElBQUlBLENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQ0YsQ0FBZCxFQUFnQkUsQ0FBQyxJQUFFLENBQW5CO0FBQXFCYixVQUFBQSxDQUFDLENBQUNVLENBQUMsR0FBQ0csQ0FBRixLQUFNLENBQVAsQ0FBRCxHQUFXUCxDQUFDLENBQUNPLENBQUMsS0FBRyxDQUFMLENBQVo7QUFBckI7QUFBeUMsZUFBTyxLQUFLYyxRQUFMLElBQWVoQixDQUFmLEVBQWlCLElBQXhCO0FBQTZCLE9BQWxZO0FBQW1ZcUIsTUFBQUEsS0FBSyxFQUFDLGlCQUFVO0FBQUMsWUFBSWhDLENBQUMsR0FBQyxLQUFLMEIsS0FBWDtBQUFBLFlBQWlCcEIsQ0FBQyxHQUFDLEtBQUtxQixRQUF4QjtBQUFpQzNCLFFBQUFBLENBQUMsQ0FBQ00sQ0FBQyxLQUFHLENBQUwsQ0FBRCxJQUFVLGNBQVksS0FBR0EsQ0FBQyxHQUFDLENBQUYsR0FBSSxDQUE3QixFQUErQk4sQ0FBQyxDQUFDNEIsTUFBRixHQUFTN0IsQ0FBQyxDQUFDa0MsSUFBRixDQUFPM0IsQ0FBQyxHQUFDLENBQVQsQ0FBeEM7QUFBb0QsT0FBemU7QUFBMGVpQixNQUFBQSxLQUFLLEVBQUMsaUJBQVU7QUFBQyxZQUFJeEIsQ0FBQyxHQUFDYyxDQUFDLENBQUNVLEtBQUYsQ0FBUVcsSUFBUixDQUFhLElBQWIsQ0FBTjtBQUF5QixlQUFPbkMsQ0FBQyxDQUFDMkIsS0FBRixHQUFRLEtBQUtBLEtBQUwsQ0FBV1MsS0FBWCxDQUFpQixDQUFqQixDQUFSLEVBQTRCcEMsQ0FBbkM7QUFBcUMsT0FBempCO0FBQTBqQnFDLE1BQUFBLE1BQU0sRUFBQyxnQkFBU3BDLENBQVQsRUFBVztBQUFDLGFBQUksSUFBSU0sQ0FBSixFQUFNSSxDQUFDLEdBQUMsRUFBUixFQUFXQyxDQUFDLEdBQUMsU0FBRkEsQ0FBRSxDQUFTWCxDQUFULEVBQVc7QUFBQyxjQUFJQSxDQUFDLEdBQUNBLENBQU47QUFBQSxjQUFRTSxDQUFDLEdBQUMsU0FBVjtBQUFBLGNBQW9CSSxDQUFDLEdBQUMsVUFBdEI7QUFBaUMsaUJBQU8sWUFBVTtBQUFDSixZQUFBQSxDQUFDLEdBQUMsU0FBTyxRQUFNQSxDQUFiLEtBQWlCQSxDQUFDLElBQUUsRUFBcEIsSUFBd0JJLENBQTFCLEVBQTRCVixDQUFDLEdBQUMsUUFBTSxRQUFNQSxDQUFaLEtBQWdCQSxDQUFDLElBQUUsRUFBbkIsSUFBdUJVLENBQXJEO0FBQXVELGdCQUFJQyxDQUFDLEdBQUMsQ0FBQ0wsQ0FBQyxJQUFFLEVBQUosSUFBUU4sQ0FBUixHQUFVVSxDQUFoQjtBQUFrQixtQkFBT0MsQ0FBQyxJQUFFLFVBQUgsRUFBY0EsQ0FBQyxJQUFFLEVBQWpCLEVBQW9CQSxDQUFDLElBQUVaLENBQUMsQ0FBQ3FDLE1BQUYsS0FBVyxFQUFYLEdBQWMsQ0FBZCxHQUFnQixDQUFDLENBQW5CLENBQTVCO0FBQWtELFdBQTdJO0FBQThJLFNBQXhNLEVBQXlNdkIsQ0FBQyxHQUFDLENBQS9NLEVBQWlOQSxDQUFDLEdBQUNiLENBQW5OLEVBQXFOYSxDQUFDLElBQUUsQ0FBeE4sRUFBME47QUFBQyxjQUFJd0IsQ0FBQyxHQUFDMUIsQ0FBQyxDQUFDLGNBQVlMLENBQUMsSUFBRVAsQ0FBQyxDQUFDcUMsTUFBRixFQUFmLENBQUQsQ0FBUDtBQUFvQzlCLFVBQUFBLENBQUMsR0FBQyxZQUFVK0IsQ0FBQyxFQUFiLEVBQWdCM0IsQ0FBQyxDQUFDNEIsSUFBRixDQUFPLGFBQVdELENBQUMsRUFBWixHQUFlLENBQXRCLENBQWhCO0FBQXlDOztBQUFBLGVBQU8sSUFBSWIsQ0FBQyxDQUFDTixJQUFOLENBQVdSLENBQVgsRUFBYVYsQ0FBYixDQUFQO0FBQXVCO0FBQTU0QixLQUFULENBQTlvQjtBQUFBLFFBQXNpRHFDLENBQUMsR0FBQzNCLENBQUMsQ0FBQzZCLEdBQUYsR0FBTSxFQUE5aUQ7QUFBQSxRQUFpakRWLENBQUMsR0FBQ1EsQ0FBQyxDQUFDRyxHQUFGLEdBQU07QUFBQ1YsTUFBQUEsU0FBUyxFQUFDLG1CQUFTL0IsQ0FBVCxFQUFXO0FBQUMsYUFBSSxJQUFJQyxDQUFDLEdBQUNELENBQUMsQ0FBQzJCLEtBQVIsRUFBY3BCLENBQUMsR0FBQ1AsQ0FBQyxDQUFDNEIsUUFBbEIsRUFBMkJqQixDQUFDLEdBQUMsRUFBN0IsRUFBZ0NDLENBQUMsR0FBQyxDQUF0QyxFQUF3Q0EsQ0FBQyxHQUFDTCxDQUExQyxFQUE0Q0ssQ0FBQyxFQUE3QyxFQUFnRDtBQUFDLGNBQUlFLENBQUMsR0FBQ2IsQ0FBQyxDQUFDVyxDQUFDLEtBQUcsQ0FBTCxDQUFELEtBQVcsS0FBR0EsQ0FBQyxHQUFDLENBQUYsR0FBSSxDQUFsQixHQUFvQixHQUExQjtBQUE4QkQsVUFBQUEsQ0FBQyxDQUFDNEIsSUFBRixDQUFPLENBQUN6QixDQUFDLEtBQUcsQ0FBTCxFQUFRUyxRQUFSLENBQWlCLEVBQWpCLENBQVAsR0FBNkJaLENBQUMsQ0FBQzRCLElBQUYsQ0FBTyxDQUFDLEtBQUd6QixDQUFKLEVBQU9TLFFBQVAsQ0FBZ0IsRUFBaEIsQ0FBUCxDQUE3QjtBQUF5RDs7QUFBQSxlQUFPWixDQUFDLENBQUMrQixJQUFGLENBQU8sRUFBUCxDQUFQO0FBQWtCLE9BQWpMO0FBQWtMQyxNQUFBQSxLQUFLLEVBQUMsZUFBUzNDLENBQVQsRUFBVztBQUFDLGFBQUksSUFBSUMsQ0FBQyxHQUFDRCxDQUFDLENBQUM2QixNQUFSLEVBQWV0QixDQUFDLEdBQUMsRUFBakIsRUFBb0JJLENBQUMsR0FBQyxDQUExQixFQUE0QkEsQ0FBQyxHQUFDVixDQUE5QixFQUFnQ1UsQ0FBQyxJQUFFLENBQW5DO0FBQXFDSixVQUFBQSxDQUFDLENBQUNJLENBQUMsS0FBRyxDQUFMLENBQUQsSUFBVWlDLFFBQVEsQ0FBQzVDLENBQUMsQ0FBQzZDLE1BQUYsQ0FBU2xDLENBQVQsRUFBVyxDQUFYLENBQUQsRUFBZSxFQUFmLENBQVIsSUFBNEIsS0FBR0EsQ0FBQyxHQUFDLENBQUYsR0FBSSxDQUE3QztBQUFyQzs7QUFBb0YsZUFBTyxJQUFJYyxDQUFDLENBQUNOLElBQU4sQ0FBV1osQ0FBWCxFQUFhTixDQUFDLEdBQUMsQ0FBZixDQUFQO0FBQXlCO0FBQWpULEtBQXpqRDtBQUFBLFFBQTQyRDZDLENBQUMsR0FBQ1IsQ0FBQyxDQUFDUyxNQUFGLEdBQVM7QUFBQ2hCLE1BQUFBLFNBQVMsRUFBQyxtQkFBUy9CLENBQVQsRUFBVztBQUFDLGFBQUksSUFBSUMsQ0FBQyxHQUFDRCxDQUFDLENBQUMyQixLQUFSLEVBQWNwQixDQUFDLEdBQUNQLENBQUMsQ0FBQzRCLFFBQWxCLEVBQTJCakIsQ0FBQyxHQUFDLEVBQTdCLEVBQWdDQyxDQUFDLEdBQUMsQ0FBdEMsRUFBd0NBLENBQUMsR0FBQ0wsQ0FBMUMsRUFBNENLLENBQUMsRUFBN0MsRUFBZ0Q7QUFBQyxjQUFJRSxDQUFDLEdBQUNiLENBQUMsQ0FBQ1csQ0FBQyxLQUFHLENBQUwsQ0FBRCxLQUFXLEtBQUdBLENBQUMsR0FBQyxDQUFGLEdBQUksQ0FBbEIsR0FBb0IsR0FBMUI7QUFBOEJELFVBQUFBLENBQUMsQ0FBQzRCLElBQUYsQ0FBT1MsTUFBTSxDQUFDQyxZQUFQLENBQW9CbkMsQ0FBcEIsQ0FBUDtBQUErQjs7QUFBQSxlQUFPSCxDQUFDLENBQUMrQixJQUFGLENBQU8sRUFBUCxDQUFQO0FBQWtCLE9BQXZKO0FBQXdKQyxNQUFBQSxLQUFLLEVBQUMsZUFBUzNDLENBQVQsRUFBVztBQUFDLGFBQUksSUFBSUMsQ0FBQyxHQUFDRCxDQUFDLENBQUM2QixNQUFSLEVBQWV0QixDQUFDLEdBQUMsRUFBakIsRUFBb0JJLENBQUMsR0FBQyxDQUExQixFQUE0QkEsQ0FBQyxHQUFDVixDQUE5QixFQUFnQ1UsQ0FBQyxFQUFqQztBQUFvQ0osVUFBQUEsQ0FBQyxDQUFDSSxDQUFDLEtBQUcsQ0FBTCxDQUFELElBQVUsQ0FBQyxNQUFJWCxDQUFDLENBQUNrRCxVQUFGLENBQWF2QyxDQUFiLENBQUwsS0FBdUIsS0FBR0EsQ0FBQyxHQUFDLENBQUYsR0FBSSxDQUF4QztBQUFwQzs7QUFBOEUsZUFBTyxJQUFJYyxDQUFDLENBQUNOLElBQU4sQ0FBV1osQ0FBWCxFQUFhTixDQUFiLENBQVA7QUFBdUI7QUFBL1EsS0FBdjNEO0FBQUEsUUFBd29Fa0QsQ0FBQyxHQUFDYixDQUFDLENBQUNjLElBQUYsR0FBTztBQUFDckIsTUFBQUEsU0FBUyxFQUFDLG1CQUFTL0IsQ0FBVCxFQUFXO0FBQUMsWUFBRztBQUFDLGlCQUFPcUQsa0JBQWtCLENBQUNDLE1BQU0sQ0FBQ1IsQ0FBQyxDQUFDZixTQUFGLENBQVkvQixDQUFaLENBQUQsQ0FBUCxDQUF6QjtBQUFrRCxTQUF0RCxDQUFzRCxPQUFNQSxDQUFOLEVBQVE7QUFBQyxnQkFBTSxJQUFJdUQsS0FBSixDQUFVLHNCQUFWLENBQU47QUFBd0M7QUFBQyxPQUEvSDtBQUFnSVosTUFBQUEsS0FBSyxFQUFDLGVBQVMzQyxDQUFULEVBQVc7QUFBQyxlQUFPOEMsQ0FBQyxDQUFDSCxLQUFGLENBQVFhLFFBQVEsQ0FBQ0Msa0JBQWtCLENBQUN6RCxDQUFELENBQW5CLENBQWhCLENBQVA7QUFBZ0Q7QUFBbE0sS0FBanBFO0FBQUEsUUFBcTFFMEQsQ0FBQyxHQUFDOUMsQ0FBQyxDQUFDK0Msc0JBQUYsR0FBeUI3QyxDQUFDLENBQUNFLE1BQUYsQ0FBUztBQUFDNEMsTUFBQUEsS0FBSyxFQUFDLGlCQUFVO0FBQUMsYUFBS0MsS0FBTCxHQUFXLElBQUlwQyxDQUFDLENBQUNOLElBQU4sRUFBWCxFQUFzQixLQUFLMkMsV0FBTCxHQUFpQixDQUF2QztBQUF5QyxPQUEzRDtBQUE0REMsTUFBQUEsT0FBTyxFQUFDLGlCQUFTL0QsQ0FBVCxFQUFXO0FBQUMsb0JBQVUsT0FBT0EsQ0FBakIsS0FBcUJBLENBQUMsR0FBQ21ELENBQUMsQ0FBQ1IsS0FBRixDQUFRM0MsQ0FBUixDQUF2QixHQUFtQyxLQUFLNkQsS0FBTCxDQUFXN0IsTUFBWCxDQUFrQmhDLENBQWxCLENBQW5DLEVBQXdELEtBQUs4RCxXQUFMLElBQWtCOUQsQ0FBQyxDQUFDNEIsUUFBNUU7QUFBcUYsT0FBcks7QUFBc0tvQyxNQUFBQSxRQUFRLEVBQUMsa0JBQVMvRCxDQUFULEVBQVc7QUFBQyxZQUFJTSxDQUFDLEdBQUMsS0FBS3NELEtBQVg7QUFBQSxZQUFpQmxELENBQUMsR0FBQ0osQ0FBQyxDQUFDb0IsS0FBckI7QUFBQSxZQUEyQmYsQ0FBQyxHQUFDTCxDQUFDLENBQUNxQixRQUEvQjtBQUFBLFlBQXdDZCxDQUFDLEdBQUMsS0FBS21ELFNBQS9DO0FBQUEsWUFBeUQzQixDQUFDLEdBQUMsSUFBRXhCLENBQTdEO0FBQUEsWUFBK0RnQixDQUFDLEdBQUNsQixDQUFDLEdBQUMwQixDQUFuRTtBQUFxRVIsUUFBQUEsQ0FBQyxHQUFDN0IsQ0FBQyxHQUFDRCxDQUFDLENBQUNrQyxJQUFGLENBQU9KLENBQVAsQ0FBRCxHQUFXOUIsQ0FBQyxDQUFDa0UsR0FBRixDQUFNLENBQUMsSUFBRXBDLENBQUgsSUFBTSxLQUFLcUMsY0FBakIsRUFBZ0MsQ0FBaEMsQ0FBZDtBQUFpRCxZQUFJckIsQ0FBQyxHQUFDaEIsQ0FBQyxHQUFDaEIsQ0FBUjtBQUFBLFlBQVVxQyxDQUFDLEdBQUNuRCxDQUFDLENBQUNvRSxHQUFGLENBQU0sSUFBRXRCLENBQVIsRUFBVWxDLENBQVYsQ0FBWjs7QUFBeUIsWUFBR2tDLENBQUgsRUFBSztBQUFDLGVBQUksSUFBSVksQ0FBQyxHQUFDLENBQVYsRUFBWUEsQ0FBQyxHQUFDWixDQUFkLEVBQWdCWSxDQUFDLElBQUU1QyxDQUFuQjtBQUFxQixpQkFBS3VELGVBQUwsQ0FBcUIxRCxDQUFyQixFQUF1QitDLENBQXZCO0FBQXJCOztBQUErQyxjQUFJWSxDQUFDLEdBQUMzRCxDQUFDLENBQUM0RCxNQUFGLENBQVMsQ0FBVCxFQUFXekIsQ0FBWCxDQUFOO0FBQW9CdkMsVUFBQUEsQ0FBQyxDQUFDcUIsUUFBRixJQUFZdUIsQ0FBWjtBQUFjOztBQUFBLGVBQU8sSUFBSTFCLENBQUMsQ0FBQ04sSUFBTixDQUFXbUQsQ0FBWCxFQUFhbkIsQ0FBYixDQUFQO0FBQXVCLE9BQXhiO0FBQXliM0IsTUFBQUEsS0FBSyxFQUFDLGlCQUFVO0FBQUMsWUFBSXhCLENBQUMsR0FBQ2MsQ0FBQyxDQUFDVSxLQUFGLENBQVFXLElBQVIsQ0FBYSxJQUFiLENBQU47QUFBeUIsZUFBT25DLENBQUMsQ0FBQzZELEtBQUYsR0FBUSxLQUFLQSxLQUFMLENBQVdyQyxLQUFYLEVBQVIsRUFBMkJ4QixDQUFsQztBQUFvQyxPQUF2Z0I7QUFBd2dCbUUsTUFBQUEsY0FBYyxFQUFDO0FBQXZoQixLQUFULENBQWgzRTtBQUFBLFFBQW81RkcsQ0FBQyxJQUFFMUQsQ0FBQyxDQUFDNEQsTUFBRixHQUFTZCxDQUFDLENBQUMxQyxNQUFGLENBQVM7QUFBQ3lELE1BQUFBLEdBQUcsRUFBQzNELENBQUMsQ0FBQ0UsTUFBRixFQUFMO0FBQWdCRyxNQUFBQSxJQUFJLEVBQUMsY0FBU25CLENBQVQsRUFBVztBQUFDLGFBQUt5RSxHQUFMLEdBQVMsS0FBS0EsR0FBTCxDQUFTekQsTUFBVCxDQUFnQmhCLENBQWhCLENBQVQsRUFBNEIsS0FBSzRELEtBQUwsRUFBNUI7QUFBeUMsT0FBMUU7QUFBMkVBLE1BQUFBLEtBQUssRUFBQyxpQkFBVTtBQUFDRixRQUFBQSxDQUFDLENBQUNFLEtBQUYsQ0FBUXpCLElBQVIsQ0FBYSxJQUFiLEdBQW1CLEtBQUt1QyxRQUFMLEVBQW5CO0FBQW1DLE9BQS9IO0FBQWdJQyxNQUFBQSxNQUFNLEVBQUMsZ0JBQVMzRSxDQUFULEVBQVc7QUFBQyxlQUFPLEtBQUsrRCxPQUFMLENBQWEvRCxDQUFiLEdBQWdCLEtBQUtnRSxRQUFMLEVBQWhCLEVBQWdDLElBQXZDO0FBQTRDLE9BQS9MO0FBQWdNWSxNQUFBQSxRQUFRLEVBQUMsa0JBQVM1RSxDQUFULEVBQVc7QUFBQ0EsUUFBQUEsQ0FBQyxJQUFFLEtBQUsrRCxPQUFMLENBQWEvRCxDQUFiLENBQUg7O0FBQW1CLFlBQUlDLENBQUMsR0FBQyxLQUFLNEUsV0FBTCxFQUFOOztBQUF5QixlQUFPNUUsQ0FBUDtBQUFTLE9BQTFRO0FBQTJRZ0UsTUFBQUEsU0FBUyxFQUFDLEVBQXJSO0FBQXdSYSxNQUFBQSxhQUFhLEVBQUMsdUJBQVM5RSxDQUFULEVBQVc7QUFBQyxlQUFPLFVBQVNDLENBQVQsRUFBV00sQ0FBWCxFQUFhO0FBQUMsaUJBQU8sSUFBSVAsQ0FBQyxDQUFDbUIsSUFBTixDQUFXWixDQUFYLEVBQWNxRSxRQUFkLENBQXVCM0UsQ0FBdkIsQ0FBUDtBQUFpQyxTQUF0RDtBQUF1RCxPQUF6VztBQUEwVzhFLE1BQUFBLGlCQUFpQixFQUFDLDJCQUFTL0UsQ0FBVCxFQUFXO0FBQUMsZUFBTyxVQUFTQyxDQUFULEVBQVdNLENBQVgsRUFBYTtBQUFDLGlCQUFPLElBQUkrRCxDQUFDLENBQUNVLElBQUYsQ0FBTzdELElBQVgsQ0FBZ0JuQixDQUFoQixFQUFrQk8sQ0FBbEIsRUFBcUJxRSxRQUFyQixDQUE4QjNFLENBQTlCLENBQVA7QUFBd0MsU0FBN0Q7QUFBOEQ7QUFBdGMsS0FBVCxDQUFULEVBQTJkVSxDQUFDLENBQUNzRSxJQUFGLEdBQU8sRUFBcGUsQ0FBcjVGOztBQUE2M0csV0FBT3RFLENBQVA7QUFBUyxHQUFwNUcsQ0FBcTVHdUUsSUFBcjVHLENBQVQ7O0FBQW82RyxTQUFPLFlBQVU7QUFBQyxhQUFTakYsQ0FBVCxDQUFXRCxDQUFYLEVBQWFDLENBQWIsRUFBZU0sQ0FBZixFQUFpQjtBQUFDLFdBQUksSUFBSUksQ0FBQyxHQUFDLEVBQU4sRUFBU0csQ0FBQyxHQUFDLENBQVgsRUFBYVcsQ0FBQyxHQUFDLENBQW5CLEVBQXFCQSxDQUFDLEdBQUN4QixDQUF2QixFQUF5QndCLENBQUMsRUFBMUI7QUFBNkIsWUFBR0EsQ0FBQyxHQUFDLENBQUwsRUFBTztBQUFDLGNBQUlhLENBQUMsR0FBQy9CLENBQUMsQ0FBQ1AsQ0FBQyxDQUFDa0QsVUFBRixDQUFhekIsQ0FBQyxHQUFDLENBQWYsQ0FBRCxDQUFELElBQXNCQSxDQUFDLEdBQUMsQ0FBRixHQUFJLENBQWhDO0FBQUEsY0FBa0NLLENBQUMsR0FBQ3ZCLENBQUMsQ0FBQ1AsQ0FBQyxDQUFDa0QsVUFBRixDQUFhekIsQ0FBYixDQUFELENBQUQsS0FBcUIsSUFBRUEsQ0FBQyxHQUFDLENBQUYsR0FBSSxDQUEvRDtBQUFpRWQsVUFBQUEsQ0FBQyxDQUFDRyxDQUFDLEtBQUcsQ0FBTCxDQUFELElBQVUsQ0FBQ3dCLENBQUMsR0FBQ1IsQ0FBSCxLQUFPLEtBQUdoQixDQUFDLEdBQUMsQ0FBRixHQUFJLENBQXhCLEVBQTBCQSxDQUFDLEVBQTNCO0FBQThCO0FBQXBJOztBQUFvSSxhQUFPRixDQUFDLENBQUNILE1BQUYsQ0FBU0UsQ0FBVCxFQUFXRyxDQUFYLENBQVA7QUFBcUI7O0FBQUEsUUFBSVAsQ0FBQyxHQUFDUCxDQUFOO0FBQUEsUUFBUVcsQ0FBQyxHQUFDSixDQUFDLENBQUNNLEdBQVo7QUFBQSxRQUFnQkQsQ0FBQyxHQUFDRCxDQUFDLENBQUNlLFNBQXBCO0FBQUEsUUFBOEJaLENBQUMsR0FBQ1AsQ0FBQyxDQUFDaUMsR0FBbEM7QUFBc0MxQixJQUFBQSxDQUFDLENBQUNxRSxNQUFGLEdBQVM7QUFBQ3BELE1BQUFBLFNBQVMsRUFBQyxtQkFBUy9CLENBQVQsRUFBVztBQUFDLFlBQUlDLENBQUMsR0FBQ0QsQ0FBQyxDQUFDMkIsS0FBUjtBQUFBLFlBQWNwQixDQUFDLEdBQUNQLENBQUMsQ0FBQzRCLFFBQWxCO0FBQUEsWUFBMkJqQixDQUFDLEdBQUMsS0FBS3lFLElBQWxDO0FBQXVDcEYsUUFBQUEsQ0FBQyxDQUFDaUMsS0FBRjs7QUFBVSxhQUFJLElBQUlyQixDQUFDLEdBQUMsRUFBTixFQUFTRSxDQUFDLEdBQUMsQ0FBZixFQUFpQkEsQ0FBQyxHQUFDUCxDQUFuQixFQUFxQk8sQ0FBQyxJQUFFLENBQXhCO0FBQTBCLGVBQUksSUFBSVcsQ0FBQyxHQUFDeEIsQ0FBQyxDQUFDYSxDQUFDLEtBQUcsQ0FBTCxDQUFELEtBQVcsS0FBR0EsQ0FBQyxHQUFDLENBQUYsR0FBSSxDQUFsQixHQUFvQixHQUExQixFQUE4QndCLENBQUMsR0FBQ3JDLENBQUMsQ0FBQ2EsQ0FBQyxHQUFDLENBQUYsS0FBTSxDQUFQLENBQUQsS0FBYSxLQUFHLENBQUNBLENBQUMsR0FBQyxDQUFILElBQU0sQ0FBTixHQUFRLENBQXhCLEdBQTBCLEdBQTFELEVBQThEZ0IsQ0FBQyxHQUFDN0IsQ0FBQyxDQUFDYSxDQUFDLEdBQUMsQ0FBRixLQUFNLENBQVAsQ0FBRCxLQUFhLEtBQUcsQ0FBQ0EsQ0FBQyxHQUFDLENBQUgsSUFBTSxDQUFOLEdBQVEsQ0FBeEIsR0FBMEIsR0FBMUYsRUFBOEZnQyxDQUFDLEdBQUNyQixDQUFDLElBQUUsRUFBSCxHQUFNYSxDQUFDLElBQUUsQ0FBVCxHQUFXUixDQUEzRyxFQUE2R3FCLENBQUMsR0FBQyxDQUFuSCxFQUFxSEEsQ0FBQyxHQUFDLENBQUYsSUFBS3JDLENBQUMsR0FBQyxNQUFJcUMsQ0FBTixHQUFRNUMsQ0FBbEksRUFBb0k0QyxDQUFDLEVBQXJJO0FBQXdJdkMsWUFBQUEsQ0FBQyxDQUFDMkIsSUFBRixDQUFPNUIsQ0FBQyxDQUFDMEUsTUFBRixDQUFTdkMsQ0FBQyxLQUFHLEtBQUcsSUFBRUssQ0FBTCxDQUFKLEdBQVksRUFBckIsQ0FBUDtBQUF4STtBQUExQjs7QUFBbU0sWUFBSU8sQ0FBQyxHQUFDL0MsQ0FBQyxDQUFDMEUsTUFBRixDQUFTLEVBQVQsQ0FBTjtBQUFtQixZQUFHM0IsQ0FBSCxFQUFLLE9BQUs5QyxDQUFDLENBQUNpQixNQUFGLEdBQVMsQ0FBZDtBQUFpQmpCLFVBQUFBLENBQUMsQ0FBQzJCLElBQUYsQ0FBT21CLENBQVA7QUFBakI7QUFBMkIsZUFBTzlDLENBQUMsQ0FBQzhCLElBQUYsQ0FBTyxFQUFQLENBQVA7QUFBa0IsT0FBaFY7QUFBaVZDLE1BQUFBLEtBQUssRUFBQyxlQUFTM0MsQ0FBVCxFQUFXO0FBQUMsWUFBSU8sQ0FBQyxHQUFDUCxDQUFDLENBQUM2QixNQUFSO0FBQUEsWUFBZWxCLENBQUMsR0FBQyxLQUFLeUUsSUFBdEI7QUFBQSxZQUEyQnhFLENBQUMsR0FBQyxLQUFLMEUsV0FBbEM7O0FBQThDLFlBQUcsQ0FBQzFFLENBQUosRUFBTTtBQUFDQSxVQUFBQSxDQUFDLEdBQUMsS0FBSzBFLFdBQUwsR0FBaUIsRUFBbkI7O0FBQXNCLGVBQUksSUFBSXhFLENBQUMsR0FBQyxDQUFWLEVBQVlBLENBQUMsR0FBQ0gsQ0FBQyxDQUFDa0IsTUFBaEIsRUFBdUJmLENBQUMsRUFBeEI7QUFBMkJGLFlBQUFBLENBQUMsQ0FBQ0QsQ0FBQyxDQUFDdUMsVUFBRixDQUFhcEMsQ0FBYixDQUFELENBQUQsR0FBbUJBLENBQW5CO0FBQTNCO0FBQWdEOztBQUFBLFlBQUlXLENBQUMsR0FBQ2QsQ0FBQyxDQUFDMEUsTUFBRixDQUFTLEVBQVQsQ0FBTjs7QUFBbUIsWUFBRzVELENBQUgsRUFBSztBQUFDLGNBQUlhLENBQUMsR0FBQ3RDLENBQUMsQ0FBQ3VGLE9BQUYsQ0FBVTlELENBQVYsQ0FBTjtBQUFtQmEsVUFBQUEsQ0FBQyxLQUFHLENBQUMsQ0FBTCxLQUFTL0IsQ0FBQyxHQUFDK0IsQ0FBWDtBQUFjOztBQUFBLGVBQU9yQyxDQUFDLENBQUNELENBQUQsRUFBR08sQ0FBSCxFQUFLSyxDQUFMLENBQVI7QUFBZ0IsT0FBeGlCO0FBQXlpQndFLE1BQUFBLElBQUksRUFBQztBQUE5aUIsS0FBVDtBQUE0bkIsR0FBeDFCLElBQTIxQixVQUFTbkYsQ0FBVCxFQUFXO0FBQUMsYUFBU00sQ0FBVCxDQUFXUCxDQUFYLEVBQWFDLENBQWIsRUFBZU0sQ0FBZixFQUFpQkksQ0FBakIsRUFBbUJDLENBQW5CLEVBQXFCRSxDQUFyQixFQUF1QlcsQ0FBdkIsRUFBeUI7QUFBQyxVQUFJYSxDQUFDLEdBQUN0QyxDQUFDLElBQUVDLENBQUMsR0FBQ00sQ0FBRixHQUFJLENBQUNOLENBQUQsR0FBR1UsQ0FBVCxDQUFELEdBQWFDLENBQWIsR0FBZWEsQ0FBckI7QUFBdUIsYUFBTSxDQUFDYSxDQUFDLElBQUV4QixDQUFILEdBQUt3QixDQUFDLEtBQUcsS0FBR3hCLENBQWIsSUFBZ0JiLENBQXRCO0FBQXdCOztBQUFBLGFBQVNVLENBQVQsQ0FBV1gsQ0FBWCxFQUFhQyxDQUFiLEVBQWVNLENBQWYsRUFBaUJJLENBQWpCLEVBQW1CQyxDQUFuQixFQUFxQkUsQ0FBckIsRUFBdUJXLENBQXZCLEVBQXlCO0FBQUMsVUFBSWEsQ0FBQyxHQUFDdEMsQ0FBQyxJQUFFQyxDQUFDLEdBQUNVLENBQUYsR0FBSUosQ0FBQyxHQUFDLENBQUNJLENBQVQsQ0FBRCxHQUFhQyxDQUFiLEdBQWVhLENBQXJCO0FBQXVCLGFBQU0sQ0FBQ2EsQ0FBQyxJQUFFeEIsQ0FBSCxHQUFLd0IsQ0FBQyxLQUFHLEtBQUd4QixDQUFiLElBQWdCYixDQUF0QjtBQUF3Qjs7QUFBQSxhQUFTVyxDQUFULENBQVdaLENBQVgsRUFBYUMsQ0FBYixFQUFlTSxDQUFmLEVBQWlCSSxDQUFqQixFQUFtQkMsQ0FBbkIsRUFBcUJFLENBQXJCLEVBQXVCVyxDQUF2QixFQUF5QjtBQUFDLFVBQUlhLENBQUMsR0FBQ3RDLENBQUMsSUFBRUMsQ0FBQyxHQUFDTSxDQUFGLEdBQUlJLENBQU4sQ0FBRCxHQUFVQyxDQUFWLEdBQVlhLENBQWxCO0FBQW9CLGFBQU0sQ0FBQ2EsQ0FBQyxJQUFFeEIsQ0FBSCxHQUFLd0IsQ0FBQyxLQUFHLEtBQUd4QixDQUFiLElBQWdCYixDQUF0QjtBQUF3Qjs7QUFBQSxhQUFTYSxDQUFULENBQVdkLENBQVgsRUFBYUMsQ0FBYixFQUFlTSxDQUFmLEVBQWlCSSxDQUFqQixFQUFtQkMsQ0FBbkIsRUFBcUJFLENBQXJCLEVBQXVCVyxDQUF2QixFQUF5QjtBQUFDLFVBQUlhLENBQUMsR0FBQ3RDLENBQUMsSUFBRU8sQ0FBQyxJQUFFTixDQUFDLEdBQUMsQ0FBQ1UsQ0FBTCxDQUFILENBQUQsR0FBYUMsQ0FBYixHQUFlYSxDQUFyQjtBQUF1QixhQUFNLENBQUNhLENBQUMsSUFBRXhCLENBQUgsR0FBS3dCLENBQUMsS0FBRyxLQUFHeEIsQ0FBYixJQUFnQmIsQ0FBdEI7QUFBd0I7O0FBQUEsUUFBSXdCLENBQUMsR0FBQ3pCLENBQU47QUFBQSxRQUFRc0MsQ0FBQyxHQUFDYixDQUFDLENBQUNaLEdBQVo7QUFBQSxRQUFnQmlCLENBQUMsR0FBQ1EsQ0FBQyxDQUFDWixTQUFwQjtBQUFBLFFBQThCb0IsQ0FBQyxHQUFDUixDQUFDLENBQUNrQyxNQUFsQztBQUFBLFFBQXlDckIsQ0FBQyxHQUFDMUIsQ0FBQyxDQUFDd0QsSUFBN0M7QUFBQSxRQUFrRHZCLENBQUMsR0FBQyxFQUFwRDtBQUF1RCxLQUFDLFlBQVU7QUFBQyxXQUFJLElBQUkxRCxDQUFDLEdBQUMsQ0FBVixFQUFZQSxDQUFDLEdBQUMsRUFBZCxFQUFpQkEsQ0FBQyxFQUFsQjtBQUFxQjBELFFBQUFBLENBQUMsQ0FBQzFELENBQUQsQ0FBRCxHQUFLLGFBQVdDLENBQUMsQ0FBQ3VGLEdBQUYsQ0FBTXZGLENBQUMsQ0FBQ3dGLEdBQUYsQ0FBTXpGLENBQUMsR0FBQyxDQUFSLENBQU4sQ0FBWCxHQUE2QixDQUFsQztBQUFyQjtBQUF5RCxLQUFwRSxFQUFEO0FBQXdFLFFBQUlzRSxDQUFDLEdBQUNuQixDQUFDLENBQUN1QyxHQUFGLEdBQU01QyxDQUFDLENBQUM5QixNQUFGLENBQVM7QUFBQzBELE1BQUFBLFFBQVEsRUFBQyxvQkFBVTtBQUFDLGFBQUtpQixLQUFMLEdBQVcsSUFBSTdELENBQUMsQ0FBQ1gsSUFBTixDQUFXLENBQUMsVUFBRCxFQUFZLFVBQVosRUFBdUIsVUFBdkIsRUFBa0MsU0FBbEMsQ0FBWCxDQUFYO0FBQW9FLE9BQXpGO0FBQTBGa0QsTUFBQUEsZUFBZSxFQUFDLHlCQUFTckUsQ0FBVCxFQUFXQyxDQUFYLEVBQWE7QUFBQyxhQUFJLElBQUl3QixDQUFDLEdBQUMsQ0FBVixFQUFZQSxDQUFDLEdBQUMsRUFBZCxFQUFpQkEsQ0FBQyxFQUFsQixFQUFxQjtBQUFDLGNBQUlhLENBQUMsR0FBQ3JDLENBQUMsR0FBQ3dCLENBQVI7QUFBQSxjQUFVSyxDQUFDLEdBQUM5QixDQUFDLENBQUNzQyxDQUFELENBQWI7QUFBaUJ0QyxVQUFBQSxDQUFDLENBQUNzQyxDQUFELENBQUQsR0FBSyxZQUFVUixDQUFDLElBQUUsQ0FBSCxHQUFLQSxDQUFDLEtBQUcsRUFBbkIsSUFBdUIsY0FBWUEsQ0FBQyxJQUFFLEVBQUgsR0FBTUEsQ0FBQyxLQUFHLENBQXRCLENBQTVCO0FBQXFEOztBQUFBLFlBQUlnQixDQUFDLEdBQUMsS0FBSzZDLEtBQUwsQ0FBV2hFLEtBQWpCO0FBQUEsWUFBdUJ3QixDQUFDLEdBQUNuRCxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQTFCO0FBQUEsWUFBZ0NxRSxDQUFDLEdBQUN0RSxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQW5DO0FBQUEsWUFBeUMyRixDQUFDLEdBQUM1RixDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQTVDO0FBQUEsWUFBa0Q0RixDQUFDLEdBQUM3RixDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQXJEO0FBQUEsWUFBMkQ2RixDQUFDLEdBQUM5RixDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQTlEO0FBQUEsWUFBb0U4RixDQUFDLEdBQUMvRixDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQXZFO0FBQUEsWUFBNkUrRixDQUFDLEdBQUNoRyxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQWhGO0FBQUEsWUFBc0ZnRyxDQUFDLEdBQUNqRyxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQXpGO0FBQUEsWUFBK0ZpRyxDQUFDLEdBQUNsRyxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQWxHO0FBQUEsWUFBd0drRyxDQUFDLEdBQUNuRyxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFILENBQTNHO0FBQUEsWUFBaUhtRyxDQUFDLEdBQUNwRyxDQUFDLENBQUNDLENBQUMsR0FBQyxFQUFILENBQXBIO0FBQUEsWUFBMkhvRyxDQUFDLEdBQUNyRyxDQUFDLENBQUNDLENBQUMsR0FBQyxFQUFILENBQTlIO0FBQUEsWUFBcUlxRyxDQUFDLEdBQUN0RyxDQUFDLENBQUNDLENBQUMsR0FBQyxFQUFILENBQXhJO0FBQUEsWUFBK0lzRyxDQUFDLEdBQUN2RyxDQUFDLENBQUNDLENBQUMsR0FBQyxFQUFILENBQWxKO0FBQUEsWUFBeUp1RyxDQUFDLEdBQUN4RyxDQUFDLENBQUNDLENBQUMsR0FBQyxFQUFILENBQTVKO0FBQUEsWUFBbUt3RyxDQUFDLEdBQUN6RyxDQUFDLENBQUNDLENBQUMsR0FBQyxFQUFILENBQXRLO0FBQUEsWUFBNkt5RyxDQUFDLEdBQUM1RCxDQUFDLENBQUMsQ0FBRCxDQUFoTDtBQUFBLFlBQW9MNkQsQ0FBQyxHQUFDN0QsQ0FBQyxDQUFDLENBQUQsQ0FBdkw7QUFBQSxZQUEyTDhELENBQUMsR0FBQzlELENBQUMsQ0FBQyxDQUFELENBQTlMO0FBQUEsWUFBa00rRCxDQUFDLEdBQUMvRCxDQUFDLENBQUMsQ0FBRCxDQUFyTTtBQUF5TTRELFFBQUFBLENBQUMsR0FBQ25HLENBQUMsQ0FBQ21HLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLEVBQU9DLENBQVAsRUFBUzFELENBQVQsRUFBVyxDQUFYLEVBQWFPLENBQUMsQ0FBQyxDQUFELENBQWQsQ0FBSCxFQUFzQm1ELENBQUMsR0FBQ3RHLENBQUMsQ0FBQ3NHLENBQUQsRUFBR0gsQ0FBSCxFQUFLQyxDQUFMLEVBQU9DLENBQVAsRUFBU3RDLENBQVQsRUFBVyxFQUFYLEVBQWNaLENBQUMsQ0FBQyxDQUFELENBQWYsQ0FBekIsRUFBNkNrRCxDQUFDLEdBQUNyRyxDQUFDLENBQUNxRyxDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNmLENBQVQsRUFBVyxFQUFYLEVBQWNsQyxDQUFDLENBQUMsQ0FBRCxDQUFmLENBQWhELEVBQW9FaUQsQ0FBQyxHQUFDcEcsQ0FBQyxDQUFDb0csQ0FBRCxFQUFHQyxDQUFILEVBQUtDLENBQUwsRUFBT0gsQ0FBUCxFQUFTYixDQUFULEVBQVcsRUFBWCxFQUFjbkMsQ0FBQyxDQUFDLENBQUQsQ0FBZixDQUF2RSxFQUEyRmdELENBQUMsR0FBQ25HLENBQUMsQ0FBQ21HLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLEVBQU9DLENBQVAsRUFBU2YsQ0FBVCxFQUFXLENBQVgsRUFBYXBDLENBQUMsQ0FBQyxDQUFELENBQWQsQ0FBOUYsRUFBaUhtRCxDQUFDLEdBQUN0RyxDQUFDLENBQUNzRyxDQUFELEVBQUdILENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNiLENBQVQsRUFBVyxFQUFYLEVBQWNyQyxDQUFDLENBQUMsQ0FBRCxDQUFmLENBQXBILEVBQXdJa0QsQ0FBQyxHQUFDckcsQ0FBQyxDQUFDcUcsQ0FBRCxFQUFHQyxDQUFILEVBQUtILENBQUwsRUFBT0MsQ0FBUCxFQUFTWCxDQUFULEVBQVcsRUFBWCxFQUFjdEMsQ0FBQyxDQUFDLENBQUQsQ0FBZixDQUEzSSxFQUErSmlELENBQUMsR0FBQ3BHLENBQUMsQ0FBQ29HLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLEVBQU9ILENBQVAsRUFBU1QsQ0FBVCxFQUFXLEVBQVgsRUFBY3ZDLENBQUMsQ0FBQyxDQUFELENBQWYsQ0FBbEssRUFBc0xnRCxDQUFDLEdBQUNuRyxDQUFDLENBQUNtRyxDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNYLENBQVQsRUFBVyxDQUFYLEVBQWF4QyxDQUFDLENBQUMsQ0FBRCxDQUFkLENBQXpMLEVBQTRNbUQsQ0FBQyxHQUFDdEcsQ0FBQyxDQUFDc0csQ0FBRCxFQUFHSCxDQUFILEVBQUtDLENBQUwsRUFBT0MsQ0FBUCxFQUFTVCxDQUFULEVBQVcsRUFBWCxFQUFjekMsQ0FBQyxDQUFDLENBQUQsQ0FBZixDQUEvTSxFQUFtT2tELENBQUMsR0FBQ3JHLENBQUMsQ0FBQ3FHLENBQUQsRUFBR0MsQ0FBSCxFQUFLSCxDQUFMLEVBQU9DLENBQVAsRUFBU1AsQ0FBVCxFQUFXLEVBQVgsRUFBYzFDLENBQUMsQ0FBQyxFQUFELENBQWYsQ0FBdE8sRUFBMlBpRCxDQUFDLEdBQUNwRyxDQUFDLENBQUNvRyxDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPSCxDQUFQLEVBQVNMLENBQVQsRUFBVyxFQUFYLEVBQWMzQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQTlQLEVBQW1SZ0QsQ0FBQyxHQUFDbkcsQ0FBQyxDQUFDbUcsQ0FBRCxFQUFHQyxDQUFILEVBQUtDLENBQUwsRUFBT0MsQ0FBUCxFQUFTUCxDQUFULEVBQVcsQ0FBWCxFQUFhNUMsQ0FBQyxDQUFDLEVBQUQsQ0FBZCxDQUF0UixFQUEwU21ELENBQUMsR0FBQ3RHLENBQUMsQ0FBQ3NHLENBQUQsRUFBR0gsQ0FBSCxFQUFLQyxDQUFMLEVBQU9DLENBQVAsRUFBU0wsQ0FBVCxFQUFXLEVBQVgsRUFBYzdDLENBQUMsQ0FBQyxFQUFELENBQWYsQ0FBN1MsRUFBa1VrRCxDQUFDLEdBQUNyRyxDQUFDLENBQUNxRyxDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNILENBQVQsRUFBVyxFQUFYLEVBQWM5QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQXJVLEVBQTBWaUQsQ0FBQyxHQUFDcEcsQ0FBQyxDQUFDb0csQ0FBRCxFQUFHQyxDQUFILEVBQUtDLENBQUwsRUFBT0gsQ0FBUCxFQUFTRCxDQUFULEVBQVcsRUFBWCxFQUFjL0MsQ0FBQyxDQUFDLEVBQUQsQ0FBZixDQUE3VixFQUFrWGdELENBQUMsR0FBQy9GLENBQUMsQ0FBQytGLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLEVBQU9DLENBQVAsRUFBU3ZDLENBQVQsRUFBVyxDQUFYLEVBQWFaLENBQUMsQ0FBQyxFQUFELENBQWQsQ0FBclgsRUFBeVltRCxDQUFDLEdBQUNsRyxDQUFDLENBQUNrRyxDQUFELEVBQUdILENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNaLENBQVQsRUFBVyxDQUFYLEVBQWF0QyxDQUFDLENBQUMsRUFBRCxDQUFkLENBQTVZLEVBQWdha0QsQ0FBQyxHQUFDakcsQ0FBQyxDQUFDaUcsQ0FBRCxFQUFHQyxDQUFILEVBQUtILENBQUwsRUFBT0MsQ0FBUCxFQUFTTixDQUFULEVBQVcsRUFBWCxFQUFjM0MsQ0FBQyxDQUFDLEVBQUQsQ0FBZixDQUFuYSxFQUF3YmlELENBQUMsR0FBQ2hHLENBQUMsQ0FBQ2dHLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLEVBQU9ILENBQVAsRUFBU3ZELENBQVQsRUFBVyxFQUFYLEVBQWNPLENBQUMsQ0FBQyxFQUFELENBQWYsQ0FBM2IsRUFBZ2RnRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNkLENBQVQsRUFBVyxDQUFYLEVBQWFyQyxDQUFDLENBQUMsRUFBRCxDQUFkLENBQW5kLEVBQXVlbUQsQ0FBQyxHQUFDbEcsQ0FBQyxDQUFDa0csQ0FBRCxFQUFHSCxDQUFILEVBQUtDLENBQUwsRUFBT0MsQ0FBUCxFQUFTUixDQUFULEVBQVcsQ0FBWCxFQUFhMUMsQ0FBQyxDQUFDLEVBQUQsQ0FBZCxDQUExZSxFQUE4ZmtELENBQUMsR0FBQ2pHLENBQUMsQ0FBQ2lHLENBQUQsRUFBR0MsQ0FBSCxFQUFLSCxDQUFMLEVBQU9DLENBQVAsRUFBU0YsQ0FBVCxFQUFXLEVBQVgsRUFBYy9DLENBQUMsQ0FBQyxFQUFELENBQWYsQ0FBamdCLEVBQXNoQmlELENBQUMsR0FBQ2hHLENBQUMsQ0FBQ2dHLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLEVBQU9ILENBQVAsRUFBU1osQ0FBVCxFQUFXLEVBQVgsRUFBY3BDLENBQUMsQ0FBQyxFQUFELENBQWYsQ0FBemhCLEVBQThpQmdELENBQUMsR0FBQy9GLENBQUMsQ0FBQytGLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLEVBQU9DLENBQVAsRUFBU1YsQ0FBVCxFQUFXLENBQVgsRUFBYXpDLENBQUMsQ0FBQyxFQUFELENBQWQsQ0FBampCLEVBQXFrQm1ELENBQUMsR0FBQ2xHLENBQUMsQ0FBQ2tHLENBQUQsRUFBR0gsQ0FBSCxFQUFLQyxDQUFMLEVBQU9DLENBQVAsRUFBU0osQ0FBVCxFQUFXLENBQVgsRUFBYTlDLENBQUMsQ0FBQyxFQUFELENBQWQsQ0FBeGtCLEVBQTRsQmtELENBQUMsR0FBQ2pHLENBQUMsQ0FBQ2lHLENBQUQsRUFBR0MsQ0FBSCxFQUFLSCxDQUFMLEVBQU9DLENBQVAsRUFBU2QsQ0FBVCxFQUFXLEVBQVgsRUFBY25DLENBQUMsQ0FBQyxFQUFELENBQWYsQ0FBL2xCLEVBQW9uQmlELENBQUMsR0FBQ2hHLENBQUMsQ0FBQ2dHLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLEVBQU9ILENBQVAsRUFBU1IsQ0FBVCxFQUFXLEVBQVgsRUFBY3hDLENBQUMsQ0FBQyxFQUFELENBQWYsQ0FBdm5CLEVBQTRvQmdELENBQUMsR0FBQy9GLENBQUMsQ0FBQytGLENBQUQsRUFBR0MsQ0FBSCxFQUFLQyxDQUFMLEVBQU9DLENBQVAsRUFBU04sQ0FBVCxFQUFXLENBQVgsRUFBYTdDLENBQUMsQ0FBQyxFQUFELENBQWQsQ0FBL29CLEVBQW1xQm1ELENBQUMsR0FBQ2xHLENBQUMsQ0FBQ2tHLENBQUQsRUFBR0gsQ0FBSCxFQUFLQyxDQUFMLEVBQU9DLENBQVAsRUFBU2hCLENBQVQsRUFBVyxDQUFYLEVBQWFsQyxDQUFDLENBQUMsRUFBRCxDQUFkLENBQXRxQixFQUEwckJrRCxDQUFDLEdBQUNqRyxDQUFDLENBQUNpRyxDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNWLENBQVQsRUFBVyxFQUFYLEVBQWN2QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQTdyQixFQUFrdEJpRCxDQUFDLEdBQUNoRyxDQUFDLENBQUNnRyxDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPSCxDQUFQLEVBQVNKLENBQVQsRUFBVyxFQUFYLEVBQWM1QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQXJ0QixFQUEwdUJnRCxDQUFDLEdBQUM5RixDQUFDLENBQUM4RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNkLENBQVQsRUFBVyxDQUFYLEVBQWFyQyxDQUFDLENBQUMsRUFBRCxDQUFkLENBQTd1QixFQUFpd0JtRCxDQUFDLEdBQUNqRyxDQUFDLENBQUNpRyxDQUFELEVBQUdILENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNWLENBQVQsRUFBVyxFQUFYLEVBQWN4QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQXB3QixFQUF5eEJrRCxDQUFDLEdBQUNoRyxDQUFDLENBQUNnRyxDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNOLENBQVQsRUFBVyxFQUFYLEVBQWMzQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQTV4QixFQUFpekJpRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPSCxDQUFQLEVBQVNGLENBQVQsRUFBVyxFQUFYLEVBQWM5QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQXB6QixFQUF5MEJnRCxDQUFDLEdBQUM5RixDQUFDLENBQUM4RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVN2QyxDQUFULEVBQVcsQ0FBWCxFQUFhWixDQUFDLENBQUMsRUFBRCxDQUFkLENBQTUwQixFQUFnMkJtRCxDQUFDLEdBQUNqRyxDQUFDLENBQUNpRyxDQUFELEVBQUdILENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNkLENBQVQsRUFBVyxFQUFYLEVBQWNwQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQW4yQixFQUF3M0JrRCxDQUFDLEdBQUNoRyxDQUFDLENBQUNnRyxDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNWLENBQVQsRUFBVyxFQUFYLEVBQWN2QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQTMzQixFQUFnNUJpRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPSCxDQUFQLEVBQVNOLENBQVQsRUFBVyxFQUFYLEVBQWMxQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQW41QixFQUF3NkJnRCxDQUFDLEdBQUM5RixDQUFDLENBQUM4RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNOLENBQVQsRUFBVyxDQUFYLEVBQWE3QyxDQUFDLENBQUMsRUFBRCxDQUFkLENBQTM2QixFQUErN0JtRCxDQUFDLEdBQUNqRyxDQUFDLENBQUNpRyxDQUFELEVBQUdILENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVN6RCxDQUFULEVBQVcsRUFBWCxFQUFjTyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQWw4QixFQUF1OUJrRCxDQUFDLEdBQUNoRyxDQUFDLENBQUNnRyxDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNkLENBQVQsRUFBVyxFQUFYLEVBQWNuQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQTE5QixFQUErK0JpRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPSCxDQUFQLEVBQVNWLENBQVQsRUFBVyxFQUFYLEVBQWN0QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQWwvQixFQUF1Z0NnRCxDQUFDLEdBQUM5RixDQUFDLENBQUM4RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNWLENBQVQsRUFBVyxDQUFYLEVBQWF6QyxDQUFDLENBQUMsRUFBRCxDQUFkLENBQTFnQyxFQUE4aENtRCxDQUFDLEdBQUNqRyxDQUFDLENBQUNpRyxDQUFELEVBQUdILENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNOLENBQVQsRUFBVyxFQUFYLEVBQWM1QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQWppQyxFQUFzakNrRCxDQUFDLEdBQUNoRyxDQUFDLENBQUNnRyxDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNGLENBQVQsRUFBVyxFQUFYLEVBQWMvQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQXpqQyxFQUE4a0NpRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPSCxDQUFQLEVBQVNkLENBQVQsRUFBVyxFQUFYLEVBQWNsQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQWpsQyxFQUFzbUNnRCxDQUFDLEdBQUM1RixDQUFDLENBQUM0RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVMxRCxDQUFULEVBQVcsQ0FBWCxFQUFhTyxDQUFDLENBQUMsRUFBRCxDQUFkLENBQXptQyxFQUE2bkNtRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFELEVBQUdILENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNYLENBQVQsRUFBVyxFQUFYLEVBQWN2QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQWhvQyxFQUFxcENrRCxDQUFDLEdBQUM5RixDQUFDLENBQUM4RixDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNILENBQVQsRUFBVyxFQUFYLEVBQWM5QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQXhwQyxFQUE2cUNpRCxDQUFDLEdBQUM3RixDQUFDLENBQUM2RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPSCxDQUFQLEVBQVNYLENBQVQsRUFBVyxFQUFYLEVBQWNyQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQWhyQyxFQUFxc0NnRCxDQUFDLEdBQUM1RixDQUFDLENBQUM0RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNQLENBQVQsRUFBVyxDQUFYLEVBQWE1QyxDQUFDLENBQUMsRUFBRCxDQUFkLENBQXhzQyxFQUE0dENtRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFELEVBQUdILENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNmLENBQVQsRUFBVyxFQUFYLEVBQWNuQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQS90QyxFQUFvdkNrRCxDQUFDLEdBQUM5RixDQUFDLENBQUM4RixDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNQLENBQVQsRUFBVyxFQUFYLEVBQWMxQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQXZ2QyxFQUE0d0NpRCxDQUFDLEdBQUM3RixDQUFDLENBQUM2RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPSCxDQUFQLEVBQVNwQyxDQUFULEVBQVcsRUFBWCxFQUFjWixDQUFDLENBQUMsRUFBRCxDQUFmLENBQS93QyxFQUFveUNnRCxDQUFDLEdBQUM1RixDQUFDLENBQUM0RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNYLENBQVQsRUFBVyxDQUFYLEVBQWF4QyxDQUFDLENBQUMsRUFBRCxDQUFkLENBQXZ5QyxFQUEyekNtRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFELEVBQUdILENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNILENBQVQsRUFBVyxFQUFYLEVBQWMvQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQTl6QyxFQUFtMUNrRCxDQUFDLEdBQUM5RixDQUFDLENBQUM4RixDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNYLENBQVQsRUFBVyxFQUFYLEVBQWN0QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQXQxQyxFQUEyMkNpRCxDQUFDLEdBQUM3RixDQUFDLENBQUM2RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPSCxDQUFQLEVBQVNILENBQVQsRUFBVyxFQUFYLEVBQWM3QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQTkyQyxFQUFtNENnRCxDQUFDLEdBQUM1RixDQUFDLENBQUM0RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNmLENBQVQsRUFBVyxDQUFYLEVBQWFwQyxDQUFDLENBQUMsRUFBRCxDQUFkLENBQXQ0QyxFQUEwNUNtRCxDQUFDLEdBQUMvRixDQUFDLENBQUMrRixDQUFELEVBQUdILENBQUgsRUFBS0MsQ0FBTCxFQUFPQyxDQUFQLEVBQVNQLENBQVQsRUFBVyxFQUFYLEVBQWMzQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQTc1QyxFQUFrN0NrRCxDQUFDLEdBQUM5RixDQUFDLENBQUM4RixDQUFELEVBQUdDLENBQUgsRUFBS0gsQ0FBTCxFQUFPQyxDQUFQLEVBQVNmLENBQVQsRUFBVyxFQUFYLEVBQWNsQyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQXI3QyxFQUEwOENpRCxDQUFDLEdBQUM3RixDQUFDLENBQUM2RixDQUFELEVBQUdDLENBQUgsRUFBS0MsQ0FBTCxFQUFPSCxDQUFQLEVBQVNQLENBQVQsRUFBVyxFQUFYLEVBQWN6QyxDQUFDLENBQUMsRUFBRCxDQUFmLENBQTc4QyxFQUFrK0NaLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLNEQsQ0FBTCxHQUFPLENBQTkrQyxFQUFnL0M1RCxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBSzZELENBQUwsR0FBTyxDQUE1L0MsRUFBOC9DN0QsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUs4RCxDQUFMLEdBQU8sQ0FBMWdELEVBQTRnRDlELENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLK0QsQ0FBTCxHQUFPLENBQXhoRDtBQUEwaEQsT0FBdjdEO0FBQXc3RGhDLE1BQUFBLFdBQVcsRUFBQyx1QkFBVTtBQUFDLFlBQUk3RSxDQUFDLEdBQUMsS0FBSzZELEtBQVg7QUFBQSxZQUFpQnRELENBQUMsR0FBQ1AsQ0FBQyxDQUFDMkIsS0FBckI7QUFBQSxZQUEyQmhCLENBQUMsR0FBQyxJQUFFLEtBQUttRCxXQUFwQztBQUFBLFlBQWdEbEQsQ0FBQyxHQUFDLElBQUVaLENBQUMsQ0FBQzRCLFFBQXREO0FBQStEckIsUUFBQUEsQ0FBQyxDQUFDSyxDQUFDLEtBQUcsQ0FBTCxDQUFELElBQVUsT0FBSyxLQUFHQSxDQUFDLEdBQUMsRUFBcEI7QUFBdUIsWUFBSUUsQ0FBQyxHQUFDYixDQUFDLENBQUM2RyxLQUFGLENBQVFuRyxDQUFDLEdBQUMsVUFBVixDQUFOO0FBQUEsWUFBNEJjLENBQUMsR0FBQ2QsQ0FBOUI7QUFBZ0NKLFFBQUFBLENBQUMsQ0FBQyxDQUFDSyxDQUFDLEdBQUMsRUFBRixLQUFPLENBQVAsSUFBVSxDQUFYLElBQWMsRUFBZixDQUFELEdBQW9CLFlBQVVFLENBQUMsSUFBRSxDQUFILEdBQUtBLENBQUMsS0FBRyxFQUFuQixJQUF1QixjQUFZQSxDQUFDLElBQUUsRUFBSCxHQUFNQSxDQUFDLEtBQUcsQ0FBdEIsQ0FBM0MsRUFBb0VQLENBQUMsQ0FBQyxDQUFDSyxDQUFDLEdBQUMsRUFBRixLQUFPLENBQVAsSUFBVSxDQUFYLElBQWMsRUFBZixDQUFELEdBQW9CLFlBQVVhLENBQUMsSUFBRSxDQUFILEdBQUtBLENBQUMsS0FBRyxFQUFuQixJQUF1QixjQUFZQSxDQUFDLElBQUUsRUFBSCxHQUFNQSxDQUFDLEtBQUcsQ0FBdEIsQ0FBL0csRUFBd0l6QixDQUFDLENBQUM0QixRQUFGLEdBQVcsS0FBR3JCLENBQUMsQ0FBQ3NCLE1BQUYsR0FBUyxDQUFaLENBQW5KLEVBQWtLLEtBQUttQyxRQUFMLEVBQWxLOztBQUFrTCxhQUFJLElBQUkxQixDQUFDLEdBQUMsS0FBS3FELEtBQVgsRUFBaUI3RCxDQUFDLEdBQUNRLENBQUMsQ0FBQ1gsS0FBckIsRUFBMkJtQixDQUFDLEdBQUMsQ0FBakMsRUFBbUNBLENBQUMsR0FBQyxDQUFyQyxFQUF1Q0EsQ0FBQyxFQUF4QyxFQUEyQztBQUFDLGNBQUlLLENBQUMsR0FBQ3JCLENBQUMsQ0FBQ2dCLENBQUQsQ0FBUDtBQUFXaEIsVUFBQUEsQ0FBQyxDQUFDZ0IsQ0FBRCxDQUFELEdBQUssWUFBVUssQ0FBQyxJQUFFLENBQUgsR0FBS0EsQ0FBQyxLQUFHLEVBQW5CLElBQXVCLGNBQVlBLENBQUMsSUFBRSxFQUFILEdBQU1BLENBQUMsS0FBRyxDQUF0QixDQUE1QjtBQUFxRDs7QUFBQSxlQUFPYixDQUFQO0FBQVMsT0FBNTJFO0FBQTYyRWQsTUFBQUEsS0FBSyxFQUFDLGlCQUFVO0FBQUMsWUFBSXhCLENBQUMsR0FBQzhDLENBQUMsQ0FBQ3RCLEtBQUYsQ0FBUVcsSUFBUixDQUFhLElBQWIsQ0FBTjtBQUF5QixlQUFPbkMsQ0FBQyxDQUFDMkYsS0FBRixHQUFRLEtBQUtBLEtBQUwsQ0FBV25FLEtBQVgsRUFBUixFQUEyQnhCLENBQWxDO0FBQW9DO0FBQTM3RSxLQUFULENBQVo7QUFBbTlFeUIsSUFBQUEsQ0FBQyxDQUFDaUUsR0FBRixHQUFNNUMsQ0FBQyxDQUFDZ0MsYUFBRixDQUFnQlIsQ0FBaEIsQ0FBTixFQUF5QjdDLENBQUMsQ0FBQ3NGLE9BQUYsR0FBVWpFLENBQUMsQ0FBQ2lDLGlCQUFGLENBQW9CVCxDQUFwQixDQUFuQztBQUEwRCxHQUF6N0YsQ0FBMDdGWSxJQUExN0YsQ0FBMzFCLEVBQTJ4SCxZQUFVO0FBQUMsUUFBSWpGLENBQUMsR0FBQ0QsQ0FBTjtBQUFBLFFBQVFPLENBQUMsR0FBQ04sQ0FBQyxDQUFDWSxHQUFaO0FBQUEsUUFBZ0JGLENBQUMsR0FBQ0osQ0FBQyxDQUFDbUIsU0FBcEI7QUFBQSxRQUE4QmQsQ0FBQyxHQUFDTCxDQUFDLENBQUNpRSxNQUFsQztBQUFBLFFBQXlDMUQsQ0FBQyxHQUFDYixDQUFDLENBQUNnRixJQUE3QztBQUFBLFFBQWtEeEQsQ0FBQyxHQUFDLEVBQXBEO0FBQUEsUUFBdURhLENBQUMsR0FBQ3hCLENBQUMsQ0FBQ2tHLElBQUYsR0FBT3BHLENBQUMsQ0FBQ0ksTUFBRixDQUFTO0FBQUMwRCxNQUFBQSxRQUFRLEVBQUMsb0JBQVU7QUFBQyxhQUFLaUIsS0FBTCxHQUFXLElBQUloRixDQUFDLENBQUNRLElBQU4sQ0FBVyxDQUFDLFVBQUQsRUFBWSxVQUFaLEVBQXVCLFVBQXZCLEVBQWtDLFNBQWxDLEVBQTRDLFVBQTVDLENBQVgsQ0FBWDtBQUErRSxPQUFwRztBQUFxR2tELE1BQUFBLGVBQWUsRUFBQyx5QkFBU3JFLENBQVQsRUFBV0MsQ0FBWCxFQUFhO0FBQUMsYUFBSSxJQUFJTSxDQUFDLEdBQUMsS0FBS29GLEtBQUwsQ0FBV2hFLEtBQWpCLEVBQXVCaEIsQ0FBQyxHQUFDSixDQUFDLENBQUMsQ0FBRCxDQUExQixFQUE4QkssQ0FBQyxHQUFDTCxDQUFDLENBQUMsQ0FBRCxDQUFqQyxFQUFxQ08sQ0FBQyxHQUFDUCxDQUFDLENBQUMsQ0FBRCxDQUF4QyxFQUE0QytCLENBQUMsR0FBQy9CLENBQUMsQ0FBQyxDQUFELENBQS9DLEVBQW1EdUIsQ0FBQyxHQUFDdkIsQ0FBQyxDQUFDLENBQUQsQ0FBdEQsRUFBMER1QyxDQUFDLEdBQUMsQ0FBaEUsRUFBa0VBLENBQUMsR0FBQyxFQUFwRSxFQUF1RUEsQ0FBQyxFQUF4RSxFQUEyRTtBQUFDLGNBQUdBLENBQUMsR0FBQyxFQUFMLEVBQVFyQixDQUFDLENBQUNxQixDQUFELENBQUQsR0FBSyxJQUFFOUMsQ0FBQyxDQUFDQyxDQUFDLEdBQUM2QyxDQUFILENBQVIsQ0FBUixLQUEwQjtBQUFDLGdCQUFJSyxDQUFDLEdBQUMxQixDQUFDLENBQUNxQixDQUFDLEdBQUMsQ0FBSCxDQUFELEdBQU9yQixDQUFDLENBQUNxQixDQUFDLEdBQUMsQ0FBSCxDQUFSLEdBQWNyQixDQUFDLENBQUNxQixDQUFDLEdBQUMsRUFBSCxDQUFmLEdBQXNCckIsQ0FBQyxDQUFDcUIsQ0FBQyxHQUFDLEVBQUgsQ0FBN0I7QUFBb0NyQixZQUFBQSxDQUFDLENBQUNxQixDQUFELENBQUQsR0FBS0ssQ0FBQyxJQUFFLENBQUgsR0FBS0EsQ0FBQyxLQUFHLEVBQWQ7QUFBaUI7QUFBQSxjQUFJTyxDQUFDLEdBQUMsQ0FBQy9DLENBQUMsSUFBRSxDQUFILEdBQUtBLENBQUMsS0FBRyxFQUFWLElBQWNtQixDQUFkLEdBQWdCTCxDQUFDLENBQUNxQixDQUFELENBQXZCO0FBQTJCWSxVQUFBQSxDQUFDLElBQUVaLENBQUMsR0FBQyxFQUFGLEdBQUssQ0FBQ2xDLENBQUMsR0FBQ0UsQ0FBRixHQUFJLENBQUNGLENBQUQsR0FBRzBCLENBQVIsSUFBVyxVQUFoQixHQUEyQlEsQ0FBQyxHQUFDLEVBQUYsR0FBSyxDQUFDbEMsQ0FBQyxHQUFDRSxDQUFGLEdBQUl3QixDQUFMLElBQVEsVUFBYixHQUF3QlEsQ0FBQyxHQUFDLEVBQUYsR0FBSyxDQUFDbEMsQ0FBQyxHQUFDRSxDQUFGLEdBQUlGLENBQUMsR0FBQzBCLENBQU4sR0FBUXhCLENBQUMsR0FBQ3dCLENBQVgsSUFBYyxVQUFuQixHQUE4QixDQUFDMUIsQ0FBQyxHQUFDRSxDQUFGLEdBQUl3QixDQUFMLElBQVEsU0FBNUYsRUFBc0dSLENBQUMsR0FBQ1EsQ0FBeEcsRUFBMEdBLENBQUMsR0FBQ3hCLENBQTVHLEVBQThHQSxDQUFDLEdBQUNGLENBQUMsSUFBRSxFQUFILEdBQU1BLENBQUMsS0FBRyxDQUExSCxFQUE0SEEsQ0FBQyxHQUFDRCxDQUE5SCxFQUFnSUEsQ0FBQyxHQUFDK0MsQ0FBbEk7QUFBb0k7O0FBQUFuRCxRQUFBQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0ksQ0FBTCxHQUFPLENBQVosRUFBY0osQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtLLENBQUwsR0FBTyxDQUExQixFQUE0QkwsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtPLENBQUwsR0FBTyxDQUF4QyxFQUEwQ1AsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUsrQixDQUFMLEdBQU8sQ0FBdEQsRUFBd0QvQixDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS3VCLENBQUwsR0FBTyxDQUFwRTtBQUFzRSxPQUFwZ0I7QUFBcWdCK0MsTUFBQUEsV0FBVyxFQUFDLHVCQUFVO0FBQUMsWUFBSTdFLENBQUMsR0FBQyxLQUFLNkQsS0FBWDtBQUFBLFlBQWlCNUQsQ0FBQyxHQUFDRCxDQUFDLENBQUMyQixLQUFyQjtBQUFBLFlBQTJCcEIsQ0FBQyxHQUFDLElBQUUsS0FBS3VELFdBQXBDO0FBQUEsWUFBZ0RuRCxDQUFDLEdBQUMsSUFBRVgsQ0FBQyxDQUFDNEIsUUFBdEQ7QUFBK0QsZUFBTzNCLENBQUMsQ0FBQ1UsQ0FBQyxLQUFHLENBQUwsQ0FBRCxJQUFVLE9BQUssS0FBR0EsQ0FBQyxHQUFDLEVBQXBCLEVBQXVCVixDQUFDLENBQUMsQ0FBQ1UsQ0FBQyxHQUFDLEVBQUYsS0FBTyxDQUFQLElBQVUsQ0FBWCxJQUFjLEVBQWYsQ0FBRCxHQUFvQnVFLElBQUksQ0FBQzRCLEtBQUwsQ0FBV3ZHLENBQUMsR0FBQyxVQUFiLENBQTNDLEVBQW9FTixDQUFDLENBQUMsQ0FBQ1UsQ0FBQyxHQUFDLEVBQUYsS0FBTyxDQUFQLElBQVUsQ0FBWCxJQUFjLEVBQWYsQ0FBRCxHQUFvQkosQ0FBeEYsRUFBMEZQLENBQUMsQ0FBQzRCLFFBQUYsR0FBVyxJQUFFM0IsQ0FBQyxDQUFDNEIsTUFBekcsRUFBZ0gsS0FBS21DLFFBQUwsRUFBaEgsRUFBZ0ksS0FBSzJCLEtBQTVJO0FBQWtKLE9BQTd1QjtBQUE4dUJuRSxNQUFBQSxLQUFLLEVBQUMsaUJBQVU7QUFBQyxZQUFJeEIsQ0FBQyxHQUFDWSxDQUFDLENBQUNZLEtBQUYsQ0FBUVcsSUFBUixDQUFhLElBQWIsQ0FBTjtBQUF5QixlQUFPbkMsQ0FBQyxDQUFDMkYsS0FBRixHQUFRLEtBQUtBLEtBQUwsQ0FBV25FLEtBQVgsRUFBUixFQUEyQnhCLENBQWxDO0FBQW9DO0FBQTV6QixLQUFULENBQWhFO0FBQXc0QkMsSUFBQUEsQ0FBQyxDQUFDK0csSUFBRixHQUFPcEcsQ0FBQyxDQUFDa0UsYUFBRixDQUFnQnhDLENBQWhCLENBQVAsRUFBMEJyQyxDQUFDLENBQUNnSCxRQUFGLEdBQVdyRyxDQUFDLENBQUNtRSxpQkFBRixDQUFvQnpDLENBQXBCLENBQXJDO0FBQTRELEdBQS84QixFQUEzeEgsRUFBNnVKLFVBQVNyQyxDQUFULEVBQVc7QUFBQyxRQUFJTSxDQUFDLEdBQUNQLENBQU47QUFBQSxRQUFRVyxDQUFDLEdBQUNKLENBQUMsQ0FBQ00sR0FBWjtBQUFBLFFBQWdCRCxDQUFDLEdBQUNELENBQUMsQ0FBQ2UsU0FBcEI7QUFBQSxRQUE4QlosQ0FBQyxHQUFDSCxDQUFDLENBQUM2RCxNQUFsQztBQUFBLFFBQXlDL0MsQ0FBQyxHQUFDbEIsQ0FBQyxDQUFDMEUsSUFBN0M7QUFBQSxRQUFrRDNDLENBQUMsR0FBQyxFQUFwRDtBQUFBLFFBQXVEUixDQUFDLEdBQUMsRUFBekQ7QUFBNEQsS0FBQyxZQUFVO0FBQUMsZUFBUzlCLENBQVQsQ0FBV0EsQ0FBWCxFQUFhO0FBQUMsYUFBSSxJQUFJTyxDQUFDLEdBQUNOLENBQUMsQ0FBQ2lILElBQUYsQ0FBT2xILENBQVAsQ0FBTixFQUFnQlcsQ0FBQyxHQUFDLENBQXRCLEVBQXdCQSxDQUFDLElBQUVKLENBQTNCLEVBQTZCSSxDQUFDLEVBQTlCO0FBQWlDLGNBQUcsRUFBRVgsQ0FBQyxHQUFDVyxDQUFKLENBQUgsRUFBVSxPQUFNLENBQUMsQ0FBUDtBQUEzQzs7QUFBb0QsZUFBTSxDQUFDLENBQVA7QUFBUzs7QUFBQSxlQUFTSixDQUFULENBQVdQLENBQVgsRUFBYTtBQUFDLGVBQU8sY0FBWUEsQ0FBQyxJQUFFLElBQUVBLENBQUosQ0FBYixJQUFxQixDQUE1QjtBQUE4Qjs7QUFBQSxXQUFJLElBQUlXLENBQUMsR0FBQyxDQUFOLEVBQVFDLENBQUMsR0FBQyxDQUFkLEVBQWdCQSxDQUFDLEdBQUMsRUFBbEI7QUFBc0JaLFFBQUFBLENBQUMsQ0FBQ1csQ0FBRCxDQUFELEtBQU9DLENBQUMsR0FBQyxDQUFGLEtBQU0wQixDQUFDLENBQUMxQixDQUFELENBQUQsR0FBS0wsQ0FBQyxDQUFDTixDQUFDLENBQUNrSCxHQUFGLENBQU14RyxDQUFOLEVBQVEsRUFBUixDQUFELENBQVosR0FBMkJtQixDQUFDLENBQUNsQixDQUFELENBQUQsR0FBS0wsQ0FBQyxDQUFDTixDQUFDLENBQUNrSCxHQUFGLENBQU14RyxDQUFOLEVBQVEsSUFBRSxDQUFWLENBQUQsQ0FBakMsRUFBZ0RDLENBQUMsRUFBeEQsR0FBNERELENBQUMsRUFBN0Q7QUFBdEI7QUFBc0YsS0FBeE4sRUFBRDtBQUE0TixRQUFJbUMsQ0FBQyxHQUFDLEVBQU47QUFBQSxRQUFTSyxDQUFDLEdBQUMxQixDQUFDLENBQUMyRixNQUFGLEdBQVN0RyxDQUFDLENBQUNFLE1BQUYsQ0FBUztBQUFDMEQsTUFBQUEsUUFBUSxFQUFDLG9CQUFVO0FBQUMsYUFBS2lCLEtBQUwsR0FBVyxJQUFJL0UsQ0FBQyxDQUFDTyxJQUFOLENBQVdtQixDQUFDLENBQUNGLEtBQUYsQ0FBUSxDQUFSLENBQVgsQ0FBWDtBQUFrQyxPQUF2RDtBQUF3RGlDLE1BQUFBLGVBQWUsRUFBQyx5QkFBU3JFLENBQVQsRUFBV0MsQ0FBWCxFQUFhO0FBQUMsYUFBSSxJQUFJTSxDQUFDLEdBQUMsS0FBS29GLEtBQUwsQ0FBV2hFLEtBQWpCLEVBQXVCaEIsQ0FBQyxHQUFDSixDQUFDLENBQUMsQ0FBRCxDQUExQixFQUE4QkssQ0FBQyxHQUFDTCxDQUFDLENBQUMsQ0FBRCxDQUFqQyxFQUFxQ08sQ0FBQyxHQUFDUCxDQUFDLENBQUMsQ0FBRCxDQUF4QyxFQUE0Q2tCLENBQUMsR0FBQ2xCLENBQUMsQ0FBQyxDQUFELENBQS9DLEVBQW1EK0IsQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDLENBQUQsQ0FBdEQsRUFBMEQ0QyxDQUFDLEdBQUM1QyxDQUFDLENBQUMsQ0FBRCxDQUE3RCxFQUFpRW1ELENBQUMsR0FBQ25ELENBQUMsQ0FBQyxDQUFELENBQXBFLEVBQXdFK0QsQ0FBQyxHQUFDL0QsQ0FBQyxDQUFDLENBQUQsQ0FBM0UsRUFBK0VxRixDQUFDLEdBQUMsQ0FBckYsRUFBdUZBLENBQUMsR0FBQyxFQUF6RixFQUE0RkEsQ0FBQyxFQUE3RixFQUFnRztBQUFDLGNBQUdBLENBQUMsR0FBQyxFQUFMLEVBQVE5QyxDQUFDLENBQUM4QyxDQUFELENBQUQsR0FBSyxJQUFFNUYsQ0FBQyxDQUFDQyxDQUFDLEdBQUMyRixDQUFILENBQVIsQ0FBUixLQUEwQjtBQUFDLGdCQUFJQyxDQUFDLEdBQUMvQyxDQUFDLENBQUM4QyxDQUFDLEdBQUMsRUFBSCxDQUFQO0FBQUEsZ0JBQWNFLENBQUMsR0FBQyxDQUFDRCxDQUFDLElBQUUsRUFBSCxHQUFNQSxDQUFDLEtBQUcsQ0FBWCxLQUFlQSxDQUFDLElBQUUsRUFBSCxHQUFNQSxDQUFDLEtBQUcsRUFBekIsSUFBNkJBLENBQUMsS0FBRyxDQUFqRDtBQUFBLGdCQUFtREUsQ0FBQyxHQUFDakQsQ0FBQyxDQUFDOEMsQ0FBQyxHQUFDLENBQUgsQ0FBdEQ7QUFBQSxnQkFBNERJLENBQUMsR0FBQyxDQUFDRCxDQUFDLElBQUUsRUFBSCxHQUFNQSxDQUFDLEtBQUcsRUFBWCxLQUFnQkEsQ0FBQyxJQUFFLEVBQUgsR0FBTUEsQ0FBQyxLQUFHLEVBQTFCLElBQThCQSxDQUFDLEtBQUcsRUFBaEc7QUFBbUdqRCxZQUFBQSxDQUFDLENBQUM4QyxDQUFELENBQUQsR0FBS0UsQ0FBQyxHQUFDaEQsQ0FBQyxDQUFDOEMsQ0FBQyxHQUFDLENBQUgsQ0FBSCxHQUFTSSxDQUFULEdBQVdsRCxDQUFDLENBQUM4QyxDQUFDLEdBQUMsRUFBSCxDQUFqQjtBQUF3QjtBQUFBLGNBQUlLLENBQUMsR0FBQzNELENBQUMsR0FBQ2EsQ0FBRixHQUFJLENBQUNiLENBQUQsR0FBR29CLENBQWI7QUFBQSxjQUFld0MsQ0FBQyxHQUFDdkYsQ0FBQyxHQUFDQyxDQUFGLEdBQUlELENBQUMsR0FBQ0csQ0FBTixHQUFRRixDQUFDLEdBQUNFLENBQTNCO0FBQUEsY0FBNkJxRixDQUFDLEdBQUMsQ0FBQ3hGLENBQUMsSUFBRSxFQUFILEdBQU1BLENBQUMsS0FBRyxDQUFYLEtBQWVBLENBQUMsSUFBRSxFQUFILEdBQU1BLENBQUMsS0FBRyxFQUF6QixLQUE4QkEsQ0FBQyxJQUFFLEVBQUgsR0FBTUEsQ0FBQyxLQUFHLEVBQXhDLENBQS9CO0FBQUEsY0FBMkV5RixDQUFDLEdBQUMsQ0FBQzlELENBQUMsSUFBRSxFQUFILEdBQU1BLENBQUMsS0FBRyxDQUFYLEtBQWVBLENBQUMsSUFBRSxFQUFILEdBQU1BLENBQUMsS0FBRyxFQUF6QixLQUE4QkEsQ0FBQyxJQUFFLENBQUgsR0FBS0EsQ0FBQyxLQUFHLEVBQXZDLENBQTdFO0FBQUEsY0FBd0grRCxDQUFDLEdBQUMvQixDQUFDLEdBQUM4QixDQUFGLEdBQUlILENBQUosR0FBTW5FLENBQUMsQ0FBQzhELENBQUQsQ0FBUCxHQUFXOUMsQ0FBQyxDQUFDOEMsQ0FBRCxDQUF0STtBQUFBLGNBQTBJVSxDQUFDLEdBQUNILENBQUMsR0FBQ0QsQ0FBOUk7QUFBZ0o1QixVQUFBQSxDQUFDLEdBQUNaLENBQUYsRUFBSUEsQ0FBQyxHQUFDUCxDQUFOLEVBQVFBLENBQUMsR0FBQ2IsQ0FBVixFQUFZQSxDQUFDLEdBQUNiLENBQUMsR0FBQzRFLENBQUYsR0FBSSxDQUFsQixFQUFvQjVFLENBQUMsR0FBQ1gsQ0FBdEIsRUFBd0JBLENBQUMsR0FBQ0YsQ0FBMUIsRUFBNEJBLENBQUMsR0FBQ0QsQ0FBOUIsRUFBZ0NBLENBQUMsR0FBQzBGLENBQUMsR0FBQ0MsQ0FBRixHQUFJLENBQXRDO0FBQXdDOztBQUFBL0YsUUFBQUEsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtJLENBQUwsR0FBTyxDQUFaLEVBQWNKLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLSyxDQUFMLEdBQU8sQ0FBMUIsRUFBNEJMLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLTyxDQUFMLEdBQU8sQ0FBeEMsRUFBMENQLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLa0IsQ0FBTCxHQUFPLENBQXRELEVBQXdEbEIsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUsrQixDQUFMLEdBQU8sQ0FBcEUsRUFBc0UvQixDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUtBLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBSzRDLENBQUwsR0FBTyxDQUFsRixFQUFvRjVDLENBQUMsQ0FBQyxDQUFELENBQUQsR0FBS0EsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLbUQsQ0FBTCxHQUFPLENBQWhHLEVBQWtHbkQsQ0FBQyxDQUFDLENBQUQsQ0FBRCxHQUFLQSxDQUFDLENBQUMsQ0FBRCxDQUFELEdBQUsrRCxDQUFMLEdBQU8sQ0FBOUc7QUFBZ0gsT0FBcm5CO0FBQXNuQk8sTUFBQUEsV0FBVyxFQUFDLHVCQUFVO0FBQUMsWUFBSTdFLENBQUMsR0FBQyxLQUFLNkQsS0FBWDtBQUFBLFlBQWlCdEQsQ0FBQyxHQUFDUCxDQUFDLENBQUMyQixLQUFyQjtBQUFBLFlBQTJCaEIsQ0FBQyxHQUFDLElBQUUsS0FBS21ELFdBQXBDO0FBQUEsWUFBZ0RsRCxDQUFDLEdBQUMsSUFBRVosQ0FBQyxDQUFDNEIsUUFBdEQ7QUFBK0QsZUFBT3JCLENBQUMsQ0FBQ0ssQ0FBQyxLQUFHLENBQUwsQ0FBRCxJQUFVLE9BQUssS0FBR0EsQ0FBQyxHQUFDLEVBQXBCLEVBQXVCTCxDQUFDLENBQUMsQ0FBQ0ssQ0FBQyxHQUFDLEVBQUYsS0FBTyxDQUFQLElBQVUsQ0FBWCxJQUFjLEVBQWYsQ0FBRCxHQUFvQlgsQ0FBQyxDQUFDNkcsS0FBRixDQUFRbkcsQ0FBQyxHQUFDLFVBQVYsQ0FBM0MsRUFBaUVKLENBQUMsQ0FBQyxDQUFDSyxDQUFDLEdBQUMsRUFBRixLQUFPLENBQVAsSUFBVSxDQUFYLElBQWMsRUFBZixDQUFELEdBQW9CRCxDQUFyRixFQUF1RlgsQ0FBQyxDQUFDNEIsUUFBRixHQUFXLElBQUVyQixDQUFDLENBQUNzQixNQUF0RyxFQUE2RyxLQUFLbUMsUUFBTCxFQUE3RyxFQUE2SCxLQUFLMkIsS0FBekk7QUFBK0ksT0FBMzFCO0FBQTQxQm5FLE1BQUFBLEtBQUssRUFBQyxpQkFBVTtBQUFDLFlBQUl4QixDQUFDLEdBQUNjLENBQUMsQ0FBQ1UsS0FBRixDQUFRVyxJQUFSLENBQWEsSUFBYixDQUFOO0FBQXlCLGVBQU9uQyxDQUFDLENBQUMyRixLQUFGLEdBQVEsS0FBS0EsS0FBTCxDQUFXbkUsS0FBWCxFQUFSLEVBQTJCeEIsQ0FBbEM7QUFBb0M7QUFBMTZCLEtBQVQsQ0FBcEI7QUFBMDhCTyxJQUFBQSxDQUFDLENBQUM2RyxNQUFGLEdBQVN0RyxDQUFDLENBQUNnRSxhQUFGLENBQWdCM0IsQ0FBaEIsQ0FBVCxFQUE0QjVDLENBQUMsQ0FBQzhHLFVBQUYsR0FBYXZHLENBQUMsQ0FBQ2lFLGlCQUFGLENBQW9CNUIsQ0FBcEIsQ0FBekM7QUFBZ0UsR0FBOXlDLENBQSt5QytCLElBQS95QyxDQUE3dUosRUFBa2lNLFlBQVU7QUFBQyxhQUFTakYsQ0FBVCxDQUFXRCxDQUFYLEVBQWE7QUFBQyxhQUFPQSxDQUFDLElBQUUsQ0FBSCxHQUFLLFVBQUwsR0FBZ0JBLENBQUMsS0FBRyxDQUFKLEdBQU0sUUFBN0I7QUFBc0M7O0FBQUEsUUFBSU8sQ0FBQyxHQUFDUCxDQUFOO0FBQUEsUUFBUVcsQ0FBQyxHQUFDSixDQUFDLENBQUNNLEdBQVo7QUFBQSxRQUFnQkQsQ0FBQyxHQUFDRCxDQUFDLENBQUNlLFNBQXBCO0FBQUEsUUFBOEJaLENBQUMsR0FBQ1AsQ0FBQyxDQUFDaUMsR0FBbEM7QUFBc0MxQixJQUFBQSxDQUFDLENBQUN3RyxLQUFGLEdBQVF4RyxDQUFDLENBQUN5RyxPQUFGLEdBQVU7QUFBQ3hGLE1BQUFBLFNBQVMsRUFBQyxtQkFBUy9CLENBQVQsRUFBVztBQUFDLGFBQUksSUFBSUMsQ0FBQyxHQUFDRCxDQUFDLENBQUMyQixLQUFSLEVBQWNwQixDQUFDLEdBQUNQLENBQUMsQ0FBQzRCLFFBQWxCLEVBQTJCakIsQ0FBQyxHQUFDLEVBQTdCLEVBQWdDQyxDQUFDLEdBQUMsQ0FBdEMsRUFBd0NBLENBQUMsR0FBQ0wsQ0FBMUMsRUFBNENLLENBQUMsSUFBRSxDQUEvQyxFQUFpRDtBQUFDLGNBQUlFLENBQUMsR0FBQ2IsQ0FBQyxDQUFDVyxDQUFDLEtBQUcsQ0FBTCxDQUFELEtBQVcsS0FBR0EsQ0FBQyxHQUFDLENBQUYsR0FBSSxDQUFsQixHQUFvQixLQUExQjtBQUFnQ0QsVUFBQUEsQ0FBQyxDQUFDNEIsSUFBRixDQUFPUyxNQUFNLENBQUNDLFlBQVAsQ0FBb0JuQyxDQUFwQixDQUFQO0FBQStCOztBQUFBLGVBQU9ILENBQUMsQ0FBQytCLElBQUYsQ0FBTyxFQUFQLENBQVA7QUFBa0IsT0FBMUo7QUFBMkpDLE1BQUFBLEtBQUssRUFBQyxlQUFTM0MsQ0FBVCxFQUFXO0FBQUMsYUFBSSxJQUFJQyxDQUFDLEdBQUNELENBQUMsQ0FBQzZCLE1BQVIsRUFBZXRCLENBQUMsR0FBQyxFQUFqQixFQUFvQkksQ0FBQyxHQUFDLENBQTFCLEVBQTRCQSxDQUFDLEdBQUNWLENBQTlCLEVBQWdDVSxDQUFDLEVBQWpDO0FBQW9DSixVQUFBQSxDQUFDLENBQUNJLENBQUMsS0FBRyxDQUFMLENBQUQsSUFBVVgsQ0FBQyxDQUFDa0QsVUFBRixDQUFhdkMsQ0FBYixLQUFpQixLQUFHQSxDQUFDLEdBQUMsQ0FBRixHQUFJLEVBQWxDO0FBQXBDOztBQUF5RSxlQUFPQyxDQUFDLENBQUNILE1BQUYsQ0FBU0YsQ0FBVCxFQUFXLElBQUVOLENBQWIsQ0FBUDtBQUF1QjtBQUE3USxLQUFsQjtBQUFpU2EsSUFBQUEsQ0FBQyxDQUFDMEcsT0FBRixHQUFVO0FBQUN6RixNQUFBQSxTQUFTLEVBQUMsbUJBQVMvQixDQUFULEVBQVc7QUFBQyxhQUFJLElBQUlPLENBQUMsR0FBQ1AsQ0FBQyxDQUFDMkIsS0FBUixFQUFjaEIsQ0FBQyxHQUFDWCxDQUFDLENBQUM0QixRQUFsQixFQUEyQmhCLENBQUMsR0FBQyxFQUE3QixFQUFnQ0UsQ0FBQyxHQUFDLENBQXRDLEVBQXdDQSxDQUFDLEdBQUNILENBQTFDLEVBQTRDRyxDQUFDLElBQUUsQ0FBL0MsRUFBaUQ7QUFBQyxjQUFJVyxDQUFDLEdBQUN4QixDQUFDLENBQUNNLENBQUMsQ0FBQ08sQ0FBQyxLQUFHLENBQUwsQ0FBRCxLQUFXLEtBQUdBLENBQUMsR0FBQyxDQUFGLEdBQUksQ0FBbEIsR0FBb0IsS0FBckIsQ0FBUDtBQUFtQ0YsVUFBQUEsQ0FBQyxDQUFDMkIsSUFBRixDQUFPUyxNQUFNLENBQUNDLFlBQVAsQ0FBb0J4QixDQUFwQixDQUFQO0FBQStCOztBQUFBLGVBQU9iLENBQUMsQ0FBQzhCLElBQUYsQ0FBTyxFQUFQLENBQVA7QUFBa0IsT0FBN0o7QUFBOEpDLE1BQUFBLEtBQUssRUFBQyxlQUFTM0MsQ0FBVCxFQUFXO0FBQUMsYUFBSSxJQUFJTyxDQUFDLEdBQUNQLENBQUMsQ0FBQzZCLE1BQVIsRUFBZWxCLENBQUMsR0FBQyxFQUFqQixFQUFvQkcsQ0FBQyxHQUFDLENBQTFCLEVBQTRCQSxDQUFDLEdBQUNQLENBQTlCLEVBQWdDTyxDQUFDLEVBQWpDO0FBQW9DSCxVQUFBQSxDQUFDLENBQUNHLENBQUMsS0FBRyxDQUFMLENBQUQsSUFBVWIsQ0FBQyxDQUFDRCxDQUFDLENBQUNrRCxVQUFGLENBQWFwQyxDQUFiLEtBQWlCLEtBQUdBLENBQUMsR0FBQyxDQUFGLEdBQUksRUFBekIsQ0FBWDtBQUFwQzs7QUFBNEUsZUFBT0YsQ0FBQyxDQUFDSCxNQUFGLENBQVNFLENBQVQsRUFBVyxJQUFFSixDQUFiLENBQVA7QUFBdUI7QUFBblIsS0FBVjtBQUErUixHQUFycUIsRUFBbGlNLEVBQTBzTixZQUFVO0FBQUMsUUFBRyxjQUFZLE9BQU9rSCxXQUF0QixFQUFrQztBQUFDLFVBQUl4SCxDQUFDLEdBQUNELENBQU47QUFBQSxVQUFRTyxDQUFDLEdBQUNOLENBQUMsQ0FBQ1ksR0FBWjtBQUFBLFVBQWdCRixDQUFDLEdBQUNKLENBQUMsQ0FBQ21CLFNBQXBCO0FBQUEsVUFBOEJkLENBQUMsR0FBQ0QsQ0FBQyxDQUFDUSxJQUFsQztBQUFBLFVBQXVDTCxDQUFDLEdBQUNILENBQUMsQ0FBQ1EsSUFBRixHQUFPLFVBQVNuQixDQUFULEVBQVc7QUFBQyxZQUFHQSxDQUFDLFlBQVl5SCxXQUFiLEtBQTJCekgsQ0FBQyxHQUFDLElBQUkwSCxVQUFKLENBQWUxSCxDQUFmLENBQTdCLEdBQWdELENBQUNBLENBQUMsWUFBWTJILFNBQWIsSUFBd0IsZUFBYSxPQUFPQyxpQkFBcEIsSUFBdUM1SCxDQUFDLFlBQVk0SCxpQkFBNUUsSUFBK0Y1SCxDQUFDLFlBQVk2SCxVQUE1RyxJQUF3SDdILENBQUMsWUFBWThILFdBQXJJLElBQWtKOUgsQ0FBQyxZQUFZK0gsVUFBL0osSUFBMksvSCxDQUFDLFlBQVlnSSxXQUF4TCxJQUFxTWhJLENBQUMsWUFBWWlJLFlBQWxOLElBQWdPakksQ0FBQyxZQUFZa0ksWUFBOU8sTUFBOFBsSSxDQUFDLEdBQUMsSUFBSTBILFVBQUosQ0FBZTFILENBQUMsQ0FBQ21JLE1BQWpCLEVBQXdCbkksQ0FBQyxDQUFDb0ksVUFBMUIsRUFBcUNwSSxDQUFDLENBQUNxSSxVQUF2QyxDQUFoUSxDQUFoRCxFQUFvV3JJLENBQUMsWUFBWTBILFVBQXBYLEVBQStYO0FBQUMsZUFBSSxJQUFJekgsQ0FBQyxHQUFDRCxDQUFDLENBQUNxSSxVQUFSLEVBQW1COUgsQ0FBQyxHQUFDLEVBQXJCLEVBQXdCSSxDQUFDLEdBQUMsQ0FBOUIsRUFBZ0NBLENBQUMsR0FBQ1YsQ0FBbEMsRUFBb0NVLENBQUMsRUFBckM7QUFBd0NKLFlBQUFBLENBQUMsQ0FBQ0ksQ0FBQyxLQUFHLENBQUwsQ0FBRCxJQUFVWCxDQUFDLENBQUNXLENBQUQsQ0FBRCxJQUFNLEtBQUdBLENBQUMsR0FBQyxDQUFGLEdBQUksQ0FBdkI7QUFBeEM7O0FBQWlFQyxVQUFBQSxDQUFDLENBQUN1QixJQUFGLENBQU8sSUFBUCxFQUFZNUIsQ0FBWixFQUFjTixDQUFkO0FBQWlCLFNBQWxkLE1BQXVkVyxDQUFDLENBQUNTLEtBQUYsQ0FBUSxJQUFSLEVBQWFDLFNBQWI7QUFBd0IsT0FBM2lCOztBQUE0aUJSLE1BQUFBLENBQUMsQ0FBQ0osU0FBRixHQUFZQyxDQUFaO0FBQWM7QUFBQyxHQUF6bUIsRUFBMXNOLEVBQXN6TyxVQUFTVixDQUFULEVBQVc7QUFBQyxhQUFTTSxDQUFULENBQVdQLENBQVgsRUFBYUMsQ0FBYixFQUFlTSxDQUFmLEVBQWlCO0FBQUMsYUFBT1AsQ0FBQyxHQUFDQyxDQUFGLEdBQUlNLENBQVg7QUFBYTs7QUFBQSxhQUFTSSxDQUFULENBQVdYLENBQVgsRUFBYUMsQ0FBYixFQUFlTSxDQUFmLEVBQWlCO0FBQUMsYUFBT1AsQ0FBQyxHQUFDQyxDQUFGLEdBQUksQ0FBQ0QsQ0FBRCxHQUFHTyxDQUFkO0FBQWdCOztBQUFBLGFBQVNLLENBQVQsQ0FBV1osQ0FBWCxFQUFhQyxDQUFiLEVBQWVNLENBQWYsRUFBaUI7QUFBQyxhQUFNLENBQUNQLENBQUMsR0FBQyxDQUFDQyxDQUFKLElBQU9NLENBQWI7QUFBZTs7QUFBQSxhQUFTTyxDQUFULENBQVdkLENBQVgsRUFBYUMsQ0FBYixFQUFlTSxDQUFmLEVBQWlCO0FBQUMsYUFBT1AsQ0FBQyxHQUFDTyxDQUFGLEdBQUlOLENBQUMsR0FBQyxDQUFDTSxDQUFkO0FBQWdCOztBQUFBLGFBQVNrQixDQUFULENBQVd6QixDQUFYLEVBQWFDLENBQWIsRUFBZU0sQ0FBZixFQUFpQjtBQUFDLGFBQU9QLENBQUMsSUFBRUMsQ0FBQyxHQUFDLENBQUNNLENBQUwsQ0FBUjtBQUFnQjs7QUFBQSxhQUFTK0IsQ0FBVCxDQUFXdEMsQ0FBWCxFQUFhQyxDQUFiLEVBQWU7QUFBQyxhQUFPRCxDQUFDLElBQUVDLENBQUgsR0FBS0QsQ0FBQyxLQUFHLEtBQUdDLENBQW5CO0FBQXFCOztBQUFBLFFBQUk2QixDQUFDLEdBQUM5QixDQUFOO0FBQUEsUUFBUThDLENBQUMsR0FBQ2hCLENBQUMsQ0FBQ2pCLEdBQVo7QUFBQSxRQUFnQnNDLENBQUMsR0FBQ0wsQ0FBQyxDQUFDcEIsU0FBcEI7QUFBQSxRQUE4QmdDLENBQUMsR0FBQ1osQ0FBQyxDQUFDMEIsTUFBbEM7QUFBQSxRQUF5Q0YsQ0FBQyxHQUFDeEMsQ0FBQyxDQUFDbUQsSUFBN0M7QUFBQSxRQUFrRFcsQ0FBQyxHQUFDekMsQ0FBQyxDQUFDMUMsTUFBRixDQUFTLENBQUMsQ0FBRCxFQUFHLENBQUgsRUFBSyxDQUFMLEVBQU8sQ0FBUCxFQUFTLENBQVQsRUFBVyxDQUFYLEVBQWEsQ0FBYixFQUFlLENBQWYsRUFBaUIsQ0FBakIsRUFBbUIsQ0FBbkIsRUFBcUIsRUFBckIsRUFBd0IsRUFBeEIsRUFBMkIsRUFBM0IsRUFBOEIsRUFBOUIsRUFBaUMsRUFBakMsRUFBb0MsRUFBcEMsRUFBdUMsQ0FBdkMsRUFBeUMsQ0FBekMsRUFBMkMsRUFBM0MsRUFBOEMsQ0FBOUMsRUFBZ0QsRUFBaEQsRUFBbUQsQ0FBbkQsRUFBcUQsRUFBckQsRUFBd0QsQ0FBeEQsRUFBMEQsRUFBMUQsRUFBNkQsQ0FBN0QsRUFBK0QsQ0FBL0QsRUFBaUUsQ0FBakUsRUFBbUUsQ0FBbkUsRUFBcUUsRUFBckUsRUFBd0UsRUFBeEUsRUFBMkUsQ0FBM0UsRUFBNkUsQ0FBN0UsRUFBK0UsRUFBL0UsRUFBa0YsRUFBbEYsRUFBcUYsQ0FBckYsRUFBdUYsQ0FBdkYsRUFBeUYsRUFBekYsRUFBNEYsQ0FBNUYsRUFBOEYsQ0FBOUYsRUFBZ0csQ0FBaEcsRUFBa0csQ0FBbEcsRUFBb0csQ0FBcEcsRUFBc0csQ0FBdEcsRUFBd0csRUFBeEcsRUFBMkcsRUFBM0csRUFBOEcsQ0FBOUcsRUFBZ0gsRUFBaEgsRUFBbUgsQ0FBbkgsRUFBcUgsQ0FBckgsRUFBdUgsRUFBdkgsRUFBMEgsRUFBMUgsRUFBNkgsQ0FBN0gsRUFBK0gsQ0FBL0gsRUFBaUksRUFBakksRUFBb0ksQ0FBcEksRUFBc0ksRUFBdEksRUFBeUksQ0FBekksRUFBMkksQ0FBM0ksRUFBNkksRUFBN0ksRUFBZ0osRUFBaEosRUFBbUosQ0FBbkosRUFBcUosQ0FBckosRUFBdUosQ0FBdkosRUFBeUosQ0FBekosRUFBMkosQ0FBM0osRUFBNkosQ0FBN0osRUFBK0osQ0FBL0osRUFBaUssQ0FBakssRUFBbUssRUFBbkssRUFBc0ssQ0FBdEssRUFBd0ssRUFBeEssRUFBMkssRUFBM0ssRUFBOEssQ0FBOUssRUFBZ0wsQ0FBaEwsRUFBa0wsQ0FBbEwsRUFBb0wsRUFBcEwsRUFBdUwsQ0FBdkwsRUFBeUwsRUFBekwsRUFBNEwsRUFBNUwsQ0FBVCxDQUFwRDtBQUFBLFFBQThQb0YsQ0FBQyxHQUFDMUMsQ0FBQyxDQUFDMUMsTUFBRixDQUFTLENBQUMsQ0FBRCxFQUFHLEVBQUgsRUFBTSxDQUFOLEVBQVEsQ0FBUixFQUFVLENBQVYsRUFBWSxDQUFaLEVBQWMsRUFBZCxFQUFpQixDQUFqQixFQUFtQixFQUFuQixFQUFzQixDQUF0QixFQUF3QixFQUF4QixFQUEyQixDQUEzQixFQUE2QixDQUE3QixFQUErQixFQUEvQixFQUFrQyxDQUFsQyxFQUFvQyxFQUFwQyxFQUF1QyxDQUF2QyxFQUF5QyxFQUF6QyxFQUE0QyxDQUE1QyxFQUE4QyxDQUE5QyxFQUFnRCxDQUFoRCxFQUFrRCxFQUFsRCxFQUFxRCxDQUFyRCxFQUF1RCxFQUF2RCxFQUEwRCxFQUExRCxFQUE2RCxFQUE3RCxFQUFnRSxDQUFoRSxFQUFrRSxFQUFsRSxFQUFxRSxDQUFyRSxFQUF1RSxDQUF2RSxFQUF5RSxDQUF6RSxFQUEyRSxDQUEzRSxFQUE2RSxFQUE3RSxFQUFnRixDQUFoRixFQUFrRixDQUFsRixFQUFvRixDQUFwRixFQUFzRixDQUF0RixFQUF3RixFQUF4RixFQUEyRixDQUEzRixFQUE2RixDQUE3RixFQUErRixFQUEvRixFQUFrRyxDQUFsRyxFQUFvRyxFQUFwRyxFQUF1RyxDQUF2RyxFQUF5RyxFQUF6RyxFQUE0RyxDQUE1RyxFQUE4RyxDQUE5RyxFQUFnSCxFQUFoSCxFQUFtSCxDQUFuSCxFQUFxSCxDQUFySCxFQUF1SCxDQUF2SCxFQUF5SCxDQUF6SCxFQUEySCxDQUEzSCxFQUE2SCxFQUE3SCxFQUFnSSxFQUFoSSxFQUFtSSxDQUFuSSxFQUFxSSxDQUFySSxFQUF1SSxFQUF2SSxFQUEwSSxDQUExSSxFQUE0SSxFQUE1SSxFQUErSSxDQUEvSSxFQUFpSixDQUFqSixFQUFtSixFQUFuSixFQUFzSixFQUF0SixFQUF5SixFQUF6SixFQUE0SixFQUE1SixFQUErSixFQUEvSixFQUFrSyxDQUFsSyxFQUFvSyxDQUFwSyxFQUFzSyxDQUF0SyxFQUF3SyxDQUF4SyxFQUEwSyxDQUExSyxFQUE0SyxDQUE1SyxFQUE4SyxDQUE5SyxFQUFnTCxFQUFoTCxFQUFtTCxFQUFuTCxFQUFzTCxDQUF0TCxFQUF3TCxDQUF4TCxFQUEwTCxDQUExTCxFQUE0TCxFQUE1TCxDQUFULENBQWhRO0FBQUEsUUFBMGNxRixDQUFDLEdBQUMzQyxDQUFDLENBQUMxQyxNQUFGLENBQVMsQ0FBQyxFQUFELEVBQUksRUFBSixFQUFPLEVBQVAsRUFBVSxFQUFWLEVBQWEsQ0FBYixFQUFlLENBQWYsRUFBaUIsQ0FBakIsRUFBbUIsQ0FBbkIsRUFBcUIsRUFBckIsRUFBd0IsRUFBeEIsRUFBMkIsRUFBM0IsRUFBOEIsRUFBOUIsRUFBaUMsQ0FBakMsRUFBbUMsQ0FBbkMsRUFBcUMsQ0FBckMsRUFBdUMsQ0FBdkMsRUFBeUMsQ0FBekMsRUFBMkMsQ0FBM0MsRUFBNkMsQ0FBN0MsRUFBK0MsRUFBL0MsRUFBa0QsRUFBbEQsRUFBcUQsQ0FBckQsRUFBdUQsQ0FBdkQsRUFBeUQsRUFBekQsRUFBNEQsQ0FBNUQsRUFBOEQsRUFBOUQsRUFBaUUsRUFBakUsRUFBb0UsQ0FBcEUsRUFBc0UsRUFBdEUsRUFBeUUsQ0FBekUsRUFBMkUsRUFBM0UsRUFBOEUsRUFBOUUsRUFBaUYsRUFBakYsRUFBb0YsRUFBcEYsRUFBdUYsQ0FBdkYsRUFBeUYsQ0FBekYsRUFBMkYsRUFBM0YsRUFBOEYsQ0FBOUYsRUFBZ0csRUFBaEcsRUFBbUcsRUFBbkcsRUFBc0csRUFBdEcsRUFBeUcsQ0FBekcsRUFBMkcsRUFBM0csRUFBOEcsQ0FBOUcsRUFBZ0gsQ0FBaEgsRUFBa0gsRUFBbEgsRUFBcUgsQ0FBckgsRUFBdUgsQ0FBdkgsRUFBeUgsRUFBekgsRUFBNEgsRUFBNUgsRUFBK0gsRUFBL0gsRUFBa0ksRUFBbEksRUFBcUksRUFBckksRUFBd0ksRUFBeEksRUFBMkksQ0FBM0ksRUFBNkksQ0FBN0ksRUFBK0ksQ0FBL0ksRUFBaUosRUFBakosRUFBb0osQ0FBcEosRUFBc0osQ0FBdEosRUFBd0osQ0FBeEosRUFBMEosQ0FBMUosRUFBNEosQ0FBNUosRUFBOEosRUFBOUosRUFBaUssQ0FBakssRUFBbUssRUFBbkssRUFBc0ssQ0FBdEssRUFBd0ssRUFBeEssRUFBMkssQ0FBM0ssRUFBNkssQ0FBN0ssRUFBK0ssRUFBL0ssRUFBa0wsRUFBbEwsRUFBcUwsQ0FBckwsRUFBdUwsRUFBdkwsRUFBMEwsRUFBMUwsRUFBNkwsRUFBN0wsRUFBZ00sRUFBaE0sRUFBbU0sQ0FBbk0sRUFBcU0sQ0FBck0sRUFBdU0sQ0FBdk0s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R0FBQyxDQUFiO0FBQWU7QUFBMUssR0FEbnlYLEVBQys4WFAsQ0FEdDlYO0FBQ3c5WCxDQURqaGYsQ0FBRCxFQUVBIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIhZnVuY3Rpb24odCxyKXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1leHBvcnRzPXIoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLHIpOnQuQ3J5cHRvSlM9cigpfSh0aGlzLGZ1bmN0aW9uKCl7dmFyIHQ9dHx8ZnVuY3Rpb24odCxyKXt2YXIgZT1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBlO3JldHVybiB0LnByb3RvdHlwZT1yLGU9bmV3IHQsdC5wcm90b3R5cGU9bnVsbCxlfX0oKSxpPXt9LG49aS5saWI9e30sbz1uLkJhc2U9ZnVuY3Rpb24oKXtyZXR1cm57ZXh0ZW5kOmZ1bmN0aW9uKHQpe3ZhciByPWUodGhpcyk7cmV0dXJuIHQmJnIubWl4SW4odCksci5oYXNPd25Qcm9wZXJ0eShcImluaXRcIikmJnRoaXMuaW5pdCE9PXIuaW5pdHx8KHIuaW5pdD1mdW5jdGlvbigpe3IuJHN1cGVyLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSksci5pbml0LnByb3RvdHlwZT1yLHIuJHN1cGVyPXRoaXMscn0sY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5leHRlbmQoKTtyZXR1cm4gdC5pbml0LmFwcGx5KHQsYXJndW1lbnRzKSx0fSxpbml0OmZ1bmN0aW9uKCl7fSxtaXhJbjpmdW5jdGlvbih0KXtmb3IodmFyIHIgaW4gdCl0Lmhhc093blByb3BlcnR5KHIpJiYodGhpc1tyXT10W3JdKTt0Lmhhc093blByb3BlcnR5KFwidG9TdHJpbmdcIikmJih0aGlzLnRvU3RyaW5nPXQudG9TdHJpbmcpfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmluaXQucHJvdG90eXBlLmV4dGVuZCh0aGlzKX19fSgpLHM9bi5Xb3JkQXJyYXk9by5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXt0PXRoaXMud29yZHM9dHx8W10sZSE9cj90aGlzLnNpZ0J5dGVzPWU6dGhpcy5zaWdCeXRlcz00KnQubGVuZ3RofSx0b1N0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4odHx8Yykuc3RyaW5naWZ5KHRoaXMpfSxjb25jYXQ6ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy53b3JkcyxlPXQud29yZHMsaT10aGlzLnNpZ0J5dGVzLG49dC5zaWdCeXRlcztpZih0aGlzLmNsYW1wKCksaSU0KWZvcih2YXIgbz0wO288bjtvKyspe3ZhciBzPWVbbz4+PjJdPj4+MjQtbyU0KjgmMjU1O3JbaStvPj4+Ml18PXM8PDI0LShpK28pJTQqOH1lbHNlIGZvcih2YXIgbz0wO288bjtvKz00KXJbaStvPj4+Ml09ZVtvPj4+Ml07cmV0dXJuIHRoaXMuc2lnQnl0ZXMrPW4sdGhpc30sY2xhbXA6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLndvcmRzLGU9dGhpcy5zaWdCeXRlcztyW2U+Pj4yXSY9NDI5NDk2NzI5NTw8MzItZSU0Kjgsci5sZW5ndGg9dC5jZWlsKGUvNCl9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9by5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0LndvcmRzPXRoaXMud29yZHMuc2xpY2UoMCksdH0scmFuZG9tOmZ1bmN0aW9uKHIpe2Zvcih2YXIgZSxpPVtdLG49ZnVuY3Rpb24ocil7dmFyIHI9cixlPTk4NzY1NDMyMSxpPTQyOTQ5NjcyOTU7cmV0dXJuIGZ1bmN0aW9uKCl7ZT0zNjk2OSooNjU1MzUmZSkrKGU+PjE2KSZpLHI9MThlMyooNjU1MzUmcikrKHI+PjE2KSZpO3ZhciBuPShlPDwxNikrciZpO3JldHVybiBuLz00Mjk0OTY3Mjk2LG4rPS41LG4qKHQucmFuZG9tKCk+LjU/MTotMSl9fSxvPTA7bzxyO28rPTQpe3ZhciBhPW4oNDI5NDk2NzI5NiooZXx8dC5yYW5kb20oKSkpO2U9OTg3NjU0MDcxKmEoKSxpLnB1c2goNDI5NDk2NzI5NiphKCl8MCl9cmV0dXJuIG5ldyBzLmluaXQoaSxyKX19KSxhPWkuZW5jPXt9LGM9YS5IZXg9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT1bXSxuPTA7bjxlO24rKyl7dmFyIG89cltuPj4+Ml0+Pj4yNC1uJTQqOCYyNTU7aS5wdXNoKChvPj4+NCkudG9TdHJpbmcoMTYpKSxpLnB1c2goKDE1Jm8pLnRvU3RyaW5nKDE2KSl9cmV0dXJuIGkuam9pbihcIlwiKX0scGFyc2U6ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQubGVuZ3RoLGU9W10saT0wO2k8cjtpKz0yKWVbaT4+PjNdfD1wYXJzZUludCh0LnN1YnN0cihpLDIpLDE2KTw8MjQtaSU4KjQ7cmV0dXJuIG5ldyBzLmluaXQoZSxyLzIpfX0saD1hLkxhdGluMT17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10LndvcmRzLGU9dC5zaWdCeXRlcyxpPVtdLG49MDtuPGU7bisrKXt2YXIgbz1yW24+Pj4yXT4+PjI0LW4lNCo4JjI1NTtpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShvKSl9cmV0dXJuIGkuam9pbihcIlwiKX0scGFyc2U6ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQubGVuZ3RoLGU9W10saT0wO2k8cjtpKyspZVtpPj4+Ml18PSgyNTUmdC5jaGFyQ29kZUF0KGkpKTw8MjQtaSU0Kjg7cmV0dXJuIG5ldyBzLmluaXQoZSxyKX19LGw9YS5VdGY4PXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGguc3RyaW5naWZ5KHQpKSl9Y2F0Y2godCl7dGhyb3cgbmV3IEVycm9yKFwiTWFsZm9ybWVkIFVURi04IGRhdGFcIil9fSxwYXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gaC5wYXJzZSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodCkpKX19LGY9bi5CdWZmZXJlZEJsb2NrQWxnb3JpdGhtPW8uZXh0ZW5kKHtyZXNldDpmdW5jdGlvbigpe3RoaXMuX2RhdGE9bmV3IHMuaW5pdCx0aGlzLl9uRGF0YUJ5dGVzPTB9LF9hcHBlbmQ6ZnVuY3Rpb24odCl7XCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PWwucGFyc2UodCkpLHRoaXMuX2RhdGEuY29uY2F0KHQpLHRoaXMuX25EYXRhQnl0ZXMrPXQuc2lnQnl0ZXN9LF9wcm9jZXNzOmZ1bmN0aW9uKHIpe3ZhciBlPXRoaXMuX2RhdGEsaT1lLndvcmRzLG49ZS5zaWdCeXRlcyxvPXRoaXMuYmxvY2tTaXplLGE9NCpvLGM9bi9hO2M9cj90LmNlaWwoYyk6dC5tYXgoKDB8YyktdGhpcy5fbWluQnVmZmVyU2l6ZSwwKTt2YXIgaD1jKm8sbD10Lm1pbig0Kmgsbik7aWYoaCl7Zm9yKHZhciBmPTA7ZjxoO2YrPW8pdGhpcy5fZG9Qcm9jZXNzQmxvY2soaSxmKTt2YXIgdT1pLnNwbGljZSgwLGgpO2Uuc2lnQnl0ZXMtPWx9cmV0dXJuIG5ldyBzLmluaXQodSxsKX0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1vLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2RhdGE9dGhpcy5fZGF0YS5jbG9uZSgpLHR9LF9taW5CdWZmZXJTaXplOjB9KSx1PShuLkhhc2hlcj1mLmV4dGVuZCh7Y2ZnOm8uZXh0ZW5kKCksaW5pdDpmdW5jdGlvbih0KXt0aGlzLmNmZz10aGlzLmNmZy5leHRlbmQodCksdGhpcy5yZXNldCgpfSxyZXNldDpmdW5jdGlvbigpe2YucmVzZXQuY2FsbCh0aGlzKSx0aGlzLl9kb1Jlc2V0KCl9LHVwZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYXBwZW5kKHQpLHRoaXMuX3Byb2Nlc3MoKSx0aGlzfSxmaW5hbGl6ZTpmdW5jdGlvbih0KXt0JiZ0aGlzLl9hcHBlbmQodCk7dmFyIHI9dGhpcy5fZG9GaW5hbGl6ZSgpO3JldHVybiByfSxibG9ja1NpemU6MTYsX2NyZWF0ZUhlbHBlcjpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24ocixlKXtyZXR1cm4gbmV3IHQuaW5pdChlKS5maW5hbGl6ZShyKX19LF9jcmVhdGVIbWFjSGVscGVyOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihyLGUpe3JldHVybiBuZXcgdS5ITUFDLmluaXQodCxlKS5maW5hbGl6ZShyKX19fSksaS5hbGdvPXt9KTtyZXR1cm4gaX0oTWF0aCk7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0LHIsZSl7Zm9yKHZhciBpPVtdLG89MCxzPTA7czxyO3MrKylpZihzJTQpe3ZhciBhPWVbdC5jaGFyQ29kZUF0KHMtMSldPDxzJTQqMixjPWVbdC5jaGFyQ29kZUF0KHMpXT4+PjYtcyU0KjI7aVtvPj4+Ml18PShhfGMpPDwyNC1vJTQqOCxvKyt9cmV0dXJuIG4uY3JlYXRlKGksbyl9dmFyIGU9dCxpPWUubGliLG49aS5Xb3JkQXJyYXksbz1lLmVuYztvLkJhc2U2ND17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe3ZhciByPXQud29yZHMsZT10LnNpZ0J5dGVzLGk9dGhpcy5fbWFwO3QuY2xhbXAoKTtmb3IodmFyIG49W10sbz0wO288ZTtvKz0zKWZvcih2YXIgcz1yW28+Pj4yXT4+PjI0LW8lNCo4JjI1NSxhPXJbbysxPj4+Ml0+Pj4yNC0obysxKSU0KjgmMjU1LGM9cltvKzI+Pj4yXT4+PjI0LShvKzIpJTQqOCYyNTUsaD1zPDwxNnxhPDw4fGMsbD0wO2w8NCYmbysuNzUqbDxlO2wrKyluLnB1c2goaS5jaGFyQXQoaD4+PjYqKDMtbCkmNjMpKTt2YXIgZj1pLmNoYXJBdCg2NCk7aWYoZilmb3IoO24ubGVuZ3RoJTQ7KW4ucHVzaChmKTtyZXR1cm4gbi5qb2luKFwiXCIpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxpPXRoaXMuX21hcCxuPXRoaXMuX3JldmVyc2VNYXA7aWYoIW4pe249dGhpcy5fcmV2ZXJzZU1hcD1bXTtmb3IodmFyIG89MDtvPGkubGVuZ3RoO28rKyluW2kuY2hhckNvZGVBdChvKV09b312YXIgcz1pLmNoYXJBdCg2NCk7aWYocyl7dmFyIGE9dC5pbmRleE9mKHMpO2EhPT0tMSYmKGU9YSl9cmV0dXJuIHIodCxlLG4pfSxfbWFwOlwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz1cIn19KCksZnVuY3Rpb24ocil7ZnVuY3Rpb24gZSh0LHIsZSxpLG4sbyxzKXt2YXIgYT10KyhyJmV8fnImaSkrbitzO3JldHVybihhPDxvfGE+Pj4zMi1vKStyfWZ1bmN0aW9uIGkodCxyLGUsaSxuLG8scyl7dmFyIGE9dCsociZpfGUmfmkpK24rcztyZXR1cm4oYTw8b3xhPj4+MzItbykrcn1mdW5jdGlvbiBuKHQscixlLGksbixvLHMpe3ZhciBhPXQrKHJeZV5pKStuK3M7cmV0dXJuKGE8PG98YT4+PjMyLW8pK3J9ZnVuY3Rpb24gbyh0LHIsZSxpLG4sbyxzKXt2YXIgYT10KyhlXihyfH5pKSkrbitzO3JldHVybihhPDxvfGE+Pj4zMi1vKStyfXZhciBzPXQsYT1zLmxpYixjPWEuV29yZEFycmF5LGg9YS5IYXNoZXIsbD1zLmFsZ28sZj1bXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PDY0O3QrKylmW3RdPTQyOTQ5NjcyOTYqci5hYnMoci5zaW4odCsxKSl8MH0oKTt2YXIgdT1sLk1ENT1oLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBjLmluaXQoWzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3OF0pfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIHM9MDtzPDE2O3MrKyl7dmFyIGE9citzLGM9dFthXTt0W2FdPTE2NzExOTM1JihjPDw4fGM+Pj4yNCl8NDI3ODI1NTM2MCYoYzw8MjR8Yz4+PjgpfXZhciBoPXRoaXMuX2hhc2gud29yZHMsbD10W3IrMF0sdT10W3IrMV0sZD10W3IrMl0sdj10W3IrM10scD10W3IrNF0sXz10W3IrNV0seT10W3IrNl0sZz10W3IrN10sQj10W3IrOF0sdz10W3IrOV0saz10W3IrMTBdLFM9dFtyKzExXSxtPXRbcisxMl0seD10W3IrMTNdLGI9dFtyKzE0XSxIPXRbcisxNV0sej1oWzBdLEE9aFsxXSxDPWhbMl0sRD1oWzNdO3o9ZSh6LEEsQyxELGwsNyxmWzBdKSxEPWUoRCx6LEEsQyx1LDEyLGZbMV0pLEM9ZShDLEQseixBLGQsMTcsZlsyXSksQT1lKEEsQyxELHosdiwyMixmWzNdKSx6PWUoeixBLEMsRCxwLDcsZls0XSksRD1lKEQseixBLEMsXywxMixmWzVdKSxDPWUoQyxELHosQSx5LDE3LGZbNl0pLEE9ZShBLEMsRCx6LGcsMjIsZls3XSksej1lKHosQSxDLEQsQiw3LGZbOF0pLEQ9ZShELHosQSxDLHcsMTIsZls5XSksQz1lKEMsRCx6LEEsaywxNyxmWzEwXSksQT1lKEEsQyxELHosUywyMixmWzExXSksej1lKHosQSxDLEQsbSw3LGZbMTJdKSxEPWUoRCx6LEEsQyx4LDEyLGZbMTNdKSxDPWUoQyxELHosQSxiLDE3LGZbMTRdKSxBPWUoQSxDLEQseixILDIyLGZbMTVdKSx6PWkoeixBLEMsRCx1LDUsZlsxNl0pLEQ9aShELHosQSxDLHksOSxmWzE3XSksQz1pKEMsRCx6LEEsUywxNCxmWzE4XSksQT1pKEEsQyxELHosbCwyMCxmWzE5XSksej1pKHosQSxDLEQsXyw1LGZbMjBdKSxEPWkoRCx6LEEsQyxrLDksZlsyMV0pLEM9aShDLEQseixBLEgsMTQsZlsyMl0pLEE9aShBLEMsRCx6LHAsMjAsZlsyM10pLHo9aSh6LEEsQyxELHcsNSxmWzI0XSksRD1pKEQseixBLEMsYiw5LGZbMjVdKSxDPWkoQyxELHosQSx2LDE0LGZbMjZdKSxBPWkoQSxDLEQseixCLDIwLGZbMjddKSx6PWkoeixBLEMsRCx4LDUsZlsyOF0pLEQ9aShELHosQSxDLGQsOSxmWzI5XSksQz1pKEMsRCx6LEEsZywxNCxmWzMwXSksQT1pKEEsQyxELHosbSwyMCxmWzMxXSksej1uKHosQSxDLEQsXyw0LGZbMzJdKSxEPW4oRCx6LEEsQyxCLDExLGZbMzNdKSxDPW4oQyxELHosQSxTLDE2LGZbMzRdKSxBPW4oQSxDLEQseixiLDIzLGZbMzVdKSx6PW4oeixBLEMsRCx1LDQsZlszNl0pLEQ9bihELHosQSxDLHAsMTEsZlszN10pLEM9bihDLEQseixBLGcsMTYsZlszOF0pLEE9bihBLEMsRCx6LGssMjMsZlszOV0pLHo9bih6LEEsQyxELHgsNCxmWzQwXSksRD1uKEQseixBLEMsbCwxMSxmWzQxXSksQz1uKEMsRCx6LEEsdiwxNixmWzQyXSksQT1uKEEsQyxELHoseSwyMyxmWzQzXSksej1uKHosQSxDLEQsdyw0LGZbNDRdKSxEPW4oRCx6LEEsQyxtLDExLGZbNDVdKSxDPW4oQyxELHosQSxILDE2LGZbNDZdKSxBPW4oQSxDLEQseixkLDIzLGZbNDddKSx6PW8oeixBLEMsRCxsLDYsZls0OF0pLEQ9byhELHosQSxDLGcsMTAsZls0OV0pLEM9byhDLEQseixBLGIsMTUsZls1MF0pLEE9byhBLEMsRCx6LF8sMjEsZls1MV0pLHo9byh6LEEsQyxELG0sNixmWzUyXSksRD1vKEQseixBLEMsdiwxMCxmWzUzXSksQz1vKEMsRCx6LEEsaywxNSxmWzU0XSksQT1vKEEsQyxELHosdSwyMSxmWzU1XSksej1vKHosQSxDLEQsQiw2LGZbNTZdKSxEPW8oRCx6LEEsQyxILDEwLGZbNTddKSxDPW8oQyxELHosQSx5LDE1LGZbNThdKSxBPW8oQSxDLEQseix4LDIxLGZbNTldKSx6PW8oeixBLEMsRCxwLDYsZls2MF0pLEQ9byhELHosQSxDLFMsMTAsZls2MV0pLEM9byhDLEQseixBLGQsMTUsZls2Ml0pLEE9byhBLEMsRCx6LHcsMjEsZls2M10pLGhbMF09aFswXSt6fDAsaFsxXT1oWzFdK0F8MCxoWzJdPWhbMl0rQ3wwLGhbM109aFszXStEfDB9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGF0YSxlPXQud29yZHMsaT04KnRoaXMuX25EYXRhQnl0ZXMsbj04KnQuc2lnQnl0ZXM7ZVtuPj4+NV18PTEyODw8MjQtbiUzMjt2YXIgbz1yLmZsb29yKGkvNDI5NDk2NzI5Nikscz1pO2VbKG4rNjQ+Pj45PDw0KSsxNV09MTY3MTE5MzUmKG88PDh8bz4+PjI0KXw0Mjc4MjU1MzYwJihvPDwyNHxvPj4+OCksZVsobis2ND4+Pjk8PDQpKzE0XT0xNjcxMTkzNSYoczw8OHxzPj4+MjQpfDQyNzgyNTUzNjAmKHM8PDI0fHM+Pj44KSx0LnNpZ0J5dGVzPTQqKGUubGVuZ3RoKzEpLHRoaXMuX3Byb2Nlc3MoKTtmb3IodmFyIGE9dGhpcy5faGFzaCxjPWEud29yZHMsaD0wO2g8NDtoKyspe3ZhciBsPWNbaF07Y1toXT0xNjcxMTkzNSYobDw8OHxsPj4+MjQpfDQyNzgyNTUzNjAmKGw8PDI0fGw+Pj44KX1yZXR1cm4gYX0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1oLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLHR9fSk7cy5NRDU9aC5fY3JlYXRlSGVscGVyKHUpLHMuSG1hY01ENT1oLl9jcmVhdGVIbWFjSGVscGVyKHUpfShNYXRoKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLmxpYixpPWUuV29yZEFycmF5LG49ZS5IYXNoZXIsbz1yLmFsZ28scz1bXSxhPW8uU0hBMT1uLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBpLmluaXQoWzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3OCwzMjg1Mzc3NTIwXSl9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLl9oYXNoLndvcmRzLGk9ZVswXSxuPWVbMV0sbz1lWzJdLGE9ZVszXSxjPWVbNF0saD0wO2g8ODA7aCsrKXtpZihoPDE2KXNbaF09MHx0W3IraF07ZWxzZXt2YXIgbD1zW2gtM11ec1toLThdXnNbaC0xNF1ec1toLTE2XTtzW2hdPWw8PDF8bD4+PjMxfXZhciBmPShpPDw1fGk+Pj4yNykrYytzW2hdO2YrPWg8MjA/KG4mb3x+biZhKSsxNTE4NTAwMjQ5Omg8NDA/KG5eb15hKSsxODU5Nzc1MzkzOmg8NjA/KG4mb3xuJmF8byZhKS0xODk0MDA3NTg4OihuXm9eYSktODk5NDk3NTE0LGM9YSxhPW8sbz1uPDwzMHxuPj4+MixuPWksaT1mfWVbMF09ZVswXStpfDAsZVsxXT1lWzFdK258MCxlWzJdPWVbMl0rb3wwLGVbM109ZVszXSthfDAsZVs0XT1lWzRdK2N8MH0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLHI9dC53b3JkcyxlPTgqdGhpcy5fbkRhdGFCeXRlcyxpPTgqdC5zaWdCeXRlcztyZXR1cm4gcltpPj4+NV18PTEyODw8MjQtaSUzMixyWyhpKzY0Pj4+OTw8NCkrMTRdPU1hdGguZmxvb3IoZS80Mjk0OTY3Mjk2KSxyWyhpKzY0Pj4+OTw8NCkrMTVdPWUsdC5zaWdCeXRlcz00KnIubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKSx0aGlzLl9oYXNofSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PW4uY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gdC5faGFzaD10aGlzLl9oYXNoLmNsb25lKCksdH19KTtyLlNIQTE9bi5fY3JlYXRlSGVscGVyKGEpLHIuSG1hY1NIQTE9bi5fY3JlYXRlSG1hY0hlbHBlcihhKX0oKSxmdW5jdGlvbihyKXt2YXIgZT10LGk9ZS5saWIsbj1pLldvcmRBcnJheSxvPWkuSGFzaGVyLHM9ZS5hbGdvLGE9W10sYz1bXTshZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe2Zvcih2YXIgZT1yLnNxcnQodCksaT0yO2k8PWU7aSsrKWlmKCEodCVpKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBlKHQpe3JldHVybiA0Mjk0OTY3Mjk2Kih0LSgwfHQpKXwwfWZvcih2YXIgaT0yLG49MDtuPDY0Oyl0KGkpJiYobjw4JiYoYVtuXT1lKHIucG93KGksLjUpKSksY1tuXT1lKHIucG93KGksMS8zKSksbisrKSxpKyt9KCk7dmFyIGg9W10sbD1zLlNIQTI1Nj1vLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBuLmluaXQoYS5zbGljZSgwKSl9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLl9oYXNoLndvcmRzLGk9ZVswXSxuPWVbMV0sbz1lWzJdLHM9ZVszXSxhPWVbNF0sbD1lWzVdLGY9ZVs2XSx1PWVbN10sZD0wO2Q8NjQ7ZCsrKXtpZihkPDE2KWhbZF09MHx0W3IrZF07ZWxzZXt2YXIgdj1oW2QtMTVdLHA9KHY8PDI1fHY+Pj43KV4odjw8MTR8dj4+PjE4KV52Pj4+MyxfPWhbZC0yXSx5PShfPDwxNXxfPj4+MTcpXihfPDwxM3xfPj4+MTkpXl8+Pj4xMDtoW2RdPXAraFtkLTddK3kraFtkLTE2XX12YXIgZz1hJmxefmEmZixCPWkmbl5pJm9ebiZvLHc9KGk8PDMwfGk+Pj4yKV4oaTw8MTl8aT4+PjEzKV4oaTw8MTB8aT4+PjIyKSxrPShhPDwyNnxhPj4+NileKGE8PDIxfGE+Pj4xMSleKGE8PDd8YT4+PjI1KSxTPXUraytnK2NbZF0raFtkXSxtPXcrQjt1PWYsZj1sLGw9YSxhPXMrU3wwLHM9byxvPW4sbj1pLGk9UyttfDB9ZVswXT1lWzBdK2l8MCxlWzFdPWVbMV0rbnwwLGVbMl09ZVsyXStvfDAsZVszXT1lWzNdK3N8MCxlWzRdPWVbNF0rYXwwLGVbNV09ZVs1XStsfDAsZVs2XT1lWzZdK2Z8MCxlWzddPWVbN10rdXwwfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEsZT10LndvcmRzLGk9OCp0aGlzLl9uRGF0YUJ5dGVzLG49OCp0LnNpZ0J5dGVzO3JldHVybiBlW24+Pj41XXw9MTI4PDwyNC1uJTMyLGVbKG4rNjQ+Pj45PDw0KSsxNF09ci5mbG9vcihpLzQyOTQ5NjcyOTYpLGVbKG4rNjQ+Pj45PDw0KSsxNV09aSx0LnNpZ0J5dGVzPTQqZS5sZW5ndGgsdGhpcy5fcHJvY2VzcygpLHRoaXMuX2hhc2h9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9by5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fX0pO2UuU0hBMjU2PW8uX2NyZWF0ZUhlbHBlcihsKSxlLkhtYWNTSEEyNTY9by5fY3JlYXRlSG1hY0hlbHBlcihsKX0oTWF0aCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKHQpe3JldHVybiB0PDw4JjQyNzgyNTUzNjB8dD4+PjgmMTY3MTE5MzV9dmFyIGU9dCxpPWUubGliLG49aS5Xb3JkQXJyYXksbz1lLmVuYztvLlV0ZjE2PW8uVXRmMTZCRT17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10LndvcmRzLGU9dC5zaWdCeXRlcyxpPVtdLG49MDtuPGU7bis9Mil7dmFyIG89cltuPj4+Ml0+Pj4xNi1uJTQqOCY2NTUzNTtpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShvKSl9cmV0dXJuIGkuam9pbihcIlwiKX0scGFyc2U6ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQubGVuZ3RoLGU9W10saT0wO2k8cjtpKyspZVtpPj4+MV18PXQuY2hhckNvZGVBdChpKTw8MTYtaSUyKjE2O3JldHVybiBuLmNyZWF0ZShlLDIqcil9fTtvLlV0ZjE2TEU9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC53b3JkcyxpPXQuc2lnQnl0ZXMsbj1bXSxvPTA7bzxpO28rPTIpe3ZhciBzPXIoZVtvPj4+Ml0+Pj4xNi1vJTQqOCY2NTUzNSk7bi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUocykpfXJldHVybiBuLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxpPVtdLG89MDtvPGU7bysrKWlbbz4+PjFdfD1yKHQuY2hhckNvZGVBdChvKTw8MTYtbyUyKjE2KTtyZXR1cm4gbi5jcmVhdGUoaSwyKmUpfX19KCksZnVuY3Rpb24oKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBBcnJheUJ1ZmZlcil7dmFyIHI9dCxlPXIubGliLGk9ZS5Xb3JkQXJyYXksbj1pLmluaXQsbz1pLmluaXQ9ZnVuY3Rpb24odCl7aWYodCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiYodD1uZXcgVWludDhBcnJheSh0KSksKHQgaW5zdGFuY2VvZiBJbnQ4QXJyYXl8fFwidW5kZWZpbmVkXCIhPXR5cGVvZiBVaW50OENsYW1wZWRBcnJheSYmdCBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5fHx0IGluc3RhbmNlb2YgSW50MTZBcnJheXx8dCBpbnN0YW5jZW9mIFVpbnQxNkFycmF5fHx0IGluc3RhbmNlb2YgSW50MzJBcnJheXx8dCBpbnN0YW5jZW9mIFVpbnQzMkFycmF5fHx0IGluc3RhbmNlb2YgRmxvYXQzMkFycmF5fHx0IGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5KSYmKHQ9bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsdC5ieXRlT2Zmc2V0LHQuYnl0ZUxlbmd0aCkpLHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtmb3IodmFyIHI9dC5ieXRlTGVuZ3RoLGU9W10saT0wO2k8cjtpKyspZVtpPj4+Ml18PXRbaV08PDI0LWklNCo4O24uY2FsbCh0aGlzLGUscil9ZWxzZSBuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07by5wcm90b3R5cGU9aX19KCksZnVuY3Rpb24ocil7ZnVuY3Rpb24gZSh0LHIsZSl7cmV0dXJuIHRecl5lfWZ1bmN0aW9uIGkodCxyLGUpe3JldHVybiB0JnJ8fnQmZX1mdW5jdGlvbiBuKHQscixlKXtyZXR1cm4odHx+cileZX1mdW5jdGlvbiBvKHQscixlKXtyZXR1cm4gdCZlfHImfmV9ZnVuY3Rpb24gcyh0LHIsZSl7cmV0dXJuIHReKHJ8fmUpfWZ1bmN0aW9uIGEodCxyKXtyZXR1cm4gdDw8cnx0Pj4+MzItcn12YXIgYz10LGg9Yy5saWIsbD1oLldvcmRBcnJheSxmPWguSGFzaGVyLHU9Yy5hbGdvLGQ9bC5jcmVhdGUoWzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsNyw0LDEzLDEsMTAsNiwxNSwzLDEyLDAsOSw1LDIsMTQsMTEsOCwzLDEwLDE0LDQsOSwxNSw4LDEsMiw3LDAsNiwxMywxMSw1LDEyLDEsOSwxMSwxMCwwLDgsMTIsNCwxMywzLDcsMTUsMTQsNSw2LDIsNCwwLDUsOSw3LDEyLDIsMTAsMTQsMSwzLDgsMTEsNiwxNSwxM10pLHY9bC5jcmVhdGUoWzUsMTQsNywwLDksMiwxMSw0LDEzLDYsMTUsOCwxLDEwLDMsMTIsNiwxMSwzLDcsMCwxMyw1LDEwLDE0LDE1LDgsMTIsNCw5LDEsMiwxNSw1LDEsMyw3LDE0LDYsOSwxMSw4LDEyLDIsMTAsMCw0LDEzLDgsNiw0LDEsMywxMSwxNSwwLDUsMTIsMiwxMyw5LDcsMTAsMTQsMTIsMTUsMTAsNCwxLDUsOCw3LDYsMiwxMywxNCwwLDMsOSwxMV0pLHA9bC5jcmVhdGUoWzExLDE0LDE1LDEyLDUsOCw3LDksMTEsMTMsMTQsMTUsNiw3LDksOCw3LDYsOCwxMywxMSw5LDcsMTUsNywxMiwxNSw5LDExLDcsMTMsMTIsMTEsMTMsNiw3LDE0LDksMTMsMTUsMTQsOCwxMyw2LDUsMTIsNyw1LDExLDEyLDE0LDE1LDE0LDE1LDksOCw5LDE0LDUsNiw4LDYsNSwxMiw5LDE1LDUsMTEsNiw4LDEzLDEyLDUsMTIsMTMsMTQsMTEsOCw1LDZdKSxfPWwuY3JlYXRlKFs4LDksOSwxMSwxMywxNSwxNSw1LDcsNyw4LDExLDE0LDE0LDEyLDYsOSwxMywxNSw3LDEyLDgsOSwxMSw3LDcsMTIsNyw2LDE1LDEzLDExLDksNywxNSwxMSw4LDYsNiwxNCwxMiwxMyw1LDE0LDEzLDEzLDcsNSwxNSw1LDgsMTEsMTQsMTQsNiwxNCw2LDksMTIsOSwxMiw1LDE1LDgsOCw1LDEyLDksMTIsNSwxNCw2LDgsMTMsNiw1LDE1LDEzLDExLDExXSkseT1sLmNyZWF0ZShbMCwxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsMjQwMDk1OTcwOCwyODQwODUzODM4XSksZz1sLmNyZWF0ZShbMTM1MjgyOTkyNiwxNTQ4NjAzNjg0LDE4MzYwNzI2OTEsMjA1Mzk5NDIxNywwXSksQj11LlJJUEVNRDE2MD1mLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPWwuY3JlYXRlKFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUyMF0pfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGM9MDtjPDE2O2MrKyl7dmFyIGg9citjLGw9dFtoXTt0W2hdPTE2NzExOTM1JihsPDw4fGw+Pj4yNCl8NDI3ODI1NTM2MCYobDw8MjR8bD4+PjgpfXZhciBmLHUsQix3LGssUyxtLHgsYixILHo9dGhpcy5faGFzaC53b3JkcyxBPXkud29yZHMsQz1nLndvcmRzLEQ9ZC53b3JkcyxSPXYud29yZHMsRT1wLndvcmRzLE09Xy53b3JkcztTPWY9elswXSxtPXU9elsxXSx4PUI9elsyXSxiPXc9elszXSxIPWs9els0XTtmb3IodmFyIEYsYz0wO2M8ODA7Yys9MSlGPWYrdFtyK0RbY11dfDAsRis9YzwxNj9lKHUsQix3KStBWzBdOmM8MzI/aSh1LEIsdykrQVsxXTpjPDQ4P24odSxCLHcpK0FbMl06Yzw2ND9vKHUsQix3KStBWzNdOnModSxCLHcpK0FbNF0sRnw9MCxGPWEoRixFW2NdKSxGPUYra3wwLGY9ayxrPXcsdz1hKEIsMTApLEI9dSx1PUYsRj1TK3RbcitSW2NdXXwwLEYrPWM8MTY/cyhtLHgsYikrQ1swXTpjPDMyP28obSx4LGIpK0NbMV06Yzw0OD9uKG0seCxiKStDWzJdOmM8NjQ/aShtLHgsYikrQ1szXTplKG0seCxiKStDWzRdLEZ8PTAsRj1hKEYsTVtjXSksRj1GK0h8MCxTPUgsSD1iLGI9YSh4LDEwKSx4PW0sbT1GO0Y9elsxXStCK2J8MCx6WzFdPXpbMl0rdytIfDAselsyXT16WzNdK2srU3wwLHpbM109els0XStmK218MCx6WzRdPXpbMF0rdSt4fDAselswXT1GfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEscj10LndvcmRzLGU9OCp0aGlzLl9uRGF0YUJ5dGVzLGk9OCp0LnNpZ0J5dGVzO3JbaT4+PjVdfD0xMjg8PDI0LWklMzIsclsoaSs2ND4+Pjk8PDQpKzE0XT0xNjcxMTkzNSYoZTw8OHxlPj4+MjQpfDQyNzgyNTUzNjAmKGU8PDI0fGU+Pj44KSx0LnNpZ0J5dGVzPTQqKHIubGVuZ3RoKzEpLHRoaXMuX3Byb2Nlc3MoKTtmb3IodmFyIG49dGhpcy5faGFzaCxvPW4ud29yZHMscz0wO3M8NTtzKyspe3ZhciBhPW9bc107b1tzXT0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KX1yZXR1cm4gbn0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1mLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLHR9fSk7Yy5SSVBFTUQxNjA9Zi5fY3JlYXRlSGVscGVyKEIpLGMuSG1hY1JJUEVNRDE2MD1mLl9jcmVhdGVIbWFjSGVscGVyKEIpfShNYXRoKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLmxpYixpPWUuQmFzZSxuPXIuZW5jLG89bi5VdGY4LHM9ci5hbGdvO3MuSE1BQz1pLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LHIpe3Q9dGhpcy5faGFzaGVyPW5ldyB0LmluaXQsXCJzdHJpbmdcIj09dHlwZW9mIHImJihyPW8ucGFyc2UocikpO3ZhciBlPXQuYmxvY2tTaXplLGk9NCplO3Iuc2lnQnl0ZXM+aSYmKHI9dC5maW5hbGl6ZShyKSksci5jbGFtcCgpO2Zvcih2YXIgbj10aGlzLl9vS2V5PXIuY2xvbmUoKSxzPXRoaXMuX2lLZXk9ci5jbG9uZSgpLGE9bi53b3JkcyxjPXMud29yZHMsaD0wO2g8ZTtoKyspYVtoXV49MTU0OTU1NjgyOCxjW2hdXj05MDk1MjI0ODY7bi5zaWdCeXRlcz1zLnNpZ0J5dGVzPWksdGhpcy5yZXNldCgpfSxyZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2hhc2hlcjt0LnJlc2V0KCksdC51cGRhdGUodGhpcy5faUtleSl9LHVwZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faGFzaGVyLnVwZGF0ZSh0KSx0aGlzfSxmaW5hbGl6ZTpmdW5jdGlvbih0KXt2YXIgcj10aGlzLl9oYXNoZXIsZT1yLmZpbmFsaXplKHQpO3IucmVzZXQoKTt2YXIgaT1yLmZpbmFsaXplKHRoaXMuX29LZXkuY2xvbmUoKS5jb25jYXQoZSkpO3JldHVybiBpfX0pfSgpLGZ1bmN0aW9uKCl7dmFyIHI9dCxlPXIubGliLGk9ZS5CYXNlLG49ZS5Xb3JkQXJyYXksbz1yLmFsZ28scz1vLlNIQTEsYT1vLkhNQUMsYz1vLlBCS0RGMj1pLmV4dGVuZCh7Y2ZnOmkuZXh0ZW5kKHtrZXlTaXplOjQsaGFzaGVyOnMsaXRlcmF0aW9uczoxfSksaW5pdDpmdW5jdGlvbih0KXt0aGlzLmNmZz10aGlzLmNmZy5leHRlbmQodCl9LGNvbXB1dGU6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dGhpcy5jZmcsaT1hLmNyZWF0ZShlLmhhc2hlcix0KSxvPW4uY3JlYXRlKCkscz1uLmNyZWF0ZShbMV0pLGM9by53b3JkcyxoPXMud29yZHMsbD1lLmtleVNpemUsZj1lLml0ZXJhdGlvbnM7Yy5sZW5ndGg8bDspe3ZhciB1PWkudXBkYXRlKHIpLmZpbmFsaXplKHMpO2kucmVzZXQoKTtmb3IodmFyIGQ9dS53b3Jkcyx2PWQubGVuZ3RoLHA9dSxfPTE7XzxmO18rKyl7cD1pLmZpbmFsaXplKHApLGkucmVzZXQoKTtmb3IodmFyIHk9cC53b3JkcyxnPTA7Zzx2O2crKylkW2ddXj15W2ddfW8uY29uY2F0KHUpLGhbMF0rK31yZXR1cm4gby5zaWdCeXRlcz00Kmwsb319KTtyLlBCS0RGMj1mdW5jdGlvbih0LHIsZSl7cmV0dXJuIGMuY3JlYXRlKGUpLmNvbXB1dGUodCxyKX19KCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLkJhc2Usbj1lLldvcmRBcnJheSxvPXIuYWxnbyxzPW8uTUQ1LGE9by5FdnBLREY9aS5leHRlbmQoe2NmZzppLmV4dGVuZCh7a2V5U2l6ZTo0LGhhc2hlcjpzLGl0ZXJhdGlvbnM6MX0pLGluaXQ6ZnVuY3Rpb24odCl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKHQpfSxjb21wdXRlOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXRoaXMuY2ZnLGk9ZS5oYXNoZXIuY3JlYXRlKCksbz1uLmNyZWF0ZSgpLHM9by53b3JkcyxhPWUua2V5U2l6ZSxjPWUuaXRlcmF0aW9ucztzLmxlbmd0aDxhOyl7aCYmaS51cGRhdGUoaCk7dmFyIGg9aS51cGRhdGUodCkuZmluYWxpemUocik7aS5yZXNldCgpO2Zvcih2YXIgbD0xO2w8YztsKyspaD1pLmZpbmFsaXplKGgpLGkucmVzZXQoKTtvLmNvbmNhdChoKX1yZXR1cm4gby5zaWdCeXRlcz00KmEsb319KTtyLkV2cEtERj1mdW5jdGlvbih0LHIsZSl7cmV0dXJuIGEuY3JlYXRlKGUpLmNvbXB1dGUodCxyKX19KCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLldvcmRBcnJheSxuPXIuYWxnbyxvPW4uU0hBMjU2LHM9bi5TSEEyMjQ9by5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgaS5pbml0KFszMjM4MzcxMDMyLDkxNDE1MDY2Myw4MTI3MDI5OTksNDE0NDkxMjY5Nyw0MjkwNzc1ODU3LDE3NTA2MDMwMjUsMTY5NDA3NjgzOSwzMjA0MDc1NDI4XSl9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9by5fZG9GaW5hbGl6ZS5jYWxsKHRoaXMpO3JldHVybiB0LnNpZ0J5dGVzLT00LHR9fSk7ci5TSEEyMjQ9by5fY3JlYXRlSGVscGVyKHMpLHIuSG1hY1NIQTIyND1vLl9jcmVhdGVIbWFjSGVscGVyKHMpfSgpLGZ1bmN0aW9uKHIpe3ZhciBlPXQsaT1lLmxpYixuPWkuQmFzZSxvPWkuV29yZEFycmF5LHM9ZS54NjQ9e307cy5Xb3JkPW4uZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQscil7dGhpcy5oaWdoPXQsdGhpcy5sb3c9cn19KSxzLldvcmRBcnJheT1uLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3Q9dGhpcy53b3Jkcz10fHxbXSxlIT1yP3RoaXMuc2lnQnl0ZXM9ZTp0aGlzLnNpZ0J5dGVzPTgqdC5sZW5ndGh9LHRvWDMyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMud29yZHMscj10Lmxlbmd0aCxlPVtdLGk9MDtpPHI7aSsrKXt2YXIgbj10W2ldO2UucHVzaChuLmhpZ2gpLGUucHVzaChuLmxvdyl9cmV0dXJuIG8uY3JlYXRlKGUsdGhpcy5zaWdCeXRlcyl9LGNsb25lOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PW4uY2xvbmUuY2FsbCh0aGlzKSxyPXQud29yZHM9dGhpcy53b3Jkcy5zbGljZSgwKSxlPXIubGVuZ3RoLGk9MDtpPGU7aSsrKXJbaV09cltpXS5jbG9uZSgpO3JldHVybiB0fX0pfSgpLGZ1bmN0aW9uKHIpe3ZhciBlPXQsaT1lLmxpYixuPWkuV29yZEFycmF5LG89aS5IYXNoZXIscz1lLng2NCxhPXMuV29yZCxjPWUuYWxnbyxoPVtdLGw9W10sZj1bXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9MSxyPTAsZT0wO2U8MjQ7ZSsrKXtoW3QrNSpyXT0oZSsxKSooZSsyKS8yJTY0O3ZhciBpPXIlNSxuPSgyKnQrMypyKSU1O3Q9aSxyPW59Zm9yKHZhciB0PTA7dDw1O3QrKylmb3IodmFyIHI9MDtyPDU7cisrKWxbdCs1KnJdPXIrKDIqdCszKnIpJTUqNTtmb3IodmFyIG89MSxzPTA7czwyNDtzKyspe2Zvcih2YXIgYz0wLHU9MCxkPTA7ZDw3O2QrKyl7aWYoMSZvKXt2YXIgdj0oMTw8ZCktMTt2PDMyP3VePTE8PHY6Y149MTw8di0zMn0xMjgmbz9vPW88PDFeMTEzOm88PD0xfWZbc109YS5jcmVhdGUoYyx1KX19KCk7dmFyIHU9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDwyNTt0KyspdVt0XT1hLmNyZWF0ZSgpfSgpO3ZhciBkPWMuU0hBMz1vLmV4dGVuZCh7Y2ZnOm8uY2ZnLmV4dGVuZCh7b3V0cHV0TGVuZ3RoOjUxMn0pLF9kb1Jlc2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX3N0YXRlPVtdLHI9MDtyPDI1O3IrKyl0W3JdPW5ldyBhLmluaXQ7dGhpcy5ibG9ja1NpemU9KDE2MDAtMip0aGlzLmNmZy5vdXRwdXRMZW5ndGgpLzMyfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dGhpcy5fc3RhdGUsaT10aGlzLmJsb2NrU2l6ZS8yLG49MDtuPGk7bisrKXt2YXIgbz10W3IrMipuXSxzPXRbcisyKm4rMV07bz0xNjcxMTkzNSYobzw8OHxvPj4+MjQpfDQyNzgyNTUzNjAmKG88PDI0fG8+Pj44KSxzPTE2NzExOTM1JihzPDw4fHM+Pj4yNCl8NDI3ODI1NTM2MCYoczw8MjR8cz4+PjgpO3ZhciBhPWVbbl07YS5oaWdoXj1zLGEubG93Xj1vfWZvcih2YXIgYz0wO2M8MjQ7YysrKXtmb3IodmFyIGQ9MDtkPDU7ZCsrKXtmb3IodmFyIHY9MCxwPTAsXz0wO188NTtfKyspe3ZhciBhPWVbZCs1Kl9dO3ZePWEuaGlnaCxwXj1hLmxvd312YXIgeT11W2RdO3kuaGlnaD12LHkubG93PXB9Zm9yKHZhciBkPTA7ZDw1O2QrKylmb3IodmFyIGc9dVsoZCs0KSU1XSxCPXVbKGQrMSklNV0sdz1CLmhpZ2gsaz1CLmxvdyx2PWcuaGlnaF4odzw8MXxrPj4+MzEpLHA9Zy5sb3deKGs8PDF8dz4+PjMxKSxfPTA7Xzw1O18rKyl7dmFyIGE9ZVtkKzUqX107YS5oaWdoXj12LGEubG93Xj1wfWZvcih2YXIgUz0xO1M8MjU7UysrKXt2YXIgYT1lW1NdLG09YS5oaWdoLHg9YS5sb3csYj1oW1NdO2lmKGI8MzIpdmFyIHY9bTw8Ynx4Pj4+MzItYixwPXg8PGJ8bT4+PjMyLWI7ZWxzZSB2YXIgdj14PDxiLTMyfG0+Pj42NC1iLHA9bTw8Yi0zMnx4Pj4+NjQtYjt2YXIgSD11W2xbU11dO0guaGlnaD12LEgubG93PXB9dmFyIHo9dVswXSxBPWVbMF07ei5oaWdoPUEuaGlnaCx6Lmxvdz1BLmxvdztmb3IodmFyIGQ9MDtkPDU7ZCsrKWZvcih2YXIgXz0wO188NTtfKyspe3ZhciBTPWQrNSpfLGE9ZVtTXSxDPXVbU10sRD11WyhkKzEpJTUrNSpfXSxSPXVbKGQrMiklNSs1Kl9dO2EuaGlnaD1DLmhpZ2hefkQuaGlnaCZSLmhpZ2gsYS5sb3c9Qy5sb3defkQubG93JlIubG93fXZhciBhPWVbMF0sRT1mW2NdO2EuaGlnaF49RS5oaWdoLGEubG93Xj1FLmxvd319LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGF0YSxlPXQud29yZHMsaT0oOCp0aGlzLl9uRGF0YUJ5dGVzLDgqdC5zaWdCeXRlcyksbz0zMip0aGlzLmJsb2NrU2l6ZTtlW2k+Pj41XXw9MTw8MjQtaSUzMixlWyhyLmNlaWwoKGkrMSkvbykqbz4+PjUpLTFdfD0xMjgsdC5zaWdCeXRlcz00KmUubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKTtmb3IodmFyIHM9dGhpcy5fc3RhdGUsYT10aGlzLmNmZy5vdXRwdXRMZW5ndGgvOCxjPWEvOCxoPVtdLGw9MDtsPGM7bCsrKXt2YXIgZj1zW2xdLHU9Zi5oaWdoLGQ9Zi5sb3c7dT0xNjcxMTkzNSYodTw8OHx1Pj4+MjQpfDQyNzgyNTUzNjAmKHU8PDI0fHU+Pj44KSxkPTE2NzExOTM1JihkPDw4fGQ+Pj4yNCl8NDI3ODI1NTM2MCYoZDw8MjR8ZD4+PjgpLGgucHVzaChkKSxoLnB1c2godSl9cmV0dXJuIG5ldyBuLmluaXQoaCxhKX0sY2xvbmU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9by5jbG9uZS5jYWxsKHRoaXMpLHI9dC5fc3RhdGU9dGhpcy5fc3RhdGUuc2xpY2UoMCksZT0wO2U8MjU7ZSsrKXJbZV09cltlXS5jbG9uZSgpO3JldHVybiB0fX0pO2UuU0hBMz1vLl9jcmVhdGVIZWxwZXIoZCksZS5IbWFjU0hBMz1vLl9jcmVhdGVIbWFjSGVscGVyKGQpfShNYXRoKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHIoKXtyZXR1cm4gcy5jcmVhdGUuYXBwbHkocyxhcmd1bWVudHMpfXZhciBlPXQsaT1lLmxpYixuPWkuSGFzaGVyLG89ZS54NjQscz1vLldvcmQsYT1vLldvcmRBcnJheSxjPWUuYWxnbyxoPVtyKDExMTYzNTI0MDgsMzYwOTc2NzQ1OCkscigxODk5NDQ3NDQxLDYwMjg5MTcyNSkscigzMDQ5MzIzNDcxLDM5NjQ0ODQzOTkpLHIoMzkyMTAwOTU3MywyMTczMjk1NTQ4KSxyKDk2MTk4NzE2Myw0MDgxNjI4NDcyKSxyKDE1MDg5NzA5OTMsMzA1MzgzNDI2NSkscigyNDUzNjM1NzQ4LDI5Mzc2NzE1NzkpLHIoMjg3MDc2MzIyMSwzNjY0NjA5NTYwKSxyKDM2MjQzODEwODAsMjczNDg4MzM5NCkscigzMTA1OTg0MDEsMTE2NDk5NjU0Mikscig2MDcyMjUyNzgsMTMyMzYxMDc2NCkscigxNDI2ODgxOTg3LDM1OTAzMDQ5OTQpLHIoMTkyNTA3ODM4OCw0MDY4MTgyMzgzKSxyKDIxNjIwNzgyMDYsOTkxMzM2MTEzKSxyKDI2MTQ4ODgxMDMsNjMzODAzMzE3KSxyKDMyNDgyMjI1ODAsMzQ3OTc3NDg2OCkscigzODM1MzkwNDAxLDI2NjY2MTM0NTgpLHIoNDAyMjIyNDc3NCw5NDQ3MTExMzkpLHIoMjY0MzQ3MDc4LDIzNDEyNjI3NzMpLHIoNjA0ODA3NjI4LDIwMDc4MDA5MzMpLHIoNzcwMjU1OTgzLDE0OTU5OTA5MDEpLHIoMTI0OTE1MDEyMiwxODU2NDMxMjM1KSxyKDE1NTUwODE2OTIsMzE3NTIxODEzMikscigxOTk2MDY0OTg2LDIxOTg5NTA4MzcpLHIoMjU1NDIyMDg4MiwzOTk5NzE5MzM5KSxyKDI4MjE4MzQzNDksNzY2Nzg0MDE2KSxyKDI5NTI5OTY4MDgsMjU2NjU5NDg3OSkscigzMjEwMzEzNjcxLDMyMDMzMzc5NTYpLHIoMzMzNjU3MTg5MSwxMDM0NDU3MDI2KSxyKDM1ODQ1Mjg3MTEsMjQ2Njk0ODkwMSkscigxMTM5MjY5OTMsMzc1ODMyNjM4MykscigzMzgyNDE4OTUsMTY4NzE3OTM2KSxyKDY2NjMwNzIwNSwxMTg4MTc5OTY0KSxyKDc3MzUyOTkxMiwxNTQ2MDQ1NzM0KSxyKDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSkscigxMzk2MTgyMjkxLDI2NDM4MzM4MjMpLHIoMTY5NTE4MzcwMCwyMzQzNTI3MzkwKSxyKDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCkscigyMTc3MDI2MzUwLDEyMDY3NTkxNDIpLHIoMjQ1Njk1NjAzNywzNDQwNzc2MjcpLHIoMjczMDQ4NTkyMSwxMjkwODYzNDYwKSxyKDI4MjAzMDI0MTEsMzE1ODQ1NDI3MykscigzMjU5NzMwODAwLDM1MDU5NTI2NTcpLHIoMzM0NTc2NDc3MSwxMDYyMTcwMDgpLHIoMzUxNjA2NTgxNywzNjA2MDA4MzQ0KSxyKDM2MDAzNTI4MDQsMTQzMjcyNTc3Nikscig0MDk0NTcxOTA5LDE0NjcwMzE1OTQpLHIoMjc1NDIzMzQ0LDg1MTE2OTcyMCkscig0MzAyMjc3MzQsMzEwMDgyMzc1Mikscig1MDY5NDg2MTYsMTM2MzI1ODE5NSkscig2NTkwNjA1NTYsMzc1MDY4NTU5Mykscig4ODM5OTc4NzcsMzc4NTA1MDI4MCkscig5NTgxMzk1NzEsMzMxODMwNzQyNykscigxMzIyODIyMjE4LDM4MTI3MjM0MDMpLHIoMTUzNzAwMjA2MywyMDAzMDM0OTk1KSxyKDE3NDc4NzM3NzksMzYwMjAzNjg5OSkscigxOTU1NTYyMjIyLDE1NzU5OTAwMTIpLHIoMjAyNDEwNDgxNSwxMTI1NTkyOTI4KSxyKDIyMjc3MzA0NTIsMjcxNjkwNDMwNikscigyMzYxODUyNDI0LDQ0Mjc3NjA0NCkscigyNDI4NDM2NDc0LDU5MzY5ODM0NCkscigyNzU2NzM0MTg3LDM3MzMxMTAyNDkpLHIoMzIwNDAzMTQ3OSwyOTk5MzUxNTczKSxyKDMzMjkzMjUyOTgsMzgxNTkyMDQyNykscigzMzkxNTY5NjE0LDM5MjgzODM5MDApLHIoMzUxNTI2NzI3MSw1NjYyODA3MTEpLHIoMzk0MDE4NzYwNiwzNDU0MDY5NTM0KSxyKDQxMTg2MzAyNzEsNDAwMDIzOTk5MikscigxMTY0MTg0NzQsMTkxNDEzODU1NCkscigxNzQyOTI0MjEsMjczMTA1NTI3MCkscigyODkzODAzNTYsMzIwMzk5MzAwNikscig0NjAzOTMyNjksMzIwNjIwMzE1KSxyKDY4NTQ3MTczMyw1ODc0OTY4MzYpLHIoODUyMTQyOTcxLDEwODY3OTI4NTEpLHIoMTAxNzAzNjI5OCwzNjU1NDMxMDApLHIoMTEyNjAwMDU4MCwyNjE4Mjk3Njc2KSxyKDEyODgwMzM0NzAsMzQwOTg1NTE1OCkscigxNTAxNTA1OTQ4LDQyMzQ1MDk4NjYpLHIoMTYwNzE2NzkxNSw5ODcxNjc0NjgpLHIoMTgxNjQwMjMxNiwxMjQ2MTg5NTkxKV0sbD1bXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PDgwO3QrKylsW3RdPXIoKX0oKTt2YXIgZj1jLlNIQTUxMj1uLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBhLmluaXQoW25ldyBzLmluaXQoMTc3OTAzMzcwMyw0MDg5MjM1NzIwKSxuZXcgcy5pbml0KDMxNDQxMzQyNzcsMjIyNzg3MzU5NSksbmV3IHMuaW5pdCgxMDEzOTA0MjQyLDQyNzExNzU3MjMpLG5ldyBzLmluaXQoMjc3MzQ4MDc2MiwxNTk1NzUwMTI5KSxuZXcgcy5pbml0KDEzNTk4OTMxMTksMjkxNzU2NTEzNyksbmV3IHMuaW5pdCgyNjAwODIyOTI0LDcyNTUxMTE5OSksbmV3IHMuaW5pdCg1Mjg3MzQ2MzUsNDIxNTM4OTU0NyksbmV3IHMuaW5pdCgxNTQxNDU5MjI1LDMyNzAzMzIwOSldKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXRoaXMuX2hhc2gud29yZHMsaT1lWzBdLG49ZVsxXSxvPWVbMl0scz1lWzNdLGE9ZVs0XSxjPWVbNV0sZj1lWzZdLHU9ZVs3XSxkPWkuaGlnaCx2PWkubG93LHA9bi5oaWdoLF89bi5sb3cseT1vLmhpZ2gsZz1vLmxvdyxCPXMuaGlnaCx3PXMubG93LGs9YS5oaWdoLFM9YS5sb3csbT1jLmhpZ2gseD1jLmxvdyxiPWYuaGlnaCxIPWYubG93LHo9dS5oaWdoLEE9dS5sb3csQz1kLEQ9dixSPXAsRT1fLE09eSxGPWcsUD1CLFc9dyxPPWssVT1TLEk9bSxLPXgsWD1iLEw9SCxqPXosTj1BLFQ9MDtUPDgwO1QrKyl7dmFyIFo9bFtUXTtpZihUPDE2KXZhciBxPVouaGlnaD0wfHRbcisyKlRdLEc9Wi5sb3c9MHx0W3IrMipUKzFdO2Vsc2V7dmFyIEo9bFtULTE1XSwkPUouaGlnaCxRPUoubG93LFY9KCQ+Pj4xfFE8PDMxKV4oJD4+Pjh8UTw8MjQpXiQ+Pj43LFk9KFE+Pj4xfCQ8PDMxKV4oUT4+Pjh8JDw8MjQpXihRPj4+N3wkPDwyNSksdHQ9bFtULTJdLHJ0PXR0LmhpZ2gsZXQ9dHQubG93LGl0PShydD4+PjE5fGV0PDwxMyleKHJ0PDwzfGV0Pj4+MjkpXnJ0Pj4+NixudD0oZXQ+Pj4xOXxydDw8MTMpXihldDw8M3xydD4+PjI5KV4oZXQ+Pj42fHJ0PDwyNiksb3Q9bFtULTddLHN0PW90LmhpZ2gsYXQ9b3QubG93LGN0PWxbVC0xNl0saHQ9Y3QuaGlnaCxsdD1jdC5sb3csRz1ZK2F0LHE9VitzdCsoRz4+PjA8WT4+PjA/MTowKSxHPUcrbnQscT1xK2l0KyhHPj4+MDxudD4+PjA/MTowKSxHPUcrbHQscT1xK2h0KyhHPj4+MDxsdD4+PjA/MTowKTtaLmhpZ2g9cSxaLmxvdz1HfXZhciBmdD1PJklefk8mWCx1dD1VJkteflUmTCxkdD1DJlJeQyZNXlImTSx2dD1EJkVeRCZGXkUmRixwdD0oQz4+PjI4fEQ8PDQpXihDPDwzMHxEPj4+MileKEM8PDI1fEQ+Pj43KSxfdD0oRD4+PjI4fEM8PDQpXihEPDwzMHxDPj4+MileKEQ8PDI1fEM+Pj43KSx5dD0oTz4+PjE0fFU8PDE4KV4oTz4+PjE4fFU8PDE0KV4oTzw8MjN8VT4+PjkpLGd0PShVPj4+MTR8Tzw8MTgpXihVPj4+MTh8Tzw8MTQpXihVPDwyM3xPPj4+OSksQnQ9aFtUXSx3dD1CdC5oaWdoLGt0PUJ0LmxvdyxTdD1OK2d0LG10PWoreXQrKFN0Pj4+MDxOPj4+MD8xOjApLFN0PVN0K3V0LG10PW10K2Z0KyhTdD4+PjA8dXQ+Pj4wPzE6MCksU3Q9U3Qra3QsbXQ9bXQrd3QrKFN0Pj4+MDxrdD4+PjA/MTowKSxTdD1TdCtHLG10PW10K3ErKFN0Pj4+MDxHPj4+MD8xOjApLHh0PV90K3Z0LGJ0PXB0K2R0Kyh4dD4+PjA8X3Q+Pj4wPzE6MCk7aj1YLE49TCxYPUksTD1LLEk9TyxLPVUsVT1XK1N0fDAsTz1QK210KyhVPj4+MDxXPj4+MD8xOjApfDAsUD1NLFc9RixNPVIsRj1FLFI9QyxFPUQsRD1TdCt4dHwwLEM9bXQrYnQrKEQ+Pj4wPFN0Pj4+MD8xOjApfDB9dj1pLmxvdz12K0QsaS5oaWdoPWQrQysodj4+PjA8RD4+PjA/MTowKSxfPW4ubG93PV8rRSxuLmhpZ2g9cCtSKyhfPj4+MDxFPj4+MD8xOjApLGc9by5sb3c9ZytGLG8uaGlnaD15K00rKGc+Pj4wPEY+Pj4wPzE6MCksdz1zLmxvdz13K1cscy5oaWdoPUIrUCsodz4+PjA8Vz4+PjA/MTowKSxTPWEubG93PVMrVSxhLmhpZ2g9aytPKyhTPj4+MDxVPj4+MD8xOjApLHg9Yy5sb3c9eCtLLGMuaGlnaD1tK0krKHg+Pj4wPEs+Pj4wPzE6MCksSD1mLmxvdz1IK0wsZi5oaWdoPWIrWCsoSD4+PjA8TD4+PjA/MTowKSxBPXUubG93PUErTix1LmhpZ2g9eitqKyhBPj4+MDxOPj4+MD8xOjApfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEscj10LndvcmRzLGU9OCp0aGlzLl9uRGF0YUJ5dGVzLGk9OCp0LnNpZ0J5dGVzO3JbaT4+PjVdfD0xMjg8PDI0LWklMzIsclsoaSsxMjg+Pj4xMDw8NSkrMzBdPU1hdGguZmxvb3IoZS80Mjk0OTY3Mjk2KSxyWyhpKzEyOD4+PjEwPDw1KSszMV09ZSx0LnNpZ0J5dGVzPTQqci5sZW5ndGgsdGhpcy5fcHJvY2VzcygpO3ZhciBuPXRoaXMuX2hhc2gudG9YMzIoKTtyZXR1cm4gbn0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1uLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLHR9LGJsb2NrU2l6ZTozMn0pO2UuU0hBNTEyPW4uX2NyZWF0ZUhlbHBlcihmKSxlLkhtYWNTSEE1MTI9bi5fY3JlYXRlSG1hY0hlbHBlcihmKX0oKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLng2NCxpPWUuV29yZCxuPWUuV29yZEFycmF5LG89ci5hbGdvLHM9by5TSEE1MTIsYT1vLlNIQTM4ND1zLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBuLmluaXQoW25ldyBpLmluaXQoMzQxODA3MDM2NSwzMjM4MzcxMDMyKSxuZXcgaS5pbml0KDE2NTQyNzAyNTAsOTE0MTUwNjYzKSxuZXcgaS5pbml0KDI0Mzg1MjkzNzAsODEyNzAyOTk5KSxuZXcgaS5pbml0KDM1NTQ2MjM2MCw0MTQ0OTEyNjk3KSxuZXcgaS5pbml0KDE3MzE0MDU0MTUsNDI5MDc3NTg1NyksbmV3IGkuaW5pdCgyMzk0MTgwMjMxLDE3NTA2MDMwMjUpLG5ldyBpLmluaXQoMzY3NTAwODUyNSwxNjk0MDc2ODM5KSxuZXcgaS5pbml0KDEyMDMwNjI4MTMsMzIwNDA3NTQyOCldKX0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD1zLl9kb0ZpbmFsaXplLmNhbGwodGhpcyk7cmV0dXJuIHQuc2lnQnl0ZXMtPTE2LHR9fSk7ci5TSEEzODQ9cy5fY3JlYXRlSGVscGVyKGEpLHIuSG1hY1NIQTM4ND1zLl9jcmVhdGVIbWFjSGVscGVyKGEpfSgpLHQubGliLkNpcGhlcnx8ZnVuY3Rpb24ocil7dmFyIGU9dCxpPWUubGliLG49aS5CYXNlLG89aS5Xb3JkQXJyYXkscz1pLkJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0sYT1lLmVuYyxjPShhLlV0ZjgsYS5CYXNlNjQpLGg9ZS5hbGdvLGw9aC5FdnBLREYsZj1pLkNpcGhlcj1zLmV4dGVuZCh7Y2ZnOm4uZXh0ZW5kKCksY3JlYXRlRW5jcnlwdG9yOmZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMuY3JlYXRlKHRoaXMuX0VOQ19YRk9STV9NT0RFLHQscil9LGNyZWF0ZURlY3J5cHRvcjpmdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLmNyZWF0ZSh0aGlzLl9ERUNfWEZPUk1fTU9ERSx0LHIpfSxpbml0OmZ1bmN0aW9uKHQscixlKXt0aGlzLmNmZz10aGlzLmNmZy5leHRlbmQoZSksdGhpcy5feGZvcm1Nb2RlPXQsdGhpcy5fa2V5PXIsdGhpcy5yZXNldCgpfSxyZXNldDpmdW5jdGlvbigpe3MucmVzZXQuY2FsbCh0aGlzKSx0aGlzLl9kb1Jlc2V0KCl9LHByb2Nlc3M6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FwcGVuZCh0KSx0aGlzLl9wcm9jZXNzKCl9LGZpbmFsaXplOmZ1bmN0aW9uKHQpe3QmJnRoaXMuX2FwcGVuZCh0KTt2YXIgcj10aGlzLl9kb0ZpbmFsaXplKCk7cmV0dXJuIHJ9LGtleVNpemU6NCxpdlNpemU6NCxfRU5DX1hGT1JNX01PREU6MSxfREVDX1hGT1JNX01PREU6MixfY3JlYXRlSGVscGVyOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdD9tOnd9cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybntlbmNyeXB0OmZ1bmN0aW9uKGUsaSxuKXtyZXR1cm4gdChpKS5lbmNyeXB0KHIsZSxpLG4pfSxkZWNyeXB0OmZ1bmN0aW9uKGUsaSxuKXtyZXR1cm4gdChpKS5kZWNyeXB0KHIsZSxpLG4pfX19fSgpfSksdT0oaS5TdHJlYW1DaXBoZXI9Zi5leHRlbmQoe19kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcHJvY2VzcyghMCk7cmV0dXJuIHR9LGJsb2NrU2l6ZToxfSksZS5tb2RlPXt9KSxkPWkuQmxvY2tDaXBoZXJNb2RlPW4uZXh0ZW5kKHtjcmVhdGVFbmNyeXB0b3I6ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5FbmNyeXB0b3IuY3JlYXRlKHQscil9LGNyZWF0ZURlY3J5cHRvcjpmdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLkRlY3J5cHRvci5jcmVhdGUodCxyKX0saW5pdDpmdW5jdGlvbih0LHIpe3RoaXMuX2NpcGhlcj10LHRoaXMuX2l2PXJ9fSksdj11LkNCQz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLGkpe3ZhciBuPXRoaXMuX2l2O2lmKG4pe3ZhciBvPW47dGhpcy5faXY9cn1lbHNlIHZhciBvPXRoaXMuX3ByZXZCbG9jaztmb3IodmFyIHM9MDtzPGk7cysrKXRbZStzXV49b1tzXX12YXIgZT1kLmV4dGVuZCgpO3JldHVybiBlLkVuY3J5cHRvcj1lLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHIsZSl7dmFyIGk9dGhpcy5fY2lwaGVyLG49aS5ibG9ja1NpemU7dC5jYWxsKHRoaXMscixlLG4pLGkuZW5jcnlwdEJsb2NrKHIsZSksdGhpcy5fcHJldkJsb2NrPXIuc2xpY2UoZSxlK24pfX0pLGUuRGVjcnlwdG9yPWUuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24ocixlKXt2YXIgaT10aGlzLl9jaXBoZXIsbj1pLmJsb2NrU2l6ZSxvPXIuc2xpY2UoZSxlK24pO2kuZGVjcnlwdEJsb2NrKHIsZSksdC5jYWxsKHRoaXMscixlLG4pLHRoaXMuX3ByZXZCbG9jaz1vfX0pLGV9KCkscD1lLnBhZD17fSxfPXAuUGtjczc9e3BhZDpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT00KnIsaT1lLXQuc2lnQnl0ZXMlZSxuPWk8PDI0fGk8PDE2fGk8PDh8aSxzPVtdLGE9MDthPGk7YSs9NClzLnB1c2gobik7dmFyIGM9by5jcmVhdGUocyxpKTt0LmNvbmNhdChjKX0sdW5wYWQ6ZnVuY3Rpb24odCl7dmFyIHI9MjU1JnQud29yZHNbdC5zaWdCeXRlcy0xPj4+Ml07dC5zaWdCeXRlcy09cn19LHk9KGkuQmxvY2tDaXBoZXI9Zi5leHRlbmQoe2NmZzpmLmNmZy5leHRlbmQoe21vZGU6dixwYWRkaW5nOl99KSxyZXNldDpmdW5jdGlvbigpe2YucmVzZXQuY2FsbCh0aGlzKTt2YXIgdD10aGlzLmNmZyxyPXQuaXYsZT10Lm1vZGU7aWYodGhpcy5feGZvcm1Nb2RlPT10aGlzLl9FTkNfWEZPUk1fTU9ERSl2YXIgaT1lLmNyZWF0ZUVuY3J5cHRvcjtlbHNle3ZhciBpPWUuY3JlYXRlRGVjcnlwdG9yO3RoaXMuX21pbkJ1ZmZlclNpemU9MX10aGlzLl9tb2RlJiZ0aGlzLl9tb2RlLl9fY3JlYXRvcj09aT90aGlzLl9tb2RlLmluaXQodGhpcyxyJiZyLndvcmRzKToodGhpcy5fbW9kZT1pLmNhbGwoZSx0aGlzLHImJnIud29yZHMpLHRoaXMuX21vZGUuX19jcmVhdG9yPWkpfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9tb2RlLnByb2Nlc3NCbG9jayh0LHIpfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuY2ZnLnBhZGRpbmc7aWYodGhpcy5feGZvcm1Nb2RlPT10aGlzLl9FTkNfWEZPUk1fTU9ERSl7dC5wYWQodGhpcy5fZGF0YSx0aGlzLmJsb2NrU2l6ZSk7dmFyIHI9dGhpcy5fcHJvY2VzcyghMCl9ZWxzZXt2YXIgcj10aGlzLl9wcm9jZXNzKCEwKTt0LnVucGFkKHIpfXJldHVybiByfSxibG9ja1NpemU6NH0pLGkuQ2lwaGVyUGFyYW1zPW4uZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3RoaXMubWl4SW4odCl9LHRvU3RyaW5nOmZ1bmN0aW9uKHQpe3JldHVybih0fHx0aGlzLmZvcm1hdHRlcikuc3RyaW5naWZ5KHRoaXMpfX0pKSxnPWUuZm9ybWF0PXt9LEI9Zy5PcGVuU1NMPXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7dmFyIHI9dC5jaXBoZXJ0ZXh0LGU9dC5zYWx0O2lmKGUpdmFyIGk9by5jcmVhdGUoWzEzOTg4OTM2ODQsMTcwMTA3NjgzMV0pLmNvbmNhdChlKS5jb25jYXQocik7ZWxzZSB2YXIgaT1yO3JldHVybiBpLnRvU3RyaW5nKGMpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgcj1jLnBhcnNlKHQpLGU9ci53b3JkcztpZigxMzk4ODkzNjg0PT1lWzBdJiYxNzAxMDc2ODMxPT1lWzFdKXt2YXIgaT1vLmNyZWF0ZShlLnNsaWNlKDIsNCkpO2Uuc3BsaWNlKDAsNCksci5zaWdCeXRlcy09MTZ9cmV0dXJuIHkuY3JlYXRlKHtjaXBoZXJ0ZXh0OnIsc2FsdDppfSl9fSx3PWkuU2VyaWFsaXphYmxlQ2lwaGVyPW4uZXh0ZW5kKHtjZmc6bi5leHRlbmQoe2Zvcm1hdDpCfSksZW5jcnlwdDpmdW5jdGlvbih0LHIsZSxpKXtpPXRoaXMuY2ZnLmV4dGVuZChpKTt2YXIgbj10LmNyZWF0ZUVuY3J5cHRvcihlLGkpLG89bi5maW5hbGl6ZShyKSxzPW4uY2ZnO3JldHVybiB5LmNyZWF0ZSh7Y2lwaGVydGV4dDpvLGtleTplLGl2OnMuaXYsYWxnb3JpdGhtOnQsbW9kZTpzLm1vZGUscGFkZGluZzpzLnBhZGRpbmcsYmxvY2tTaXplOnQuYmxvY2tTaXplLGZvcm1hdHRlcjppLmZvcm1hdH0pfSxkZWNyeXB0OmZ1bmN0aW9uKHQscixlLGkpe2k9dGhpcy5jZmcuZXh0ZW5kKGkpLHI9dGhpcy5fcGFyc2UocixpLmZvcm1hdCk7dmFyIG49dC5jcmVhdGVEZWNyeXB0b3IoZSxpKS5maW5hbGl6ZShyLmNpcGhlcnRleHQpO3JldHVybiBufSxfcGFyc2U6ZnVuY3Rpb24odCxyKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdD9yLnBhcnNlKHQsdGhpcyk6dH19KSxrPWUua2RmPXt9LFM9ay5PcGVuU1NMPXtleGVjdXRlOmZ1bmN0aW9uKHQscixlLGkpe2l8fChpPW8ucmFuZG9tKDgpKTt2YXIgbj1sLmNyZWF0ZSh7a2V5U2l6ZTpyK2V9KS5jb21wdXRlKHQsaSkscz1vLmNyZWF0ZShuLndvcmRzLnNsaWNlKHIpLDQqZSk7cmV0dXJuIG4uc2lnQnl0ZXM9NCpyLHkuY3JlYXRlKHtrZXk6bixpdjpzLHNhbHQ6aX0pfX0sbT1pLlBhc3N3b3JkQmFzZWRDaXBoZXI9dy5leHRlbmQoe2NmZzp3LmNmZy5leHRlbmQoe2tkZjpTfSksZW5jcnlwdDpmdW5jdGlvbih0LHIsZSxpKXtpPXRoaXMuY2ZnLmV4dGVuZChpKTt2YXIgbj1pLmtkZi5leGVjdXRlKGUsdC5rZXlTaXplLHQuaXZTaXplKTtpLml2PW4uaXY7dmFyIG89dy5lbmNyeXB0LmNhbGwodGhpcyx0LHIsbi5rZXksaSk7cmV0dXJuIG8ubWl4SW4obiksb30sZGVjcnlwdDpmdW5jdGlvbih0LHIsZSxpKXtpPXRoaXMuY2ZnLmV4dGVuZChpKSxyPXRoaXMuX3BhcnNlKHIsaS5mb3JtYXQpO3ZhciBuPWkua2RmLmV4ZWN1dGUoZSx0LmtleVNpemUsdC5pdlNpemUsci5zYWx0KTtpLml2PW4uaXY7dmFyIG89dy5kZWNyeXB0LmNhbGwodGhpcyx0LHIsbi5rZXksaSk7cmV0dXJuIG99fSl9KCksdC5tb2RlLkNGQj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIodCxyLGUsaSl7dmFyIG49dGhpcy5faXY7aWYobil7dmFyIG89bi5zbGljZSgwKTt0aGlzLl9pdj12b2lkIDB9ZWxzZSB2YXIgbz10aGlzLl9wcmV2QmxvY2s7aS5lbmNyeXB0QmxvY2sobywwKTtmb3IodmFyIHM9MDtzPGU7cysrKXRbcitzXV49b1tzXX12YXIgZT10LmxpYi5CbG9ja0NpcGhlck1vZGUuZXh0ZW5kKCk7cmV0dXJuIGUuRW5jcnlwdG9yPWUuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9jaXBoZXIsbj1pLmJsb2NrU2l6ZTtyLmNhbGwodGhpcyx0LGUsbixpKSx0aGlzLl9wcmV2QmxvY2s9dC5zbGljZShlLGUrbil9fSksZS5EZWNyeXB0b3I9ZS5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX2NpcGhlcixuPWkuYmxvY2tTaXplLG89dC5zbGljZShlLGUrbik7ci5jYWxsKHRoaXMsdCxlLG4saSksdGhpcy5fcHJldkJsb2NrPW99fSksZX0oKSx0Lm1vZGUuRUNCPWZ1bmN0aW9uKCl7dmFyIHI9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpO3JldHVybiByLkVuY3J5cHRvcj1yLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fY2lwaGVyLmVuY3J5cHRCbG9jayh0LHIpfX0pLHIuRGVjcnlwdG9yPXIuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9jaXBoZXIuZGVjcnlwdEJsb2NrKHQscil9fSkscn0oKSx0LnBhZC5BbnNpWDkyMz17cGFkOmZ1bmN0aW9uKHQscil7dmFyIGU9dC5zaWdCeXRlcyxpPTQqcixuPWktZSVpLG89ZStuLTE7dC5jbGFtcCgpLHQud29yZHNbbz4+PjJdfD1uPDwyNC1vJTQqOCx0LnNpZ0J5dGVzKz1ufSx1bnBhZDpmdW5jdGlvbih0KXt2YXIgcj0yNTUmdC53b3Jkc1t0LnNpZ0J5dGVzLTE+Pj4yXTt0LnNpZ0J5dGVzLT1yfX0sdC5wYWQuSXNvMTAxMjY9e3BhZDpmdW5jdGlvbihyLGUpe3ZhciBpPTQqZSxuPWktci5zaWdCeXRlcyVpO3IuY29uY2F0KHQubGliLldvcmRBcnJheS5yYW5kb20obi0xKSkuY29uY2F0KHQubGliLldvcmRBcnJheS5jcmVhdGUoW248PDI0XSwxKSl9LHVucGFkOmZ1bmN0aW9uKHQpe3ZhciByPTI1NSZ0LndvcmRzW3Quc2lnQnl0ZXMtMT4+PjJdO3Quc2lnQnl0ZXMtPXJ9fSx0LnBhZC5Jc285Nzk3MT17cGFkOmZ1bmN0aW9uKHIsZSl7ci5jb25jYXQodC5saWIuV29yZEFycmF5LmNyZWF0ZShbMjE0NzQ4MzY0OF0sMSkpLHQucGFkLlplcm9QYWRkaW5nLnBhZChyLGUpfSx1bnBhZDpmdW5jdGlvbihyKXt0LnBhZC5aZXJvUGFkZGluZy51bnBhZChyKSxyLnNpZ0J5dGVzLS19fSx0Lm1vZGUuT0ZCPWZ1bmN0aW9uKCl7dmFyIHI9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpLGU9ci5FbmNyeXB0b3I9ci5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX2NpcGhlcixpPWUuYmxvY2tTaXplLG49dGhpcy5faXYsbz10aGlzLl9rZXlzdHJlYW07biYmKG89dGhpcy5fa2V5c3RyZWFtPW4uc2xpY2UoMCksdGhpcy5faXY9dm9pZCAwKSxlLmVuY3J5cHRCbG9jayhvLDApO2Zvcih2YXIgcz0wO3M8aTtzKyspdFtyK3NdXj1vW3NdfX0pO3JldHVybiByLkRlY3J5cHRvcj1lLHJ9KCksdC5wYWQuTm9QYWRkaW5nPXtwYWQ6ZnVuY3Rpb24oKXt9LHVucGFkOmZ1bmN0aW9uKCl7fX0sZnVuY3Rpb24ocil7dmFyIGU9dCxpPWUubGliLG49aS5DaXBoZXJQYXJhbXMsbz1lLmVuYyxzPW8uSGV4LGE9ZS5mb3JtYXQ7YS5IZXg9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtyZXR1cm4gdC5jaXBoZXJ0ZXh0LnRvU3RyaW5nKHMpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgcj1zLnBhcnNlKHQpO3JldHVybiBuLmNyZWF0ZSh7Y2lwaGVydGV4dDpyfSl9fX0oKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLmxpYixpPWUuQmxvY2tDaXBoZXIsbj1yLmFsZ28sbz1bXSxzPVtdLGE9W10sYz1bXSxoPVtdLGw9W10sZj1bXSx1PVtdLGQ9W10sdj1bXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10scj0wO3I8MjU2O3IrKylyPDEyOD90W3JdPXI8PDE6dFtyXT1yPDwxXjI4Mztmb3IodmFyIGU9MCxpPTAscj0wO3I8MjU2O3IrKyl7dmFyIG49aV5pPDwxXmk8PDJeaTw8M15pPDw0O249bj4+PjheMjU1Jm5eOTksb1tlXT1uLHNbbl09ZTt2YXIgcD10W2VdLF89dFtwXSx5PXRbX10sZz0yNTcqdFtuXV4xNjg0MzAwOCpuO2FbZV09Zzw8MjR8Zz4+PjgsY1tlXT1nPDwxNnxnPj4+MTYsaFtlXT1nPDw4fGc+Pj4yNCxsW2VdPWc7dmFyIGc9MTY4NDMwMDkqeV42NTUzNypfXjI1NypwXjE2ODQzMDA4KmU7ZltuXT1nPDwyNHxnPj4+OCx1W25dPWc8PDE2fGc+Pj4xNixkW25dPWc8PDh8Zz4+PjI0LHZbbl09ZyxlPyhlPXBedFt0W3RbeV5wXV1dLGlePXRbdFtpXV0pOmU9aT0xfX0oKTt2YXIgcD1bMCwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NF0sXz1uLkFFUz1pLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fblJvdW5kc3x8dGhpcy5fa2V5UHJpb3JSZXNldCE9PXRoaXMuX2tleSl7Zm9yKHZhciB0PXRoaXMuX2tleVByaW9yUmVzZXQ9dGhpcy5fa2V5LHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMvNCxpPXRoaXMuX25Sb3VuZHM9ZSs2LG49NCooaSsxKSxzPXRoaXMuX2tleVNjaGVkdWxlPVtdLGE9MDthPG47YSsrKWlmKGE8ZSlzW2FdPXJbYV07ZWxzZXt2YXIgYz1zW2EtMV07YSVlP2U+NiYmYSVlPT00JiYoYz1vW2M+Pj4yNF08PDI0fG9bYz4+PjE2JjI1NV08PDE2fG9bYz4+PjgmMjU1XTw8OHxvWzI1NSZjXSk6KGM9Yzw8OHxjPj4+MjQsYz1vW2M+Pj4yNF08PDI0fG9bYz4+PjE2JjI1NV08PDE2fG9bYz4+PjgmMjU1XTw8OHxvWzI1NSZjXSxjXj1wW2EvZXwwXTw8MjQpLHNbYV09c1thLWVdXmN9Zm9yKHZhciBoPXRoaXMuX2ludktleVNjaGVkdWxlPVtdLGw9MDtsPG47bCsrKXt2YXIgYT1uLWw7aWYobCU0KXZhciBjPXNbYV07ZWxzZSB2YXIgYz1zW2EtNF07bDw0fHxhPD00P2hbbF09YzpoW2xdPWZbb1tjPj4+MjRdXV51W29bYz4+PjE2JjI1NV1dXmRbb1tjPj4+OCYyNTVdXV52W29bMjU1JmNdXX19fSxlbmNyeXB0QmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9kb0NyeXB0QmxvY2sodCxyLHRoaXMuX2tleVNjaGVkdWxlLGEsYyxoLGwsbyl9LGRlY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBlPXRbcisxXTt0W3IrMV09dFtyKzNdLHRbciszXT1lLHRoaXMuX2RvQ3J5cHRCbG9jayh0LHIsdGhpcy5faW52S2V5U2NoZWR1bGUsZix1LGQsdixzKTt2YXIgZT10W3IrMV07dFtyKzFdPXRbciszXSx0W3IrM109ZX0sX2RvQ3J5cHRCbG9jazpmdW5jdGlvbih0LHIsZSxpLG4sbyxzLGEpe2Zvcih2YXIgYz10aGlzLl9uUm91bmRzLGg9dFtyXV5lWzBdLGw9dFtyKzFdXmVbMV0sZj10W3IrMl1eZVsyXSx1PXRbciszXV5lWzNdLGQ9NCx2PTE7djxjO3YrKyl7dmFyIHA9aVtoPj4+MjRdXm5bbD4+PjE2JjI1NV1eb1tmPj4+OCYyNTVdXnNbMjU1JnVdXmVbZCsrXSxfPWlbbD4+PjI0XV5uW2Y+Pj4xNiYyNTVdXm9bdT4+PjgmMjU1XV5zWzI1NSZoXV5lW2QrK10seT1pW2Y+Pj4yNF1eblt1Pj4+MTYmMjU1XV5vW2g+Pj44JjI1NV1ec1syNTUmbF1eZVtkKytdLGc9aVt1Pj4+MjRdXm5baD4+PjE2JjI1NV1eb1tsPj4+OCYyNTVdXnNbMjU1JmZdXmVbZCsrXTtoPXAsbD1fLGY9eSx1PWd9dmFyIHA9KGFbaD4+PjI0XTw8MjR8YVtsPj4+MTYmMjU1XTw8MTZ8YVtmPj4+OCYyNTVdPDw4fGFbMjU1JnVdKV5lW2QrK10sXz0oYVtsPj4+MjRdPDwyNHxhW2Y+Pj4xNiYyNTVdPDwxNnxhW3U+Pj44JjI1NV08PDh8YVsyNTUmaF0pXmVbZCsrXSx5PShhW2Y+Pj4yNF08PDI0fGFbdT4+PjE2JjI1NV08PDE2fGFbaD4+PjgmMjU1XTw8OHxhWzI1NSZsXSleZVtkKytdLGc9KGFbdT4+PjI0XTw8MjR8YVtoPj4+MTYmMjU1XTw8MTZ8YVtsPj4+OCYyNTVdPDw4fGFbMjU1JmZdKV5lW2QrK107dFtyXT1wLHRbcisxXT1fLHRbcisyXT15LHRbciszXT1nfSxrZXlTaXplOjh9KTtyLkFFUz1pLl9jcmVhdGVIZWxwZXIoXyl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKHQscil7dmFyIGU9KHRoaXMuX2xCbG9jaz4+PnRedGhpcy5fckJsb2NrKSZyO3RoaXMuX3JCbG9ja149ZSx0aGlzLl9sQmxvY2tePWU8PHR9ZnVuY3Rpb24gZSh0LHIpe3ZhciBlPSh0aGlzLl9yQmxvY2s+Pj50XnRoaXMuX2xCbG9jaykmcjt0aGlzLl9sQmxvY2tePWUsdGhpcy5fckJsb2NrXj1lPDx0O1xufXZhciBpPXQsbj1pLmxpYixvPW4uV29yZEFycmF5LHM9bi5CbG9ja0NpcGhlcixhPWkuYWxnbyxjPVs1Nyw0OSw0MSwzMywyNSwxNyw5LDEsNTgsNTAsNDIsMzQsMjYsMTgsMTAsMiw1OSw1MSw0MywzNSwyNywxOSwxMSwzLDYwLDUyLDQ0LDM2LDYzLDU1LDQ3LDM5LDMxLDIzLDE1LDcsNjIsNTQsNDYsMzgsMzAsMjIsMTQsNiw2MSw1Myw0NSwzNywyOSwyMSwxMyw1LDI4LDIwLDEyLDRdLGg9WzE0LDE3LDExLDI0LDEsNSwzLDI4LDE1LDYsMjEsMTAsMjMsMTksMTIsNCwyNiw4LDE2LDcsMjcsMjAsMTMsMiw0MSw1MiwzMSwzNyw0Nyw1NSwzMCw0MCw1MSw0NSwzMyw0OCw0NCw0OSwzOSw1NiwzNCw1Myw0Niw0Miw1MCwzNiwyOSwzMl0sbD1bMSwyLDQsNiw4LDEwLDEyLDE0LDE1LDE3LDE5LDIxLDIzLDI1LDI3LDI4XSxmPVt7MDo4NDIxODg4LDI2ODQzNTQ1NjozMjc2OCw1MzY4NzA5MTI6ODQyMTM3OCw4MDUzMDYzNjg6MiwxMDczNzQxODI0OjUxMiwxMzQyMTc3MjgwOjg0MjE4OTAsMTYxMDYxMjczNjo4Mzg5MTIyLDE4NzkwNDgxOTI6ODM4ODYwOCwyMTQ3NDgzNjQ4OjUxNCwyNDE1OTE5MTA0OjgzODkxMjAsMjY4NDM1NDU2MDozMzI4MCwyOTUyNzkwMDE2Ojg0MjEzNzYsMzIyMTIyNTQ3MjozMjc3MCwzNDg5NjYwOTI4OjgzODg2MTAsMzc1ODA5NjM4NDowLDQwMjY1MzE4NDA6MzMyODIsMTM0MjE3NzI4OjAsNDAyNjUzMTg0Ojg0MjE4OTAsNjcxMDg4NjQwOjMzMjgyLDkzOTUyNDA5NjozMjc2OCwxMjA3OTU5NTUyOjg0MjE4ODgsMTQ3NjM5NTAwODo1MTIsMTc0NDgzMDQ2NDo4NDIxMzc4LDIwMTMyNjU5MjA6MiwyMjgxNzAxMzc2OjgzODkxMjAsMjU1MDEzNjgzMjozMzI4MCwyODE4NTcyMjg4Ojg0MjEzNzYsMzA4NzAwNzc0NDo4Mzg5MTIyLDMzNTU0NDMyMDA6ODM4ODYxMCwzNjIzODc4NjU2OjMyNzcwLDM4OTIzMTQxMTI6NTE0LDQxNjA3NDk1Njg6ODM4ODYwOCwxOjMyNzY4LDI2ODQzNTQ1NzoyLDUzNjg3MDkxMzo4NDIxODg4LDgwNTMwNjM2OTo4Mzg4NjA4LDEwNzM3NDE4MjU6ODQyMTM3OCwxMzQyMTc3MjgxOjMzMjgwLDE2MTA2MTI3Mzc6NTEyLDE4NzkwNDgxOTM6ODM4OTEyMiwyMTQ3NDgzNjQ5Ojg0MjE4OTAsMjQxNTkxOTEwNTo4NDIxMzc2LDI2ODQzNTQ1NjE6ODM4ODYxMCwyOTUyNzkwMDE3OjMzMjgyLDMyMjEyMjU0NzM6NTE0LDM0ODk2NjA5Mjk6ODM4OTEyMCwzNzU4MDk2Mzg1OjMyNzcwLDQwMjY1MzE4NDE6MCwxMzQyMTc3Mjk6ODQyMTg5MCw0MDI2NTMxODU6ODQyMTM3Niw2NzEwODg2NDE6ODM4ODYwOCw5Mzk1MjQwOTc6NTEyLDEyMDc5NTk1NTM6MzI3NjgsMTQ3NjM5NTAwOTo4Mzg4NjEwLDE3NDQ4MzA0NjU6MiwyMDEzMjY1OTIxOjMzMjgyLDIyODE3MDEzNzc6MzI3NzAsMjU1MDEzNjgzMzo4Mzg5MTIyLDI4MTg1NzIyODk6NTE0LDMwODcwMDc3NDU6ODQyMTg4OCwzMzU1NDQzMjAxOjgzODkxMjAsMzYyMzg3ODY1NzowLDM4OTIzMTQxMTM6MzMyODAsNDE2MDc0OTU2OTo4NDIxMzc4fSx7MDoxMDc0MjgyNTEyLDE2Nzc3MjE2OjE2Mzg0LDMzNTU0NDMyOjUyNDI4OCw1MDMzMTY0ODoxMDc0MjY2MTI4LDY3MTA4ODY0OjEwNzM3NDE4NDAsODM4ODYwODA6MTA3NDI4MjQ5NiwxMDA2NjMyOTY6MTA3Mzc1ODIwOCwxMTc0NDA1MTI6MTYsMTM0MjE3NzI4OjU0MDY3MiwxNTA5OTQ5NDQ6MTA3Mzc1ODIyNCwxNjc3NzIxNjA6MTA3Mzc0MTgyNCwxODQ1NDkzNzY6NTQwNjg4LDIwMTMyNjU5Mjo1MjQzMDQsMjE4MTAzODA4OjAsMjM0ODgxMDI0OjE2NDAwLDI1MTY1ODI0MDoxMDc0MjY2MTEyLDgzODg2MDg6MTA3Mzc1ODIwOCwyNTE2NTgyNDo1NDA2ODgsNDE5NDMwNDA6MTYsNTg3MjAyNTY6MTA3Mzc1ODIyNCw3NTQ5NzQ3MjoxMDc0MjgyNTEyLDkyMjc0Njg4OjEwNzM3NDE4MjQsMTA5MDUxOTA0OjUyNDI4OCwxMjU4MjkxMjA6MTA3NDI2NjEyOCwxNDI2MDYzMzY6NTI0MzA0LDE1OTM4MzU1MjowLDE3NjE2MDc2ODoxNjM4NCwxOTI5Mzc5ODQ6MTA3NDI2NjExMiwyMDk3MTUyMDA6MTA3Mzc0MTg0MCwyMjY0OTI0MTY6NTQwNjcyLDI0MzI2OTYzMjoxMDc0MjgyNDk2LDI2MDA0Njg0ODoxNjQwMCwyNjg0MzU0NTY6MCwyODUyMTI2NzI6MTA3NDI2NjEyOCwzMDE5ODk4ODg6MTA3Mzc1ODIyNCwzMTg3NjcxMDQ6MTA3NDI4MjQ5NiwzMzU1NDQzMjA6MTA3NDI2NjExMiwzNTIzMjE1MzY6MTYsMzY5MDk4NzUyOjU0MDY4OCwzODU4NzU5Njg6MTYzODQsNDAyNjUzMTg0OjE2NDAwLDQxOTQzMDQwMDo1MjQyODgsNDM2MjA3NjE2OjUyNDMwNCw0NTI5ODQ4MzI6MTA3Mzc0MTg0MCw0Njk3NjIwNDg6NTQwNjcyLDQ4NjUzOTI2NDoxMDczNzU4MjA4LDUwMzMxNjQ4MDoxMDczNzQxODI0LDUyMDA5MzY5NjoxMDc0MjgyNTEyLDI3NjgyNDA2NDo1NDA2ODgsMjkzNjAxMjgwOjUyNDI4OCwzMTAzNzg0OTY6MTA3NDI2NjExMiwzMjcxNTU3MTI6MTYzODQsMzQzOTMyOTI4OjEwNzM3NTgyMDgsMzYwNzEwMTQ0OjEwNzQyODI1MTIsMzc3NDg3MzYwOjE2LDM5NDI2NDU3NjoxMDczNzQxODI0LDQxMTA0MTc5MjoxMDc0MjgyNDk2LDQyNzgxOTAwODoxMDczNzQxODQwLDQ0NDU5NjIyNDoxMDczNzU4MjI0LDQ2MTM3MzQ0MDo1MjQzMDQsNDc4MTUwNjU2OjAsNDk0OTI3ODcyOjE2NDAwLDUxMTcwNTA4ODoxMDc0MjY2MTI4LDUyODQ4MjMwNDo1NDA2NzJ9LHswOjI2MCwxMDQ4NTc2OjAsMjA5NzE1Mjo2NzEwOTEyMCwzMTQ1NzI4OjY1Nzk2LDQxOTQzMDQ6NjU1NDAsNTI0Mjg4MDo2NzEwODg2OCw2MjkxNDU2OjY3MTc0NjYwLDczNDAwMzI6NjcxNzQ0MDAsODM4ODYwODo2NzEwODg2NCw5NDM3MTg0OjY3MTc0NjU2LDEwNDg1NzYwOjY1NzkyLDExNTM0MzM2OjY3MTc0NDA0LDEyNTgyOTEyOjY3MTA5MTI0LDEzNjMxNDg4OjY1NTM2LDE0NjgwMDY0OjQsMTU3Mjg2NDA6MjU2LDUyNDI4ODo2NzE3NDY1NiwxNTcyODY0OjY3MTc0NDA0LDI2MjE0NDA6MCwzNjcwMDE2OjY3MTA5MTIwLDQ3MTg1OTI6NjcxMDg4NjgsNTc2NzE2ODo2NTUzNiw2ODE1NzQ0OjY1NTQwLDc4NjQzMjA6MjYwLDg5MTI4OTY6NCw5OTYxNDcyOjI1NiwxMTAxMDA0ODo2NzE3NDQwMCwxMjA1ODYyNDo2NTc5NiwxMzEwNzIwMDo2NTc5MiwxNDE1NTc3Njo2NzEwOTEyNCwxNTIwNDM1Mjo2NzE3NDY2MCwxNjI1MjkyODo2NzEwODg2NCwxNjc3NzIxNjo2NzE3NDY1NiwxNzgyNTc5Mjo2NTU0MCwxODg3NDM2ODo2NTUzNiwxOTkyMjk0NDo2NzEwOTEyMCwyMDk3MTUyMDoyNTYsMjIwMjAwOTY6NjcxNzQ2NjAsMjMwNjg2NzI6NjcxMDg4NjgsMjQxMTcyNDg6MCwyNTE2NTgyNDo2NzEwOTEyNCwyNjIxNDQwMDo2NzEwODg2NCwyNzI2Mjk3Njo0LDI4MzExNTUyOjY1NzkyLDI5MzYwMTI4OjY3MTc0NDAwLDMwNDA4NzA0OjI2MCwzMTQ1NzI4MDo2NTc5NiwzMjUwNTg1Njo2NzE3NDQwNCwxNzMwMTUwNDo2NzEwODg2NCwxODM1MDA4MDoyNjAsMTkzOTg2NTY6NjcxNzQ2NTYsMjA0NDcyMzI6MCwyMTQ5NTgwODo2NTU0MCwyMjU0NDM4NDo2NzEwOTEyMCwyMzU5Mjk2MDoyNTYsMjQ2NDE1MzY6NjcxNzQ0MDQsMjU2OTAxMTI6NjU1MzYsMjY3Mzg2ODg6NjcxNzQ2NjAsMjc3ODcyNjQ6NjU3OTYsMjg4MzU4NDA6NjcxMDg4NjgsMjk4ODQ0MTY6NjcxMDkxMjQsMzA5MzI5OTI6NjcxNzQ0MDAsMzE5ODE1Njg6NCwzMzAzMDE0NDo2NTc5Mn0sezA6MjE1MTY4MjA0OCw2NTUzNjoyMTQ3NDg3ODA4LDEzMTA3Mjo0MTk4NDY0LDE5NjYwODoyMTUxNjc3OTUyLDI2MjE0NDowLDMyNzY4MDo0MTk4NDAwLDM5MzIxNjoyMTQ3NDgzNzEyLDQ1ODc1Mjo0MTk0MzY4LDUyNDI4ODoyMTQ3NDgzNjQ4LDU4OTgyNDo0MTk0MzA0LDY1NTM2MDo2NCw3MjA4OTY6MjE0NzQ4Nzc0NCw3ODY0MzI6MjE1MTY3ODAxNiw4NTE5Njg6NDE2MCw5MTc1MDQ6NDA5Niw5ODMwNDA6MjE1MTY4MjExMiwzMjc2ODoyMTQ3NDg3ODA4LDk4MzA0OjY0LDE2Mzg0MDoyMTUxNjc4MDE2LDIyOTM3NjoyMTQ3NDg3NzQ0LDI5NDkxMjo0MTk4NDAwLDM2MDQ0ODoyMTUxNjgyMTEyLDQyNTk4NDowLDQ5MTUyMDoyMTUxNjc3OTUyLDU1NzA1Njo0MDk2LDYyMjU5MjoyMTUxNjgyMDQ4LDY4ODEyODo0MTk0MzA0LDc1MzY2NDo0MTYwLDgxOTIwMDoyMTQ3NDgzNjQ4LDg4NDczNjo0MTk0MzY4LDk1MDI3Mjo0MTk4NDY0LDEwMTU4MDg6MjE0NzQ4MzcxMiwxMDQ4NTc2OjQxOTQzNjgsMTExNDExMjo0MTk4NDAwLDExNzk2NDg6MjE0NzQ4MzcxMiwxMjQ1MTg0OjAsMTMxMDcyMDo0MTYwLDEzNzYyNTY6MjE1MTY3ODAxNiwxNDQxNzkyOjIxNTE2ODIwNDgsMTUwNzMyODoyMTQ3NDg3ODA4LDE1NzI4NjQ6MjE1MTY4MjExMiwxNjM4NDAwOjIxNDc0ODM2NDgsMTcwMzkzNjoyMTUxNjc3OTUyLDE3Njk0NzI6NDE5ODQ2NCwxODM1MDA4OjIxNDc0ODc3NDQsMTkwMDU0NDo0MTk0MzA0LDE5NjYwODA6NjQsMjAzMTYxNjo0MDk2LDEwODEzNDQ6MjE1MTY3Nzk1MiwxMTQ2ODgwOjIxNTE2ODIxMTIsMTIxMjQxNjowLDEyNzc5NTI6NDE5ODQwMCwxMzQzNDg4OjQxOTQzNjgsMTQwOTAyNDoyMTQ3NDgzNjQ4LDE0NzQ1NjA6MjE0NzQ4NzgwOCwxNTQwMDk2OjY0LDE2MDU2MzI6MjE0NzQ4MzcxMiwxNjcxMTY4OjQwOTYsMTczNjcwNDoyMTQ3NDg3NzQ0LDE4MDIyNDA6MjE1MTY3ODAxNiwxODY3Nzc2OjQxNjAsMTkzMzMxMjoyMTUxNjgyMDQ4LDE5OTg4NDg6NDE5NDMwNCwyMDY0Mzg0OjQxOTg0NjR9LHswOjEyOCw0MDk2OjE3MDM5MzYwLDgxOTI6MjYyMTQ0LDEyMjg4OjUzNjg3MDkxMiwxNjM4NDo1MzcxMzMxODQsMjA0ODA6MTY3NzczNDQsMjQ1NzY6NTUzNjQ4MjU2LDI4NjcyOjI2MjI3MiwzMjc2ODoxNjc3NzIxNiwzNjg2NDo1MzcxMzMwNTYsNDA5NjA6NTM2ODcxMDQwLDQ1MDU2OjU1MzkxMDQwMCw0OTE1Mjo1NTM5MTAyNzIsNTMyNDg6MCw1NzM0NDoxNzAzOTQ4OCw2MTQ0MDo1NTM2NDgxMjgsMjA0ODoxNzAzOTQ4OCw2MTQ0OjU1MzY0ODI1NiwxMDI0MDoxMjgsMTQzMzY6MTcwMzkzNjAsMTg0MzI6MjYyMTQ0LDIyNTI4OjUzNzEzMzE4NCwyNjYyNDo1NTM5MTAyNzIsMzA3MjA6NTM2ODcwOTEyLDM0ODE2OjUzNzEzMzA1NiwzODkxMjowLDQzMDA4OjU1MzkxMDQwMCw0NzEwNDoxNjc3NzM0NCw1MTIwMDo1MzY4NzEwNDAsNTUyOTY6NTUzNjQ4MTI4LDU5MzkyOjE2Nzc3MjE2LDYzNDg4OjI2MjI3Miw2NTUzNjoyNjIxNDQsNjk2MzI6MTI4LDczNzI4OjUzNjg3MDkxMiw3NzgyNDo1NTM2NDgyNTYsODE5MjA6MTY3NzczNDQsODYwMTY6NTUzOTEwMjcyLDkwMTEyOjUzNzEzMzE4NCw5NDIwODoxNjc3NzIxNiw5ODMwNDo1NTM5MTA0MDAsMTAyNDAwOjU1MzY0ODEyOCwxMDY0OTY6MTcwMzkzNjAsMTEwNTkyOjUzNzEzMzA1NiwxMTQ2ODg6MjYyMjcyLDExODc4NDo1MzY4NzEwNDAsMTIyODgwOjAsMTI2OTc2OjE3MDM5NDg4LDY3NTg0OjU1MzY0ODI1Niw3MTY4MDoxNjc3NzIxNiw3NTc3NjoxNzAzOTM2MCw3OTg3Mjo1MzcxMzMxODQsODM5Njg6NTM2ODcwOTEyLDg4MDY0OjE3MDM5NDg4LDkyMTYwOjEyOCw5NjI1Njo1NTM5MTAyNzIsMTAwMzUyOjI2MjI3MiwxMDQ0NDg6NTUzOTEwNDAwLDEwODU0NDowLDExMjY0MDo1NTM2NDgxMjgsMTE2NzM2OjE2Nzc3MzQ0LDEyMDgzMjoyNjIxNDQsMTI0OTI4OjUzNzEzMzA1NiwxMjkwMjQ6NTM2ODcxMDQwfSx7MDoyNjg0MzU0NjQsMjU2OjgxOTIsNTEyOjI3MDUzMjYwOCw3Njg6MjcwNTQwODA4LDEwMjQ6MjY4NDQzNjQ4LDEyODA6MjA5NzE1MiwxNTM2OjIwOTcxNjAsMTc5MjoyNjg0MzU0NTYsMjA0ODowLDIzMDQ6MjY4NDQzNjU2LDI1NjA6MjEwNTM0NCwyODE2OjgsMzA3MjoyNzA1MzI2MTYsMzMyODoyMTA1MzUyLDM1ODQ6ODIwMCwzODQwOjI3MDU0MDgwMCwxMjg6MjcwNTMyNjA4LDM4NDoyNzA1NDA4MDgsNjQwOjgsODk2OjIwOTcxNTIsMTE1MjoyMTA1MzUyLDE0MDg6MjY4NDM1NDY0LDE2NjQ6MjY4NDQzNjQ4LDE5MjA6ODIwMCwyMTc2OjIwOTcxNjAsMjQzMjo4MTkyLDI2ODg6MjY4NDQzNjU2LDI5NDQ6MjcwNTMyNjE2LDMyMDA6MCwzNDU2OjI3MDU0MDgwMCwzNzEyOjIxMDUzNDQsMzk2ODoyNjg0MzU0NTYsNDA5NjoyNjg0NDM2NDgsNDM1MjoyNzA1MzI2MTYsNDYwODoyNzA1NDA4MDgsNDg2NDo4MjAwLDUxMjA6MjA5NzE1Miw1Mzc2OjI2ODQzNTQ1Niw1NjMyOjI2ODQzNTQ2NCw1ODg4OjIxMDUzNDQsNjE0NDoyMTA1MzUyLDY0MDA6MCw2NjU2OjgsNjkxMjoyNzA1MzI2MDgsNzE2ODo4MTkyLDc0MjQ6MjY4NDQzNjU2LDc2ODA6MjcwNTQwODAwLDc5MzY6MjA5NzE2MCw0MjI0OjgsNDQ4MDoyMTA1MzQ0LDQ3MzY6MjA5NzE1Miw0OTkyOjI2ODQzNTQ2NCw1MjQ4OjI2ODQ0MzY0OCw1NTA0OjgyMDAsNTc2MDoyNzA1NDA4MDgsNjAxNjoyNzA1MzI2MDgsNjI3MjoyNzA1NDA4MDAsNjUyODoyNzA1MzI2MTYsNjc4NDo4MTkyLDcwNDA6MjEwNTM1Miw3Mjk2OjIwOTcxNjAsNzU1MjowLDc4MDg6MjY4NDM1NDU2LDgwNjQ6MjY4NDQzNjU2fSx7MDoxMDQ4NTc2LDE2OjMzNTU1NDU3LDMyOjEwMjQsNDg6MTA0OTYwMSw2NDozNDYwNDAzMyw4MDowLDk2OjEsMTEyOjM0NjAzMDA5LDEyODozMzU1NTQ1NiwxNDQ6MTA0ODU3NywxNjA6MzM1NTQ0MzMsMTc2OjM0NjA0MDMyLDE5MjozNDYwMzAwOCwyMDg6MTAyNSwyMjQ6MTA0OTYwMCwyNDA6MzM1NTQ0MzIsODozNDYwMzAwOSwyNDowLDQwOjMzNTU1NDU3LDU2OjM0NjA0MDMyLDcyOjEwNDg1NzYsODg6MzM1NTQ0MzMsMTA0OjMzNTU0NDMyLDEyMDoxMDI1LDEzNjoxMDQ5NjAxLDE1MjozMzU1NTQ1NiwxNjg6MzQ2MDMwMDgsMTg0OjEwNDg1NzcsMjAwOjEwMjQsMjE2OjM0NjA0MDMzLDIzMjoxLDI0ODoxMDQ5NjAwLDI1NjozMzU1NDQzMiwyNzI6MTA0ODU3NiwyODg6MzM1NTU0NTcsMzA0OjM0NjAzMDA5LDMyMDoxMDQ4NTc3LDMzNjozMzU1NTQ1NiwzNTI6MzQ2MDQwMzIsMzY4OjEwNDk2MDEsMzg0OjEwMjUsNDAwOjM0NjA0MDMzLDQxNjoxMDQ5NjAwLDQzMjoxLDQ0ODowLDQ2NDozNDYwMzAwOCw0ODA6MzM1NTQ0MzMsNDk2OjEwMjQsMjY0OjEwNDk2MDAsMjgwOjMzNTU1NDU3LDI5NjozNDYwMzAwOSwzMTI6MSwzMjg6MzM1NTQ0MzIsMzQ0OjEwNDg1NzYsMzYwOjEwMjUsMzc2OjM0NjA0MDMyLDM5MjozMzU1NDQzMyw0MDg6MzQ2MDMwMDgsNDI0OjAsNDQwOjM0NjA0MDMzLDQ1NjoxMDQ5NjAxLDQ3MjoxMDI0LDQ4ODozMzU1NTQ1Niw1MDQ6MTA0ODU3N30sezA6MTM0MjE5ODA4LDE6MTMxMDcyLDI6MTM0MjE3NzI4LDM6MzIsNDoxMzExMDQsNToxMzQzNTA4ODAsNjoxMzQzNTA4NDgsNzoyMDQ4LDg6MTM0MzQ4ODAwLDk6MTM0MjE5Nzc2LDEwOjEzMzEyMCwxMToxMzQzNDg4MzIsMTI6MjA4MCwxMzowLDE0OjEzNDIxNzc2MCwxNToxMzMxNTIsMjE0NzQ4MzY0ODoyMDQ4LDIxNDc0ODM2NDk6MTM0MzUwODgwLDIxNDc0ODM2NTA6MTM0MjE5ODA4LDIxNDc0ODM2NTE6MTM0MjE3NzI4LDIxNDc0ODM2NTI6MTM0MzQ4ODAwLDIxNDc0ODM2NTM6MTMzMTIwLDIxNDc0ODM2NTQ6MTMzMTUyLDIxNDc0ODM2NTU6MzIsMjE0NzQ4MzY1NjoxMzQyMTc3NjAsMjE0NzQ4MzY1NzoyMDgwLDIxNDc0ODM2NTg6MTMxMTA0LDIxNDc0ODM2NTk6MTM0MzUwODQ4LDIxNDc0ODM2NjA6MCwyMTQ3NDgzNjYxOjEzNDM0ODgzMiwyMTQ3NDgzNjYyOjEzNDIxOTc3NiwyMTQ3NDgzNjYzOjEzMTA3MiwxNjoxMzMxNTIsMTc6MTM0MzUwODQ4LDE4OjMyLDE5OjIwNDgsMjA6MTM0MjE5Nzc2LDIxOjEzNDIxNzc2MCwyMjoxMzQzNDg4MzIsMjM6MTMxMDcyLDI0OjAsMjU6MTMxMTA0LDI2OjEzNDM0ODgwMCwyNzoxMzQyMTk4MDgsMjg6MTM0MzUwODgwLDI5OjEzMzEyMCwzMDoyMDgwLDMxOjEzNDIxNzcyOCwyMTQ3NDgzNjY0OjEzMTA3MiwyMTQ3NDgzNjY1OjIwNDgsMjE0NzQ4MzY2NjoxMzQzNDg4MzIsMjE0NzQ4MzY2NzoxMzMxNTIsMjE0NzQ4MzY2ODozMiwyMTQ3NDgzNjY5OjEzNDM0ODgwMCwyMTQ3NDgzNjcwOjEzNDIxNzcyOCwyMTQ3NDgzNjcxOjEzNDIxOTgwOCwyMTQ3NDgzNjcyOjEzNDM1MDg4MCwyMTQ3NDgzNjczOjEzNDIxNzc2MCwyMTQ3NDgzNjc0OjEzNDIxOTc3NiwyMTQ3NDgzNjc1OjAsMjE0NzQ4MzY3NjoxMzMxMjAsMjE0NzQ4MzY3NzoyMDgwLDIxNDc0ODM2Nzg6MTMxMTA0LDIxNDc0ODM2Nzk6MTM0MzUwODQ4fV0sdT1bNDE2MDc0OTU2OSw1Mjg0ODIzMDQsMzMwMzAxNDQsMjA2NDM4NCwxMjkwMjQsODA2NCw1MDQsMjE0NzQ4MzY3OV0sZD1hLkRFUz1zLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fa2V5LHI9dC53b3JkcyxlPVtdLGk9MDtpPDU2O2krKyl7dmFyIG49Y1tpXS0xO2VbaV09cltuPj4+NV0+Pj4zMS1uJTMyJjF9Zm9yKHZhciBvPXRoaXMuX3N1YktleXM9W10scz0wO3M8MTY7cysrKXtmb3IodmFyIGE9b1tzXT1bXSxmPWxbc10saT0wO2k8MjQ7aSsrKWFbaS82fDBdfD1lWyhoW2ldLTErZiklMjhdPDwzMS1pJTYsYVs0KyhpLzZ8MCldfD1lWzI4KyhoW2krMjRdLTErZiklMjhdPDwzMS1pJTY7YVswXT1hWzBdPDwxfGFbMF0+Pj4zMTtmb3IodmFyIGk9MTtpPDc7aSsrKWFbaV09YVtpXT4+PjQqKGktMSkrMzthWzddPWFbN108PDV8YVs3XT4+PjI3fWZvcih2YXIgdT10aGlzLl9pbnZTdWJLZXlzPVtdLGk9MDtpPDE2O2krKyl1W2ldPW9bMTUtaV19LGVuY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2RvQ3J5cHRCbG9jayh0LHIsdGhpcy5fc3ViS2V5cyl9LGRlY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2RvQ3J5cHRCbG9jayh0LHIsdGhpcy5faW52U3ViS2V5cyl9LF9kb0NyeXB0QmxvY2s6ZnVuY3Rpb24odCxpLG4pe3RoaXMuX2xCbG9jaz10W2ldLHRoaXMuX3JCbG9jaz10W2krMV0sci5jYWxsKHRoaXMsNCwyNTI2NDUxMzUpLHIuY2FsbCh0aGlzLDE2LDY1NTM1KSxlLmNhbGwodGhpcywyLDg1ODk5MzQ1OSksZS5jYWxsKHRoaXMsOCwxNjcxMTkzNSksci5jYWxsKHRoaXMsMSwxNDMxNjU1NzY1KTtmb3IodmFyIG89MDtvPDE2O28rKyl7Zm9yKHZhciBzPW5bb10sYT10aGlzLl9sQmxvY2ssYz10aGlzLl9yQmxvY2ssaD0wLGw9MDtsPDg7bCsrKWh8PWZbbF1bKChjXnNbbF0pJnVbbF0pPj4+MF07dGhpcy5fbEJsb2NrPWMsdGhpcy5fckJsb2NrPWFeaH12YXIgZD10aGlzLl9sQmxvY2s7dGhpcy5fbEJsb2NrPXRoaXMuX3JCbG9jayx0aGlzLl9yQmxvY2s9ZCxyLmNhbGwodGhpcywxLDE0MzE2NTU3NjUpLGUuY2FsbCh0aGlzLDgsMTY3MTE5MzUpLGUuY2FsbCh0aGlzLDIsODU4OTkzNDU5KSxyLmNhbGwodGhpcywxNiw2NTUzNSksci5jYWxsKHRoaXMsNCwyNTI2NDUxMzUpLHRbaV09dGhpcy5fbEJsb2NrLHRbaSsxXT10aGlzLl9yQmxvY2t9LGtleVNpemU6MixpdlNpemU6MixibG9ja1NpemU6Mn0pO2kuREVTPXMuX2NyZWF0ZUhlbHBlcihkKTt2YXIgdj1hLlRyaXBsZURFUz1zLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9rZXkscj10LndvcmRzO3RoaXMuX2RlczE9ZC5jcmVhdGVFbmNyeXB0b3Ioby5jcmVhdGUoci5zbGljZSgwLDIpKSksdGhpcy5fZGVzMj1kLmNyZWF0ZUVuY3J5cHRvcihvLmNyZWF0ZShyLnNsaWNlKDIsNCkpKSx0aGlzLl9kZXMzPWQuY3JlYXRlRW5jcnlwdG9yKG8uY3JlYXRlKHIuc2xpY2UoNCw2KSkpfSxlbmNyeXB0QmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9kZXMxLmVuY3J5cHRCbG9jayh0LHIpLHRoaXMuX2RlczIuZGVjcnlwdEJsb2NrKHQsciksdGhpcy5fZGVzMy5lbmNyeXB0QmxvY2sodCxyKX0sZGVjcnlwdEJsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fZGVzMy5kZWNyeXB0QmxvY2sodCxyKSx0aGlzLl9kZXMyLmVuY3J5cHRCbG9jayh0LHIpLHRoaXMuX2RlczEuZGVjcnlwdEJsb2NrKHQscil9LGtleVNpemU6NixpdlNpemU6MixibG9ja1NpemU6Mn0pO2kuVHJpcGxlREVTPXMuX2NyZWF0ZUhlbHBlcih2KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHIoKXtmb3IodmFyIHQ9dGhpcy5fUyxyPXRoaXMuX2ksZT10aGlzLl9qLGk9MCxuPTA7bjw0O24rKyl7cj0ocisxKSUyNTYsZT0oZSt0W3JdKSUyNTY7dmFyIG89dFtyXTt0W3JdPXRbZV0sdFtlXT1vLGl8PXRbKHRbcl0rdFtlXSklMjU2XTw8MjQtOCpufXJldHVybiB0aGlzLl9pPXIsdGhpcy5faj1lLGl9dmFyIGU9dCxpPWUubGliLG49aS5TdHJlYW1DaXBoZXIsbz1lLmFsZ28scz1vLlJDND1uLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fa2V5LHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT10aGlzLl9TPVtdLG49MDtuPDI1NjtuKyspaVtuXT1uO2Zvcih2YXIgbj0wLG89MDtuPDI1NjtuKyspe3ZhciBzPW4lZSxhPXJbcz4+PjJdPj4+MjQtcyU0KjgmMjU1O289KG8raVtuXSthKSUyNTY7dmFyIGM9aVtuXTtpW25dPWlbb10saVtvXT1jfXRoaXMuX2k9dGhpcy5faj0wfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt0W2VdXj1yLmNhbGwodGhpcyl9LGtleVNpemU6OCxpdlNpemU6MH0pO2UuUkM0PW4uX2NyZWF0ZUhlbHBlcihzKTt2YXIgYT1vLlJDNERyb3A9cy5leHRlbmQoe2NmZzpzLmNmZy5leHRlbmQoe2Ryb3A6MTkyfSksX2RvUmVzZXQ6ZnVuY3Rpb24oKXtzLl9kb1Jlc2V0LmNhbGwodGhpcyk7Zm9yKHZhciB0PXRoaXMuY2ZnLmRyb3A7dD4wO3QtLSlyLmNhbGwodGhpcyl9fSk7ZS5SQzREcm9wPW4uX2NyZWF0ZUhlbHBlcihhKX0oKSx0Lm1vZGUuQ1RSR2xhZG1hbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIodCl7aWYoMjU1PT09KHQ+PjI0JjI1NSkpe3ZhciByPXQ+PjE2JjI1NSxlPXQ+PjgmMjU1LGk9MjU1JnQ7MjU1PT09cj8ocj0wLDI1NT09PWU/KGU9MCwyNTU9PT1pP2k9MDorK2kpOisrZSk6KytyLHQ9MCx0Kz1yPDwxNix0Kz1lPDw4LHQrPWl9ZWxzZSB0Kz0xPDwyNDtyZXR1cm4gdH1mdW5jdGlvbiBlKHQpe3JldHVybiAwPT09KHRbMF09cih0WzBdKSkmJih0WzFdPXIodFsxXSkpLHR9dmFyIGk9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpLG49aS5FbmNyeXB0b3I9aS5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBpPXRoaXMuX2NpcGhlcixuPWkuYmxvY2tTaXplLG89dGhpcy5faXYscz10aGlzLl9jb3VudGVyO28mJihzPXRoaXMuX2NvdW50ZXI9by5zbGljZSgwKSx0aGlzLl9pdj12b2lkIDApLGUocyk7dmFyIGE9cy5zbGljZSgwKTtpLmVuY3J5cHRCbG9jayhhLDApO2Zvcih2YXIgYz0wO2M8bjtjKyspdFtyK2NdXj1hW2NdfX0pO3JldHVybiBpLkRlY3J5cHRvcj1uLGl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7Zm9yKHZhciB0PXRoaXMuX1gscj10aGlzLl9DLGU9MDtlPDg7ZSsrKWFbZV09cltlXTtyWzBdPXJbMF0rMTI5NTMwNzU5Nyt0aGlzLl9ifDAsclsxXT1yWzFdKzM1NDUwNTIzNzErKHJbMF0+Pj4wPGFbMF0+Pj4wPzE6MCl8MCxyWzJdPXJbMl0rODg2MjYzMDkyKyhyWzFdPj4+MDxhWzFdPj4+MD8xOjApfDAsclszXT1yWzNdKzEyOTUzMDc1OTcrKHJbMl0+Pj4wPGFbMl0+Pj4wPzE6MCl8MCxyWzRdPXJbNF0rMzU0NTA1MjM3MSsoclszXT4+PjA8YVszXT4+PjA/MTowKXwwLHJbNV09cls1XSs4ODYyNjMwOTIrKHJbNF0+Pj4wPGFbNF0+Pj4wPzE6MCl8MCxyWzZdPXJbNl0rMTI5NTMwNzU5Nysocls1XT4+PjA8YVs1XT4+PjA/MTowKXwwLHJbN109cls3XSszNTQ1MDUyMzcxKyhyWzZdPj4+MDxhWzZdPj4+MD8xOjApfDAsdGhpcy5fYj1yWzddPj4+MDxhWzddPj4+MD8xOjA7Zm9yKHZhciBlPTA7ZTw4O2UrKyl7dmFyIGk9dFtlXStyW2VdLG49NjU1MzUmaSxvPWk+Pj4xNixzPSgobipuPj4+MTcpK24qbz4+PjE1KStvKm8saD0oKDQyOTQ5MDE3NjAmaSkqaXwwKSsoKDY1NTM1JmkpKml8MCk7Y1tlXT1zXmh9dFswXT1jWzBdKyhjWzddPDwxNnxjWzddPj4+MTYpKyhjWzZdPDwxNnxjWzZdPj4+MTYpfDAsdFsxXT1jWzFdKyhjWzBdPDw4fGNbMF0+Pj4yNCkrY1s3XXwwLHRbMl09Y1syXSsoY1sxXTw8MTZ8Y1sxXT4+PjE2KSsoY1swXTw8MTZ8Y1swXT4+PjE2KXwwLHRbM109Y1szXSsoY1syXTw8OHxjWzJdPj4+MjQpK2NbMV18MCx0WzRdPWNbNF0rKGNbM108PDE2fGNbM10+Pj4xNikrKGNbMl08PDE2fGNbMl0+Pj4xNil8MCx0WzVdPWNbNV0rKGNbNF08PDh8Y1s0XT4+PjI0KStjWzNdfDAsdFs2XT1jWzZdKyhjWzVdPDwxNnxjWzVdPj4+MTYpKyhjWzRdPDwxNnxjWzRdPj4+MTYpfDAsdFs3XT1jWzddKyhjWzZdPDw4fGNbNl0+Pj4yNCkrY1s1XXwwfXZhciBlPXQsaT1lLmxpYixuPWkuU3RyZWFtQ2lwaGVyLG89ZS5hbGdvLHM9W10sYT1bXSxjPVtdLGg9by5SYWJiaXQ9bi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX2tleS53b3JkcyxlPXRoaXMuY2ZnLml2LGk9MDtpPDQ7aSsrKXRbaV09MTY3MTE5MzUmKHRbaV08PDh8dFtpXT4+PjI0KXw0Mjc4MjU1MzYwJih0W2ldPDwyNHx0W2ldPj4+OCk7dmFyIG49dGhpcy5fWD1bdFswXSx0WzNdPDwxNnx0WzJdPj4+MTYsdFsxXSx0WzBdPDwxNnx0WzNdPj4+MTYsdFsyXSx0WzFdPDwxNnx0WzBdPj4+MTYsdFszXSx0WzJdPDwxNnx0WzFdPj4+MTZdLG89dGhpcy5fQz1bdFsyXTw8MTZ8dFsyXT4+PjE2LDQyOTQ5MDE3NjAmdFswXXw2NTUzNSZ0WzFdLHRbM108PDE2fHRbM10+Pj4xNiw0Mjk0OTAxNzYwJnRbMV18NjU1MzUmdFsyXSx0WzBdPDwxNnx0WzBdPj4+MTYsNDI5NDkwMTc2MCZ0WzJdfDY1NTM1JnRbM10sdFsxXTw8MTZ8dFsxXT4+PjE2LDQyOTQ5MDE3NjAmdFszXXw2NTUzNSZ0WzBdXTt0aGlzLl9iPTA7Zm9yKHZhciBpPTA7aTw0O2krKylyLmNhbGwodGhpcyk7Zm9yKHZhciBpPTA7aTw4O2krKylvW2ldXj1uW2krNCY3XTtpZihlKXt2YXIgcz1lLndvcmRzLGE9c1swXSxjPXNbMV0saD0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KSxsPTE2NzExOTM1JihjPDw4fGM+Pj4yNCl8NDI3ODI1NTM2MCYoYzw8MjR8Yz4+PjgpLGY9aD4+PjE2fDQyOTQ5MDE3NjAmbCx1PWw8PDE2fDY1NTM1Jmg7b1swXV49aCxvWzFdXj1mLG9bMl1ePWwsb1szXV49dSxvWzRdXj1oLG9bNV1ePWYsb1s2XV49bCxvWzddXj11O2Zvcih2YXIgaT0wO2k8NDtpKyspci5jYWxsKHRoaXMpfX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fWDtyLmNhbGwodGhpcyksc1swXT1pWzBdXmlbNV0+Pj4xNl5pWzNdPDwxNixzWzFdPWlbMl1eaVs3XT4+PjE2XmlbNV08PDE2LHNbMl09aVs0XV5pWzFdPj4+MTZeaVs3XTw8MTYsc1szXT1pWzZdXmlbM10+Pj4xNl5pWzFdPDwxNjtmb3IodmFyIG49MDtuPDQ7bisrKXNbbl09MTY3MTE5MzUmKHNbbl08PDh8c1tuXT4+PjI0KXw0Mjc4MjU1MzYwJihzW25dPDwyNHxzW25dPj4+OCksdFtlK25dXj1zW25dfSxibG9ja1NpemU6NCxpdlNpemU6Mn0pO2UuUmFiYml0PW4uX2NyZWF0ZUhlbHBlcihoKX0oKSx0Lm1vZGUuQ1RSPWZ1bmN0aW9uKCl7dmFyIHI9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpLGU9ci5FbmNyeXB0b3I9ci5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX2NpcGhlcixpPWUuYmxvY2tTaXplLG49dGhpcy5faXYsbz10aGlzLl9jb3VudGVyO24mJihvPXRoaXMuX2NvdW50ZXI9bi5zbGljZSgwKSx0aGlzLl9pdj12b2lkIDApO3ZhciBzPW8uc2xpY2UoMCk7ZS5lbmNyeXB0QmxvY2socywwKSxvW2ktMV09b1tpLTFdKzF8MDtmb3IodmFyIGE9MDthPGk7YSsrKXRbcithXV49c1thXX19KTtyZXR1cm4gci5EZWNyeXB0b3I9ZSxyfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcigpe2Zvcih2YXIgdD10aGlzLl9YLHI9dGhpcy5fQyxlPTA7ZTw4O2UrKylhW2VdPXJbZV07clswXT1yWzBdKzEyOTUzMDc1OTcrdGhpcy5fYnwwLHJbMV09clsxXSszNTQ1MDUyMzcxKyhyWzBdPj4+MDxhWzBdPj4+MD8xOjApfDAsclsyXT1yWzJdKzg4NjI2MzA5MisoclsxXT4+PjA8YVsxXT4+PjA/MTowKXwwLHJbM109clszXSsxMjk1MzA3NTk3KyhyWzJdPj4+MDxhWzJdPj4+MD8xOjApfDAscls0XT1yWzRdKzM1NDUwNTIzNzErKHJbM10+Pj4wPGFbM10+Pj4wPzE6MCl8MCxyWzVdPXJbNV0rODg2MjYzMDkyKyhyWzRdPj4+MDxhWzRdPj4+MD8xOjApfDAscls2XT1yWzZdKzEyOTUzMDc1OTcrKHJbNV0+Pj4wPGFbNV0+Pj4wPzE6MCl8MCxyWzddPXJbN10rMzU0NTA1MjM3MSsocls2XT4+PjA8YVs2XT4+PjA/MTowKXwwLHRoaXMuX2I9cls3XT4+PjA8YVs3XT4+PjA/MTowO2Zvcih2YXIgZT0wO2U8ODtlKyspe3ZhciBpPXRbZV0rcltlXSxuPTY1NTM1Jmksbz1pPj4+MTYscz0oKG4qbj4+PjE3KStuKm8+Pj4xNSkrbypvLGg9KCg0Mjk0OTAxNzYwJmkpKml8MCkrKCg2NTUzNSZpKSppfDApO2NbZV09c15ofXRbMF09Y1swXSsoY1s3XTw8MTZ8Y1s3XT4+PjE2KSsoY1s2XTw8MTZ8Y1s2XT4+PjE2KXwwLHRbMV09Y1sxXSsoY1swXTw8OHxjWzBdPj4+MjQpK2NbN118MCx0WzJdPWNbMl0rKGNbMV08PDE2fGNbMV0+Pj4xNikrKGNbMF08PDE2fGNbMF0+Pj4xNil8MCx0WzNdPWNbM10rKGNbMl08PDh8Y1syXT4+PjI0KStjWzFdfDAsdFs0XT1jWzRdKyhjWzNdPDwxNnxjWzNdPj4+MTYpKyhjWzJdPDwxNnxjWzJdPj4+MTYpfDAsdFs1XT1jWzVdKyhjWzRdPDw4fGNbNF0+Pj4yNCkrY1szXXwwLHRbNl09Y1s2XSsoY1s1XTw8MTZ8Y1s1XT4+PjE2KSsoY1s0XTw8MTZ8Y1s0XT4+PjE2KXwwLHRbN109Y1s3XSsoY1s2XTw8OHxjWzZdPj4+MjQpK2NbNV18MH12YXIgZT10LGk9ZS5saWIsbj1pLlN0cmVhbUNpcGhlcixvPWUuYWxnbyxzPVtdLGE9W10sYz1bXSxoPW8uUmFiYml0TGVnYWN5PW4uZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2tleS53b3JkcyxlPXRoaXMuY2ZnLml2LGk9dGhpcy5fWD1bdFswXSx0WzNdPDwxNnx0WzJdPj4+MTYsdFsxXSx0WzBdPDwxNnx0WzNdPj4+MTYsdFsyXSx0WzFdPDwxNnx0WzBdPj4+MTYsdFszXSx0WzJdPDwxNnx0WzFdPj4+MTZdLG49dGhpcy5fQz1bdFsyXTw8MTZ8dFsyXT4+PjE2LDQyOTQ5MDE3NjAmdFswXXw2NTUzNSZ0WzFdLHRbM108PDE2fHRbM10+Pj4xNiw0Mjk0OTAxNzYwJnRbMV18NjU1MzUmdFsyXSx0WzBdPDwxNnx0WzBdPj4+MTYsNDI5NDkwMTc2MCZ0WzJdfDY1NTM1JnRbM10sdFsxXTw8MTZ8dFsxXT4+PjE2LDQyOTQ5MDE3NjAmdFszXXw2NTUzNSZ0WzBdXTt0aGlzLl9iPTA7Zm9yKHZhciBvPTA7bzw0O28rKylyLmNhbGwodGhpcyk7Zm9yKHZhciBvPTA7bzw4O28rKyluW29dXj1pW28rNCY3XTtpZihlKXt2YXIgcz1lLndvcmRzLGE9c1swXSxjPXNbMV0saD0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KSxsPTE2NzExOTM1JihjPDw4fGM+Pj4yNCl8NDI3ODI1NTM2MCYoYzw8MjR8Yz4+PjgpLGY9aD4+PjE2fDQyOTQ5MDE3NjAmbCx1PWw8PDE2fDY1NTM1Jmg7blswXV49aCxuWzFdXj1mLG5bMl1ePWwsblszXV49dSxuWzRdXj1oLG5bNV1ePWYsbls2XV49bCxuWzddXj11O2Zvcih2YXIgbz0wO288NDtvKyspci5jYWxsKHRoaXMpfX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fWDtyLmNhbGwodGhpcyksc1swXT1pWzBdXmlbNV0+Pj4xNl5pWzNdPDwxNixzWzFdPWlbMl1eaVs3XT4+PjE2XmlbNV08PDE2LHNbMl09aVs0XV5pWzFdPj4+MTZeaVs3XTw8MTYsc1szXT1pWzZdXmlbM10+Pj4xNl5pWzFdPDwxNjtmb3IodmFyIG49MDtuPDQ7bisrKXNbbl09MTY3MTE5MzUmKHNbbl08PDh8c1tuXT4+PjI0KXw0Mjc4MjU1MzYwJihzW25dPDwyNHxzW25dPj4+OCksdFtlK25dXj1zW25dfSxibG9ja1NpemU6NCxpdlNpemU6Mn0pO2UuUmFiYml0TGVnYWN5PW4uX2NyZWF0ZUhlbHBlcihoKX0oKSx0LnBhZC5aZXJvUGFkZGluZz17cGFkOmZ1bmN0aW9uKHQscil7dmFyIGU9NCpyO3QuY2xhbXAoKSx0LnNpZ0J5dGVzKz1lLSh0LnNpZ0J5dGVzJWV8fGUpfSx1bnBhZDpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMtMTshKHJbZT4+PjJdPj4+MjQtZSU0KjgmMjU1KTspZS0tO3Quc2lnQnl0ZXM9ZSsxfX0sdH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y3J5cHRvLWpzLm1pbi5qcy5tYXAiXX0=
//------QC-SOURCE-SPLIT------
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/Script/ListView/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/ListView/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; //计算bufferZoneitem的显示范围
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxMaXN0Vmlld1xcTGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsMkNBQXFDO0FBRS9CLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRTVDLFlBQVk7QUFDWixJQUFZLFFBT1g7QUFQRCxXQUFZLFFBQVE7SUFDaEIsVUFBVTtJQUNWLG1EQUFjLENBQUE7SUFDZCxVQUFVO0lBQ1YsK0NBQVksQ0FBQTtJQUNaLFVBQVU7SUFDVix1Q0FBUSxDQUFBO0FBQ1osQ0FBQyxFQVBXLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBT25CO0FBRUQsY0FBYztBQUNkLElBQVksYUFLWDtBQUxELFdBQVksYUFBYTtJQUNyQixVQUFVO0lBQ1YsNkRBQWMsQ0FBQTtJQUNkLFVBQVU7SUFDVix5REFBWSxDQUFBO0FBQ2hCLENBQUMsRUFMVyxhQUFhLEdBQWIscUJBQWEsS0FBYixxQkFBYSxRQUt4QjtBQUVEOzs7Ozs7O0dBT0c7QUFFSDtJQUFrQyx3QkFBWTtJQUE5QztRQUFBLHFFQXlpQkM7UUF2aUJHLHFEQUFxRDtRQUNyRCxVQUFVO1FBRUgsZ0JBQVUsR0FBWSxJQUFJLENBQUM7UUFFbEMsVUFBVTtRQUVILFVBQUksR0FBYSxRQUFRLENBQUMsUUFBUSxDQUFDO1FBRTFDLGNBQWM7UUFFUCxlQUFTLEdBQWtCLGFBQWEsQ0FBQyxVQUFVLENBQUM7UUFFM0QsY0FBYztRQUVQLFlBQU0sR0FBVyxDQUFDLENBQUM7UUFFMUIsY0FBYztRQUVQLFlBQU0sR0FBVyxDQUFDLENBQUM7UUFFMUIsU0FBUztRQUVGLGlCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBRS9C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QUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3Q0FDL0c7SUFJMUI7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sZ0JBQUssT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUM7d0NBQzNHO0lBSTFCO1FBREMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLGdCQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQzs2Q0FDckc7SUFJL0I7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sZ0JBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUMsRUFBRSxDQUFDO2dEQUNsRztJQUlsQztRQURDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxnQkFBSyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUM7OENBQ3RHO0lBS2hDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUM7MENBQ087SUFJNUI7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sZ0JBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUMsRUFBRSxDQUFDOytDQUNyRztJQTFDaEIsSUFBSTtRQUR4QixPQUFPO09BQ2EsSUFBSSxDQXlpQnhCO0lBQUQsV0FBQztDQXppQkQsQUF5aUJDLENBemlCaUMsRUFBRSxDQUFDLFNBQVMsR0F5aUI3QztrQkF6aUJvQixJQUFJIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IEl0ZW1SZW5kZXIgZnJvbSBcIi4vSXRlbVJlbmRlclwiXHJcblxyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuLyoq5YiX6KGo5o6S5YiX5pa55byPICovXHJcbmV4cG9ydCBlbnVtIExpc3RUeXBlIHtcclxuICAgIC8qKuawtOW5s+aOkuWIlyAqL1xyXG4gICAgSG9yaXpvbnRhbCA9IDEsXHJcbiAgICAvKirlnoLnm7TmjpLliJcgKi9cclxuICAgIFZlcnRpY2FsID0gMixcclxuICAgIC8qKue9keagvOaOkuWIlyAqL1xyXG4gICAgR3JpZCA9IDNcclxufVxyXG5cclxuLyoq572R5qC85biD5bGA5Lit55qE5pa55ZCRICovXHJcbmV4cG9ydCBlbnVtIFN0YXJ0QXhpc1R5cGUge1xyXG4gICAgLyoq5rC05bmz5o6S5YiXICovXHJcbiAgICBIb3Jpem9udGFsID0gMSxcclxuICAgIC8qKuWeguebtOaOkuWIlyAqL1xyXG4gICAgVmVydGljYWwgPSAyLFxyXG59XHJcblxyXG4vKipcclxuICog5YiX6KGoXHJcbiAqIOagueaNrmNvY29zX2V4YW1wbGXnmoRsaXN0Vmlld+aUueWKqOiAjOadpVxyXG4gKiBAYXV0aG9yIGNoZW5rYWkgMjAyMC43LjhcclxuICogQGV4YW1wbGVcclxuICogIDEu5Yib5bu6Y29jb3PnmoRTY3JvbGxWaWV357uE5Lu277yM5re75YqgTGlzdO+8jOiuvue9rkxpc3TlsZ7mgKfljbPlj69cclxuICogIFxyXG4gKi9cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGlzdCBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgLy89PT09PT09PT09PT09PT09PT09PSDlsZ7mgKfpnaLmnb8gPT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgLyoq5YiX6KGo6YCJ6aG5ICovXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBjYy5Ob2RlLCB0b29sdGlwOiBcIuWIl+ihqOmhuVwiIH0pXHJcbiAgICBwdWJsaWMgaXRlbVJlbmRlcjogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgLyoq5o6S5YiX5pa55byPICovXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBjYy5FbnVtKExpc3RUeXBlKSwgdG9vbHRpcDogXCLmjpLliJfmlrnlvI9cIiB9KVxyXG4gICAgcHVibGljIHR5cGU6IExpc3RUeXBlID0gTGlzdFR5cGUuVmVydGljYWw7XHJcblxyXG4gICAgLyoq572R5qC85biD5bGA5Lit55qE5pa55ZCRICovXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBjYy5FbnVtKFN0YXJ0QXhpc1R5cGUpLCB0b29sdGlwOiBcIue9keagvOW4g+WxgOS4reeahOaWueWQkVwiLCB2aXNpYmxlKCkgeyByZXR1cm4gdGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQgfSB9KVxyXG4gICAgcHVibGljIHN0YXJ0QXhpczogU3RhcnRBeGlzVHlwZSA9IFN0YXJ0QXhpc1R5cGUuSG9yaXpvbnRhbDtcclxuXHJcbiAgICAvKirliJfooajpobnkuYvpl7RY6Ze06ZqUICovXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBjYy5JbnRlZ2VyLCB0b29sdGlwOiBcIuWIl+ihqOmhuVjpl7TpmpRcIiwgdmlzaWJsZSgpIHsgcmV0dXJuICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuSG9yaXpvbnRhbCB8fCB0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCkgfSB9KVxyXG4gICAgcHVibGljIHNwYWNlWDogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKirliJfooajpobnkuYvpl7RZ6Ze06ZqUICovXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBjYy5JbnRlZ2VyLCB0b29sdGlwOiBcIuWIl+ihqOmhuVnpl7TpmpRcIiwgdmlzaWJsZSgpIHsgcmV0dXJuIHRoaXMudHlwZSA9PSBMaXN0VHlwZS5WZXJ0aWNhbCB8fCB0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCB9IH0pXHJcbiAgICBwdWJsaWMgc3BhY2VZOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8qKuS4iumXtOi3nSAqL1xyXG4gICAgQHByb3BlcnR5KHsgdHlwZTogY2MuSW50ZWdlciwgdG9vbHRpcDogXCLkuIrpl7Tot51cIiwgdmlzaWJsZSgpIHsgcmV0dXJuICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuVmVydGljYWwgfHwgdGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIH0gfSlcclxuICAgIHB1YmxpYyBwYWRkaW5nX3RvcDogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKirkuIvpl7Tot50gKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkludGVnZXIsIHRvb2x0aXA6IFwi5LiL6Ze06LedXCIsIHZpc2libGUoKSB7IHJldHVybiAodGhpcy50eXBlID09IExpc3RUeXBlLlZlcnRpY2FsIHx8IHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkKSB9IH0pXHJcbiAgICBwdWJsaWMgcGFkZGluZ19idXR0b206IG51bWJlciA9IDA7XHJcblxyXG4gICAgLyoq5bem6Ze06LedICovXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBjYy5JbnRlZ2VyLCB0b29sdGlwOiBcIuW3pumXtOi3nVwiLCB2aXNpYmxlKCkgeyByZXR1cm4gKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5Ib3Jpem9udGFsIHx8IHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkKSB9IH0pXHJcbiAgICBwdWJsaWMgcGFkZGluZ19sZWZ0OiBudW1iZXIgPSAwO1xyXG5cclxuXHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkludGVnZXIpXHJcbiAgICBwdWJsaWMgX3BhZGRpbmc6IG51bWJlciA9IDA7XHJcblxyXG4gICAgLyoq5Y+z6Ze06LedICovXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBjYy5JbnRlZ2VyLCB0b29sdGlwOiBcIuWPs+mXtOi3nVwiLCB2aXNpYmxlKCkgeyByZXR1cm4gKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5Ib3Jpem9udGFsIHx8IHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkKSB9IH0pXHJcbiAgICBwdWJsaWMgcGFkZGluZ19yaWdodDogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvLz09PT09PT09PT09PT09PT09PT09PT0g5rua5Yqo5a655ZmoID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgIC8qKuWIl+ihqOa7muWKqOWuueWZqCAqL1xyXG4gICAgcHVibGljIHNjcm9sbFZpZXc6IGNjLlNjcm9sbFZpZXcgPSBudWxsO1xyXG4gICAgLyoqc2Nyb2xsVmlld+eahOWGheWuueWuueWZqCAqL1xyXG4gICAgcHJpdmF0ZSBjb250ZW50OiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PSDliJfooajpobkgPT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAvKirliJfooajpobnmlbDmja4gKi9cclxuICAgIHByaXZhdGUgaXRlbURhdGFMaXN0OiBBcnJheTxhbnk+ID0gW107XHJcbiAgICAvKirlupTliJvlu7rnmoTlrp7kvovmlbDph48gKi9cclxuICAgIHByaXZhdGUgc3Bhd25Db3VudDogbnVtYmVyID0gMDtcclxuICAgIC8qKuWtmOaUvuWIl+ihqOmhueWunuS+i+eahOaVsOe7hCAqL1xyXG4gICAgcHJpdmF0ZSBpdGVtTGlzdDogQXJyYXk8Y2MuTm9kZT4gPSBbXTtcclxuICAgIC8qKml0ZW3nmoTpq5jluqYgKi9cclxuICAgIHByaXZhdGUgaXRlbUhlaWdodDogbnVtYmVyID0gMDtcclxuICAgIC8qKml0ZW3nmoTlrr3luqYgKi9cclxuICAgIHByaXZhdGUgaXRlbVdpZHRoOiBudW1iZXIgPSAwO1xyXG4gICAgLyoq5a2Y5pS+5LiN5YaN5L2/55So5Lit55qE5YiX6KGo6aG5ICovXHJcbiAgICBwcml2YXRlIGl0ZW1Qb29sOiBBcnJheTxjYy5Ob2RlPiA9IFtdO1xyXG5cclxuICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT0g6K6h566X5Y+C5pWwID09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAvKirot53nprtzY3JvbGxWaWV35Lit5b+D54K555qE6Led56a777yM6LaF6L+H6L+Z5Liq6Led56a755qEaXRlbeS8muiiq+mHjee9ru+8jOS4gOiIrOiuvue9ruS4uiBzY3JvbGxWSWV3LmhlaWdodC8yICsgaXRlbS5oZWlndC8yICsgc3BhY2XvvIzlm6DkuLrov5nkuKrot53nprtpdGVt5q2j5aW96LaF5Ye6c2Nyb2xsVmlld+aYvuekuuiMg+WbtCAqL1xyXG4gICAgcHJpdmF0ZSBoYWxmU2Nyb2xsVmlldzogbnVtYmVyID0gMDtcclxuICAgIC8qKuS4iuS4gOasoWNvbnRlbnTnmoRY5YC877yM55So5LqO5ZKM546w5ZyoY29udGVudOeahFjlgLzmr5TovoPvvIzlvpflh7rmmK/lkJHlt6bov5jmmK/lkJHlj7Pmu5rliqggKi9cclxuICAgIHByaXZhdGUgbGFzdENvbnRlbnRQb3NYOiBudW1iZXIgPSAwO1xyXG4gICAgLyoq5LiK5LiA5qyhY29udGVudOeahFnlgLzvvIznlKjkuo7lkoznjrDlnKhjb250ZW5055qEWeWAvOavlOi+g++8jOW+l+WHuuaYr+WQkeS4iui/mOaYr+WQkeS4i+a7muWKqCAqL1xyXG4gICAgcHJpdmF0ZSBsYXN0Q29udGVudFBvc1k6IG51bWJlciA9IDA7XHJcbiAgICAvKirnvZHmoLzooYzmlbAgKi9cclxuICAgIHByaXZhdGUgZ3JpZFJvdzogbnVtYmVyID0gMDtcclxuICAgIC8qKue9keagvOWIl+aVsCAqL1xyXG4gICAgcHJpdmF0ZSBncmlkQ29sOiBudW1iZXIgPSAwO1xyXG4gICAgLyoq5Yi35paw5pe26Ze077yM5Y2V5L2NcyAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVUaW1lcjogbnVtYmVyID0gMDtcclxuICAgIC8qKuWIt+aWsOmXtOmalO+8jOWNleS9jXMgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlSW50ZXJ2YWw6IG51bWJlciA9IDAuMTtcclxuICAgIC8qKuaYr+WQpua7muWKqOWuueWZqCAqL1xyXG4gICAgcHJpdmF0ZSBiU2Nyb2xsaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAvKirliLfmlrDnmoTlh73mlbAgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlRnVuOiBGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHsgfTtcclxuXHJcbiAgICBvbkxvYWQoKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtSGVpZ2h0ID0gdGhpcy5pdGVtUmVuZGVyLmhlaWdodDtcclxuICAgICAgICB0aGlzLml0ZW1XaWR0aCA9IHRoaXMuaXRlbVJlbmRlci53aWR0aDtcclxuICAgICAgICB0aGlzLnNjcm9sbFZpZXcgPSB0aGlzLm5vZGUuZ2V0Q29tcG9uZW50KGNjLlNjcm9sbFZpZXcpO1xyXG4gICAgICAgIHRoaXMuY29udGVudCA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50O1xyXG4gICAgICAgIHRoaXMuY29udGVudC5hbmNob3JYID0gMDtcclxuICAgICAgICB0aGlzLmNvbnRlbnQuYW5jaG9yWSA9IDE7XHJcbiAgICAgICAgdGhpcy5jb250ZW50LnJlbW92ZUFsbENoaWxkcmVuKCk7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxWaWV3Lm5vZGUub24oXCJzY3JvbGxpbmdcIiwgdGhpcy5vblNjcm9sbGluZywgdGhpcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDliJfooajmlbDmja4gKOWIl+ihqOaVsOaNruWkjeWItuS9v+eUqO+8jOWmguaenOWIl+ihqOaVsOaNruaUueWPmO+8jOWImemcgOimgemHjeaWsOiuvue9ruS4gOmBjeaVsOaNrilcclxuICAgICAqIEBwYXJhbSBpdGVtRGF0YUxpc3QgaXRlbeaVsOaNruWIl+ihqFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0RGF0YShpdGVtRGF0YUxpc3Q6IEFycmF5PGFueT4pIHtcclxuICAgICAgICB0aGlzLml0ZW1EYXRhTGlzdCA9IGl0ZW1EYXRhTGlzdC5zbGljZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xyXG4gICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgLyoq6K6h566X5YiX6KGo55qE5ZCE6aG55Y+C5pWwICovXHJcbiAgICBwcml2YXRlIGNvdW50TGlzdFBhcmFtKCkge1xyXG4gICAgICAgIGxldCBkYXRhTGVuID0gdGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoO1xyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuVmVydGljYWwpIHtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxWaWV3Lmhvcml6b250YWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxWaWV3LnZlcnRpY2FsID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5jb250ZW50LndpZHRoID0gdGhpcy5jb250ZW50LnBhcmVudC53aWR0aDtcclxuICAgICAgICAgICAgdGhpcy5jb250ZW50LmhlaWdodCA9IGRhdGFMZW4gKiB0aGlzLml0ZW1IZWlnaHQgKyAoZGF0YUxlbiAtIDEpICogdGhpcy5zcGFjZVkgKyB0aGlzLnBhZGRpbmdfdG9wICsgdGhpcy5wYWRkaW5nX2J1dHRvbTtcclxuICAgICAgICAgICAgdGhpcy5zcGF3bkNvdW50ID0gTWF0aC5yb3VuZCh0aGlzLnNjcm9sbFZpZXcubm9kZS5oZWlnaHQgLyAodGhpcy5pdGVtSGVpZ2h0ICsgdGhpcy5zcGFjZVkpKSArIDI7IC8v6K6h566X5Yib5bu655qEaXRlbeWunuS+i+aVsOmHj++8jOavlOW9k+WJjXNjcm9sbFZpZXflrrnlmajog73mlL7kuIvnmoRpdGVt5pWw6YeP5YaN5Yqg5LiKMuS4qlxyXG4gICAgICAgICAgICB0aGlzLmhhbGZTY3JvbGxWaWV3ID0gdGhpcy5zY3JvbGxWaWV3Lm5vZGUuaGVpZ2h0IC8gMiArIHRoaXMuaXRlbUhlaWdodCAvIDIgKyB0aGlzLnNwYWNlWTsgLy/orqHnrpdidWZmZXJab25l77yMaXRlbeeahOaYvuekuuiMg+WbtFxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZ1biA9IHRoaXMudXBkYXRlVjtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5Ib3Jpem9udGFsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy5ob3Jpem9udGFsID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxWaWV3LnZlcnRpY2FsID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGVudC53aWR0aCA9IGRhdGFMZW4gKiB0aGlzLml0ZW1XaWR0aCArIChkYXRhTGVuIC0gMSkgKiB0aGlzLnNwYWNlWCArIHRoaXMucGFkZGluZ19sZWZ0ICsgdGhpcy5wYWRkaW5nX3JpZ2h0O1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQuaGVpZ2h0ID0gdGhpcy5jb250ZW50LnBhcmVudC5oZWlnaHQ7XHJcbiAgICAgICAgICAgIHRoaXMuc3Bhd25Db3VudCA9IE1hdGgucm91bmQodGhpcy5zY3JvbGxWaWV3Lm5vZGUud2lkdGggLyAodGhpcy5pdGVtV2lkdGggKyB0aGlzLnNwYWNlWCkpICsgMjtcclxuICAgICAgICAgICAgdGhpcy5oYWxmU2Nyb2xsVmlldyA9IHRoaXMuc2Nyb2xsVmlldy5ub2RlLndpZHRoIC8gMiArIHRoaXMuaXRlbVdpZHRoIC8gMiArIHRoaXMuc3BhY2VYO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZ1biA9IHRoaXMudWRwYXRlSDtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXJ0QXhpcyA9PSBTdGFydEF4aXNUeXBlLlZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcuaG9yaXpvbnRhbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxWaWV3LnZlcnRpY2FsID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudC53aWR0aCA9IHRoaXMuY29udGVudC5wYXJlbnQud2lkdGg7XHJcbiAgICAgICAgICAgICAgICAvL+WmguaenGxlZnTlkoxyaWdodOmXtOmalOi/h+Wkp++8jOWvvOiHtOaUvuS4jeS4i+S4gOS4qml0ZW3vvIzliJlsZWZ05ZKMcmlnaHTpg73orr7nva7kuLow77yM55u45b2T5LqO5LiN55Sf5pWIXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWRkaW5nX2xlZnQgKyB0aGlzLnBhZGRpbmdfcmlnaHQgKyB0aGlzLml0ZW1XaWR0aCArIHRoaXMuc3BhY2VYID4gdGhpcy5jb250ZW50LndpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWRkaW5nX2xlZnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFkZGluZ19yaWdodCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcInBhZGRpbmdfbGVmdOaIlnBhZGRpbmdfcmlnaHTov4flpKdcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkQ29sID0gTWF0aC5mbG9vcigodGhpcy5jb250ZW50LndpZHRoIC0gdGhpcy5wYWRkaW5nX2xlZnQgLSB0aGlzLnBhZGRpbmdfcmlnaHQpIC8gKHRoaXMuaXRlbVdpZHRoICsgdGhpcy5zcGFjZVgpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFJvdyA9IE1hdGguY2VpbChkYXRhTGVuIC8gdGhpcy5ncmlkQ29sKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudC5oZWlnaHQgPSB0aGlzLmdyaWRSb3cgKiB0aGlzLml0ZW1IZWlnaHQgKyAodGhpcy5ncmlkUm93IC0gMSkgKiB0aGlzLnNwYWNlWSArIHRoaXMucGFkZGluZ190b3AgKyB0aGlzLnBhZGRpbmdfYnV0dG9tO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zcGF3bkNvdW50ID0gTWF0aC5yb3VuZCh0aGlzLnNjcm9sbFZpZXcubm9kZS5oZWlnaHQgLyAodGhpcy5pdGVtSGVpZ2h0ICsgdGhpcy5zcGFjZVkpKSAqIHRoaXMuZ3JpZENvbCArIHRoaXMuZ3JpZENvbCAqIDI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhbGZTY3JvbGxWaWV3ID0gdGhpcy5zY3JvbGxWaWV3Lm5vZGUuaGVpZ2h0IC8gMiArIHRoaXMuaXRlbUhlaWdodCAvIDIgKyB0aGlzLnNwYWNlWTtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRnVuID0gdGhpcy51cGRhdGVHcmlkX1Y7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGFydEF4aXMgPT0gU3RhcnRBeGlzVHlwZS5Ib3Jpem9udGFsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcuaG9yaXpvbnRhbCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcudmVydGljYWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIC8v6K6h566X6auY6Ze06ZqUXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnQuaGVpZ2h0ID0gdGhpcy5jb250ZW50LnBhcmVudC5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICAvL+WmguaenGxlZnTlkoxyaWdodOmXtOmalOi/h+Wkp++8jOWvvOiHtOaUvuS4jeS4i+S4gOS4qml0ZW3vvIzliJlsZWZ05ZKMcmlnaHTpg73orr7nva7kuLow77yM55u45b2T5LqO5LiN55Sf5pWIXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWRkaW5nX3RvcCArIHRoaXMucGFkZGluZ19idXR0b20gKyB0aGlzLml0ZW1IZWlnaHQgKyB0aGlzLnNwYWNlWSA+IHRoaXMuY29udGVudC5oZWlnaHQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZGRpbmdfdG9wID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZGRpbmdfYnV0dG9tID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwicGFkZGluZ190b3DmiJZwYWRkaW5nX2J1dHRvbei/h+Wkp1wiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWRSb3cgPSBNYXRoLmZsb29yKCh0aGlzLmNvbnRlbnQuaGVpZ2h0IC0gdGhpcy5wYWRkaW5nX3RvcCAtIHRoaXMucGFkZGluZ19idXR0b20pIC8gKHRoaXMuaXRlbUhlaWdodCArIHRoaXMuc3BhY2VZKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWRDb2wgPSBNYXRoLmNlaWwoZGF0YUxlbiAvIHRoaXMuZ3JpZFJvdyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnQud2lkdGggPSB0aGlzLmdyaWRDb2wgKiB0aGlzLml0ZW1XaWR0aCArICh0aGlzLmdyaWRDb2wgLSAxKSAqIHRoaXMuc3BhY2VYICsgdGhpcy5wYWRkaW5nX2xlZnQgKyB0aGlzLnBhZGRpbmdfcmlnaHQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNwYXduQ291bnQgPSBNYXRoLnJvdW5kKHRoaXMuc2Nyb2xsVmlldy5ub2RlLndpZHRoIC8gKHRoaXMuaXRlbVdpZHRoICsgdGhpcy5zcGFjZVgpKSAqIHRoaXMuZ3JpZFJvdyArIHRoaXMuZ3JpZFJvdyAqIDI7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhhbGZTY3JvbGxWaWV3ID0gdGhpcy5zY3JvbGxWaWV3Lm5vZGUud2lkdGggLyAyICsgdGhpcy5pdGVtV2lkdGggLyAyICsgdGhpcy5zcGFjZVg7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUZ1biA9IHRoaXMudXBkYXRlR3JpZF9IO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5Yib5bu65YiX6KGoIFxyXG4gICAgICogQHBhcmFtIHN0YXJ0SW5kZXgg6LW35aeL5pi+56S655qE5pWw5o2u57Si5byVIDDooajnpLrnrKzkuIDpoblcclxuICAgICAqIEBwYXJhbSBvZmZzZXQgICAgIHNjcm9sbFZpZXflgY/np7vph49cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBjcmVhdGVMaXN0KHN0YXJ0SW5kZXg6IG51bWJlciwgb2Zmc2V0OiBjYy5WZWMyKSB7XHJcbiAgICAgICAgLy/lvZPpnIDopoHmmL7npLrnmoTmlbDmja7plb/luqYgPiDomZrmi5/liJfooajplb/luqbvvIwg5Yig6Zmk5pyA5pyr5bC+5Yeg5Liq5pWw5o2u5pe277yM5YiX6KGo6ZyA6KaB6YeN572u5L2N572u5Yiwc2Nyb2xsVmlld+acgOW6leerr1xyXG4gICAgICAgIGlmICh0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGggPiB0aGlzLnNwYXduQ291bnQgJiYgKHN0YXJ0SW5kZXggKyB0aGlzLnNwYXduQ291bnQgLSAxKSA+PSB0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgc3RhcnRJbmRleCA9IHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCAtIHRoaXMuc3Bhd25Db3VudDtcclxuICAgICAgICAgICAgb2Zmc2V0ID0gdGhpcy5zY3JvbGxWaWV3LmdldE1heFNjcm9sbE9mZnNldCgpO1xyXG5cclxuICAgICAgICAgICAgLy/lvZPpnIDopoHmmL7npLrnmoTmlbDmja7plb/luqYgPD0g6Jma5ouf5YiX6KGo6ZW/5bqm77yMIOmakOiXj+WkmuS9meeahOiZmuaLn+WIl+ihqOmhuSBcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCA8PSB0aGlzLnNwYXduQ291bnQpIHtcclxuICAgICAgICAgICAgc3RhcnRJbmRleCA9IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Bhd25Db3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtOiBjYy5Ob2RlO1xyXG4gICAgICAgICAgICAvL+mcgOimgeaYvuekuueahOaVsOaNrue0ouW8leWcqOaVsOaNruiMg+WbtOWGhe+8jOWImWl0ZW3lrp7kvovmmL7npLrlh7rmnaVcclxuICAgICAgICAgICAgaWYgKGkgKyBzdGFydEluZGV4IDwgdGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pdGVtTGlzdFtpXSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHRoaXMuZ2V0SXRlbSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUxpc3QucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnBhcmVudCA9IHRoaXMuY29udGVudDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHRoaXMuaXRlbUxpc3RbaV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvL+mcgOimgeaYvuekuueahOaVsOaNrue0ouW8lei2hei/h+S6huaVsOaNruiMg+WbtO+8jOWImWl0ZW3lrp7kvovpmpDol4/otbfmnaVcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vaXRlbeWunuS+i+aVsOmHjyA+IOmcgOimgeaYvuekuueahOaVsOaNrumHj1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbUxpc3QubGVuZ3RoID4gKHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCAtIHN0YXJ0SW5kZXgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHRoaXMuaXRlbUxpc3QucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5yZW1vdmVGcm9tUGFyZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtUG9vbC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCBpdGVtUmVuZGVyOiBJdGVtUmVuZGVyID0gaXRlbS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcik7XHJcbiAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaSArIHN0YXJ0SW5kZXg7XHJcbiAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YSA9IHRoaXMuaXRlbURhdGFMaXN0W2kgKyBzdGFydEluZGV4XTtcclxuICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5WZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgLy/lm6DkuLpjb250ZW5055qE6ZSa54K5WOaYrzDvvIzmiYDku6VpdGVt55qEeOWAvOaYr2NvbnRlbnQud2l0aC8y6KGo56S65bGF5Lit77yM6ZSa54K5WeaYrzHvvIzmiYDku6VpdGVt55qEeeWAvOS7jmNvbnRlbnTpobbpg6jlkJHkuIvmmK8w5Yiw6LSf5peg56m344CC5omA5LulaXRlbS55PSAtaXRlbS5oZWlnaHQvMuaXtu+8jOaYr+WcqGNvbnRlbnTnmoTpobbpg6jjgIJcclxuICAgICAgICAgICAgICAgIGl0ZW0uc2V0UG9zaXRpb24odGhpcy5jb250ZW50LndpZHRoIC8gMiwgLWl0ZW0uaGVpZ2h0ICogKDAuNSArIGkgKyBzdGFydEluZGV4KSAtIHRoaXMuc3BhY2VZICogKGkgKyBzdGFydEluZGV4KSAtIHRoaXMucGFkZGluZ190b3ApO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5Ib3Jpem9udGFsKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnNldFBvc2l0aW9uKGl0ZW0ud2lkdGggKiAoMC41ICsgaSArIHN0YXJ0SW5kZXgpICsgdGhpcy5zcGFjZVggKiAoaSArIHN0YXJ0SW5kZXgpICsgdGhpcy5wYWRkaW5nX2xlZnQsIC10aGlzLmNvbnRlbnQuaGVpZ2h0IC8gMik7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXJ0QXhpcyA9PSBTdGFydEF4aXNUeXBlLlZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvdyA9IE1hdGguZmxvb3IoKGkgKyBzdGFydEluZGV4KSAvIHRoaXMuZ3JpZENvbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbCA9IChpICsgc3RhcnRJbmRleCkgJSB0aGlzLmdyaWRDb2w7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRQb3NpdGlvbihpdGVtLndpZHRoICogKDAuNSArIGNvbCkgKyB0aGlzLnNwYWNlWCAqIGNvbCArIHRoaXMucGFkZGluZ19sZWZ0LCAtaXRlbS5oZWlnaHQgKiAoMC41ICsgcm93KSAtIHRoaXMuc3BhY2VZICogcm93IC0gdGhpcy5wYWRkaW5nX3RvcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXJ0QXhpcyA9PSBTdGFydEF4aXNUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcm93ID0gKGkgKyBzdGFydEluZGV4KSAlIHRoaXMuZ3JpZFJvdztcclxuICAgICAgICAgICAgICAgICAgICB2YXIgY29sID0gTWF0aC5mbG9vcigoaSArIHN0YXJ0SW5kZXgpIC8gdGhpcy5ncmlkUm93KTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnNldFBvc2l0aW9uKGl0ZW0ud2lkdGggKiAoMC41ICsgY29sKSArIHRoaXMuc3BhY2VYICogY29sICsgdGhpcy5wYWRkaW5nX2xlZnQsIC1pdGVtLmhlaWdodCAqICgwLjUgKyByb3cpIC0gdGhpcy5zcGFjZVkgKiByb3cgLSB0aGlzLnBhZGRpbmdfdG9wKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2Nyb2xsVmlldy5zY3JvbGxUb09mZnNldChvZmZzZXQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKuiOt+WPluS4gOS4quWIl+ihqOmhuSAqL1xyXG4gICAgcHJpdmF0ZSBnZXRJdGVtKCkge1xyXG4gICAgICAgIGlmICh0aGlzLml0ZW1Qb29sLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjYy5pbnN0YW50aWF0ZSh0aGlzLml0ZW1SZW5kZXIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLml0ZW1Qb29sLnBvcCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUoZHQpIHtcclxuICAgICAgICBpZiAodGhpcy5iU2Nyb2xsaW5nID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGRhdGVUaW1lciArPSBkdDtcclxuICAgICAgICBpZiAodGhpcy51cGRhdGVUaW1lciA8IHRoaXMudXBkYXRlSW50ZXJ2YWwpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0ZVRpbWVyID0gMDtcclxuICAgICAgICB0aGlzLmJTY3JvbGxpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUZ1bigpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2Nyb2xsaW5nKCkge1xyXG4gICAgICAgIHRoaXMuYlNjcm9sbGluZyA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoq5Z6C55u05o6S5YiXICovXHJcbiAgICBwcml2YXRlIHVwZGF0ZVYoKSB7XHJcbiAgICAgICAgbGV0IGl0ZW1zID0gdGhpcy5pdGVtTGlzdDtcclxuICAgICAgICBsZXQgaXRlbTtcclxuICAgICAgICBsZXQgYnVmZmVyWm9uZSA9IHRoaXMuaGFsZlNjcm9sbFZpZXc7XHJcbiAgICAgICAgbGV0IGlzVXAgPSB0aGlzLnNjcm9sbFZpZXcuY29udGVudC55ID4gdGhpcy5sYXN0Q29udGVudFBvc1k7XHJcbiAgICAgICAgbGV0IG9mZnNldCA9ICh0aGlzLml0ZW1IZWlnaHQgKyB0aGlzLnNwYWNlWSkgKiBpdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpdGVtID0gaXRlbXNbaV07XHJcbiAgICAgICAgICAgIGxldCB2aWV3UG9zID0gdGhpcy5nZXRQb3NpdGlvbkluVmlldyhpdGVtKTtcclxuICAgICAgICAgICAgaWYgKGlzVXApIHtcclxuICAgICAgICAgICAgICAgIC8vaXRlbeS4iua7keaXtu+8jOi2heWHuuS6hnNjcm9sbFZpZXfkuIrovrnnlYzvvIzlsIZpdGVt56e75Yqo5Yiw5LiL5pa55aSN55So77yMaXRlbeenu+WKqOWIsOS4i+aWueeahOS9jee9ruW/hemhu+S4jei2hei/h2NvbnRlbnTnmoTkuIvovrnnlYxcclxuICAgICAgICAgICAgICAgIGlmICh2aWV3UG9zLnkgPiBidWZmZXJab25lICYmIGl0ZW0ueSAtIG9mZnNldCAtIHRoaXMucGFkZGluZ19idXR0b20gPiAtdGhpcy5jb250ZW50LmhlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtUmVuZGVyOiBJdGVtUmVuZGVyID0gaXRlbS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1JbmRleCA9IGl0ZW1SZW5kZXIuaXRlbUluZGV4ICsgaXRlbXMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YSA9IHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ueSA9IGl0ZW0ueSAtIG9mZnNldDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vaXRlbeS4i+a7keaXtu+8jOi2heWHuuS6hnNjcm9sbFZpZXfkuIvovrnnlYzvvIzlsIZpdGVt56e75Yqo5Yiw5LiK5pa55aSN55So77yMaXRlbeenu+WKqOWIsOS4iuaWueeahOS9jee9ruW/hemhu+S4jei2hei/h2NvbnRlbnTnmoTkuIrovrnnlYxcclxuICAgICAgICAgICAgICAgIGlmICh2aWV3UG9zLnkgPCAtYnVmZmVyWm9uZSAmJiBpdGVtLnkgKyBvZmZzZXQgKyB0aGlzLnBhZGRpbmdfdG9wIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtUmVuZGVyOiBJdGVtUmVuZGVyID0gaXRlbS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1JbmRleCA9IGl0ZW1SZW5kZXIuaXRlbUluZGV4IC0gaXRlbXMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YSA9IHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ueSA9IGl0ZW0ueSArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxhc3RDb250ZW50UG9zWSA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50Lnk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoq5rC05bmz5o6S5YiXICovXHJcbiAgICBwcml2YXRlIHVkcGF0ZUgoKSB7XHJcbiAgICAgICAgbGV0IGl0ZW1zID0gdGhpcy5pdGVtTGlzdDtcclxuICAgICAgICBsZXQgaXRlbTtcclxuICAgICAgICBsZXQgYnVmZmVyWm9uZSA9IHRoaXMuaGFsZlNjcm9sbFZpZXc7XHJcbiAgICAgICAgbGV0IGlzUmlnaHQgPSB0aGlzLnNjcm9sbFZpZXcuY29udGVudC54ID4gdGhpcy5sYXN0Q29udGVudFBvc1g7XHJcbiAgICAgICAgbGV0IG9mZnNldCA9ICh0aGlzLml0ZW1XaWR0aCArIHRoaXMuc3BhY2VYKSAqIGl0ZW1zLmxlbmd0aDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtc1tpXTtcclxuICAgICAgICAgICAgbGV0IHZpZXdQb3MgPSB0aGlzLmdldFBvc2l0aW9uSW5WaWV3KGl0ZW0pO1xyXG4gICAgICAgICAgICBpZiAoaXNSaWdodCkge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5Y+z5ruR5pe277yM6LaF5Ye65LqGc2Nyb2xsVmlld+WPs+i+ueeVjO+8jOWwhml0ZW3np7vliqjliLDlt6bmlrnlpI3nlKjvvIxpdGVt56e75Yqo5Yiw5bem5pa555qE5L2N572u5b+F6aG75LiN6LaF6L+HY29udGVudOeahOW3pui+ueeVjFxyXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdQb3MueCA+IGJ1ZmZlclpvbmUgJiYgaXRlbS54IC0gb2Zmc2V0IC0gdGhpcy5wYWRkaW5nX2xlZnQgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggLSBpdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS54ID0gaXRlbS54IC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5bem5ruR5pe277yM6LaF5Ye65LqGc2Nyb2xsVmlld+W3pui+ueeVjO+8jOWwhml0ZW3np7vliqjliLDlj7PmlrnlpI3nlKjvvIxpdGVt56e75Yqo5Yiw5Y+z5pa555qE5L2N572u5b+F6aG75LiN6LaF6L+HY29udGVudOeahOWPs+i+ueeVjFxyXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdQb3MueCA8IC1idWZmZXJab25lICYmIGl0ZW0ueCArIG9mZnNldCArIHRoaXMucGFkZGluZ19yaWdodCA8IHRoaXMuY29udGVudC53aWR0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtUmVuZGVyOiBJdGVtUmVuZGVyID0gaXRlbS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1JbmRleCA9IGl0ZW1SZW5kZXIuaXRlbUluZGV4ICsgaXRlbXMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YSA9IHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ueCA9IGl0ZW0ueCArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxhc3RDb250ZW50UG9zWCA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50Lng7XHJcbiAgICB9XHJcblxyXG4gICAgLyoq572R5qC85Z6C55u05o6S5YiXICovXHJcbiAgICBwcml2YXRlIHVwZGF0ZUdyaWRfVigpIHtcclxuICAgICAgICBsZXQgaXRlbXMgPSB0aGlzLml0ZW1MaXN0O1xyXG4gICAgICAgIGxldCBpdGVtOiBjYy5Ob2RlO1xyXG4gICAgICAgIGxldCBidWZmZXJab25lID0gdGhpcy5oYWxmU2Nyb2xsVmlldztcclxuICAgICAgICBsZXQgaXNVcCA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50LnkgPiB0aGlzLmxhc3RDb250ZW50UG9zWTtcclxuICAgICAgICBsZXQgb2Zmc2V0ID0gKHRoaXMuaXRlbUhlaWdodCArIHRoaXMuc3BhY2VZKSAqICh0aGlzLnNwYXduQ291bnQgLyB0aGlzLmdyaWRDb2wpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaXRlbSA9IGl0ZW1zW2ldO1xyXG4gICAgICAgICAgICBsZXQgdmlld1BvcyA9IHRoaXMuZ2V0UG9zaXRpb25JblZpZXcoaXRlbSk7XHJcbiAgICAgICAgICAgIGlmIChpc1VwKSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3kuIrmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35LiK6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOS4i+aWueWkjeeUqO+8jGl0ZW3np7vliqjliLDkuIvmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5LiL6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy55ID4gYnVmZmVyWm9uZSAmJiBpdGVtLnkgLSBvZmZzZXQgLSB0aGlzLnBhZGRpbmdfYnV0dG9tID4gLXRoaXMuY29udGVudC5oZWlnaHQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCArICh0aGlzLnNwYXduQ291bnQgLyB0aGlzLmdyaWRDb2wpICogdGhpcy5ncmlkQ29sO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS55ID0gaXRlbS55IC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS55ID0gaXRlbS55IC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7Ly9pdGVt5LiL5ruR5pe277yM6LaF5Ye65LqGc2Nyb2xsVmlld+S4i+i+ueeVjO+8jOWwhml0ZW3np7vliqjliLDkuIrmlrnlpI3nlKjvvIxpdGVt56e75Yqo5Yiw5LiK5pa555qE5L2N572u5b+F6aG75LiN6LaF6L+HY29udGVudOeahOS4iui+ueeVjFxyXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdQb3MueSA8IC1idWZmZXJab25lICYmIGl0ZW0ueSArIG9mZnNldCArIHRoaXMucGFkZGluZ190b3AgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggLSAodGhpcy5zcGF3bkNvdW50IC8gdGhpcy5ncmlkQ29sKSAqIHRoaXMuZ3JpZENvbDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueSA9IGl0ZW0ueSArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YSA9IHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueSA9IGl0ZW0ueSArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdENvbnRlbnRQb3NZID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueTtcclxuICAgIH1cclxuXHJcbiAgICAvKirnvZHmoLzmsLTlubPmjpLliJcgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlR3JpZF9IKCkge1xyXG4gICAgICAgIGxldCBpdGVtcyA9IHRoaXMuaXRlbUxpc3Q7XHJcbiAgICAgICAgbGV0IGl0ZW07XHJcbiAgICAgICAgbGV0IGJ1ZmZlclpvbmUgPSB0aGlzLmhhbGZTY3JvbGxWaWV3O1xyXG4gICAgICAgIGxldCBpc1JpZ2h0ID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueCA+IHRoaXMubGFzdENvbnRlbnRQb3NYO1xyXG4gICAgICAgIGxldCBvZmZzZXQgPSAodGhpcy5pdGVtV2lkdGggKyB0aGlzLnNwYWNlWCkgKiAodGhpcy5zcGF3bkNvdW50IC8gdGhpcy5ncmlkUm93KTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtc1tpXTtcclxuICAgICAgICAgICAgbGV0IHZpZXdQb3MgPSB0aGlzLmdldFBvc2l0aW9uSW5WaWV3KGl0ZW0pO1xyXG4gICAgICAgICAgICBpZiAoaXNSaWdodCkge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5Y+z5ruR5pe277yM6LaF5Ye65LqGc2Nyb2xsVmlld+WPs+i+ueeVjO+8jOWwhml0ZW3np7vliqjliLDlt6bmlrnlpI3nlKjvvIxpdGVt56e75Yqo5Yiw5bem5pa555qE5L2N572u5b+F6aG75LiN6LaF6L+HY29udGVudOeahOW3pui+ueeVjFxyXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdQb3MueCA+IGJ1ZmZlclpvbmUgJiYgaXRlbS54IC0gb2Zmc2V0IC0gdGhpcy5wYWRkaW5nX2xlZnQgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggLSAodGhpcy5zcGF3bkNvdW50IC8gdGhpcy5ncmlkUm93KSAqIHRoaXMuZ3JpZFJvdztcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueCA9IGl0ZW0ueCAtIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YSA9IHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueCA9IGl0ZW0ueCAtIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5bem5ruR5pe277yM6LaF5Ye65LqGc2Nyb2xsVmlld+W3pui+ueeVjO+8jOWwhml0ZW3np7vliqjliLDlj7PmlrnlpI3nlKjvvIxpdGVt56e75Yqo5Yiw5Y+z5pa555qE5L2N572u5b+F6aG75LiN6LaF6L+HY29udGVudOeahOWPs+i+ueeVjFxyXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdQb3MueCA8IC1idWZmZXJab25lICYmIGl0ZW0ueCArIG9mZnNldCArIHRoaXMucGFkZGluZ19yaWdodCA8IHRoaXMuY29udGVudC53aWR0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtUmVuZGVyOiBJdGVtUmVuZGVyID0gaXRlbS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1JbmRleCA9IGl0ZW1SZW5kZXIuaXRlbUluZGV4ICsgKHRoaXMuc3Bhd25Db3VudCAvIHRoaXMuZ3JpZFJvdykgKiB0aGlzLmdyaWRSb3c7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnggPSBpdGVtLnggKyBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnggPSBpdGVtLnggKyBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxhc3RDb250ZW50UG9zWCA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50Lng7XHJcbiAgICB9XHJcblxyXG4gICAgLyoq6I635Y+WaXRlbeWcqHNjcm9sbFZpZXfnmoTlsYDpg6jlnZDmoIcgKi9cclxuICAgIHByaXZhdGUgZ2V0UG9zaXRpb25JblZpZXcoaXRlbSkge1xyXG4gICAgICAgIGxldCB3b3JsZFBvcyA9IGl0ZW0ucGFyZW50LmNvbnZlcnRUb1dvcmxkU3BhY2VBUihpdGVtLnBvc2l0aW9uKTtcclxuICAgICAgICBsZXQgdmlld1BvcyA9IHRoaXMuc2Nyb2xsVmlldy5ub2RlLmNvbnZlcnRUb05vZGVTcGFjZUFSKHdvcmxkUG9zKTtcclxuICAgICAgICByZXR1cm4gdmlld1BvcztcclxuICAgIH1cclxuXHJcbiAgICAvKirojrflj5bliJfooajmlbDmja4gKi9cclxuICAgIHB1YmxpYyBnZXRMaXN0RGF0YSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pdGVtRGF0YUxpc3Q7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlop7liqDkuIDpobnmlbDmja7liLDliJfooajnmoTmnKvlsL5cclxuICAgICAqIEBwYXJhbSBkYXRhIOaVsOaNrlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkSXRlbShkYXRhOiBhbnkpIHtcclxuICAgICAgICB0aGlzLml0ZW1EYXRhTGlzdC5wdXNoKGRhdGEpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5aKe5Yqg5LiA6aG55pWw5o2u5Yiw5YiX6KGo5oyH5a6a5L2N572uXHJcbiAgICAgKiBAcGFyYW0gaW5kZXggICDkvY3nva7vvIww6KGo56S656ysMemhuVxyXG4gICAgICogQHBhcmFtIGRhdGEgIOaVsOaNrlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkSXRlbUF0KGluZGV4OiBudW1iZXIsIGRhdGE6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLml0ZW1EYXRhTGlzdFtpbmRleF0gIT0gbnVsbCB8fCB0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGggPT0gaW5kZXgpIHtcclxuICAgICAgICAgICAgdGhpcy5pdGVtRGF0YUxpc3Quc3BsaWNlKGluZGV4LCAxLCBkYXRhKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5Yig6Zmk5LiA6aG55pWw5o2uXHJcbiAgICAgKiBAcGFyYW0gaW5kZXgg5Yig6Zmk6aG555qE5L2N572uICww6KGo56S656ysMemhuVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGVsZXRlSXRlbShpbmRleDogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0W2luZGV4XSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXRlbURhdGFMaXN0LnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOaUueWPmOS4gOmhueaVsOaNrlxyXG4gICAgICogQHBhcmFtIGluZGV4ICAg5L2N572uLDDooajnpLrnrKwx6aG5XHJcbiAgICAgKiBAcGFyYW0gZGF0YSAg5pu/5o2i55qE5pWw5o2uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjaGFuZ2VJdGVtKGluZGV4OiBudW1iZXIsIGRhdGE6IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLml0ZW1EYXRhTGlzdFtpbmRleF0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1EYXRhTGlzdFtpbmRleF0gPSBkYXRhO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoq6I635Y+W56ys5LiA5LiqSXRlbeeahOS9jee9riAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVDb250ZW50KCkge1xyXG4gICAgICAgIC8v5pi+56S65YiX6KGo5a6e5L6L5Li6MOS4qlxyXG4gICAgICAgIGlmICh0aGlzLml0ZW1MaXN0Lmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY291bnRMaXN0UGFyYW0oKTtcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVMaXN0KDAsIG5ldyBjYy5WZWMyKDAsIDApKTtcclxuICAgICAgICAgICAgLy/mmL7npLrliJfooajnmoTlrp7kvovkuI3kuLow5Liq77yM5YiZ6ZyA6KaB6YeN5paw5o6S5YiXaXRlbeWunuS+i+aVsOe7hFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbUxpc3Quc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi55IC0gYS55O1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbUxpc3Quc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS54IC0gYi54O1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXJ0QXhpcyA9PSBTdGFydEF4aXNUeXBlLlZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS54IC0gYi54O1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUxpc3Quc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIueSAtIGEueTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGFydEF4aXMgPT0gU3RhcnRBeGlzVHlwZS5Ib3Jpem9udGFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi55IC0gYS55O1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUxpc3Quc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEueCAtIGIueDtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5jb3VudExpc3RQYXJhbSgpO1xyXG5cclxuICAgICAgICAgICAgLy/ojrflj5bnrKzkuIDkuKppdGVt5a6e5L6L6ZyA6KaB5pi+56S655qE5pWw5o2u57Si5byVXHJcbiAgICAgICAgICAgIHZhciBzdGFydEluZGV4ID0gdGhpcy5pdGVtTGlzdFswXS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcikuaXRlbUluZGV4O1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkICYmIHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggKz0gKHN0YXJ0SW5kZXggKyB0aGlzLnNwYXduQ291bnQpICUgdGhpcy5ncmlkQ29sO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkICYmIHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuSG9yaXpvbnRhbCkge1xyXG4gICAgICAgICAgICAgICAgc3RhcnRJbmRleCArPSAoc3RhcnRJbmRleCArIHRoaXMuc3Bhd25Db3VudCkgJSB0aGlzLmdyaWRSb3c7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vZ2V0U2Nyb2xsT2Zmc2V0KCnlkoxzY3JvbGxUb09mZnNldCgp55qEeOWAvOaYr+ebuOWPjeeahFxyXG4gICAgICAgICAgICB2YXIgb2Zmc2V0OiBjYy5WZWMyID0gdGhpcy5zY3JvbGxWaWV3LmdldFNjcm9sbE9mZnNldCgpO1xyXG4gICAgICAgICAgICBvZmZzZXQueCA9IC0gb2Zmc2V0Lng7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUxpc3Qoc3RhcnRJbmRleCwgb2Zmc2V0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoq6ZSA5q+BICovXHJcbiAgICBwdWJsaWMgb25EZXN0cm95KCkge1xyXG4gICAgICAgIC8v5riF55CG5YiX6KGo6aG5XHJcbiAgICAgICAgbGV0IGxlbiA9IHRoaXMuaXRlbUxpc3QubGVuZ3RoO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGNjLmlzVmFsaWQodGhpcy5pdGVtTGlzdFtpXSwgdHJ1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbUxpc3RbaV0uZGVzdHJveSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXRlbUxpc3QubGVuZ3RoID0gMDtcclxuICAgICAgICAvL+a4heeQhuWvueixoeaxoFxyXG4gICAgICAgIGxlbiA9IHRoaXMuaXRlbVBvb2wubGVuZ3RoO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGNjLmlzVmFsaWQodGhpcy5pdGVtUG9vbFtpXSwgdHJ1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXRlbVBvb2xbaV0uZGVzdHJveSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXRlbVBvb2wubGVuZ3RoID0gMDtcclxuICAgICAgICAvL+a4heeQhuWIl+ihqOaVsOaNrlxyXG4gICAgICAgIHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCA9IDA7XHJcbiAgICB9XHJcbn1cclxuIl19
//------QC-SOURCE-SPLIT------
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/Script/tool/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, '3ffacOneORCf6Bc1LFhTCCQ', 'DynamicAtlasManager');
// Script/tool/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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFx0b29sXFxEeW5hbWljQXRsYXNNYW5hZ2VyLmpzIl0sIm5hbWVzIjpbImNjIiwiQ2xhc3MiLCJDb21wb25lbnQiLCJwcm9wZXJ0aWVzIiwib25Mb2FkIiwiZHluYW1pY0F0bGFzTWFuYWdlciIsImVuYWJsZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUFBLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTO0FBQ0wsYUFBU0QsRUFBRSxDQUFDRSxTQURQO0FBR0xDLEVBQUFBLFVBQVUsRUFBRSxFQUhQO0FBTUxDLEVBQUFBLE1BTkssb0JBTUs7QUFDTkosSUFBQUEsRUFBRSxDQUFDSyxtQkFBSCxDQUF1QkMsT0FBdkIsR0FBaUMsS0FBakM7QUFDSDtBQVJJLENBQVQiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImNjLkNsYXNzKHtcclxuICAgIGV4dGVuZHM6IGNjLkNvbXBvbmVudCxcclxuXHJcbiAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICB9LFxyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcbiAgICAgICAgY2MuZHluYW1pY0F0bGFzTWFuYWdlci5lbmFibGVkID0gZmFsc2U7XHJcbiAgICB9LFxyXG59KTtcclxuIl19
//------QC-SOURCE-SPLIT------
(function() {
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
var __module = nodeEnv ? module : {exports:{}};
var __filename = 'preview-scripts/assets/Script/tool/Shake.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, '61affD5SO9Ipo0fGmIeTFTZ', 'Shake');
// Script/tool/Shake.js
"use strict";
/**
* 自定义抖动效果
*/
var Shake = cc.Class({
"extends": cc.Component,
properties: {
//抖动时间
duration: 0,
//X轴抖动范围
shakeX: 0,
shakeY: 0
},
shake: function shake(callback) {
if (this.shaking) {
return;
}
this.callback = callback;
this.shaking = true;
this.dtCost = 0;
this.nodeInitialPos = this.node.getPosition();
this.unschedule(this.doSchedule);
this.schedule(this.doSchedule, 0, cc.macro.REPEAT_FOREVER, 0);
},
doSchedule: function doSchedule(dt) {
var dt2 = dt * 50;
var randX = this.getRandomStrength(-this.shakeX, this.shakeX) * dt2;
var randY = this.getRandomStrength(-this.shakeY, this.shakeY) * dt2;
this.node.setPosition(cc.pAdd(this.nodeInitialPos, cc.v2(randX, randY)));
this.dtCost += dt;
if (this.dtCost >= this.duration) {
this.unschedule(this.doSchedule);
this.node.setPosition(this.nodeInitialPos);
this.shaking = false;
if (this.callback) {
this.callback();
}
}
},
//获取两个数间的随机值
getRandomStrength: function getRandomStrength(min, max) {
return Math.random() * (max - min + 1) + min;
}
});
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFx0b29sXFxTaGFrZS5qcyJdLCJuYW1lcyI6WyJTaGFrZSIsImNjIiwiQ2xhc3MiLCJDb21wb25lbnQiLCJwcm9wZXJ0aWVzIiwiZHVyYXRpb24iLCJzaGFrZVgiLCJzaGFrZVkiLCJzaGFrZSIsImNhbGxiYWNrIiwic2hha2luZyIsImR0Q29zdCIsIm5vZGVJbml0aWFsUG9zIiwibm9kZSIsImdldFBvc2l0aW9uIiwidW5zY2hlZHVsZSIsImRvU2NoZWR1bGUiLCJzY2hlZHVsZSIsIm1hY3JvIiwiUkVQRUFUX0ZPUkVWRVIiLCJkdCIsImR0MiIsInJhbmRYIiwiZ2V0UmFuZG9tU3RyZW5ndGgiLCJyYW5kWSIsInNldFBvc2l0aW9uIiwicEFkZCIsInYyIiwibWluIiwibWF4IiwiTWF0aCIsInJhbmRvbSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQSxJQUFJQSxLQUFLLEdBQUdDLEVBQUUsQ0FBQ0MsS0FBSCxDQUFTO0FBQ2pCLGFBQVNELEVBQUUsQ0FBQ0UsU0FESztBQUdqQkMsRUFBQUEsVUFBVSxFQUFFO0FBQ1I7QUFDQUMsSUFBQUEsUUFBUSxFQUFFLENBRkY7QUFHUjtBQUNBQyxJQUFBQSxNQUFNLEVBQUUsQ0FKQTtBQUtSQyxJQUFBQSxNQUFNLEVBQUU7QUFMQSxHQUhLO0FBV2pCQyxFQUFBQSxLQUFLLEVBQUUsZUFBVUMsUUFBVixFQUFvQjtBQUN2QixRQUFHLEtBQUtDLE9BQVIsRUFBZ0I7QUFDWjtBQUNIOztBQUNELFNBQUtELFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0EsU0FBS0MsT0FBTCxHQUFlLElBQWY7QUFDQSxTQUFLQyxNQUFMLEdBQWMsQ0FBZDtBQUNBLFNBQUtDLGNBQUwsR0FBc0IsS0FBS0MsSUFBTCxDQUFVQyxXQUFWLEVBQXRCO0FBQ0EsU0FBS0MsVUFBTCxDQUFnQixLQUFLQyxVQUFyQjtBQUNBLFNBQUtDLFFBQUwsQ0FBYyxLQUFLRCxVQUFuQixFQUErQixDQUEvQixFQUFrQ2YsRUFBRSxDQUFDaUIsS0FBSCxDQUFTQyxjQUEzQyxFQUEyRCxDQUEzRDtBQUNILEdBckJnQjtBQXNCakJILEVBQUFBLFVBQVUsRUFBRSxvQkFBVUksRUFBVixFQUFjO0FBQ3RCLFFBQUlDLEdBQUcsR0FBR0QsRUFBRSxHQUFHLEVBQWY7QUFDQSxRQUFJRSxLQUFLLEdBQUcsS0FBS0MsaUJBQUwsQ0FBdUIsQ0FBQyxLQUFLakIsTUFBN0IsRUFBcUMsS0FBS0EsTUFBMUMsSUFBb0RlLEdBQWhFO0FBQ0EsUUFBSUcsS0FBSyxHQUFHLEtBQUtELGlCQUFMLENBQXVCLENBQUMsS0FBS2hCLE1BQTdCLEVBQXFDLEtBQUtBLE1BQTFDLElBQW9EYyxHQUFoRTtBQUNBLFNBQUtSLElBQUwsQ0FBVVksV0FBVixDQUFzQnhCLEVBQUUsQ0FBQ3lCLElBQUgsQ0FBUSxLQUFLZCxjQUFiLEVBQTZCWCxFQUFFLENBQUMwQixFQUFILENBQU1MLEtBQU4sRUFBYUUsS0FBYixDQUE3QixDQUF0QjtBQUNBLFNBQUtiLE1BQUwsSUFBZVMsRUFBZjs7QUFDQSxRQUFJLEtBQUtULE1BQUwsSUFBZSxLQUFLTixRQUF4QixFQUFrQztBQUM5QixXQUFLVSxVQUFMLENBQWdCLEtBQUtDLFVBQXJCO0FBQ0EsV0FBS0gsSUFBTCxDQUFVWSxXQUFWLENBQXNCLEtBQUtiLGNBQTNCO0FBQ0EsV0FBS0YsT0FBTCxHQUFlLEtBQWY7O0FBQ0EsVUFBRyxLQUFLRCxRQUFSLEVBQWlCO0FBQ2IsYUFBS0EsUUFBTDtBQUNIO0FBQ0o7QUFDSixHQXBDZ0I7QUFxQ2pCO0FBQ0FjLEVBQUFBLGlCQUFpQixFQUFFLDJCQUFVSyxHQUFWLEVBQWVDLEdBQWYsRUFBb0I7QUFDbkMsV0FBT0MsSUFBSSxDQUFDQyxNQUFMLE1BQWlCRixHQUFHLEdBQUdELEdBQU4sR0FBWSxDQUE3QixJQUFrQ0EsR0FBekM7QUFDSDtBQXhDZ0IsQ0FBVCxDQUFaIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICog6Ieq5a6a5LmJ5oqW5Yqo5pWI5p6cXHJcbiAqL1xyXG52YXIgU2hha2UgPSBjYy5DbGFzcyh7XHJcbiAgICBleHRlbmRzOiBjYy5Db21wb25lbnQsXHJcblxyXG4gICAgcHJvcGVydGllczoge1xyXG4gICAgICAgIC8v5oqW5Yqo5pe26Ze0XHJcbiAgICAgICAgZHVyYXRpb246IDAsXHJcbiAgICAgICAgLy9Y6L205oqW5Yqo6IyD5Zu0XHJcbiAgICAgICAgc2hha2VYOiAwLFxyXG4gICAgICAgIHNoYWtlWTogMCxcclxuICAgIH0sXHJcblxyXG4gICAgc2hha2U6IGZ1bmN0aW9uIChjYWxsYmFjaykge1xyXG4gICAgICAgIGlmKHRoaXMuc2hha2luZyl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IGNhbGxiYWNrO1xyXG4gICAgICAgIHRoaXMuc2hha2luZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5kdENvc3QgPSAwO1xyXG4gICAgICAgIHRoaXMubm9kZUluaXRpYWxQb3MgPSB0aGlzLm5vZGUuZ2V0UG9zaXRpb24oKTtcclxuICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy5kb1NjaGVkdWxlKTtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlKHRoaXMuZG9TY2hlZHVsZSwgMCwgY2MubWFjcm8uUkVQRUFUX0ZPUkVWRVIsIDApO1xyXG4gICAgfSxcclxuICAgIGRvU2NoZWR1bGU6IGZ1bmN0aW9uIChkdCkge1xyXG4gICAgICAgIHZhciBkdDIgPSBkdCAqIDUwO1xyXG4gICAgICAgIHZhciByYW5kWCA9IHRoaXMuZ2V0UmFuZG9tU3RyZW5ndGgoLXRoaXMuc2hha2VYLCB0aGlzLnNoYWtlWCkgKiBkdDI7XHJcbiAgICAgICAgdmFyIHJhbmRZID0gdGhpcy5nZXRSYW5kb21TdHJlbmd0aCgtdGhpcy5zaGFrZVksIHRoaXMuc2hha2VZKSAqIGR0MjtcclxuICAgICAgICB0aGlzLm5vZGUuc2V0UG9zaXRpb24oY2MucEFkZCh0aGlzLm5vZGVJbml0aWFsUG9zLCBjYy52MihyYW5kWCwgcmFuZFkpKSk7XHJcbiAgICAgICAgdGhpcy5kdENvc3QgKz0gZHQ7XHJcbiAgICAgICAgaWYgKHRoaXMuZHRDb3N0ID49IHRoaXMuZHVyYXRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy51bnNjaGVkdWxlKHRoaXMuZG9TY2hlZHVsZSk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5zZXRQb3NpdGlvbih0aGlzLm5vZGVJbml0aWFsUG9zKTtcclxuICAgICAgICAgICAgdGhpcy5zaGFraW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuY2FsbGJhY2spe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWxsYmFjaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8v6I635Y+W5Lik5Liq5pWw6Ze055qE6ZqP5py65YC8XHJcbiAgICBnZXRSYW5kb21TdHJlbmd0aDogZnVuY3Rpb24gKG1pbiwgbWF4KSB7XHJcbiAgICAgICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkgKyBtaW47XHJcbiAgICB9LFxyXG59KTtcclxuIl19
//------QC-SOURCE-SPLIT------