6981 lines
878 KiB
JavaScript
6981 lines
878 KiB
JavaScript
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/__qc_index__.js';
|
||
var __require = nodeEnv ? function (request) {
|
||
return cc.require(request);
|
||
} : function (request) {
|
||
return __quick_compile_project__.require(request, __filename);
|
||
};
|
||
function __define (exports, require, module) {
|
||
if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}
|
||
require('./assets/Script/Block');
|
||
require('./assets/Script/Camera');
|
||
require('./assets/Script/GameData');
|
||
require('./assets/Script/GameManager');
|
||
require('./assets/Script/GameOver');
|
||
require('./assets/Script/GameScene');
|
||
require('./assets/Script/ListView/ItemRender');
|
||
require('./assets/Script/ListView/List');
|
||
require('./assets/Script/Load');
|
||
require('./assets/Script/Player');
|
||
require('./assets/Script/RankManager');
|
||
require('./assets/Script/crypto/HttpUtil');
|
||
require('./assets/Script/crypto/crypto-js.min');
|
||
require('./assets/Script/tool/AudioManager');
|
||
require('./assets/Script/tool/GameTool');
|
||
require('./assets/Script/tool/Notification');
|
||
require('./assets/Script/tool/Storage');
|
||
require('./assets/Script/tool/share');
|
||
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 > 7) {
|
||
this.data.name = this.data.name.substring(0, 7) + "...";
|
||
}
|
||
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;
|
||
var url = this.data.pic;
|
||
cc.assetManager.loadRemote(url, { ext: '.png' }, function (err, texture) {
|
||
if (texture) {
|
||
var sprite = _this.node.getChildByName("pic").getChildByName("pic").getComponent(cc.Sprite);
|
||
sprite.spriteFrame = new cc.SpriteFrame(texture);
|
||
// console.log("设置头像成功");
|
||
}
|
||
else {
|
||
// 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxMaXN0Vmlld1xcSXRlbVJlbmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFTSxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUc1QztJQUF3Qyw4QkFBWTtJQUFwRDtRQUFBLHFFQWlEQztRQWhERyxRQUFRO1FBQ0QsVUFBSSxHQUFPLElBQUksQ0FBQztRQUN2QixjQUFjO1FBQ1AsZUFBUyxHQUFVLENBQUMsQ0FBQzs7SUE2Q2hDLENBQUM7SUEzQ0csYUFBYTtJQUNOLGdDQUFXLEdBQWxCO1FBQ0ksSUFBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFBO1NBQ3pEO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3hGLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN4RixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDMUYsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDdEUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDdEUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDeEUsSUFBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDckUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztTQUN0RDthQUNJLElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFDO1lBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ3JFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7U0FDdEQ7YUFDSSxJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBQztZQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1NBQ3REO2FBQUk7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ3JEO1FBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFTSwyQkFBTSxHQUFiO1FBQUEsaUJBWUM7UUFYRyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUN4QixFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBQyxHQUFHLEVBQUMsTUFBTSxFQUFDLEVBQUMsVUFBQyxHQUFHLEVBQUUsT0FBb0I7WUFDbkUsSUFBRyxPQUFPLEVBQUM7Z0JBQ1AsSUFBSSxNQUFNLEdBQUcsS0FBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzNGLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNqRCx5QkFBeUI7YUFDNUI7aUJBQ0c7Z0JBQ0EsMkJBQTJCO2FBQzlCO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBOUNnQixVQUFVO1FBRDlCLE9BQU87T0FDYSxVQUFVLENBaUQ5QjtJQUFELGlCQUFDO0NBakRELEFBaURDLENBakR1QyxFQUFFLENBQUMsU0FBUyxHQWlEbkQ7a0JBakRvQixVQUFVIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExpc3QsIHsgTGlzdFR5cGUgfSBmcm9tIFwiLi9MaXN0XCI7XHJcblxyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSXRlbVJlbmRlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcbiAgICAvKirmlbDmja4gKi9cclxuICAgIHB1YmxpYyBkYXRhOmFueSA9IG51bGw7XHJcbiAgICAvKirntKLlvJUgMOihqOekuuesrOS4gOmhuSovXHJcbiAgICBwdWJsaWMgaXRlbUluZGV4Om51bWJlciA9IDA7XHJcblxyXG4gICAgLyoq5pWw5o2u5pS55Y+Y5pe26LCD55SoICovXHJcbiAgICBwdWJsaWMgZGF0YUNoYW5nZWQoKXtcclxuICAgICAgICBpZih0aGlzLmRhdGEubmFtZS5sZW5ndGggPiA3KXtcclxuICAgICAgICAgICAgdGhpcy5kYXRhLm5hbWUgPSB0aGlzLmRhdGEubmFtZS5zdWJzdHJpbmcoMCw3KSArIFwiLi4uXCJcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuZGF0YS5yYW5rICsgXCJcIjtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJuYW1lTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy5kYXRhLm5hbWUgKyBcIlwiO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRvdGFsTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy5kYXRhLnRvdGFsICsgXCJcIjtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwib25lXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0d29cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcInRocmVlXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmKHRoaXMuZGF0YS5yYW5rID09IDEpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwib25lXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodGhpcy5kYXRhLnJhbmsgPT0gMil7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0d29cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZih0aGlzLmRhdGEucmFuayA9PSAzKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcInRocmVlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXRQaWMoKTtcclxuICAgIH0gICBcclxuICAgIFxyXG4gICAgcHVibGljIHNldFBpYygpe1xyXG4gICAgICAgIGxldCB1cmwgPSB0aGlzLmRhdGEucGljO1xyXG4gICAgICAgIGNjLmFzc2V0TWFuYWdlci5sb2FkUmVtb3RlKHVybCwge2V4dDonLnBuZyd9LChlcnIsIHRleHR1cmU6Y2MuVGV4dHVyZTJEKSA9PiB7XHJcbiAgICAgICAgICAgIGlmKHRleHR1cmUpe1xyXG4gICAgICAgICAgICAgICAgdmFyIHNwcml0ZSA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICAgICAgICAgIHNwcml0ZS5zcHJpdGVGcmFtZSA9IG5ldyBjYy5TcHJpdGVGcmFtZSh0ZXh0dXJlKTtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi6K6+572u5aS05YOP5oiQ5YqfXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhlcnIsdGV4dHVyZSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG5cclxufVxyXG4iXX0=
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/crypto/HttpUtil.js';
|
||
var __require = nodeEnv ? function (request) {
|
||
return cc.require(request);
|
||
} : function (request) {
|
||
return __quick_compile_project__.require(request, __filename);
|
||
};
|
||
function __define (exports, require, module) {
|
||
if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
|
||
cc._RF.push(module, '9ed319W0ElIkJ/97wj9KJh8', 'HttpUtil');
|
||
// Script/crypto/HttpUtil.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 __assign = (this && this.__assign) || function () {
|
||
__assign = Object.assign || function(t) {
|
||
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
||
s = arguments[i];
|
||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
||
t[p] = s[p];
|
||
}
|
||
return t;
|
||
};
|
||
return __assign.apply(this, arguments);
|
||
};
|
||
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
|
||
var BASE_URL = "https://api.sparkus.cn";
|
||
// 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;
|
||
}
|
||
HttpUtil_1 = HttpUtil;
|
||
//排行榜
|
||
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 = HttpUtil_1.apiSign("/api/get/rank/data?gameId=" + config.gameId + "&dataType=" + type + "&time=" + time, data);
|
||
this.post(url, data, callback, 0);
|
||
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.post(url, data, callback, 3);
|
||
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 = HttpUtil_1.apiSign("/api/get/user/data?gameId=" + config.gameId + "&time=" + time, data);
|
||
this.post(url, data, callback, 0);
|
||
return [2 /*return*/];
|
||
});
|
||
});
|
||
};
|
||
HttpUtil.get = function (url, callback, count) {
|
||
return __awaiter(this, void 0, void 0, function () {
|
||
var repeat, response;
|
||
return __generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
repeat = count ? count : 0;
|
||
return [4 /*yield*/, this.fetchData(url, null, 'GET', repeat)];
|
||
case 1:
|
||
response = _a.sent();
|
||
callback && callback(response);
|
||
return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
HttpUtil.post = function (url, data, callback, count) {
|
||
return __awaiter(this, void 0, void 0, function () {
|
||
var repeat, response;
|
||
return __generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
repeat = count ? count : 0;
|
||
return [4 /*yield*/, this.fetchData(url, data, 'POST', repeat)];
|
||
case 1:
|
||
response = _a.sent();
|
||
callback && callback(response);
|
||
return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
HttpUtil.fetchData = function (url, data, method, repeat) {
|
||
return __awaiter(this, void 0, void 0, function () {
|
||
var fullUrl, headers, options, response, error_1, timeOut;
|
||
var _this = this;
|
||
return __generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
fullUrl = "" + BASE_URL + url;
|
||
headers = { 'Content-Type': 'application/json' };
|
||
options = {
|
||
method: method,
|
||
headers: headers,
|
||
body: data ? JSON.stringify(data) : null,
|
||
};
|
||
_a.label = 1;
|
||
case 1:
|
||
_a.trys.push([1, 4, , 5]);
|
||
return [4 /*yield*/, this.fetchWithTimeout(fullUrl, options)];
|
||
case 2:
|
||
response = _a.sent();
|
||
if (!response.ok) {
|
||
throw new Error("HTTP_______________error! status: " + response.status);
|
||
}
|
||
return [4 /*yield*/, response.json()];
|
||
case 3: return [2 /*return*/, _a.sent()];
|
||
case 4:
|
||
error_1 = _a.sent();
|
||
console.error('Fetch_______________error:', error_1);
|
||
if (repeat > 0) {
|
||
repeat -= 1;
|
||
timeOut = (3 - repeat) * 5000;
|
||
setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
|
||
return __generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0: return [4 /*yield*/, this.fetchData(url, data, method, repeat)];
|
||
case 1:
|
||
response = _a.sent();
|
||
return [2 /*return*/];
|
||
}
|
||
});
|
||
}); }, timeOut);
|
||
}
|
||
else {
|
||
return [2 /*return*/, null];
|
||
}
|
||
return [3 /*break*/, 5];
|
||
case 5: return [2 /*return*/];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
HttpUtil.fetchWithTimeout = function (resource, options) {
|
||
if (options === void 0) { options = {}; }
|
||
return __awaiter(this, void 0, void 0, function () {
|
||
var controller, id, response;
|
||
return __generator(this, function (_a) {
|
||
switch (_a.label) {
|
||
case 0:
|
||
controller = new AbortController();
|
||
id = setTimeout(function () { return controller.abort(); }, 5000);
|
||
return [4 /*yield*/, fetch(resource, __assign(__assign({}, options), { signal: controller.signal }))];
|
||
case 1:
|
||
response = _a.sent();
|
||
clearTimeout(id);
|
||
return [2 /*return*/, response];
|
||
}
|
||
});
|
||
});
|
||
};
|
||
/**
|
||
*
|
||
* @param url {string} 接口地址
|
||
* @param params {object} 需要加密的参数对象
|
||
*/
|
||
HttpUtil.apiSign = function (url, params) {
|
||
if (params === void 0) { params = {}; }
|
||
var convertUrl = url.trim();
|
||
if (convertUrl.indexOf('?') === -1) {
|
||
convertUrl += '?';
|
||
}
|
||
// 传入参数转换拼接字符串
|
||
var postStr = getQueryString(params);
|
||
var signedStr = genSignStr(convertUrl, postStr);
|
||
var encryptStr = "sign=" + signedStr;
|
||
var encryptSignStr = fxCry.encryptByDES(encryptStr, config.secretKey);
|
||
encryptSignStr = encodeURIComponent(encryptSignStr);
|
||
return urlencode(convertUrl) + "&_p=" + encryptSignStr;
|
||
};
|
||
var HttpUtil_1;
|
||
HttpUtil = HttpUtil_1 = __decorate([
|
||
ccclass
|
||
], HttpUtil);
|
||
return HttpUtil;
|
||
}(cc.Component));
|
||
exports.default = HttpUtil;
|
||
function responseHandler(response) {
|
||
return response.data;
|
||
}
|
||
// 响应拦截器
|
||
// Rq.interceptors.response.use(responseHandler)
|
||
var config = {
|
||
gameId: "100001",
|
||
secretKey: "zDLsruVI",
|
||
EK: "hui231%1"
|
||
};
|
||
var Crypoto = /** @class */ (function () {
|
||
function Crypoto() {
|
||
// 加密的向明值,自己根据项目实际情况定,需要跟后端开发保持一致
|
||
this.keyHex = this.getHetKey();
|
||
}
|
||
Crypoto.prototype.getHetKey = function () {
|
||
return CryptoJS.enc.Utf8.parse(config.EK);
|
||
};
|
||
/** DES加密 */
|
||
Crypoto.prototype.encryptByDES = function (message, secret) {
|
||
if (!message) {
|
||
return message;
|
||
}
|
||
var key = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex;
|
||
var encrypted = CryptoJS.DES.encrypt(message, key, {
|
||
mode: CryptoJS.mode.ECB,
|
||
padding: CryptoJS.pad.Pkcs7
|
||
});
|
||
return encrypted.toString();
|
||
};
|
||
/** DES解密 */
|
||
Crypoto.prototype.decryptByDES = function (message, secret) {
|
||
var key = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex;
|
||
var decrypted = CryptoJS.DES.decrypt({
|
||
ciphertext: CryptoJS.enc.Base64.parse(message)
|
||
}, key, {
|
||
mode: CryptoJS.mode.ECB,
|
||
padding: CryptoJS.pad.Pkcs7
|
||
});
|
||
return decrypted.toString(CryptoJS.enc.Utf8);
|
||
};
|
||
/** hmacSHA256加密 */
|
||
Crypoto.prototype.hmacSha256 = function (message, secret) {
|
||
var keyHex = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex;
|
||
var hash = CryptoJS.HmacSHA256(message, keyHex);
|
||
return hash.toString();
|
||
};
|
||
/** hmacSHA256验证 */
|
||
Crypoto.prototype.verifyHmacSha256 = function (message, signature) {
|
||
var hash = CryptoJS.HmacSHA256(message, this.keyHex);
|
||
return hash.toString() === signature;
|
||
};
|
||
/** CBC加密 */
|
||
Crypoto.prototype.encryptCBC = function (word) {
|
||
if (!word) {
|
||
return word;
|
||
}
|
||
var srcs = CryptoJS.enc.Utf8.parse(word);
|
||
var encrypted = CryptoJS.AES.encrypt(srcs, this.keyHex, {
|
||
iv: this.keyHex,
|
||
mode: CryptoJS.mode.CBC,
|
||
padding: CryptoJS.pad.ZeroPadding
|
||
});
|
||
return encrypted.toString();
|
||
};
|
||
/** CBC解密 */
|
||
Crypoto.prototype.decryptCBC = function (word) {
|
||
if (!word) {
|
||
return word;
|
||
}
|
||
var encryptedHexStr = CryptoJS.enc.Hex.parse(word);
|
||
var srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
|
||
var decrypt = CryptoJS.AES.decrypt(srcs, this.keyHex, {
|
||
iv: this.keyHex,
|
||
mode: CryptoJS.mode.CBC,
|
||
padding: CryptoJS.pad.ZeroPadding
|
||
});
|
||
var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
|
||
return decryptedStr.toString();
|
||
};
|
||
return Crypoto;
|
||
}());
|
||
var fxCry = new Crypoto();
|
||
function isEmpty(data) {
|
||
return data === "" || data === null || data === undefined || data.length === 0 || JSON.stringify(data) == "{}";
|
||
}
|
||
function getQueryString(obj) {
|
||
// 首先对对象的键进行排序并过滤空值
|
||
var sortedKeys = Object.keys(obj).sort();
|
||
var sortedObj = {};
|
||
for (var i = 0; i < sortedKeys.length; i++) {
|
||
if (isEmpty(obj[sortedKeys[i]])) {
|
||
continue;
|
||
}
|
||
sortedObj[sortedKeys[i]] = obj[sortedKeys[i]];
|
||
}
|
||
// 然后将排序后的对象转换为查询字符串
|
||
var params = [];
|
||
for (var key in sortedObj) {
|
||
params.push(encodeURIComponent(key) + "=" + encodeURIComponent(sortedObj[key]));
|
||
}
|
||
return params.join('&');
|
||
}
|
||
/**
|
||
* 组装签名字符串
|
||
* @param string url: 请求地址
|
||
* @param string postStr: post参数的a=1&b=2
|
||
* @returns
|
||
*/
|
||
function genSignStr(url, postStr) {
|
||
var lessUrl = url.replace('?', '');
|
||
lessUrl = lessUrl + "&" + postStr;
|
||
return encodeURIComponent(fxCry.hmacSha256(lessUrl));
|
||
}
|
||
// 对参数进行统一urlencode
|
||
function urlencode(url) {
|
||
var _a = url.split("?", 2), baseUrl = _a[0], queryString = _a[1];
|
||
var params = new URLSearchParams(queryString);
|
||
return baseUrl + "?" + params.toString();
|
||
}
|
||
|
||
cc._RF.pop();
|
||
}
|
||
if (nodeEnv) {
|
||
__define(__module.exports, __require, __module);
|
||
}
|
||
else {
|
||
__quick_compile_project__.registerModuleFunc(__filename, function () {
|
||
__define(__module.exports, __require, __module);
|
||
});
|
||
}
|
||
})();
|
||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxjcnlwdG9cXEh0dHBVdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQ0FBb0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR3BDLHdDQUFtQztBQUNuQyw2Q0FBZ0QsQ0FBRSxXQUFXO0FBQzdELElBQU0sUUFBUSxHQUFHLHdCQUF3QixDQUFDO0FBQzFDLDRCQUE0QjtBQUN0QixJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDs7SUFxR0EsQ0FBQztpQkFyR29CLFFBQVE7SUFDM0IsS0FBSztJQUNRLGlCQUFRLEdBQXJCLFVBQXNCLElBQUksRUFBQyxRQUFRLEVBQUMsSUFBSTt1Q0FBRyxPQUFPOzs7Z0JBQ2hELElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQkFDaEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2dCQUMxQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtnQkFDaEQsR0FBRyxHQUFHLFVBQVEsQ0FBQyxPQUFPLENBQUMsK0JBQTZCLE1BQU0sQ0FBQyxNQUFNLGtCQUFhLElBQUksY0FBUyxJQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7Z0JBQzlHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFDLElBQUksRUFBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUM7Ozs7S0FDaEM7SUFFWSwwQkFBaUIsR0FBOUIsVUFBK0IsSUFBSSxFQUFD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Q0FBQztJQUNqRCxJQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxPQUFVLE9BQU8sU0FBSSxNQUFNLENBQUMsUUFBUSxFQUFJLENBQUM7QUFDM0MsQ0FBQyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCBDcnlwdG9KUyBmcm9tIFwiY3J5cHRvLWpzXCI7XG5cblxuaW1wb3J0IEdhbWVEYXRhIGZyb20gJy4uL0dhbWVEYXRhJztcbmltcG9ydCBDcnlwdG9KUyA9IHJlcXVpcmUoJy4vY3J5cHRvLWpzLm1pbi5qcycpOyAgLy/lvJXnlKhBRVPmupDnoIFqc1xuY29uc3QgQkFTRV9VUkwgPSBcImh0dHBzOi8vYXBpLnNwYXJrdXMuY25cIjtcbi8vIGltcG9ydCBheGlvcyBmcm9tICdheGlvcydcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xuXG5AY2NjbGFzc1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSHR0cFV0aWwgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xuICAvL+aOkuihjOamnFxuICBzdGF0aWMgYXN5bmMgcmFua0RhdGEodHlwZSxjYWxsYmFjayxkYXRhKTogUHJvbWlzZTxhbnk+IHtcbiAgICBkYXRhLmdhbWVJZCA9IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmdhbWVJZDtcbiAgICBkYXRhLnVzZXJJZCA9IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnVzZXJJZDtcbiAgICBjb25zdCB0aW1lID0gTWF0aC5mbG9vcigobmV3IERhdGUoKS5nZXRUaW1lKCkpIC8gMTAwMClcbiAgICBjb25zdCB1cmwgPSBIdHRwVXRpbC5hcGlTaWduKGAvYXBpL2dldC9yYW5rL2RhdGE/Z2FtZUlkPSR7Y29uZmlnLmdhbWVJZH0mZGF0YVR5cGU9JHt0eXBlfSZ0aW1lPSR7dGltZX1gLCBkYXRhKVxuICAgIHRoaXMucG9zdCh1cmwsZGF0YSxjYWxsYmFjaywwKTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyB1cGxvYWRVc2VyTG9nRGF0YShkYXRhLGNhbGxiYWNrKTogUHJvbWlzZTxhbnk+IHtcbiAgICBkYXRhLmdhbWVJZCA9IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmdhbWVJZDtcbiAgICBkYXRhLnVzZXJJZCA9IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnVzZXJJZDtcbiAgICBjb25zdCB1cmwgPSAnL2xvZy9jb2xsZWN0L2RhdGEnO1xuICAgIHRoaXMucG9zdCh1cmwsZGF0YSxjYWxsYmFjaywzKTtcbiAgfVxuICAvL+aaguaXtueUqOS4jeWIsFxuICBzdGF0aWMgYXN5bmMgZ2V0VXNlclJlY29yZChkYXRhLGNhbGxiYWNrKTogUHJvbWlzZTxhbnk+IHtcbiAgICBkYXRhLmdhbWVJZCA9IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmdhbWVJZDtcbiAgICBkYXRhLnVzZXJJZCA9IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnVzZXJJZDtcbiAgICBjb25zdCB0aW1lID0gTWF0aC5mbG9vcigobmV3IERhdGUoKS5nZXRUaW1lKCkpIC8gMTAwMClcbiAgICBjb25zdCB1cmwgPSBIdHRwVXRpbC5hcGlTaWduKGAvYXBpL2dldC91c2VyL2RhdGE/Z2FtZUlkPSR7Y29uZmlnLmdhbWVJZH0mdGltZT0ke3RpbWV9YCwgZGF0YSlcbiAgICB0aGlzLnBvc3QodXJsLGRhdGEsY2FsbGJhY2ssMCk7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZ2V0KHVybCwgY2FsbGJhY2ssY291bnQpIHtcbiAgICBsZXQgcmVwZWF0ID0gY291bnQ/Y291bnQ6MDtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZmV0Y2hEYXRhKHVybCwgbnVsbCwgJ0dFVCcscmVwZWF0KTtcbiAgICBjYWxsYmFjayAmJiBjYWxsYmFjayhyZXNwb25zZSk7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgcG9zdCh1cmwsIGRhdGEsIGNhbGxiYWNrLGNvdW50KSB7XG4gICAgbGV0IHJlcGVhdCA9IGNvdW50P2NvdW50OjA7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmZldGNoRGF0YSh1cmwsIGRhdGEsICdQT1NUJyxyZXBlYXQpO1xuICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKHJlc3BvbnNlKTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBmZXRjaERhdGEodXJsLCBkYXRhLCBtZXRob2QscmVwZWF0KSB7XG4gICAgY29uc3QgZnVsbFVybCA9IGAke0JBU0VfVVJMfSR7dXJsfWA7XG4gICAgY29uc3QgaGVhZGVycyA9IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBtZXRob2QsXG4gICAgICBoZWFkZXJzLFxuICAgICAgYm9keTogZGF0YSA/IEpTT04uc3RyaW5naWZ5KGRhdGEpIDogbnVsbCxcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIHZhciByZXNwb25zZSA9IGF3YWl0IHRoaXMuZmV0Y2hXaXRoVGltZW91dChmdWxsVXJsLG9wdGlvbnMpO1xuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSFRUUF9fX19fX19fX19fX19fX2Vycm9yISBzdGF0dXM6ICR7cmVzcG9uc2Uuc3RhdHVzfWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmV0Y2hfX19fX19fX19fX19fX19lcnJvcjonLCBlcnJvcik7XG4gICAgICBpZihyZXBlYXQgPiAwKXtcbiAgICAgICAgcmVwZWF0IC09IDE7XG4gICAgICAgIGNvbnN0IHRpbWVPdXQgPSAoMy1yZXBlYXQpKjUwMDA7XG4gICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5mZXRjaERhdGEodXJsLCBkYXRhLCBtZXRob2QscmVwZWF0KTtcbiAgICAgICAgfSwgdGltZU91dCk7XG4gICAgICB9XG4gICAgICBlbHNle1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH0gXG5cbiAgc3RhdGljIGFzeW5jIGZldGNoV2l0aFRpbWVvdXQocmVzb3VyY2UsIG9wdGlvbnMgPSB7fSkge1xuICAgICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgIGNvbnN0IGlkID0gc2V0VGltZW91dCgoKSA9PiBjb250cm9sbGVyLmFib3J0KCksIDUwMDApO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChyZXNvdXJjZSwge1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWxcbiAgICAgIH0pO1xuICAgICAgY2xlYXJUaW1lb3V0KGlkKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG4gIC8qKlxuICogXG4gKiBAcGFyYW0gdXJsIHtzdHJpbmd9IOaOpeWPo+WcsOWdgFxuICogQHBhcmFtIHBhcmFtcyB7b2JqZWN0fSDpnIDopoHliqDlr4bnmoTlj4LmlbDlr7nosaFcbiAqL1xuICAgIHN0YXRpYyBhcGlTaWduKHVybDogc3RyaW5nLCBwYXJhbXMgPSB7fSkge1xuXG4gICAgbGV0IGNvbnZlcnRVcmwgPSB1cmwudHJpbSgpXG4gICAgaWYgKGNvbnZlcnRVcmwuaW5kZXhPZignPycpID09PSAtMSkge1xuICAgICAgY29udmVydFVybCArPSAnPydcbiAgICB9XG5cbiAgICAvLyDkvKDlhaXlj4LmlbDovazmjaLmi7zmjqXlrZfnrKbkuLJcbiAgICBsZXQgcG9zdFN0ciA9ICBnZXRRdWVyeVN0cmluZyhwYXJhbXMpXG5cbiAgICBjb25zdCBzaWduZWRTdHIgPSBnZW5TaWduU3RyKGNvbnZlcnRVcmwsIHBvc3RTdHIpXG4gICAgY29uc3QgZW5jcnlwdFN0ciA9IGBzaWduPSR7c2lnbmVkU3RyfWBcblxuICAgIGxldCBlbmNyeXB0U2lnblN0ciA9IGZ4Q3J5LmVuY3J5cHRCeURFUyhlbmNyeXB0U3RyLCBjb25maWcuc2VjcmV0S2V5KVxuICAgIGVuY3J5cHRTaWduU3RyID0gZW5jb2RlVVJJQ29tcG9uZW50KGVuY3J5cHRTaWduU3RyKVxuXG4gICAgcmV0dXJuIGAke3VybGVuY29kZShjb252ZXJ0VXJsKX0mX3A9JHtlbmNyeXB0U2lnblN0cn1gXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZXNwb25zZUhhbmRsZXIocmVzcG9uc2U6IHsgZGF0YTogYW55IH0pIHtcbiAgcmV0dXJuIHJlc3BvbnNlLmRhdGFcbn1cbi8vIOWTjeW6lOaLpuaIquWZqFxuLy8gUnEuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZShyZXNwb25zZUhhbmRsZXIpXG5jb25zdCBjb25maWcgPSB7XG4gIGdhbWVJZDogXCIxMDAwMDFcIixcbiAgc2VjcmV0S2V5OiBcInpETHNydVZJXCIsXG4gIEVLOlwiaHVpMjMxJTFcIlxufTtcblxuaW50ZXJmYWNlIENyeXBvdG9UeXBlIHtcbiAgZW5jcnlwdEJ5REVTOiBhbnlcbiAgZGVjcnlwdEJ5REVTOiBhbnlcbiAgaG1hY1NoYTI1NjogYW55XG59XG4gXG5jbGFzcyBDcnlwb3RvIGltcGxlbWVudHMgQ3J5cG90b1R5cGUge1xuICAgIC8vIOWKoOWvhueahOWQkeaYjuWAvO+8jOiHquW3seagueaNrumhueebruWunumZheaDheWGteWumu+8jOmcgOimgei3n+WQjuerr+W8gOWPkeS/neaMgeS4gOiHtFxuICAgIHByaXZhdGUga2V5SGV4ID0gdGhpcy5nZXRIZXRLZXkoKVxuIFxuICAgIHByaXZhdGUgZ2V0SGV0S2V5KCkge1xuICAgICAgICByZXR1cm4gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoY29uZmlnLkVLKTtcbiAgICB9XG5cbiAgICAvKiogREVT5Yqg5a+GICovXG4gICAgZW5jcnlwdEJ5REVTKG1lc3NhZ2U6IHN0cmluZywgc2VjcmV0Pzogc3RyaW5nKSB7XG4gICAgICBpZighbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gbWVzc2FnZVxuICAgICAgfVxuICAgICAgY29uc3Qga2V5ID0gc2VjcmV0PyBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShzZWNyZXQpOiB0aGlzLmtleUhleFxuICAgICAgY29uc3QgZW5jcnlwdGVkID0gQ3J5cHRvSlMuREVTLmVuY3J5cHQobWVzc2FnZSwga2V5LCB7XG4gICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuRUNCLFxuICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGVuY3J5cHRlZC50b1N0cmluZygpXG4gICAgfVxuXG4gICAgLyoqIERFU+ino+WvhiAqL1xuICAgIGRlY3J5cHRCeURFUyhtZXNzYWdlOiBzdHJpbmcsIHNlY3JldD86IHN0cmluZykge1xuICAgICAgY29uc3Qga2V5ID0gc2VjcmV0PyBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShzZWNyZXQpOiB0aGlzLmtleUhleFxuXG4gICAgICBjb25zdCBkZWNyeXB0ZWQgPSBDcnlwdG9KUy5ERVMuZGVjcnlwdCh7XG4gICAgICAgIGNpcGhlcnRleHQ6IENyeXB0b0pTLmVuYy5CYXNlNjQucGFyc2UobWVzc2FnZSlcbiAgICAgIH0sIGtleSwge1xuICAgICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkVDQixcbiAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlBrY3M3XG4gICAgICB9KVxuXG4gICAgICByZXR1cm4gZGVjcnlwdGVkLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KVxuICAgIH1cblxuICAgIC8qKiBobWFjU0hBMjU25Yqg5a+GICovXG4gICAgaG1hY1NoYTI1NihtZXNzYWdlOiBzdHJpbmcsIHNlY3JldD86IHN0cmluZykge1xuICAgICAgY29uc3Qga2V5SGV4ID0gc2VjcmV0PyBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShzZWNyZXQpOiB0aGlzLmtleUhleFxuICAgICAgXG4gICAgICBjb25zdCBoYXNoID0gQ3J5cHRvSlMuSG1hY1NIQTI1NihtZXNzYWdlLCBrZXlIZXgpO1xuICAgICAgcmV0dXJuIGhhc2gudG9TdHJpbmcoKVxuICAgIH1cblxuICAgIC8qKiBobWFjU0hBMjU26aqM6K+BICovXG4gICAgdmVyaWZ5SG1hY1NoYTI1NihtZXNzYWdlOiBzdHJpbmcsIHNpZ25hdHVyZTogc3RyaW5nKSB7XG4gICAgICBjb25zdCBoYXNoID0gQ3J5cHRvSlMuSG1hY1NIQTI1NihtZXNzYWdlLCB0aGlzLmtleUhleCk7XG4gICAgICByZXR1cm4gaGFzaC50b1N0cmluZygpID09PSBzaWduYXR1cmVcbiAgICB9XG4gXG4gICAgLyoqIENCQ+WKoOWvhiAqL1xuICAgIGVuY3J5cHRDQkMod29yZDogc3RyaW5nKSB7XG4gICAgICAgIGlmICghd29yZCkge1xuICAgICAgICAgICAgcmV0dXJuIHdvcmQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3JjcyA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKHdvcmQpO1xuICAgICAgICBjb25zdCBlbmNyeXB0ZWQgPSBDcnlwdG9KUy5BRVMuZW5jcnlwdChzcmNzLCB0aGlzLmtleUhleCwge1xuICAgICAgICAgICAgaXY6IHRoaXMua2V5SGV4LFxuICAgICAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsXG4gICAgICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuWmVyb1BhZGRpbmdcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBlbmNyeXB0ZWQudG9TdHJpbmcoKTsgXG4gICAgfVxuIFxuICAgIC8qKiBDQkPop6Plr4YgKi9cbiAgICBkZWNyeXB0Q0JDKHdvcmQ6IHN0cmluZykge1xuICAgICAgICBpZiAoIXdvcmQpIHtcbiAgICAgICAgICAgIHJldHVybiB3b3JkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVuY3J5cHRlZEhleFN0ciA9IENyeXB0b0pTLmVuYy5IZXgucGFyc2Uod29yZCk7XG4gICAgICAgIGNvbnN0IHNyY3MgPSBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeShlbmNyeXB0ZWRIZXhTdHIpO1xuICAgICAgICBjb25zdCBkZWNyeXB0ID0gQ3J5cHRvSlMuQUVTLmRlY3J5cHQoc3JjcywgdGhpcy5rZXlIZXgsIHtcbiAgICAgICAgICAgIGl2OiB0aGlzLmtleUhleCxcbiAgICAgICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLFxuICAgICAgICAgICAgcGFkZGluZzogQ3J5cHRvSlMucGFkLlplcm9QYWRkaW5nXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBkZWNyeXB0ZWRTdHIgPSBkZWNyeXB0LnRvU3RyaW5nKENyeXB0b0pTLmVuYy5VdGY4KTtcbiAgICAgICAgcmV0dXJuIGRlY3J5cHRlZFN0ci50b1N0cmluZygpO1xuICAgIH1cbn1cbmNvbnN0IGZ4Q3J5ID0gbmV3IENyeXBvdG8oKTtcblxuZnVuY3Rpb24gaXNFbXB0eShkYXRhKSB7XG4gIHJldHVybiBkYXRhID09PSBcIlwiIHx8IGRhdGEgPT09IG51bGwgfHwgZGF0YSA9PT0gdW5kZWZpbmVkIHx8IGRhdGEubGVuZ3RoID09PSAwIHx8IEpTT04uc3RyaW5naWZ5KGRhdGEpID09IFwie31cIlxufVxuXG5mdW5jdGlvbiBnZXRRdWVyeVN0cmluZyhvYmopIHtcbiAgLy8g6aaW5YWI5a+55a+56LGh55qE6ZSu6L+b6KGM5o6S5bqP5bm26L+H5ruk56m65YC8XG4gIGNvbnN0IHNvcnRlZEtleXMgPSBPYmplY3Qua2V5cyhvYmopLnNvcnQoKTtcbiAgY29uc3Qgc29ydGVkT2JqID0ge307XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydGVkS2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChpc0VtcHR5KG9ialtzb3J0ZWRLZXlzW2ldXSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBzb3J0ZWRPYmpbc29ydGVkS2V5c1tpXV0gPSBvYmpbc29ydGVkS2V5c1tpXV07XG4gIH1cbiAgXG4gIC8vIOeEtuWQjuWwhuaOkuW6j+WQjueahOWvueixoei9rOaNouS4uuafpeivouWtl+espuS4slxuICBjb25zdCBwYXJhbXMgPSBbXTtcbiAgZm9yIChjb25zdCBrZXkgaW4gc29ydGVkT2JqKSB7XG4gICAgcGFyYW1zLnB1c2goYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHNvcnRlZE9ialtrZXldKX1gKTtcbiAgfVxuICByZXR1cm4gcGFyYW1zLmpvaW4oJyYnKTtcbn1cblxuXG4vKipcbiAqIOe7hOijheetvuWQjeWtl+espuS4slxuICogQHBhcmFtIHN0cmluZyB1cmw6IOivt+axguWcsOWdgCBcbiAqIEBwYXJhbSBzdHJpbmcgcG9zdFN0cjogcG9zdOWPguaVsOeahGE9MSZiPTIgXG4gKiBAcmV0dXJucyBcbiAqL1xuXG5mdW5jdGlvbiBnZW5TaWduU3RyKHVybDogc3RyaW5nLCBwb3N0U3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgbGVzc1VybCA9IHVybC5yZXBsYWNlKCc/JywgJycpXG4gIGxlc3NVcmwgPSBsZXNzVXJsICsgXCImXCIgKyBwb3N0U3RyXG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoZnhDcnkuaG1hY1NoYTI1NihsZXNzVXJsKSlcbn1cbi8vIOWvueWPguaVsOi/m+ihjOe7n+S4gHVybGVuY29kZVxuZnVuY3Rpb24gdXJsZW5jb2RlKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgW2Jhc2VVcmwsIHF1ZXJ5U3RyaW5nXSA9IHVybC5zcGxpdChcIj9cIiwgMik7XG4gIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocXVlcnlTdHJpbmcpO1xuICByZXR1cm4gYCR7YmFzZVVybH0/JHtwYXJhbXMudG9TdHJpbmcoKX1gO1xufVxuXG5cblxuIl19
|
||
//------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/Player.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, '7fd74nqW4BCN6aFalN5nmyL', 'Player');
|
||
// Script/Player.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 GameManager_1 = require("./GameManager");
|
||
var AudioManager_1 = require("./tool/AudioManager");
|
||
var Notification_1 = require("./tool/Notification");
|
||
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
0;
|
||
var NewClass = /** @class */ (function (_super) {
|
||
__extends(NewClass, _super);
|
||
function NewClass() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
_this.add = null;
|
||
_this.plist = null;
|
||
return _this;
|
||
}
|
||
// LIFE-CYCLE CALLBACKS:
|
||
// onLoad () {}
|
||
NewClass.prototype.start = function () {
|
||
this.init();
|
||
};
|
||
NewClass.prototype.init = function () {
|
||
this.jumpState = 0;
|
||
this.jumpHeight = this.node.y;
|
||
this.basicHeight = this.node.y;
|
||
this.up = true;
|
||
this.double = false;
|
||
this.death = false;
|
||
this.jumpAction = null;
|
||
this.block = null;
|
||
this.interfere = false;
|
||
this.jumpPause = true;
|
||
};
|
||
//跳动
|
||
NewClass.prototype.jump = function () {
|
||
var _this = this;
|
||
if (this.jumpState < 2) {
|
||
if (this.jumpState == 0) {
|
||
if (this.death == false) {
|
||
this.node.getChildByName("sp").getComponent(sp.Skeleton).setAnimation(1, "jump", false);
|
||
}
|
||
}
|
||
else if (this.jumpState == 1 || this.node.y > (this.jumpHeight + GameData_1.default._instance.GM_INFO.jumpHeight - 5)) {
|
||
if (this.death == false) {
|
||
if (GameManager_1.default._instance.guide > 0 && GameManager_1.default._instance.guide < 3) {
|
||
return;
|
||
}
|
||
this.node.getChildByName("sp").getComponent(sp.Skeleton).setAnimation(1, "jump", false);
|
||
}
|
||
}
|
||
setTimeout(function () {
|
||
if (_this.jumpState == 0) {
|
||
if (_this.jumpPause == true) {
|
||
return;
|
||
}
|
||
if (_this.block) {
|
||
if (_this.block.name != "block13") {
|
||
_this.block.getComponent("Block").hide();
|
||
}
|
||
else {
|
||
_this.block.active = false;
|
||
_this.jumpPause = true;
|
||
}
|
||
_this.block = null;
|
||
}
|
||
if (GameManager_1.default._instance.guide == 1) {
|
||
GameManager_1.default._instance.guide = 2;
|
||
GameManager_1.default._instance.startGuide(2, false);
|
||
}
|
||
GameData_1.default._instance.CLICK_DATA.jumps = 1;
|
||
AudioManager_1.default._instance.playJump();
|
||
// this.basicHeight = this.node.y;
|
||
_this.jumpState += 1;
|
||
_this.up = true;
|
||
Notification_1.Notification.emit("showGround", _this.node.y);
|
||
_this.jumpAction = cc.tween(_this.node)
|
||
.to(GameData_1.default._instance.GM_INFO.jumpUpTime, { position: cc.v3(0, _this.jumpHeight + GameData_1.default._instance.GM_INFO.jumpHeight, 0) }, { easing: 'quadOut' })
|
||
.call(function () {
|
||
_this.up = false;
|
||
_this.jumpState = -1;
|
||
var temp = _this.node.y - _this.jumpHeight;
|
||
})
|
||
.to(GameData_1.default._instance.GM_INFO.jumpDownTime, { position: cc.v3(0, _this.jumpHeight, 0) }, { easing: 'cubicIn' })
|
||
.call(function () {
|
||
_this.jumpHeight = _this.node.y;
|
||
_this.jumpState = -1;
|
||
_this.up = true;
|
||
})
|
||
.start();
|
||
}
|
||
else if (_this.jumpState == 1 || _this.node.y > (_this.jumpHeight + GameData_1.default._instance.GM_INFO.jumpHeight - 15)) {
|
||
if (GameManager_1.default._instance.guide > 0 && GameManager_1.default._instance.guide < 3) {
|
||
return;
|
||
}
|
||
if (GameManager_1.default._instance.guide == 6) {
|
||
_this.jumpPause = true;
|
||
GameManager_1.default._instance.startGuide(6, false);
|
||
}
|
||
if (_this.jumpAction)
|
||
_this.jumpAction.stop();
|
||
AudioManager_1.default._instance.playJump();
|
||
GameData_1.default._instance.CLICK_DATA.jumps = 2;
|
||
_this.jumpState = 2;
|
||
_this.up = true;
|
||
_this.jumpAction = cc.tween(_this.node)
|
||
.to(GameData_1.default._instance.GM_INFO.jumpUpTime, { position: cc.v3(0, _this.node.y + GameData_1.default._instance.GM_INFO.jumpHeight, 0) }, { easing: 'quadOut' })
|
||
.call(function () {
|
||
_this.up = false;
|
||
})
|
||
.to(GameData_1.default._instance.GM_INFO.jumpDownTime * 1.5, { position: cc.v3(0, _this.jumpHeight, 0) }, { easing: 'cubicIn' })
|
||
.call(function () {
|
||
_this.jumpState = -1;
|
||
_this.jumpHeight = _this.node.y;
|
||
_this.up = true;
|
||
})
|
||
.start();
|
||
}
|
||
}, 100);
|
||
}
|
||
};
|
||
NewClass.prototype.onCollisionEnter = function (other, self) {
|
||
if (GameManager_1.default._instance) {
|
||
if (GameManager_1.default._instance.over == true) {
|
||
return;
|
||
}
|
||
}
|
||
var max = other.name.length;
|
||
var num = 6;
|
||
if (other.node.name != "Ground") {
|
||
if (GameManager_1.default._instance.guide == -1) {
|
||
if (other.node.getComponent("Block").num > 9)
|
||
num = 7;
|
||
}
|
||
else {
|
||
num = 7;
|
||
}
|
||
}
|
||
var ColliderName = other.name.substring(num, max);
|
||
//获取碰撞体名字
|
||
if (ColliderName == "<PolygonCollider>") {
|
||
if (this.node.y <= other.node.y && this.up == true && this.death == false) {
|
||
if (this.jumpAction)
|
||
this.jumpAction.stop();
|
||
this.jumpState = -1;
|
||
AudioManager_1.default._instance.playGround();
|
||
console.log("死亡1");
|
||
this.gameDeath();
|
||
}
|
||
else if (other.node.name == "Ground" && this.death == false) {
|
||
// if(this.jumpAction)this.jumpAction.stop();
|
||
this.jumpState = -1;
|
||
console.log("死亡2");
|
||
this.gameDeath();
|
||
}
|
||
else {
|
||
// console.log("没碰到边缘",this.up,this.node.y,other.node.y,this.jumpState,this.up);
|
||
}
|
||
}
|
||
if (ColliderName == "<BoxCollider>") {
|
||
if (this.death == true) {
|
||
console.log("已经死亡");
|
||
return;
|
||
}
|
||
//
|
||
var portrait = Math.abs(this.node.y - other.node.y);
|
||
var width = other.node.width / 2;
|
||
var pos = Math.abs(this.node.x - other.node.x);
|
||
var distance = pos / width;
|
||
// console.log("我的位置:",this.node.x,"块的位置:",other.node.x,"块的宽度:",width,"百分比:",distance);
|
||
if (this.up == true) {
|
||
console.log("死亡4");
|
||
AudioManager_1.default._instance.playGround();
|
||
this.gameDeath();
|
||
}
|
||
else {
|
||
if (distance * 100 < GameData_1.default._instance.GM_INFO.distanceMin && this.jumpState != 0) {
|
||
// console.log("成功1");
|
||
// console.log("百分比:",distance*100+"%");
|
||
this.success(other, distance * 100);
|
||
}
|
||
else {
|
||
if (portrait >= 20 || distance * 100 > GameData_1.default._instance.GM_INFO.distanceMax) {
|
||
console.log("死亡3", "落差:", portrait, "状态:", this.up);
|
||
AudioManager_1.default._instance.playGround();
|
||
this.gameDeath();
|
||
}
|
||
else {
|
||
// console.log("成功2");
|
||
console.log("百分比:", distance * 100 + "%");
|
||
this.success(other, distance * 100);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
NewClass.prototype.success = function (other, distance) {
|
||
this.jumpPause = true;
|
||
if (GameManager_1.default._instance.guide != -1) {
|
||
this.basicHeight = this.node.y;
|
||
other.node.stopAllActions();
|
||
if (GameManager_1.default._instance.guide == 3 || GameManager_1.default._instance.guide == 4) {
|
||
GameManager_1.default._instance.startGuide(4, false);
|
||
if (GameManager_1.default._instance.guide == 4) {
|
||
GameManager_1.default._instance.guide = 5;
|
||
}
|
||
}
|
||
else if (GameManager_1.default._instance.guide == 5) {
|
||
this.jumpPause = true;
|
||
var tip = GameManager_1.default._instance.Tip.getChildByName("good");
|
||
cc.tween(tip)
|
||
.to(0.3, { opacity: 255, scale: 1 })
|
||
.delay(0.5)
|
||
.to(0.2, { opacity: 0 })
|
||
.call(function () {
|
||
GameManager_1.default._instance.startGuide(5, false);
|
||
})
|
||
.start();
|
||
}
|
||
else if (GameManager_1.default._instance.guide == 7) {
|
||
GameManager_1.default._instance.startGuide(8, false);
|
||
}
|
||
else if (GameManager_1.default._instance.guide == 8) {
|
||
this.jumpPause = true;
|
||
var tip = GameManager_1.default._instance.Tip.getChildByName("perfet");
|
||
cc.tween(tip)
|
||
.to(0.3, { opacity: 255, scale: 1 })
|
||
.delay(0.5)
|
||
.to(0.2, { opacity: 0 })
|
||
.call(function () {
|
||
GameManager_1.default._instance.startGuide(9, false);
|
||
})
|
||
.start();
|
||
}
|
||
}
|
||
var percent = parseInt(distance * 10 + "") / 10;
|
||
GameData_1.default._instance.CLICK_DATA.percent = percent;
|
||
if (GameManager_1.default._instance)
|
||
GameManager_1.default._instance.destroyBlock(true);
|
||
this.add.active = true;
|
||
this.add.opacity = 0;
|
||
var number = 1;
|
||
if (distance <= 10)
|
||
number = 3;
|
||
else if (distance <= 20)
|
||
number = 2;
|
||
GameData_1.default._instance.CLICK_DATA.accuracy = number;
|
||
this.add.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = this.plist.getSpriteFrames()[number];
|
||
this.add.getChildByName("jia").getComponent(cc.Sprite).spriteFrame = this.plist.getSpriteFrames()[number + 3];
|
||
this.addAction();
|
||
this.node.getChildByName("guang").active = true;
|
||
this.node.getChildByName("guang").getComponent(sp.Skeleton).setAnimation(0, "double_1", false);
|
||
if (this.jumpAction)
|
||
this.jumpAction.stop();
|
||
if (this.death == false) {
|
||
this.node.getChildByName("sp").getComponent(sp.Skeleton).setAnimation(1, "jump", false);
|
||
}
|
||
this.basicHeight = this.node.y;
|
||
if (number > 1) {
|
||
AudioManager_1.default._instance.playPz();
|
||
if (this.double == false) {
|
||
this.double = true;
|
||
GameData_1.default._instance.LEVEL_INFO.doubleHit = 1.05;
|
||
}
|
||
else {
|
||
GameData_1.default._instance.LEVEL_INFO.doubleHit += GameData_1.default._instance.LEVEL_INFO.doubleAdd;
|
||
}
|
||
var combo = (GameData_1.default._instance.LEVEL_INFO.doubleHit - 1) * (1 / 0.05);
|
||
GameData_1.default._instance.CLICK_DATA.combo = parseInt(combo + "");
|
||
}
|
||
else {
|
||
AudioManager_1.default._instance.playLuo();
|
||
this.double = false;
|
||
GameData_1.default._instance.CLICK_DATA.combo = 0;
|
||
}
|
||
this.block = other.node;
|
||
if (this.block.name != "block13") {
|
||
this.block.getComponent("Block").setScore(number);
|
||
GameData_1.default._instance.GM_INFO.afkCount = 0;
|
||
if (GameManager_1.default._instance.countTime > 0) {
|
||
Notification_1.Notification.emit("setData", false);
|
||
}
|
||
}
|
||
setTimeout(function () {
|
||
if (GameManager_1.default._instance.guide == -1) {
|
||
Notification_1.Notification.emit("createBlock", null);
|
||
if (GameData_1.default._instance.LEVEL_INFO.doubleSuccess == 0) {
|
||
setTimeout(function () {
|
||
Notification_1.Notification.emit("createCrackBlock", null);
|
||
}, 100);
|
||
}
|
||
}
|
||
}, 10);
|
||
if (number > 1 && GameData_1.default._instance.LEVEL_INFO.doubleSuccess != 0) {
|
||
GameData_1.default._instance.LEVEL_INFO.doubleSuccess -= 1;
|
||
}
|
||
else {
|
||
if (GameData_1.default._instance.LEVEL_INFO.doubleSuccess != 0 && GameData_1.default._instance.LEVEL_INFO.doubleSuccess < 3) {
|
||
GameData_1.default._instance.LEVEL_INFO.doubleSuccess = 3;
|
||
}
|
||
}
|
||
if (GameData_1.default._instance.LEVEL_INFO.doubleSuccess == 0) {
|
||
}
|
||
else {
|
||
GameManager_1.default._instance.interfere = false;
|
||
GameData_1.default._instance.CLICK_DATA.fake = GameManager_1.default._instance.interfere;
|
||
}
|
||
this.jumpState = 0;
|
||
this.up = true;
|
||
this.node.y = other.node.y - 3 + other.node.height / 2;
|
||
this.jumpHeight = this.node.y;
|
||
};
|
||
NewClass.prototype.gameDeath = function () {
|
||
// console.log("条失败");
|
||
this.jumpPause = true;
|
||
if (!GameData_1.default._instance.GM_INFO.probation) {
|
||
GameData_1.default._instance.CLICK_DATA.combo = 0;
|
||
GameData_1.default._instance.CLICK_DATA.accuracy = 0;
|
||
GameData_1.default._instance.CLICK_DATA.percent = -1;
|
||
if (GameData_1.default._instance.CLICK_DATA.jumps == 0 && GameManager_1.default._instance.round == 1) {
|
||
GameData_1.default._instance.GM_INFO.afkCount += 1;
|
||
if (GameData_1.default._instance.GM_INFO.afkCount == 3) {
|
||
GameData_1.default._instance.GM_INFO.isAFK = true;
|
||
}
|
||
}
|
||
else {
|
||
GameData_1.default._instance.GM_INFO.afkCount = 0;
|
||
}
|
||
if (GameManager_1.default._instance.countTime > 0) {
|
||
Notification_1.Notification.emit("setData", false);
|
||
}
|
||
this.double = false;
|
||
GameData_1.default._instance.LEVEL_INFO.doubleSuccess = 3;
|
||
this.death = true;
|
||
if (this.jumpAction)
|
||
this.jumpAction.stop();
|
||
this.jumpState = -1;
|
||
Notification_1.Notification.emit("death", false);
|
||
}
|
||
else {
|
||
this.death = true;
|
||
if (GameManager_1.default._instance.guide == 6) {
|
||
GameManager_1.default._instance.tipHide("tip4", null);
|
||
}
|
||
if (this.jumpAction)
|
||
this.jumpAction.stop();
|
||
this.jumpState = -1;
|
||
Notification_1.Notification.emit("death", true);
|
||
}
|
||
};
|
||
NewClass.prototype.xinAction = function () {
|
||
if (GameData_1.default._instance.GM_INFO.life >= 0) {
|
||
var xin = this.node.getChildByName("xin");
|
||
xin.y = 120;
|
||
cc.tween(xin)
|
||
.to(0.2, { opacity: 255, y: xin.y + 50 })
|
||
.delay(0.5)
|
||
.to(0.3, { opacity: 0, y: xin.y + 100 })
|
||
.call(function () {
|
||
})
|
||
.start();
|
||
}
|
||
};
|
||
NewClass.prototype.addAction = function () {
|
||
var _this = this;
|
||
this.add.y = 120;
|
||
cc.tween(this.add)
|
||
.to(0.2, { opacity: 255, y: this.add.y + 50 })
|
||
.delay(0.5)
|
||
.to(0.3, { opacity: 0, y: this.add.y + 100 })
|
||
.call(function () {
|
||
_this.add.active = false;
|
||
})
|
||
.start();
|
||
};
|
||
NewClass.prototype.update = function (dt) {
|
||
// if(this.death == true && this.node.y > -500 && GameManager._instance.over == false){
|
||
// // this.node.y -= 3;
|
||
// // if(this.node.y <= -500){
|
||
// // this.node.y = -500;
|
||
// // }
|
||
// }
|
||
};
|
||
__decorate([
|
||
property(cc.Node)
|
||
], NewClass.prototype, "add", void 0);
|
||
__decorate([
|
||
property(cc.SpriteAtlas)
|
||
], NewClass.prototype, "plist", 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxQbGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsdUNBQWtDO0FBQ2xDLDZDQUF3QztBQUN4QyxvREFBK0M7QUFDL0Msb0RBQW1EO0FBQzdDLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBQUEsQ0FBQyxDQUFBO0FBRzNDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBK1lDO1FBNVlHLFNBQUcsR0FBWSxJQUFJLENBQUM7UUFFcEIsV0FBSyxHQUFrQixJQUFJLENBQUM7O0lBMFloQyxDQUFDO0lBOVhHLHdCQUF3QjtJQUV4QixlQUFlO0lBRWYsd0JBQUssR0FBTDtRQUNJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsdUJBQUksR0FBSjtRQUNJLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FB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TyxFQUFDLEdBQUcsRUFBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUMsRUFBRSxFQUFDLENBQUM7YUFDckMsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLEVBQUUsQ0FBQyxHQUFHLEVBQUMsRUFBQyxPQUFPLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBQyxHQUFHLEVBQUMsQ0FBQzthQUNwQyxJQUFJLENBQUM7WUFDSCxLQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDM0IsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxFQUFFLENBQUM7SUFDYixDQUFDO0lBRUQseUJBQU0sR0FBTixVQUFRLEVBQUU7UUFDTix1RkFBdUY7UUFDdkYsMkJBQTJCO1FBQzNCLGtDQUFrQztRQUNsQyxpQ0FBaUM7UUFDakMsWUFBWTtRQUNaLElBQUk7SUFDUixDQUFDO0lBM1lEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7eUNBQ0U7SUFFcEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQzsyQ0FDRztJQUxYLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0ErWTVCO0lBQUQsZUFBQztDQS9ZRCxBQStZQyxDQS9ZcUMsRUFBRSxDQUFDLFNBQVMsR0ErWWpEO2tCQS9Zb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmltcG9ydCBHYW1lRGF0YSBmcm9tIFwiLi9HYW1lRGF0YVwiO1xyXG5pbXBvcnQgR2FtZU1hbmFnZXIgZnJvbSBcIi4vR2FtZU1hbmFnZXJcIjtcclxuaW1wb3J0IEF1ZGlvTWFuYWdlciBmcm9tIFwiLi90b29sL0F1ZGlvTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb24gfSBmcm9tICcuL3Rvb2wvTm90aWZpY2F0aW9uJztcclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7MFxyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgYWRkOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGVBdGxhcylcclxuICAgIHBsaXN0OiBjYy5TcHJpdGVBdGxhcyA9bnVsbDtcclxuXHJcbiAgICBiYXNpY0hlaWdodDpudW1iZXIgIC8v5q+P5qyh6Lez6LeD5YmN5Z+656GA6auY5bqmXHJcbiAgICBqdW1wU3RhdGU6bnVtYmVyOyAgIC8v6Lez6LeD54q25oCB77yM5o6n5Yi2Meautei3szLmrrXot7NcclxuICAgIGp1bXBIZWlnaHQ6bnVtYmVyOyAgLy/ot7Pot4Ppq5jluqZcclxuICAgIGp1bXBBY3Rpb246IGNjLlR3ZWVuPGNjLk5vZGU+Oy8v6Lez6LeDdHdlZW7liqjnlLvvvIznlKjkuo7lgZzmraLmjqfliLZcclxuICAgIHVwOmJvb2xlYW47ICAgICAgICAgLy/ot7Pot4PkuIrljYfkuIvpmY3nirbmgIHliKTmlq1cclxuICAgIGJsb2NrOiBjYy5Ob2RlO1xyXG4gICAgZGVhdGg6Ym9vbGVhbjtcclxuICAgIGludGVyZmVyZTpib29sZWFuO1xyXG4gICAgZG91YmxlOmJvb2xlYW47XHJcbiAgICBqdW1wUGF1c2U6Ym9vbGVhbjtcclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIC8vIG9uTG9hZCAoKSB7fVxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0KCl7XHJcbiAgICAgICAgdGhpcy5qdW1wU3RhdGUgPSAwO1xyXG4gICAgICAgIHRoaXMuanVtcEhlaWdodCA9IHRoaXMubm9kZS55O1xyXG4gICAgICAgIHRoaXMuYmFzaWNIZWlnaHQgPSB0aGlzLm5vZGUueTtcclxuICAgICAgICB0aGlzLnVwID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmRvdWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZGVhdGggPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmp1bXBBY3Rpb24gPSBudWxsO1xyXG4gICAgICAgIHRoaXMuYmxvY2sgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuaW50ZXJmZXJlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5qdW1wUGF1c2UgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8v6Lez5YqoXHJcbiAgICBqdW1wKCl7XHJcbiAgXHJcbiAgICAgICAgaWYodGhpcy5qdW1wU3RhdGUgPCAyKXtcclxuICAgICAgICAgICAgaWYodGhpcy5qdW1wU3RhdGUgPT0gMCl7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmRlYXRoID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJzcFwiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldEFuaW1hdGlvbigxLFwianVtcFwiLGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHRoaXMuanVtcFN0YXRlID09IDEgfHwgdGhpcy5ub2RlLnkgPiAodGhpcy5qdW1wSGVpZ2h0K0dhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmp1bXBIZWlnaHQtNSkpe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5kZWF0aCA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoR2FtZU1hbmFnZXIuX2luc3RhbmNlLmd1aWRlID4wICYmIEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5ndWlkZSA8Myl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwic3BcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSxcImp1bXBcIixmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmp1bXBTdGF0ZSA9PSAwKXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmp1bXBQYXVzZSA9PSB0cnVlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5ibG9jayl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuYmxvY2submFtZSAhPSBcImJsb2NrMTNcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNle3RoaXMuYmxvY2suYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmp1bXBQYXVzZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2sgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZihHYW1lTWFuYWdlci5faW5zdGFuY2UuZ3VpZGUgPT0gMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5ndWlkZSA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5zdGFydEd1aWRlKDIsZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuanVtcHMgPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIEF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUp1bXAoKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmJhc2ljSGVpZ2h0ID0gdGhpcy5ub2RlLnk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5qdW1wU3RhdGUgKz0gMTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24uZW1pdChcInNob3dHcm91bmRcIix0aGlzLm5vZGUueSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5qdW1wQWN0aW9uID0gY2MudHdlZW4odGhpcy5ub2RlKVxyXG4gICAgICAgICAgICAgICAgICAgIC50byhHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5qdW1wVXBUaW1lLHtwb3NpdGlvbjpjYy52MygwLHRoaXMuanVtcEhlaWdodCtHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5qdW1wSGVpZ2h0LDApfSx7ZWFzaW5nOidxdWFkT3V0J30pXHJcbiAgICAgICAgICAgICAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXAgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5qdW1wU3RhdGUgPSAtMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXAgPSB0aGlzLm5vZGUueSAtIHRoaXMuanVtcEhlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC50byhHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5qdW1wRG93blRpbWUse3Bvc2l0aW9uOmNjLnYzKDAsdGhpcy5qdW1wSGVpZ2h0LDApfSx7ZWFzaW5nOidjdWJpY0luJ30pXHJcbiAgICAgICAgICAgICAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuanVtcEhlaWdodCA9IHRoaXMubm9kZS55O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmp1bXBTdGF0ZSA9IC0xO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLmp1bXBTdGF0ZSA9PSAxIHx8IHRoaXMubm9kZS55ID4gKHRoaXMuanVtcEhlaWdodCtHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5qdW1wSGVpZ2h0LTE1KSl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoR2FtZU1hbmFnZXIuX2luc3RhbmNlLmd1aWRlID4wICYmIEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5ndWlkZSA8Myl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoR2FtZU1hbmFnZXIuX2luc3RhbmNlLmd1aWRlID09IDYpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmp1bXBQYXVzZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5zdGFydEd1aWRlKDYsZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmp1bXBBY3Rpb24pdGhpcy5qdW1wQWN0aW9uLnN0b3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBBdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlKdW1wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuanVtcHMgPSAyO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuanVtcFN0YXRlID0gMjtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmp1bXBBY3Rpb24gPSBjYy50d2Vlbih0aGlzLm5vZGUpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRvKEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmp1bXBVcFRpbWUse3Bvc2l0aW9uOmNjLnYzKDAsdGhpcy5ub2RlLnkrR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uanVtcEhlaWdodCwwKX0se2Vhc2luZzoncXVhZE91dCd9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVwID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAudG8oR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uanVtcERvd25UaW1lKjEuNSx7cG9zaXRpb246Y2MudjMoMCx0aGlzLmp1bXBIZWlnaHQsMCl9LHtlYXNpbmc6J2N1YmljSW4nfSlcclxuICAgICAgICAgICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5qdW1wU3RhdGUgPSAtMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5qdW1wSGVpZ2h0ID0gdGhpcy5ub2RlLnk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXAgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIDEwMCk7XHJcblxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkNvbGxpc2lvbkVudGVyKG90aGVyOiBjYy5Db2xsaWRlciwgc2VsZjogY2MuQ29sbGlkZXIpIHtcclxuICAgICAgICBpZihHYW1lTWFuYWdlci5faW5zdGFuY2Upe1xyXG4gICAgICAgICAgICBpZihHYW1lTWFuYWdlci5faW5zdGFuY2Uub3ZlciA9PSB0cnVlKXtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IG1heCA9IG90aGVyLm5hbWUubGVuZ3RoO1xyXG4gICAgICAgIGxldCBudW0gPSA2O1xyXG4gICAgICAgIGlmKG90aGVyLm5vZGUubmFtZSAhPSBcIkdyb3VuZFwiKXtcclxuICAgICAgICAgICAgaWYoR2FtZU1hbmFnZXIuX2luc3RhbmNlLmd1aWRlID09IC0xKXtcclxuICAgICAgICAgICAgICAgIGlmKG90aGVyLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikubnVtID4gOSkgbnVtID0gNzsgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIG51bSA9IDc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAgIGxldCBDb2xsaWRlck5hbWUgPSBvdGhlci5uYW1lLnN1YnN0cmluZyhudW0sbWF4KTtcclxuICAgICAgICAvL+iOt+WPlueisOaSnuS9k+WQjeWtl1xyXG4gICAgICAgIGlmKENvbGxpZGVyTmFtZSA9PSBcIjxQb2x5Z29uQ29sbGlkZXI+XCIpe1xyXG4gICAgICAgICAgICBpZih0aGlzLm5vZGUueSA8PSBvdGhlci5ub2RlLnkgJiYgdGhpcy51cCA9PSB0cnVlICYmIHRoaXMuZGVhdGggPT0gZmFsc2Upe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5qdW1wQWN0aW9uKXRoaXMuanVtcEFjdGlvbi5zdG9wKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmp1bXBTdGF0ZSA9IC0xO1xyXG4gICAgICAgICAgICAgICAgQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5R3JvdW5kKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuatu+S6oTFcIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdhbWVEZWF0aCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYob3RoZXIubm9kZS5uYW1lID09IFwiR3JvdW5kXCIgJiYgdGhpcy5kZWF0aCA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgICAgICAvLyBpZih0aGlzLmp1bXBBY3Rpb24pdGhpcy5qdW1wQWN0aW9uLnN0b3AoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuanVtcFN0YXRlID0gLTE7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuatu+S6oTJcIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdhbWVEZWF0aCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuayoeeisOWIsOi+uee8mFwiLHRoaXMudXAsdGhpcy5ub2RlLnksb3RoZXIubm9kZS55LHRoaXMuanVtcFN0YXRlLHRoaXMudXApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKENvbGxpZGVyTmFtZSA9PSBcIjxCb3hDb2xsaWRlcj5cIiApe1xyXG4gICAgICAgICAgICBpZih0aGlzLmRlYXRoID09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLlt7Lnu4/mrbvkuqFcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9cclxuICAgICAgICAgICAgbGV0IHBvcnRyYWl0ID0gTWF0aC5hYnModGhpcy5ub2RlLnktb3RoZXIubm9kZS55KVxyXG4gICAgICAgICAgICBsZXQgd2lkdGggPSBvdGhlci5ub2RlLndpZHRoLzI7XHJcbiAgICAgICAgICAgIGxldCBwb3MgPSBNYXRoLmFicyh0aGlzLm5vZGUueCAtIG90aGVyLm5vZGUueCk7XHJcbiAgICAgICAgICAgIGxldCBkaXN0YW5jZSA9cG9zL3dpZHRoO1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuaIkeeahOS9jee9rjpcIix0aGlzLm5vZGUueCxcIuWdl+eahOS9jee9rjpcIixvdGhlci5ub2RlLngsXCLlnZfnmoTlrr3luqY6XCIsd2lkdGgsXCLnmb7liIbmr5Q6XCIsZGlzdGFuY2UpO1xyXG5cclxuICAgICAgICAgICAgaWYodGhpcy51cCA9PSB0cnVlKXtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5q275LqhNFwiKTtcclxuICAgICAgICAgICAgICAgIEF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUdyb3VuZCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nYW1lRGVhdGgoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgaWYoZGlzdGFuY2UqMTAwIDwgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uZGlzdGFuY2VNaW4gJiYgdGhpcy5qdW1wU3RhdGUgIT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmiJDlip8xXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi55m+5YiG5q+UOlwiLGRpc3RhbmNlKjEwMCtcIiVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzKG90aGVyLGRpc3RhbmNlKjEwMCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHBvcnRyYWl0ID49IDIwIHx8IGRpc3RhbmNlKjEwMCA+IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmRpc3RhbmNlTWF4KXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmrbvkuqEzXCIsXCLokL3lt646XCIscG9ydHJhaXQsXCLnirbmgIE6XCIsdGhpcy51cCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUdyb3VuZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdhbWVEZWF0aCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuaIkOWKnzJcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi55m+5YiG5q+UOlwiLGRpc3RhbmNlKjEwMCtcIiVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VjY2VzcyhvdGhlcixkaXN0YW5jZSoxMDApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdWNjZXNzKG90aGVyLGRpc3RhbmNlKXtcclxuICAgICAgICB0aGlzLmp1bXBQYXVzZSA9IHRydWU7XHJcbiAgICAgICAgaWYoR2FtZU1hbmFnZXIuX2luc3RhbmNlLmd1aWRlICE9IC0xKXtcclxuICAgICAgICAgICAgdGhpcy5iYXNpY0hlaWdodCA9IHRoaXMubm9kZS55O1xyXG4gICAgICAgICAgICBvdGhlci5ub2RlLnN0b3BBbGxBY3Rpb25zKCk7XHJcbiAgICAgICAgICAgIGlmKEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5ndWlkZSA9PSAzIHx8IEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5ndWlkZT09NCl7XHJcbiAgICAgICAgICAgICAgICBHYW1lTWFuYWdlci5faW5zdGFuY2Uuc3RhcnRHdWlkZSg0LGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIGlmKEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5ndWlkZSA9PSA0KXtcclxuICAgICAgICAgICAgICAgICAgICBHYW1lTWFuYWdlci5faW5zdGFuY2UuZ3VpZGUgPSA1O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYoR2FtZU1hbmFnZXIuX2luc3RhbmNlLmd1aWRlID09IDUpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5qdW1wUGF1c2UgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgbGV0IHRpcCA9IEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5UaXAuZ2V0Q2hpbGRCeU5hbWUoXCJnb29kXCIpO1xyXG4gICAgICAgICAgICAgICAgY2MudHdlZW4odGlwKVxyXG4gICAgICAgICAgICAgICAgLnRvKDAuMyx7b3BhY2l0eToyNTUsc2NhbGU6MX0pXHJcbiAgICAgICAgICAgICAgICAuZGVsYXkoMC41KVxyXG4gICAgICAgICAgICAgICAgLnRvKDAuMix7b3BhY2l0eTowfSlcclxuICAgICAgICAgICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICAgICAgICAgIEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5zdGFydEd1aWRlKDUsZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5ndWlkZSA9PSA3KXtcclxuICAgICAgICAgICAgICAgIEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5zdGFydEd1aWRlKDgsZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYoR2FtZU1hbmFnZXIuX2luc3RhbmNlLmd1aWRlID09IDgpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5qdW1wUGF1c2UgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgbGV0IHRpcCA9IEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5UaXAuZ2V0Q2hpbGRCeU5hbWUoXCJwZXJmZXRcIik7XHJcbiAgICAgICAgICAgICAgICBjYy50d2Vlbih0aXApXHJcbiAgICAgICAgICAgICAgICAudG8oMC4zLHtvcGFjaXR5OjI1NSxzY2FsZToxfSlcclxuICAgICAgICAgICAgICAgIC5kZWxheSgwLjUpXHJcbiAgICAgICAgICAgICAgICAudG8oMC4yLHtvcGFjaXR5OjB9KVxyXG4gICAgICAgICAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgR2FtZU1hbmFnZXIuX2luc3RhbmNlLnN0YXJ0R3VpZGUoOSxmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHBlcmNlbnQgPSBwYXJzZUludChkaXN0YW5jZSoxMCtcIlwiKS8xMDtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5wZXJjZW50ID0gcGVyY2VudDtcclxuICAgICAgICBpZihHYW1lTWFuYWdlci5faW5zdGFuY2UpR2FtZU1hbmFnZXIuX2luc3RhbmNlLmRlc3Ryb3lCbG9jayh0cnVlKTtcclxuICAgICAgICB0aGlzLmFkZC5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuYWRkLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgIGxldCBudW1iZXIgPSAxO1xyXG4gICAgICAgIGlmKGRpc3RhbmNlIDw9IDEwKSBudW1iZXIgPSAzO1xyXG4gICAgICAgIGVsc2UgaWYoZGlzdGFuY2UgPD0gMjApIG51bWJlciA9IDI7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuYWNjdXJhY3kgPSBudW1iZXI7XHJcbiAgICBcclxuICAgICAgICB0aGlzLmFkZC5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLnBsaXN0LmdldFNwcml0ZUZyYW1lcygpW251bWJlcl07XHJcbiAgICAgICAgdGhpcy5hZGQuZ2V0Q2hpbGRCeU5hbWUoXCJqaWFcIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLnBsaXN0LmdldFNwcml0ZUZyYW1lcygpW251bWJlciszXTtcclxuICAgICAgICB0aGlzLmFkZEFjdGlvbigpO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImd1YW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiZ3VhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMCxcImRvdWJsZV8xXCIsZmFsc2UpO1xyXG4gICAgICAgIGlmKHRoaXMuanVtcEFjdGlvbil0aGlzLmp1bXBBY3Rpb24uc3RvcCgpO1xyXG4gICAgICAgIGlmKHRoaXMuZGVhdGggPT0gZmFsc2Upe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJzcFwiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldEFuaW1hdGlvbigxLFwianVtcFwiLGZhbHNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuYmFzaWNIZWlnaHQgPSB0aGlzLm5vZGUueTtcclxuICAgICAgICBpZihudW1iZXIgPiAxKXtcclxuICAgICAgICAgICAgQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5UHooKTtcclxuICAgICAgICAgICAgaWYodGhpcy5kb3VibGUgPT0gZmFsc2Upe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kb3VibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uZG91YmxlSGl0ID0gMS4wNTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uZG91YmxlSGl0ICs9IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLmRvdWJsZUFkZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgY29tYm8gPSAoR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uZG91YmxlSGl0LTEpKigxLzAuMDUpO1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5jb21ibyA9IHBhcnNlSW50KGNvbWJvICsgXCJcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIEF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUx1bygpO1xyXG4gICAgICAgICAgICB0aGlzLmRvdWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5jb21ibyA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuYmxvY2sgPSBvdGhlci5ub2RlO1xyXG4gICAgICAgIGlmKHRoaXMuYmxvY2submFtZSAhPSBcImJsb2NrMTNcIil7XHJcbiAgICAgICAgICAgIHRoaXMuYmxvY2suZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuc2V0U2NvcmUobnVtYmVyKTtcclxuICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uYWZrQ291bnQgPSAwO1xyXG4gICAgICAgICAgICBpZihHYW1lTWFuYWdlci5faW5zdGFuY2UuY291bnRUaW1lID4gMCl7XHJcbiAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24uZW1pdChcInNldERhdGFcIixmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZihHYW1lTWFuYWdlci5faW5zdGFuY2UuZ3VpZGUgPT0gLTEpe1xyXG4gICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uLmVtaXQoXCJjcmVhdGVCbG9ja1wiLG51bGwpO1xyXG4gICAgICAgICAgICAgICAgaWYoR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uZG91YmxlU3VjY2VzcyA9PSAwKXtcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uLmVtaXQoXCJjcmVhdGVDcmFja0Jsb2NrXCIsbnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgfSwgMTApO1xyXG4gIFxyXG4gICAgICAgIGlmKG51bWJlciA+IDEgJiYgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uZG91YmxlU3VjY2VzcyAhPSAwICl7XHJcbiAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLmRvdWJsZVN1Y2Nlc3MgLT0gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgaWYoR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uZG91YmxlU3VjY2VzcyAhPSAwICYmIEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLmRvdWJsZVN1Y2Nlc3M8Myl7XHJcbiAgICAgICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5kb3VibGVTdWNjZXNzID0gMztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5kb3VibGVTdWNjZXNzID09IDApe1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgR2FtZU1hbmFnZXIuX2luc3RhbmNlLmludGVyZmVyZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5mYWtlID0gR2FtZU1hbmFnZXIuX2luc3RhbmNlLmludGVyZmVyZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5qdW1wU3RhdGUgPSAwO1xyXG4gICAgICAgIHRoaXMudXAgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubm9kZS55ID0gb3RoZXIubm9kZS55LTMrb3RoZXIubm9kZS5oZWlnaHQvMjtcclxuICAgICAgICB0aGlzLmp1bXBIZWlnaHQgPSB0aGlzLm5vZGUueTtcclxuICAgIH1cclxuXHJcbiAgICBnYW1lRGVhdGgoKXtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuadoeWksei0pVwiKTtcclxuICAgICAgICB0aGlzLmp1bXBQYXVzZSA9IHRydWU7XHJcbiAgICAgICAgaWYoIUdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnByb2JhdGlvbil7XHJcbiAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmNvbWJvID0gMDtcclxuICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuYWNjdXJhY3kgPSAwO1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5wZXJjZW50ID0gLTE7XHJcbiAgICAgICAgICAgIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmp1bXBzID09IDAgJiYgR2FtZU1hbmFnZXIuX2luc3RhbmNlLnJvdW5kID09IDEpe1xyXG4gICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uYWZrQ291bnQgKz0gMTtcclxuICAgICAgICAgICAgICAgIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmFma0NvdW50ID09IDMpe1xyXG4gICAgICAgICAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmlzQUZLID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uYWZrQ291bnQgPSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5jb3VudFRpbWUgPiAwKXtcclxuICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbi5lbWl0KFwic2V0RGF0YVwiLGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgIFxyXG4gICAgICAgICAgICB0aGlzLmRvdWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5kb3VibGVTdWNjZXNzID0gMztcclxuICAgICAgICAgICAgdGhpcy5kZWF0aCA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuanVtcEFjdGlvbil0aGlzLmp1bXBBY3Rpb24uc3RvcCgpO1xyXG4gICAgICAgICAgICB0aGlzLmp1bXBTdGF0ZSA9IC0xO1xyXG4gICAgICAgICAgICBOb3RpZmljYXRpb24uZW1pdChcImRlYXRoXCIsZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLmRlYXRoID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYoR2FtZU1hbmFnZXIuX2luc3RhbmNlLmd1aWRlID09IDYpe1xyXG4gICAgICAgICAgICAgICAgR2FtZU1hbmFnZXIuX2luc3RhbmNlLnRpcEhpZGUoXCJ0aXA0XCIsbnVsbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYodGhpcy5qdW1wQWN0aW9uKXRoaXMuanVtcEFjdGlvbi5zdG9wKCk7XHJcbiAgICAgICAgICAgIHRoaXMuanVtcFN0YXRlID0gLTE7XHJcbiAgICAgICAgICAgIE5vdGlmaWNhdGlvbi5lbWl0KFwiZGVhdGhcIix0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgeGluQWN0aW9uKCl7XHJcbiAgICAgICAgaWYoR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubGlmZSA+PSAwKXtcclxuICAgICAgICAgICAgbGV0IHhpbiA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInhpblwiKTtcclxuICAgICAgICAgICAgeGluLnkgPSAxMjA7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHhpbilcclxuICAgICAgICAgICAgLnRvKDAuMix7b3BhY2l0eToyNTUseTp4aW4ueSs1MH0pXHJcbiAgICAgICAgICAgIC5kZWxheSgwLjUpXHJcbiAgICAgICAgICAgIC50bygwLjMse29wYWNpdHk6MCx5Onhpbi55KzEwMH0pXHJcbiAgICAgICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFkZEFjdGlvbigpe1xyXG4gICAgICAgIHRoaXMuYWRkLnkgPSAxMjA7XHJcbiAgICAgICAgY2MudHdlZW4odGhpcy5hZGQpXHJcbiAgICAgICAgLnRvKDAuMix7b3BhY2l0eToyNTUseTp0aGlzLmFkZC55KzUwfSlcclxuICAgICAgICAuZGVsYXkoMC41KVxyXG4gICAgICAgIC50bygwLjMse29wYWNpdHk6MCx5OnRoaXMuYWRkLnkrMTAwfSlcclxuICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICB0aGlzLmFkZC5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZSAoZHQpIHtcclxuICAgICAgICAvLyBpZih0aGlzLmRlYXRoID09IHRydWUgJiYgdGhpcy5ub2RlLnkgPiAtNTAwICYmIEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5vdmVyID09IGZhbHNlKXtcclxuICAgICAgICAvLyAgICAgLy8gdGhpcy5ub2RlLnkgLT0gMztcclxuICAgICAgICAvLyAgICAgLy8gaWYodGhpcy5ub2RlLnkgPD0gLTUwMCl7XHJcbiAgICAgICAgLy8gICAgIC8vICAgICB0aGlzLm5vZGUueSA9IC01MDA7XHJcbiAgICAgICAgLy8gICAgIC8vIH0gXHJcbiAgICAgICAgLy8gfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
||
//------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, '08fd79IH4NDy6e43JUK4PUm', 'Load');
|
||
// Script/Load.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 GameTool_1 = require("./tool/GameTool");
|
||
var share_1 = require("./tool/share");
|
||
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
var NewClass = /** @class */ (function (_super) {
|
||
__extends(NewClass, _super);
|
||
function NewClass() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
_this.label = null;
|
||
_this.text = 'hello';
|
||
return _this;
|
||
// update (dt) {}
|
||
}
|
||
// onLoad () {}
|
||
NewClass.prototype.start = function () {
|
||
GameTool_1.GameTool.Authentication();
|
||
share_1.WeChat.setShare(location.href);
|
||
};
|
||
NewClass.prototype.click = function () {
|
||
// AudioManager._instance.playMusicGame();
|
||
if (GameData_1.default._instance.GM_INFO.probation) {
|
||
cc.director.loadScene("GuideScene");
|
||
}
|
||
else {
|
||
cc.director.loadScene("GameScene");
|
||
}
|
||
};
|
||
NewClass.prototype.openRank = function () {
|
||
// AudioManager._instance.playMusicGame();
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxMb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWxGLHVDQUFrQztBQUVsQyw0Q0FBMkM7QUFFM0Msc0NBQXNDO0FBRWhDLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBRzFDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBZ0NDO1FBN0JHLFdBQUssR0FBYSxJQUFJLENBQUM7UUFHdkIsVUFBSSxHQUFXLE9BQU8sQ0FBQzs7UUF5QnZCLGlCQUFpQjtJQUNyQixDQUFDO0lBeEJHLGVBQWU7SUFFZix3QkFBSyxHQUFMO1FBQ0ksbUJBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxQixjQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsd0JBQUssR0FBTDtRQUNJLDBDQUEwQztRQUMxQyxJQUFHLGtCQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUM7WUFDcEMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDdkM7YUFDRztZQUNBLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0wsQ0FBQztJQUlELDJCQUFRLEdBQVI7UUFDSSwwQ0FBMEM7UUFDMUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQTNCRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOzJDQUNJO0lBR3ZCO1FBREMsUUFBUTswQ0FDYztJQU5OLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0FnQzVCO0lBQUQsZUFBQztDQWhDRCxBQWdDQyxDQWhDcUMsRUFBRSxDQUFDLFNBQVMsR0FnQ2pEO2tCQWhDb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmltcG9ydCBHYW1lRGF0YSBmcm9tIFwiLi9HYW1lRGF0YVwiO1xyXG5pbXBvcnQgQXVkaW9NYW5hZ2VyIGZyb20gXCIuL3Rvb2wvQXVkaW9NYW5hZ2VyXCI7XHJcbmltcG9ydCB7IEdhbWVUb29sIH0gZnJvbSBcIi4vdG9vbC9HYW1lVG9vbFwiO1xyXG5pbXBvcnQgeyBTdG9yYWdlTWVzc2FnZSB9IGZyb20gXCIuL3Rvb2wvU3RvcmFnZVwiO1xyXG5pbXBvcnQgeyBXZUNoYXQgfSBmcm9tIFwiLi90b29sL3NoYXJlXCI7XHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld0NsYXNzIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuXHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgR2FtZVRvb2wuQXV0aGVudGljYXRpb24oKTtcclxuICAgICAgICBXZUNoYXQuc2V0U2hhcmUobG9jYXRpb24uaHJlZik7XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2soKXtcclxuICAgICAgICAvLyBBdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlNdXNpY0dhbWUoKTtcclxuICAgICAgICBpZihHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5wcm9iYXRpb24pe1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHdWlkZVNjZW5lXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgb3BlblJhbmsoKXtcclxuICAgICAgICAvLyBBdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlNdXNpY0dhbWUoKTtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJSYW5rU2NlbmVcIik7XHJcbiAgICB9XHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ==
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/tool/share.js';
|
||
var __require = nodeEnv ? function (request) {
|
||
return cc.require(request);
|
||
} : function (request) {
|
||
return __quick_compile_project__.require(request, __filename);
|
||
};
|
||
function __define (exports, require, module) {
|
||
if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
|
||
cc._RF.push(module, '850e92SXJVD2rcZ5BirDc9b', 'share');
|
||
// Script/tool/share.ts
|
||
|
||
"use strict";
|
||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||
return new (P || (P = Promise))(function (resolve, reject) {
|
||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||
});
|
||
};
|
||
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||
function verb(n) { return function (v) { return step([n, v]); }; }
|
||
function step(op) {
|
||
if (f) throw new TypeError("Generator is already executing.");
|
||
while (_) try {
|
||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||
if (y = 0, t) op = [op[0] & 2, t.value];
|
||
switch (op[0]) {
|
||
case 0: case 1: t = op; break;
|
||
case 4: _.label++; return { value: op[1], done: false };
|
||
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||
default:
|
||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||
if (t[2]) _.ops.pop();
|
||
_.trys.pop(); continue;
|
||
}
|
||
op = body.call(thisArg, _);
|
||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||
}
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.WeChat = void 0;
|
||
var HttpUtil_1 = require("../crypto/HttpUtil");
|
||
var GameData_1 = require("../GameData");
|
||
var shareConfig = {
|
||
gameId: "100001",
|
||
shareLine: "zDLsruVI",
|
||
EK: "hui231%1"
|
||
};
|
||
// 微信操作类
|
||
var WeChat = /** @class */ (function () {
|
||
function WeChat() {
|
||
}
|
||
WeChat.setShare = function (url) {
|
||
var urlTemp = this.removeQueryParams(url);
|
||
shareConfig.shareLine = urlTemp;
|
||
WeChat.getSignature(url);
|
||
};
|
||
WeChat.getResult = function (res) {
|
||
if (res) {
|
||
var data = res.data;
|
||
wx.config({
|
||
debug: false,
|
||
appId: data.appId,
|
||
timestamp: data.timestamp,
|
||
nonceStr: data.nonceStr,
|
||
signature: data.signature,
|
||
jsApiList: ['onMenuShareTimeline', 'updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareAppMessage']
|
||
});
|
||
wx.checkJsApi({
|
||
jsApiList: ['updateAppMessageShareData'],
|
||
success: function (res) {
|
||
console.log("检查api", res);
|
||
// 以键值对的形式返回,可用的api值true,不可用为false
|
||
// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
|
||
}
|
||
});
|
||
setTimeout(function () {
|
||
WeChat.changeShare();
|
||
}, 100);
|
||
setTimeout(function () {
|
||
WeChat.changeShare();
|
||
}, 200);
|
||
}
|
||
};
|
||
WeChat.changeShare = function () {
|
||
wx.ready(function () {
|
||
wx.updateAppMessageShareData({
|
||
title: '手眼协调练习',
|
||
desc: '脑雾导致你的手眼协调变慢和估测不准吗?',
|
||
link: shareConfig.shareLine,
|
||
imgUrl: 'https://static.sparkus.cn/public/flyup.jpg',
|
||
success: function () {
|
||
// 设置成功
|
||
console.log("分享好友成功回调");
|
||
}
|
||
});
|
||
setTimeout(function () {
|
||
wx.updateTimelineShareData({
|
||
title: '手眼协调练习',
|
||
link: shareConfig.shareLine,
|
||
imgUrl: 'https://static.sparkus.cn/public/flyup.jpg',
|
||
success: function () {
|
||
// 设置成功
|
||
console.log("分享朋友圈成功回调");
|
||
}
|
||
});
|
||
}, 200);
|
||
});
|
||
};
|
||
WeChat.getSignature = function (url) {
|
||
return new Promise(function (resolve) {
|
||
WeChat.getShareInfo((encodeURIComponent(url)), WeChat.getResult);
|
||
});
|
||
};
|
||
WeChat.getShareInfo = function (shareUrl, callback) {
|
||
return __awaiter(this, void 0, Promise, function () {
|
||
var time, url;
|
||
return __generator(this, function (_a) {
|
||
time = Math.floor((new Date().getTime()) / 1000);
|
||
url = HttpUtil_1.default.apiSign("/api/share/cfg?gameId=" + GameData_1.default._instance.GM_INFO.gameId + "&time=" + time + "&url=" + shareUrl, {});
|
||
return [2 /*return*/, HttpUtil_1.default.get(url, callback, 0)];
|
||
});
|
||
});
|
||
};
|
||
WeChat.containsNanana = function (str) {
|
||
return /test/i.test(str);
|
||
};
|
||
WeChat.removeQueryParams = function (url) {
|
||
return url.replace(/\?.*$/, '');
|
||
};
|
||
return WeChat;
|
||
}());
|
||
exports.WeChat = WeChat;
|
||
|
||
cc._RF.pop();
|
||
}
|
||
if (nodeEnv) {
|
||
__define(__module.exports, __require, __module);
|
||
}
|
||
else {
|
||
__quick_compile_project__.registerModuleFunc(__filename, function () {
|
||
__define(__module.exports, __require, __module);
|
||
});
|
||
}
|
||
})();
|
||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFx0b29sXFxzaGFyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSwrQ0FBMEM7QUFDMUMsd0NBQW1DO0FBS25DLElBQUksV0FBVyxHQUFHO0lBQ2QsTUFBTSxFQUFFLFFBQVE7SUFDaEIsU0FBUyxFQUFFLFVBQVU7SUFDckIsRUFBRSxFQUFDLFVBQVU7Q0FDZCxDQUFDO0FBV0osUUFBUTtBQUNSO0lBQUE7SUFzRkEsQ0FBQztJQXJGVSxlQUFRLEdBQWYsVUFBZ0IsR0FBRztRQUNmLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQyxXQUFXLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztRQUNoQyxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTSxnQkFBUyxHQUFoQixVQUFpQixHQUFHO1FBQ2hCLElBQUcsR0FBRyxFQUFDO1lBQ0gsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztZQUNwQixFQUFFLENBQUMsTUFBTSxDQUFDO2dCQUNOLEtBQUssRUFBRSxLQUFLO2dCQUNaLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDekIsU0FBUyxFQUFFLENBQUMscUJBQXFCLEVBQUMsMkJBQTJCLEVBQUUseUJBQXlCLEVBQUUsdUJBQXVCLENBQUM7YUFDckgsQ0FBQyxDQUFDO1lBRUgsRUFBRSxDQUFDLFVBQVUsQ0FBQztnQkFDVixTQUFTLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztnQkFDeEMsT0FBTyxFQUFFLFVBQVMsR0FBRztvQkFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzdCLGtDQUFrQztvQkFDbEMsa0VBQWtFO2dCQUNsRSxDQUFDO2FBRUosQ0FBQyxDQUFDO1lBRUgsVUFBVSxDQUFDO2dCQUNQLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN6QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDUixVQUFVLENBQUM7Z0JBQ1AsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3pCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNYO0lBRUwsQ0FBQztJQUVNLGtCQUFXLEdBQWxCO1FBQ0ksRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNMLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztnQkFDekIsS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsSUFBSSxFQUFFLHFCQUFxQjtnQkFDM0IsSUFBSSxFQUFFLFdBQVcsQ0FBQyxTQUFTO2dCQUMzQixNQUFNLEVBQUUsNENBQTRDO2dCQUNwRCxPQUFPLEVBQUU7b0JBQ1AsT0FBTztvQkFDUCxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMxQixDQUFDO2FBQ0osQ0FBQyxDQUFDO1lBQ0gsVUFBVSxDQUFDO2dCQUNQLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDdkIsS0FBSyxFQUFFLFFBQVE7b0JBQ2YsSUFBSSxFQUFFLFdBQVcsQ0FBQyxTQUFTO29CQUMzQixNQUFNLEVBQUUsNENBQTRDO29CQUNwRCxPQUFPLEVBQUU7d0JBQ1AsT0FBTzt3QkFDUCxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUMzQixDQUFDO2lCQUNGLENBQUMsQ0FBQTtZQUNSLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVaLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLG1CQUFZLEdBQW5CLFVBQW9CLEdBQVc7UUFDM0IsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFDLE9BQU87WUFDdkIsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNZLG1CQUFZLEdBQXpCLFVBQTBCLFFBQWdCLEVBQUUsUUFBaUI7dUNBQUcsT0FBTzs7O2dCQUM3RCxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtnQkFDaEQsR0FBRyxHQUFHLGtCQUFRLENBQUMsT0FBTyxDQUFDLDJCQUF5QixrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxjQUFTLElBQUksYUFBUSxRQUFVLEVBQUMsRUFBRSxDQUFDLENBQUE7Z0JBQzFILHNCQUFPLGtCQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDLEVBQUE7OztLQUN0QztJQUdNLHFCQUFjLEdBQXJCLFVBQXNCLEdBQUc7UUFDckIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTSx3QkFBaUIsR0FBeEIsVUFBeUIsR0FBRztRQUN4QixPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTCxhQUFDO0FBQUQsQ0F0RkEsQUFzRkMsSUFBQTtBQXRGWSx3QkFBTSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IEh0dHBVdGlsIGZyb20gJy4uL2NyeXB0by9IdHRwVXRpbCc7XG5pbXBvcnQgR2FtZURhdGEgZnJvbSAnLi4vR2FtZURhdGEnO1xuXG5cblxuXG52YXIgc2hhcmVDb25maWcgPSB7XG4gICAgZ2FtZUlkOiBcIjEwMDAwMVwiLFxuICAgIHNoYXJlTGluZTogXCJ6RExzcnVWSVwiLFxuICAgIEVLOlwiaHVpMjMxJTFcIlxuICB9O1xuXG4vLyDlrprkuYnlvq7kv6HphY3nva7mlbDmja7nmoTmjqXlj6NcbmludGVyZmFjZSBJV2VDaGF0Q29uZmlnIHtcbiAgICBhcHBJZDogc3RyaW5nO1xuICAgIHRpbWVzdGFtcDogbnVtYmVyO1xuICAgIG5vbmNlU3RyOiBzdHJpbmc7XG4gICAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gICAganNBcGlMaXN0OiBbXTtcbn1cblxuLy8g5b6u5L+h5pON5L2c57G7XG5leHBvcnQgY2xhc3MgV2VDaGF0IHtcbiAgICBzdGF0aWMgc2V0U2hhcmUodXJsKSB7XG4gICAgICAgIHZhciB1cmxUZW1wID0gdGhpcy5yZW1vdmVRdWVyeVBhcmFtcyh1cmwpO1xuICAgICAgICBzaGFyZUNvbmZpZy5zaGFyZUxpbmUgPSB1cmxUZW1wO1xuICAgICAgICBXZUNoYXQuZ2V0U2lnbmF0dXJlKHVybCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldFJlc3VsdChyZXMpe1xuICAgICAgICBpZihyZXMpe1xuICAgICAgICAgICAgdmFyIGRhdGEgPSByZXMuZGF0YTtcbiAgICAgICAgICAgIHd4LmNvbmZpZyh7XG4gICAgICAgICAgICAgICAgZGVidWc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGFwcElkOiBkYXRhLmFwcElkLFxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogZGF0YS50aW1lc3RhbXAsXG4gICAgICAgICAgICAgICAgbm9uY2VTdHI6IGRhdGEubm9uY2VTdHIsXG4gICAgICAgICAgICAgICAgc2lnbmF0dXJlOiBkYXRhLnNpZ25hdHVyZSxcbiAgICAgICAgICAgICAgICBqc0FwaUxpc3Q6IFsnb25NZW51U2hhcmVUaW1lbGluZScsJ3VwZGF0ZUFwcE1lc3NhZ2VTaGFyZURhdGEnLCAndXBkYXRlVGltZWxpbmVTaGFyZURhdGEnLCAnb25NZW51U2hhcmVBcHBNZXNzYWdlJ11cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB3eC5jaGVja0pzQXBpKHtcbiAgICAgICAgICAgICAgICBqc0FwaUxpc3Q6IFsndXBkYXRlQXBwTWVzc2FnZVNoYXJlRGF0YSddLCAvLyDpnIDopoHmo4DmtYvnmoRKU+aOpeWPo+WIl+ihqO+8jOaJgOaciUpT5o6l5Y+j5YiX6KGo6KeB6ZmE5b2VMixcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmo4Dmn6VhcGlcIixyZXMpO1xuICAgICAgICAgICAgICAgIC8vIOS7pemUruWAvOWvueeahOW9ouW8j+i/lOWbnu+8jOWPr+eUqOeahGFwaeWAvHRydWXvvIzkuI3lj6/nlKjkuLpmYWxzZVxuICAgICAgICAgICAgICAgIC8vIOWmgu+8mntcImNoZWNrUmVzdWx0XCI6e1wiY2hvb3NlSW1hZ2VcIjp0cnVlfSxcImVyck1zZ1wiOlwiY2hlY2tKc0FwaTpva1wifVxuICAgICAgICAgICAgICAgIH1cbiAgXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7ICBcbiAgICAgICAgICAgICAgICBXZUNoYXQuY2hhbmdlU2hhcmUoKTtcbiAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBXZUNoYXQuY2hhbmdlU2hhcmUoKTtcbiAgICAgICAgICAgIH0sIDIwMCk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHN0YXRpYyBjaGFuZ2VTaGFyZSgpe1xuICAgICAgICB3eC5yZWFkeSgoKSA9PiB7XG4gICAgICAgICAgICB3eC51cGRhdGVBcHBNZXNzYWdlU2hhcmVEYXRhKHsgXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfmiYvnnLzljY/osIPnu4PkuaAnLCAvLyDliIbkuqvmoIfpophcbiAgICAgICAgICAgICAgICBkZXNjOiAn6ISR6Zu+5a+86Ie05L2g55qE5omL55y85Y2P6LCD5Y+Y5oWi5ZKM5Lyw5rWL5LiN5YeG5ZCX77yfJywgLy8g5YiG5Lqr5o+P6L+wXG4gICAgICAgICAgICAgICAgbGluazogc2hhcmVDb25maWcuc2hhcmVMaW5lLCAvLyDliIbkuqvpk77mjqXvvIzor6Xpk77mjqXln5/lkI3miJbot6/lvoTlv4XpobvkuI7lvZPliY3pobXpnaLlr7nlupTnmoTlhazkvJflj7dKU+WuieWFqOWfn+WQjeS4gOiHtFxuICAgICAgICAgICAgICAgIGltZ1VybDogJ2h0dHBzOi8vc3RhdGljLnNwYXJrdXMuY24vcHVibGljL2ZseXVwLmpwZycsIC8vIOWIhuS6q+Wbvuagh1xuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgIC8vIOiuvue9ruaIkOWKn1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLliIbkuqvlpb3lj4vmiJDlip/lm57osINcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB3eC51cGRhdGVUaW1lbGluZVNoYXJlRGF0YSh7IFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+aJi+ecvOWNj+iwg+e7g+S5oCcsIC8vIOWIhuS6q+agh+mimFxuICAgICAgICAgICAgICAgICAgICBsaW5rOiBzaGFyZUNvbmZpZy5zaGFyZUxpbmUsIC8vIOWIhuS6q+mTvuaOpe+8jOivpemTvuaOpeWfn+WQjeaIlui3r+W+hOW/hemhu+S4juW9k+WJjemhtemdouWvueW6lOeahOWFrOS8l+WPt0pT5a6J5YWo5Z+f5ZCN5LiA6Ie0XG4gICAgICAgICAgICAgICAgICAgIGltZ1VybDogJ2h0dHBzOi8vc3RhdGljLnNwYXJrdXMuY24vcHVibGljL2ZseXVwLmpwZycsIC8vIOWIhuS6q+Wbvuagh1xuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgLy8g6K6+572u5oiQ5YqfXG4gICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLliIbkuqvmnIvlj4vlnIjmiJDlip/lm57osINcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LCAyMDApO1xuXG4gICAgICAgIH0pOyBcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0U2lnbmF0dXJlKHVybDogc3RyaW5nKTogUHJvbWlzZTxJV2VDaGF0Q29uZmlnPiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgV2VDaGF0LmdldFNoYXJlSW5mbygoZW5jb2RlVVJJQ29tcG9uZW50KHVybCkpLFdlQ2hhdC5nZXRSZXN1bHQpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgc3RhdGljIGFzeW5jIGdldFNoYXJlSW5mbyhzaGFyZVVybDogc3RyaW5nLCBjYWxsYmFjazpGdW5jdGlvbik6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGNvbnN0IHRpbWUgPSBNYXRoLmZsb29yKChuZXcgRGF0ZSgpLmdldFRpbWUoKSkgLyAxMDAwKVxuICAgICAgICBjb25zdCB1cmwgPSBIdHRwVXRpbC5hcGlTaWduKGAvYXBpL3NoYXJlL2NmZz9nYW1lSWQ9JHtHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5nYW1lSWR9JnRpbWU9JHt0aW1lfSZ1cmw9JHtzaGFyZVVybH1gLHt9KVxuICAgICAgICByZXR1cm4gSHR0cFV0aWwuZ2V0KHVybCxjYWxsYmFjaywwKVxuICAgIH1cblxuICAgIFxuICAgIHN0YXRpYyBjb250YWluc05hbmFuYShzdHIpIHtcbiAgICAgICAgcmV0dXJuIC90ZXN0L2kudGVzdChzdHIpO1xuICAgIH1cblxuICAgIHN0YXRpYyByZW1vdmVRdWVyeVBhcmFtcyh1cmwpIHtcbiAgICAgICAgcmV0dXJuIHVybC5yZXBsYWNlKC9cXD8uKiQvLCAnJyk7XG4gICAgfVxuXG59XG4iXX0=
|
||
//------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";
|
||
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() {
|
||
return _super !== null && _super.apply(this, arguments) || this;
|
||
}
|
||
GameData_1 = GameData;
|
||
// 0.15 0.37 0.8 获得三个星星 -2167.675 -2054 两个尺寸的屏幕的补偿值
|
||
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 () {
|
||
//GAME_DATA 废弃了,暂时不删除以防后面修改回 一整局传一次
|
||
this.GAME_DATA = [];
|
||
this.GM_INFO_init(); //GM_INFO存储 一些游戏数据,这些数据至少是当局内不会重置清零的
|
||
this.LEVEL_init(); //每局游戏内游戏参数,可复活清零或者重玩清零
|
||
this.BLOCK_INFO_init(); //每个游戏不同,此游戏为跳板参数
|
||
this.CLICK_init(); //埋点数据,用于上传重要数据
|
||
};
|
||
GameData.prototype.GM_INFO_init = function () {
|
||
this.GM_INFO = {
|
||
// isEnd: false,
|
||
mean_Time: 0,
|
||
total: 0,
|
||
currSeed: 203213,
|
||
gameId: '100001',
|
||
userId: 200139,
|
||
scode: "",
|
||
guide: true,
|
||
url: "https://dev.api.sparkus.cn",
|
||
custom: 0,
|
||
//从这开始
|
||
jumpUpTime: 0.5,
|
||
jumpDownTime: 0.4,
|
||
jumpHeight: 150,
|
||
blockMin: 30,
|
||
blockMax: -10,
|
||
blockScale: 5,
|
||
distanceMin: 100,
|
||
distanceMax: 110,
|
||
life: 3,
|
||
levelMax: 1,
|
||
difficultyMax: 1,
|
||
score: 0,
|
||
success: true,
|
||
probation: true,
|
||
afkCount: 0,
|
||
isAFK: false //是否挂机
|
||
};
|
||
this.setCode(this.getKey("scode"));
|
||
};
|
||
GameData.prototype.CLICK_init = function () {
|
||
GameData_1._instance.CLICK_DATA =
|
||
{
|
||
type: 1,
|
||
level: 0,
|
||
block: 0,
|
||
percent: 0,
|
||
getScore: 0,
|
||
totalScore: 0,
|
||
difficulty: 0,
|
||
height: false,
|
||
combo: 0,
|
||
accuracy: 0,
|
||
jumps: 0,
|
||
timer: 0,
|
||
fake: false,
|
||
fakeSpeed: 0,
|
||
speed: 0,
|
||
round: 0,
|
||
isAFK: false //是否挂机
|
||
};
|
||
};
|
||
GameData.prototype.LEVEL_init = function () {
|
||
this.LEVEL_INFO =
|
||
{
|
||
speed: 1,
|
||
addSpeed: 0.015,
|
||
reduceSpeed: 0,
|
||
jiansu: 3,
|
||
round1: 10,
|
||
round2: 20,
|
||
round3: 30,
|
||
doubleSuccess: 3,
|
||
fastSpeed: 3.5,
|
||
slowSpeed: 4.5,
|
||
doubleHit: 1,
|
||
doubleAdd: 0.05,
|
||
doubleMax: 2,
|
||
layer: 100,
|
||
layerAdd: 2,
|
||
star1: 0.2,
|
||
star2: 0.4,
|
||
star3: 0.8,
|
||
scoreMax: 120000,
|
||
levelMax: 1,
|
||
difficultyMax: 1 //最高难度系数
|
||
};
|
||
};
|
||
GameData.prototype.BLOCK_INFO_init = function () {
|
||
this.BLOCK_INFO = [
|
||
{
|
||
name: "block1",
|
||
speed: 8,
|
||
thickness: false,
|
||
},
|
||
{
|
||
name: "block2",
|
||
speed: 9,
|
||
thickness: false,
|
||
},
|
||
{
|
||
name: "block3",
|
||
speed: 8,
|
||
thickness: false,
|
||
},
|
||
{
|
||
name: "block4",
|
||
speed: 9,
|
||
thickness: false,
|
||
},
|
||
{
|
||
name: "block5",
|
||
speed: 8,
|
||
thickness: false,
|
||
},
|
||
{
|
||
name: "block6",
|
||
speed: 8,
|
||
thickness: false,
|
||
},
|
||
{
|
||
name: "block7",
|
||
speed: 10,
|
||
thickness: true,
|
||
},
|
||
{
|
||
name: "block8",
|
||
speed: 10,
|
||
thickness: true,
|
||
},
|
||
{
|
||
name: "block9",
|
||
speed: 10,
|
||
thickness: true,
|
||
},
|
||
{
|
||
name: "block10",
|
||
speed: 10,
|
||
thickness: true,
|
||
},
|
||
{
|
||
name: "block11",
|
||
speed: 10,
|
||
thickness: true,
|
||
},
|
||
{
|
||
name: "block12",
|
||
speed: 10,
|
||
thickness: true,
|
||
},
|
||
{
|
||
name: "block0",
|
||
speed: 14,
|
||
thickness: false,
|
||
},
|
||
];
|
||
};
|
||
GameData.prototype.setCode = function (code) {
|
||
this.GM_INFO.scode = code;
|
||
};
|
||
GameData.prototype.getKey = function (key) {
|
||
var reg = new RegExp('(^|&)' + key + '=([^&]*)(&|$)', 'i');
|
||
var r = window.location.search.substr(1).match(reg);
|
||
if (r != null) {
|
||
return unescape(r[2]);
|
||
}
|
||
return "";
|
||
};
|
||
var GameData_1;
|
||
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lRGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDTSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUUxQztJQUFzQyw0QkFBWTtJQUFsRDs7SUF1UkEsQ0FBQztpQkF2Um9CLFFBQVE7SUFzRnpCLHVEQUF1RDtJQUN2RCx5QkFBTSxHQUFOO1FBQ0ksSUFBSSxVQUFRLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRTtZQUM1QixVQUFRLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztZQUMxQix5Q0FBeUM7WUFFekMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQ2xFO2FBQ0k7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BCLE9BQU87U0FDVjtJQUNMLENBQUM7SUFFRCx3QkFBSyxHQUFMO1FBQ0ksbUNBQW1DO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFDaEIsQ0FBQTtRQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFJLG9DQUFvQztRQUM1RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBTSx1QkFBdUI7UUFDL0MsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsaUJBQWlCO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFNLGVBQWU7SUFDM0MsQ0FBQztJQUVELCtCQUFZLEdBQVo7UUFDSSxJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ1gsZ0JBQWdCO1lBQ2hCLFNBQVMsRUFBQyxDQUFDO1lBQ1gsS0FBSyxFQUFDLENBQUM7WUFDUCxRQUFRLEVBQUUsTUFBTTtZQUNoQixNQUFNLEVBQUMsUUFBUTtZQUNmLE1BQU0sRUFBQyxNQUFN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QUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUU7WUFDWCxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6QjtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQzs7SUFwUmdCLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0F1UjVCO0lBQUQsZUFBQztDQXZSRCxBQXVSQyxDQXZScUMsRUFBRSxDQUFDLFNBQVMsR0F1UmpEO2tCQXZSb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR2FtZURhdGEgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgc3RhdGljIF9pbnN0YW5jZTogYW55O1xyXG4gICAgR0FNRV9EQVRBOiBhbnlbXTsvL+Wkh+eUqFxyXG4gICAgQXVkaW9NYW5hZ2VyOiBhbnk7XHJcbiAgICBCTE9DS19JTkZPOiB7IC8v6Zq+5bqm5o6n5Yi2XHJcbiAgICAgICAgbmFtZTogc3RyaW5nOyAvL+Wdl+WQjeWtl1xyXG4gICAgICAgIC8v5Z2X5ZCN5a2XXHJcbiAgICAgICAgc3BlZWQ6IG51bWJlcjsgLy/mr4/kuKrlnZfnmoTln7rnoYDpgJ/luqZcclxuICAgICAgICB0aGlja25lc3M6IGJvb2xlYW47XHJcbiAgICB9W107XHJcbiAgICBDTElDS19EQVRBOiB7XHJcbiAgICAgICAgdHlwZTogbnVtYmVyOyAvL+m7mOiupOexu+Wei1xyXG4gICAgICAgIGxldmVsOiBudW1iZXI7IC8v5bGC5pWwXHJcbiAgICAgICAgYmxvY2s6IG51bWJlcjsgLy/lnZfnmoTlkI3lrZdcclxuICAgICAgICBwZXJjZW50OiBudW1iZXI7IC8v6Led56a75Lit5b+D55m+5YiG5q+UXHJcbiAgICAgICAgZ2V0U2NvcmU6IG51bWJlcjsgLy/mnKzova7ojrflvpfliIbmlbBcclxuICAgICAgICB0b3RhbFNjb3JlOiBudW1iZXI7IC8v5pys6L2u6L+H5ZCO5oC75YiG5pWwXHJcbiAgICAgICAgZGlmZmljdWx0eTogbnVtYmVyOyAvL+acrOi9rumavuW6puezu+aVsFxyXG4gICAgICAgIGhlaWdodDogYm9vbGVhbjsgLy/mnKzova7mmK/lkKblop7pq5hcclxuICAgICAgICBjb21ibzogbnVtYmVyOyAvL+i/nuWHu+aVsFxyXG4gICAgICAgIGFjY3VyYWN5OiBudW1iZXI7IC8v57K+5YeG5bqmICgwLTMpIDAg5aSx6LSl5o6J6JC9XHJcbiAgICAgICAganVtcHM6IG51bWJlcjsgLy/mnKzova7njqnlrrbot7Pot4PmrKHmlbDvvIwx5oiW6ICFMlxyXG4gICAgICAgIHRpbWVyOiBudW1iZXI7IC8v5pys5bGA5ri45oiP5Ymp5L2Z5pe26Ze0XHJcbiAgICAgICAgZmFrZTogYm9vbGVhbjsgLy/mmK/lkKbmnInlubPlj7DlubLmibDpoblcclxuICAgICAgICBmYWtlU3BlZWQ6IG51bWJlcjsgLy/lgYflubPlj7Dnp7vliqjpgJ/luqZcclxuICAgICAgICBzcGVlZDpudW1iZXI7ICAvL+ecn+W5s+WPsOenu+WKqOmAn+W6plxyXG4gICAgICAgIHJvdW5kOm51bWJlcjsgIC8v5Zue5ZCI5pWwXHJcbiAgICAgICAgbGV2ZWxNYXg6bnVtYmVyLCAgICAgIC8v5pyA6auY5bGC5pWwXHJcbiAgICAgICAgZGlmZmljdWx0eU1heDpudW1iZXIgIC8v5pyA6auY6Zq+5bqm57O75pWwXHJcbiAgICAgICAgaXNBRks6Ym9vbGVhbiAgICAgICAvL+aYr+WQpuaMguacuiDnrKzkuIDlsYLov57nu63mrbsz5qyh5LiU5rKh6LezXHJcbiAgICB9O1xyXG4gICAgTEVWRUxfSU5GTzogeyAvL+mavuW6puaOp+WItlxyXG4gICAgICAgIHNwZWVkOiBudW1iZXI7IC8v6YCf5bqm5Yqg5oiQ5Z+656GAXHJcbiAgICAgICAgYWRkU3BlZWQ6IG51bWJlcjsgLy/pgJ/luqbliqDmiJDns7vmlbBcclxuICAgICAgICByZWR1Y2VTcGVlZDogbnVtYmVyOyAvL+mAn+W6puWinuWKoOiMg+WbtFxyXG4gICAgICAgIGppYW5zdTogbnVtYmVyOyAvL+mAn+W6puWinuWKoOeahOiMg+WbtOWKoOWAvFxyXG4gICAgICAgIHJvdW5kMTogbnVtYmVyOyAvL+WKoOmAn+iMg+WbtOaOp+WItuWbnuWQiOaho+aVsCAyIOWwj+S6jui/meWbnuWQiOS4ujNkb3VibGUgaGl0XHJcbiAgICAgICAgcm91bmQyOiBudW1iZXI7IC8v5Yqg6YCf6IyD5Zu05o6n5Yi25Zue5ZCI5qGj5pWwIDFcclxuICAgICAgICByb3VuZDM6IG51bWJlcjsgLy/liqDpgJ/ojIPlm7TmjqfliLblm57lkIjmoaPmlbAgMC41XHJcbiAgICAgICAgZG91YmxlU3VjY2VzczogbnVtYmVyOyAvL+i/nuWHu+asoeaVsChO5qyh5Lul5LiKLOW8gOWQr+W5suaJsOmhuSlcclxuICAgICAgICBmYXN0U3BlZWQ6IG51bWJlcjsgLy/nn67oloTlnZfmnIDlv6vpgJ/luqZcclxuICAgICAgICBzbG93U3BlZWQ6IG51bWJlcjsgLy/ljprlnZfmnIDlnZfpgJ/luqZcclxuICAgICAgICBkb3VibGVIaXQ6IG51bWJlcjsgLy/ov57lh7vliqDmiJBcclxuICAgICAgICBkb3VibGVBZGQ6IG51bWJlcjsgLy/mr4/mrKHov57lh7vlkI4g6L+e5Ye75Yqg5oiQXHJcbiAgICAgICAgZG91YmxlTWF4OiBudW1iZXI7IC8v6L+e5Ye75Yqg5oiQ5pyA5aSn5YC8XHJcbiAgICAgICAgbGF5ZXI6IG51bWJlcjsgLy/lsYLnuqfliqDmiJBcclxuICAgICAgICBsYXllckFkZDogbnVtYmVyOyAvL+avj+asoeWxgue6p+aPkOWNh++8jOWxgue6p+WKoOaIkOeahOWKoOaIkFxyXG4gICAgICAgIHN0YXIxOiBudW1iZXI7IC8v6I635b6X5LiA6aKX5pif55m+5YiG5q+UXHJcbiAgICAgICAgc3RhcjI6IG51bWJlcjsgLy/ojrflvpfkuKTpopfmmJ/nmb7liIbmr5RcclxuICAgICAgICBzdGFyMzogbnVtYmVyOyAvL+iOt+W+l+S4iemil+aYn+eZvuWIhuavlFxyXG4gICAgICAgIHNjb3JlTWF4OiBudW1iZXI7IC8v5pqC5pe25oC75YiGXHJcbiAgICAgICAgbGV2ZWxNYXg6IG51bWJlcjsgLy/mnIDpq5jlsYLmlbBcclxuICAgICAgICBkaWZmaWN1bHR5TWF4OiBudW1iZXI7IC8v5pyA6auY6Zq+5bqm57O75pWwXHJcbiAgICB9O1xyXG4gICAgR01fSU5GTzoge1xyXG4gICAgICAgIC8vIGlzRW5kOiBmYWxzZSxcclxuICAgICAgICBtZWFuX1RpbWU6IG51bWJlcjsgLy/lubPlnYfmlL7nrq3pgJ/luqZcclxuICAgICAgICB0b3RhbDogbnVtYmVyOyAvL+aAu+WFseWvueeahOS4quaVsFxyXG4gICAgICAgIGN1cnJTZWVkOiBudW1iZXI7IC8v55So5LqO6ZqP5py65pWw56eN5a2QXHJcbiAgICAgICAgZ2FtZUlkOiBzdHJpbmc7IHVzZXJJZDogbnVtYmVyOyBcclxuICAgICAgICBzY29kZTogc3RyaW5nOyAvL+eUqOaIt2NvZGUs5LuO572R6aG15ZCO57yA6I635Y+WXHJcbiAgICAgICAgZ3VpZGU6IGJvb2xlYW47IC8v5piv5ZCm5pyJ5byV5a+8XHJcbiAgICAgICAgdXJsOiBzdHJpbmc7IGN1c3RvbTogbnVtYmVyO1xyXG4gICAgICAgIC8v5LuO6L+Z5byA5aeLXHJcbiAgICAgICAganVtcFVwVGltZTogbnVtYmVyOyAvL+i1t+i3s+aXtumXtFxyXG4gICAgICAgIGp1bXBEb3duVGltZTogbnVtYmVyOyAvL+iQveWcsOaXtumXtFxyXG4gICAgICAgIGp1bXBIZWlnaHQ6IG51bWJlcjsgLy/ot7Pot4Ppq5jluqZcclxuICAgICAgICBibG9ja01pbjogbnVtYmVyOyAvL+iWhOWdl+WinuWKoOmrmOW6plxyXG4gICAgICAgIGJsb2NrTWF4OiBudW1iZXI7IC8v5Y6a5Z2X5aKe5Yqg6auY5bqm77yI5Zyo6Ieq6Lqr6auY5bqm5Z+656GA5LiK77yJ5q2k5YC85Y+v5Lul5Li66LSf5YC8XHJcbiAgICAgICAgYmxvY2tTY2FsZTogbnVtYmVyOyAvL+asoeWAvOa7oeWAvOS4uuWdl+enjeexu+aAu+S4quaVsDEyLDbkuLrnmb7liIbkuYs1MOWOmu+8jDUw6JaE77yM5Liq5pWw5aKe5Yqg77yM5Y6a5bqm5q+U5L6L6ZmN5L2OICAgIFxyXG4gICAgICAgIGRpc3RhbmNlTWluOiBudW1iZXI7IC8v6JC95Zyw6IyD5Zu05Zyo55m+5YiG55m+5YaF5b+F5oiQ5Yqf77yM5Y+v5pS55Y+CXHJcbiAgICAgICAgZGlzdGFuY2VNYXg6IG51bWJlcjsgLy/okL3lnLDojIPlm7TmnIDlpKflgLzvvIzlvLHlpKfkuo7vvIzliKTmlq3ohJrlnKjlpJbpnaJcclxuICAgICAgICBsaWZlOiBudW1iZXI7IC8v5Y+v5aSN5rS75qyh5pWwXHJcbiAgICAgICAgbGV2ZWxNYXg6IG51bWJlcjsgLy/mnIDpq5jlsYLmlbBcclxuICAgICAgICBkaWZmaWN1bHR5TWF4OiBudW1iZXI7IC8v5pyA6auY6Zq+5bqm57O75pWwXHJcbiAgICAgICAgc2NvcmU6IG51bWJlcjsgLy/mgLvliIZcclxuICAgICAgICBzdWNjZXNzOiBib29sZWFuOyAvL+aYr+WQpuaIkOWKn1xyXG4gICAgICAgIHByb2JhdGlvbjogYm9vbGVhbjsgLy/or5XnlKjmnJ9cclxuICAgICAgICBhZmtDb3VudDogbnVtYmVyOyAvL+esrOS4gOWxguS4jei3s+atu+eahOasoeaVsFxyXG4gICAgICAgIGlzQUZLOiBib29sZWFuOyAvL+aYr+WQpuaMguaculxyXG4gICAgfTtcclxuXHJcblxyXG5cclxuXHJcblxyXG4gICAgLy8gMC4xNSAwLjM3IDAuOCAg6I635b6X5LiJ5Liq5pif5pifICAtMjE2Ny42NzUgIC0yMDU0ICDkuKTkuKrlsLrlr7jnmoTlsY/luZXnmoTooaXlgb/lgLxcclxuICAgIG9uTG9hZCAoKSB7XHJcbiAgICAgICAgaWYgKEdhbWVEYXRhLl9pbnN0YW5jZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIC8vIGNjLmdhbWUuYWRkUGVyc2lzdFJvb3ROb2RlKHRoaXMubm9kZSk7XHJcbiAgICAgICAgIFxyXG4gICAgICAgICAgICB0aGlzLkF1ZGlvTWFuYWdlciA9IHRoaXMubm9kZS5nZXRDb21wb25lbnQoJ0JhbGxBdWRpb01hbmFnZXInKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgICAgIC8vR0FNRV9EQVRBIOW6n+W8g+S6hu+8jOaaguaXtuS4jeWIoOmZpOS7pemYsuWQjumdouS/ruaUueWbniDkuIDmlbTlsYDkvKDkuIDmrKFcclxuICAgICAgICB0aGlzLkdBTUVfREFUQSA9IFtcclxuICAgICAgICBdXHJcbiAgICAgICAgdGhpcy5HTV9JTkZPX2luaXQoKTsgICAgLy9HTV9JTkZP5a2Y5YKoIOS4gOS6m+a4uOaIj+aVsOaNru+8jOi/meS6m+aVsOaNruiHs+WwkeaYr+W9k+WxgOWGheS4jeS8mumHjee9rua4hembtueahFxyXG4gICAgICAgIHRoaXMuTEVWRUxfaW5pdCgpOyAgICAgIC8v5q+P5bGA5ri45oiP5YaF5ri45oiP5Y+C5pWw77yM5Y+v5aSN5rS75riF6Zu25oiW6ICF6YeN546p5riF6Zu2XHJcbiAgICAgICAgdGhpcy5CTE9DS19JTkZPX2luaXQoKTsgLy/mr4/kuKrmuLjmiI/kuI3lkIzvvIzmraTmuLjmiI/kuLrot7Pmnb/lj4LmlbBcclxuICAgICAgICB0aGlzLkNMSUNLX2luaXQoKTsgICAgICAvL+Wfi+eCueaVsOaNriznlKjkuo7kuIrkvKDph43opoHmlbDmja5cclxuICAgIH1cclxuXHJcbiAgICBHTV9JTkZPX2luaXQoKXtcclxuICAgICAgICB0aGlzLkdNX0lORk8gPSB7IFxyXG4gICAgICAgICAgICAvLyBpc0VuZDogZmFsc2UsXHJcbiAgICAgICAgICAgIG1lYW5fVGltZTowLCAgICAgICAgICAgICAgICAvL+W5s+Wdh+aUvueuremAn+W6plxyXG4gICAgICAgICAgICB0b3RhbDowLCAgICAgICAgICAgICAgICAgICAgLy/mgLvlhbHlr7nnmoTkuKrmlbBcclxuICAgICAgICAgICAgY3VyclNlZWQ6IDIwMzIxMywgICAgICAgICAgIC8v55So5LqO6ZqP5py65pWw56eN5a2QXHJcbiAgICAgICAgICAgIGdhbWVJZDonMTAwMDAxJyxcclxuICAgICAgICAgICAgdXNlcklkOjIwMDEzOSxcclxuICAgICAgICAgICAgc2NvZGU6IFwiXCIsICAgICAgICAgICAgICAgICAgLy/nlKjmiLdjb2RlLOS7jue9kemhteWQjue8gOiOt+WPllxyXG4gICAgICAgICAgICBndWlkZTp0cnVlLCAgICAgICAgICAgICAgICAgLy/mmK/lkKbmnInlvJXlr7xcclxuICAgICAgICAgICAgdXJsOlwiaHR0cHM6Ly9kZXYuYXBpLnNwYXJrdXMuY25cIixcclxuICAgICAgICAgICAgY3VzdG9tOiAwLFxyXG5cclxuICAgICAgICAgICAgLy/ku47ov5nlvIDlp4tcclxuICAgICAgICAgICAganVtcFVwVGltZTowLjUsICAgICAgICAgICAgIC8v6LW36Lez5pe26Ze0XHJcbiAgICAgICAgICAgIGp1bXBEb3duVGltZTowLjQsICAgICAgICAgICAvL+iQveWcsOaXtumXtFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAganVtcEhlaWdodDoxNTAsICAgICAgICAgICAgIC8v6Lez6LeD6auY5bqmXHJcbiAgICAgICAgICAgIGJsb2NrTWluOjMwLCAgICAgICAgICAgICAgICAvL+iWhOWdl+WinuWKoOmrmOW6plxyXG4gICAgICAgICAgICBibG9ja01heDotMTAsICAgICAgICAgICAgICAgICAvL+WOmuWdl+WinuWKoOmrmOW6pu+8iOWcqOiHqui6q+mrmOW6puWfuuehgOS4iu+8ieatpOWAvOWPr+S7peS4uui0n+WAvFxyXG4gICAgICAgICAgICBibG9ja1NjYWxlOjUsICAgICAgICAgICAgICAgLy/mrKHlgLzmu6HlgLzkuLrlnZfnp43nsbvmgLvkuKrmlbAxMiw25Li655m+5YiG5LmLNTDljprvvIw1MOiWhO+8jOS4quaVsOWinuWKoO+8jOWOmuW6puavlOS+i+mZjeS9jiAgICBcclxuICAgICAgICAgICAgZGlzdGFuY2VNaW46MTAwLCAgICAgICAgICAgIC8v6JC95Zyw6IyD5Zu05Zyo55m+5YiG55m+5YaF5b+F5oiQ5Yqf77yM5Y+v5pS55Y+CXHJcbiAgICAgICAgICAgIGRpc3RhbmNlTWF4OjExMCwgICAgICAgICAgICAvL+iQveWcsOiMg+WbtOacgOWkp+WAvO+8jOW8seWkp+S6ju+8jOWIpOaWreiEmuWcqOWklumdolxyXG4gICAgICAgICAgICBsaWZlOjMsICAgICAgICAgICAgICAgICAgIC8v5Y+v5aSN5rS75qyh5pWwXHJcbiAgICAgICAgICAgIGxldmVsTWF4OjEsICAgICAgICAgICAgICAvL+acgOmrmOWxguaVsFxyXG4gICAgICAgICAgICBkaWZmaWN1bHR5TWF4OjEsICAgICAgICAgLy/mnIDpq5jpmr7luqbns7vmlbBcclxuICAgICAgICAgICAgc2NvcmU6MCwgICAgICAgICAgICAgICAgICAvL+aAu+WIhlxyXG4gICAgICAgICAgICBzdWNjZXNzOnRydWUsICAgICAgICAgICAgLy/mmK/lkKbmiJDlip9cclxuICAgICAgICAgICAgcHJvYmF0aW9uOnRydWUsICAgICAgICAgICAvL+ivleeUqOacn1xyXG4gICAgICAgICAgICBhZmtDb3VudDowLCAgICAgICAgICAgICAgICAgLy/nrKzkuIDlsYLkuI3ot7PmrbvnmoTmrKHmlbBcclxuICAgICAgICAgICAgaXNBRks6ZmFsc2UgICAgICAgICAgICAgICAgLy/mmK/lkKbmjILmnLpcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuc2V0Q29kZSh0aGlzLmdldEtleShcInNjb2RlXCIpKTtcclxuICAgIH1cclxuXHJcbiAgICBDTElDS19pbml0KCl7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEgPSBcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6MSwgICAgICAgICAgICAgLy/pu5jorqTnsbvlnotcclxuICAgICAgICAgICAgbGV2ZWw6MCwgICAgICAgICAgICAvL+WxguaVsFxyXG4gICAgICAgICAgICBibG9jazowLCAgICAgICAgICAgIC8v5Z2X55qE5ZCN5a2XXHJcbiAgICAgICAgICAgIHBlcmNlbnQ6MCwgICAgICAgICAgLy/ot53nprvkuK3lv4Pnmb7liIbmr5RcclxuICAgICAgICAgICAgZ2V0U2NvcmU6MCwgICAgICAgICAvL+acrOi9ruiOt+W+l+WIhuaVsFxyXG4gICAgICAgICAgICB0b3RhbFNjb3JlOjAsICAgICAgIC8v5pys6L2u6L+H5ZCO5oC75YiG5pWwXHJcbiAgICAgICAgICAgIGRpZmZpY3VsdHk6MCwgICAgICAgLy/mnKzova7pmr7luqbns7vmlbBcclxuICAgICAgICAgICAgaGVpZ2h0OmZhbHNlLCAgICAgICAvL+acrOi9ruaYr+WQpuWinumrmFxyXG4gICAgICAgICAgICBjb21ibzowLCAgICAgICAgICAgIC8v6L+e5Ye75pWwXHJcbiAgICAgICAgICAgIGFjY3VyYWN5OjAsICAgICAgICAgLy/nsr7lh4bluqYgKDAtMykgMCDlpLHotKXmjonokL1cclxuICAgICAgICAgICAganVtcHM6MCwgICAgICAgICAgICAvL+acrOi9rueOqeWutui3s+i3g+asoeaVsO+8jDHmiJbogIUyXHJcbiAgICAgICAgICAgIHRpbWVyOjAsICAgICAgICAgICAgLy/mnKzlsYDmuLjmiI/liankvZnml7bpl7RcclxuICAgICAgICAgICAgZmFrZTpmYWxzZSwgICAgICAgICAvL+aYr+WQpuacieW5s+WPsOW5suaJsOmhuVxyXG4gICAgICAgICAgICBmYWtlU3BlZWQ6MCwgICAgICAgIC8v5YGH5bmz5Y+w56e75Yqo6YCf5bqmXHJcbiAgICAgICAgICAgIHNwZWVkOjAsICAgICAgICAgICAgIC8v55yf5bmz5Y+w56e75Yqo6YCf5bqmXHJcbiAgICAgICAgICAgIHJvdW5kOjAsICAgICAgICAgICAgLy/lm57lkIjmlbBcclxuICAgICAgICAgICAgaXNBRks6ZmFsc2UgICAgICAgICAvL+aYr+WQpuaMguaculxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBMRVZFTF9pbml0KCl7XHJcbiAgICAgICAgdGhpcy5MRVZFTF9JTkZPID0gXHJcbiAgICAgICAgICAgIHsgICAvL+mavuW6puaOp+WItlxyXG4gICAgICAgICAgICAgICAgc3BlZWQ6MSwgICAgICAvL+mAn+W6puWKoOaIkOWfuuehgFxyXG4gICAgICAgICAgICAgICAgYWRkU3BlZWQ6MC4wMTUsICAgLy/pgJ/luqbliqDmiJDns7vmlbBcclxuICAgICAgICAgICAgICAgIHJlZHVjZVNwZWVkOjAsICAvL+mAn+W6puWinuWKoOiMg+WbtFxyXG4gICAgICAgICAgICAgICAgamlhbnN1OjMsICAgLy/pgJ/luqblop7liqDnmoTojIPlm7TliqDlgLxcclxuICAgICAgICAgICAgICAgIHJvdW5kMToxMCwgIC8v5Yqg6YCf6IyD5Zu05o6n5Yi25Zue5ZCI5qGj5pWwIDIg5bCP5LqO6L+Z5Zue5ZCI5Li6M2RvdWJsZSBoaXRcclxuICAgICAgICAgICAgICAgIHJvdW5kMjoyMCwgIC8v5Yqg6YCf6IyD5Zu05o6n5Yi25Zue5ZCI5qGj5pWwIDFcclxuICAgICAgICAgICAgICAgIHJvdW5kMzozMCwgIC8v5Yqg6YCf6IyD5Zu05o6n5Yi25Zue5ZCI5qGj5pWwIDAuNVxyXG4gICAgICAgICAgICAgICAgZG91YmxlU3VjY2VzczozLCAgICAvL+i/nuWHu+asoeaVsChO5qyh5Lul5LiKLOW8gOWQr+W5suaJsOmhuSlcclxuICAgICAgICAgICAgICAgIGZhc3RTcGVlZDozLjUsICAvL+efruiWhOWdl+acgOW/q+mAn+W6plxyXG4gICAgICAgICAgICAgICAgc2xvd1NwZWVkOjQuNSwgIC8v5Y6a5Z2X5pyA5Z2X6YCf5bqmXHJcbiAgICAgICAgICAgICAgICBkb3VibGVIaXQ6MSwgICAgLy/ov57lh7vliqDmiJBcclxuICAgICAgICAgICAgICAgIGRvdWJsZUFkZDowLjA1LCAvL+avj+asoei/nuWHu+WQjiDov57lh7vliqDmiJBcclxuICAgICAgICAgICAgICAgIGRvdWJsZU1heDoyLCAgICAvL+i/nuWHu+WKoOaIkOacgOWkp+WAvFxyXG4gICAgICAgICAgICAgICAgbGF5ZXI6MTAwLCAgICAgIC8v5bGC57qn5Yqg5oiQXHJcbiAgICAgICAgICAgICAgICBsYXllckFkZDoyLCAgICAgIC8v5q+P5qyh5bGC57qn5o+Q5Y2H77yM5bGC57qn5Yqg5oiQ55qE5Yqg5oiQXHJcbiAgICAgICAgICAgICAgICBzdGFyMTowLjIsICAgICAgLy/ojrflvpfkuIDpopfmmJ/nmb7liIbmr5RcclxuICAgICAgICAgICAgICAgIHN0YXIyOjAuNCwgICAgICAvL+iOt+W+l+S4pOmil+aYn+eZvuWIhuavlFxyXG4gICAgICAgICAgICAgICAgc3RhcjM6MC44LCAgICAgICAvL+iOt+W+l+S4iemil+aYn+eZvuWIhuavlFxyXG4gICAgICAgICAgICAgICAgc2NvcmVNYXg6MTIwMDAwLCAvL+aaguaXtuaAu+WIhlxyXG4gICAgICAgICAgICAgICAgbGV2ZWxNYXg6MSwgICAgICAvL+acgOmrmOWxguaVsFxyXG4gICAgICAgICAgICAgICAgZGlmZmljdWx0eU1heDoxICAvL+acgOmrmOmavuW6puezu+aVsFxyXG4gICAgICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQkxPQ0tfSU5GT19pbml0KCl7XHJcbiAgICAgICAgdGhpcy5CTE9DS19JTkZPID0gW1xyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazFcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6OCwgICAgICAgICAgICAvL+avj+S4quWdl+eahOWfuuehgOmAn+W6plxyXG4gICAgICAgICAgICAgICAgdGhpY2tuZXNzOmZhbHNlLCAgICAvL+W9k+WJjeWdl+eahOWOmuW6plxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazJcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6OSwgICAgICAgICAgICAvL+avj+S4quWdl+eahOWfuuehgOmAn+W6plxyXG4gICAgICAgICAgICAgICAgdGhpY2tuZXNzOmZhbHNlLCAgICAvL+W9k+WJjeWdl+eahOWOmuW6plxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazNcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6OCwgICAgICAgICAgICAvL+avj+S4quWdl+eahOWfuuehgOmAn+W6plxyXG4gICAgICAgICAgICAgICAgdGhpY2tuZXNzOmZhbHNlLCAgICAvL+W9k+WJjeWdl+eahOWOmuW6plxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazRcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6OSwgICAgICAgICAgICAvL+avj+S4quWdl+eahOWfuuehgOmAn+W6plxyXG4gICAgICAgICAgICAgICAgdGhpY2tuZXNzOmZhbHNlLCAgICAvL+W9k+WJjeWdl+eahOWOmuW6plxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazVcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6OCwgICAgICAgICAgICAvL+avj+S4quWdl+eahOWfuuehgOmAn+W6plxyXG4gICAgICAgICAgICAgICAgdGhpY2tuZXNzOmZhbHNlLCAgICAvL+W9k+WJjeWdl+eahOWOmuW6plxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazZcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6OCwgICAgICAgICAgICAvL+avj+S4quWdl+eahOWfuuehgOmAn+W6plxyXG4gICAgICAgICAgICAgICAgdGhpY2tuZXNzOmZhbHNlLCAgICAvL+W9k+WJjeWdl+eahOWOmuW6plxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazdcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6MTAsICAgICAgICAgICAgLy/mr4/kuKrlnZfnmoTln7rnoYDpgJ/luqZcclxuICAgICAgICAgICAgICAgIHRoaWNrbmVzczp0cnVlLCAgICAvL+W9k+WJjeWdl+eahOWOmuW6plxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazhcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6MTAsICAgICAgICAgICAgLy/mr4/kuKrlnZfnmoTln7rnoYDpgJ/luqZcclxuICAgICAgICAgICAgICAgIHRoaWNrbmVzczp0cnVlLCAgICAvL+W9k+WJjeWdl+eahOWOmuW6plxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazlcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6MTAsICAgICAgICAgICAgLy/mr4/kuKrlnZfnmoTln7rnoYDpgJ/luqZcclxuICAgICAgICAgICAgICAgIHRoaWNrbmVzczp0cnVlLCAgICAvL+W9k+WJjeWdl+eahOWOmuW6plxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazEwXCIsICAgICAgLy/lnZflkI3lrZdcclxuICAgICAgICAgICAgICAgIHNwZWVkOjEwLCAgICAgICAgICAgIC8v5q+P5Liq5Z2X55qE5Z+656GA6YCf5bqmXHJcbiAgICAgICAgICAgICAgICB0aGlja25lc3M6dHJ1ZSwgICAgLy/lvZPliY3lnZfnmoTljprluqZcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyAgIC8v6Zq+5bqm5o6n5Yi2XHJcbiAgICAgICAgICAgICAgICBuYW1lOlwiYmxvY2sxMVwiLCAgICAgIC8v5Z2X5ZCN5a2XXHJcbiAgICAgICAgICAgICAgICBzcGVlZDoxMCwgICAgICAgICAgICAvL+avj+S4quWdl+eahOWfuuehgOmAn+W6plxyXG4gICAgICAgICAgICAgICAgdGhpY2tuZXNzOnRydWUsICAgIC8v5b2T5YmN5Z2X55qE5Y6a5bqmXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgICAvL+mavuW6puaOp+WItlxyXG4gICAgICAgICAgICAgICAgbmFtZTpcImJsb2NrMTJcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6MTAsICAgICAgICAgICAgLy/mr4/kuKrlnZfnmoTln7rnoYDpgJ/luqZcclxuICAgICAgICAgICAgICAgIHRoaWNrbmVzczp0cnVlLCAgICAvL+W9k+WJjeWdl+eahOWOmuW6plxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7ICAgLy/pmr7luqbmjqfliLZcclxuICAgICAgICAgICAgICAgIG5hbWU6XCJibG9jazBcIiwgICAgICAvL+Wdl+WQjeWtl1xyXG4gICAgICAgICAgICAgICAgc3BlZWQ6MTQsICAgICAgICAgICAgLy/mr4/kuKrlnZfnmoTln7rnoYDpgJ/luqZcclxuICAgICAgICAgICAgICAgIHRoaWNrbmVzczpmYWxzZSwgICAgLy/lvZPliY3lnZfnmoTljprluqZcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICBdXHJcbiAgICB9XHJcblxyXG4gICAgc2V0Q29kZShjb2RlKXtcclxuICAgICAgICB0aGlzLkdNX0lORk8uc2NvZGUgPSBjb2RlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEtleShrZXkpe1xyXG4gICAgICAgIHZhciByZWcgPSBuZXcgUmVnRXhwKCcoXnwmKScgKyBrZXkgKyAnPShbXiZdKikoJnwkKScsICdpJyk7XHJcbiAgICAgICAgdmFyIHIgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cigxKS5tYXRjaChyZWcpO1xyXG4gICAgICAgIGlmIChyICE9IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZXNjYXBlKHJbMl0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ==
|
||
//------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, 'b26a49RCSFPT4C+F7xAd62t', '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 GameData_1 = require("./GameData");
|
||
var GameTool_1 = require("./tool/GameTool");
|
||
var Notification_1 = require("./tool/Notification");
|
||
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
var GameManager = /** @class */ (function (_super) {
|
||
__extends(GameManager, _super);
|
||
function GameManager() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
_this.Camera = null;
|
||
_this.topUI = null;
|
||
_this.Player = null;
|
||
_this.Ground = null;
|
||
_this.Xin = null;
|
||
_this.time = null;
|
||
_this.GameOver = null;
|
||
_this.Tip = null;
|
||
_this.blockPrefab = [];
|
||
return _this;
|
||
}
|
||
GameManager_1 = GameManager;
|
||
// LIFE-CYCLE CALLBACKS:
|
||
GameManager.prototype.onLoad = function () {
|
||
cc.game.setFrameRate(60);
|
||
// 示例使用
|
||
var manager = cc.director.getCollisionManager();
|
||
manager.enabled = true;
|
||
// manager.enabledDebugDraw = true;
|
||
GameManager_1._instance = this;
|
||
// GameData._instance.GM_INFO.probation = false;
|
||
this.Air = [];
|
||
this.Air2 = [];
|
||
};
|
||
GameManager.prototype.onEnable = function () {
|
||
Notification_1.Notification.on("createBlock", this.createBlock, this);
|
||
Notification_1.Notification.on("addScore", this.addScore, this);
|
||
Notification_1.Notification.on("createCrackBlock", this.createCrackBlock, this);
|
||
Notification_1.Notification.on("showGround", this.showGround, this);
|
||
Notification_1.Notification.on("death", this.getDeath, this);
|
||
Notification_1.Notification.on("jump", this.jump, this);
|
||
Notification_1.Notification.on("setData", this.setData, this);
|
||
};
|
||
GameManager.prototype.onDestroy = function () {
|
||
Notification_1.Notification.off("createBlock", this.createBlock);
|
||
Notification_1.Notification.off("addScore", this.addScore);
|
||
Notification_1.Notification.off("createCrackBlock", this.createCrackBlock);
|
||
Notification_1.Notification.off("death", this.getDeath);
|
||
Notification_1.Notification.off("jump", this.jump);
|
||
Notification_1.Notification.off("showGround", this.showGround);
|
||
Notification_1.Notification.off("setData", this.setData);
|
||
};
|
||
//根据是否全面屏,做独立适配方面
|
||
GameManager.prototype.fit = function () {
|
||
this.node.getChildByName("bg2").y = -2167.675;
|
||
var jg = this.setFit();
|
||
if (!jg) {
|
||
this.node.getChildByName("bg2").y = -2100;
|
||
this.topUI.y = 660;
|
||
}
|
||
};
|
||
//判断全面屏
|
||
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.drop = this.topUI.y - this.Camera.node.y;
|
||
this.score = 0;
|
||
this.oldSpeed = 10;
|
||
this.guide = -1;
|
||
this.begin = true;
|
||
this.over = false;
|
||
this.interfere = false;
|
||
this.round = 0;
|
||
this.level = 0;
|
||
GameData_1.default._instance.GM_INFO.levelMax = 1;
|
||
GameData_1.default._instance.GM_INFO.difficultyMax = 1;
|
||
GameData_1.default._instance.GM_INFO.life = 3;
|
||
this.blockArray = [];
|
||
this.difficultyArray = 0;
|
||
this.cameraMove = false;
|
||
this.countTime = 180;
|
||
this.topUI.getChildByName("xin1").active = true;
|
||
this.topUI.getChildByName("xin2").active = true;
|
||
this.topUI.getChildByName("xin3").active = true;
|
||
this.topUI.getChildByName("star1").active = false;
|
||
this.topUI.getChildByName("star2").active = false;
|
||
this.topUI.getChildByName("star3").active = false;
|
||
GameData_1.default._instance.LEVEL_init();
|
||
this.schedule(this.updateCountDownTime, 1);
|
||
};
|
||
GameManager.prototype.start = function () {
|
||
var _this = this;
|
||
// this.node.on(cc.Node.EventType.TOUCH_START, this.jump, this);
|
||
this.fit();
|
||
this.init();
|
||
// GameData._instance.GM_INFO.probation = false;
|
||
if (GameData_1.default._instance.GM_INFO.probation) {
|
||
this.Player.getComponent("Player").jumpPause = true;
|
||
var tip = this.Tip.getChildByName("tip");
|
||
this.tipShow(tip, -1, true);
|
||
}
|
||
else {
|
||
this.node.getChildByName("Begin").opacity = 0;
|
||
this.node.getChildByName("Begin").scale = 2;
|
||
if (this.node.getChildByName("Begin")) {
|
||
cc.tween(this.node.getChildByName("Begin"))
|
||
.to(0.5, { opacity: 255, scale: 1 })
|
||
.delay(0.5)
|
||
.to(0.5, { opacity: 0, scale: 0 })
|
||
.call(function () {
|
||
_this.startGame();
|
||
})
|
||
.start();
|
||
}
|
||
else {
|
||
setTimeout(function () {
|
||
_this.startGame();
|
||
}, 1000);
|
||
}
|
||
}
|
||
};
|
||
//开启引导
|
||
GameManager.prototype.startGuide = function (type, revive) {
|
||
var _this = this;
|
||
this.guide = type;
|
||
console.log("startGuide", type);
|
||
if (type == 0) {
|
||
this.careteGuideBlock(1);
|
||
}
|
||
else if (type == 2) {
|
||
var block = this.node.getChildByName("Block").children[this.node.getChildByName("Block").children.length - 1];
|
||
cc.tween(block)
|
||
.to(0.7, { x: 0 })
|
||
.start();
|
||
this.tipHide("tip2", 3, false);
|
||
}
|
||
else if (type == 3) {
|
||
if (revive == true) {
|
||
this.round += 1;
|
||
this.careteGuideBlock(3);
|
||
}
|
||
else {
|
||
var tip = this.Tip.getChildByName("tip3");
|
||
this.tipShow(tip, type, false);
|
||
setTimeout(function () {
|
||
_this.tipHide("tip3", null, false);
|
||
_this.round += 1;
|
||
_this.careteGuideBlock(3);
|
||
}, 3000);
|
||
}
|
||
}
|
||
else if (type == 4) {
|
||
this.round += 1;
|
||
this.careteGuideBlock(4);
|
||
}
|
||
else if (type == 5) {
|
||
this.round += 1;
|
||
this.careteGuideBlock(5);
|
||
}
|
||
else if (type == 6) {
|
||
var block = this.node.getChildByName("Block").children[this.node.getChildByName("Block").children.length - 1];
|
||
cc.tween(block)
|
||
.to(0.7, { x: 0 })
|
||
.start();
|
||
this.tipHide("tip4", 7, revive);
|
||
}
|
||
else if (type == 7) {
|
||
if (revive == true) {
|
||
this.round += 1;
|
||
this.careteGuideBlock(7);
|
||
}
|
||
else {
|
||
var tip = this.Tip.getChildByName("tip5");
|
||
this.tipShow(tip, type, false);
|
||
setTimeout(function () {
|
||
_this.tipHide("tip5", null, revive);
|
||
_this.round += 1;
|
||
_this.careteGuideBlock(7);
|
||
}, 2000);
|
||
}
|
||
}
|
||
else if (type == 8) {
|
||
this.round += 1;
|
||
this.careteGuideBlock(8);
|
||
}
|
||
else if (type == 9) {
|
||
this.Player.getComponent("Player").jumpPause = true;
|
||
var tip_1 = this.Tip.getChildByName("tip6");
|
||
setTimeout(function () {
|
||
_this.tipShow(tip_1, type, false);
|
||
}, 1000);
|
||
}
|
||
};
|
||
GameManager.prototype.tipShow = function (tipName, type, showNext) {
|
||
var _this = this;
|
||
var tip = tipName;
|
||
var left = this.Tip.getChildByName("left");
|
||
var right = this.Tip.getChildByName("right");
|
||
left.width = 0;
|
||
right.width = 0;
|
||
tip.opacity = 0;
|
||
cc.tween(left)
|
||
.to(0.25, { width: 348 })
|
||
.start();
|
||
cc.tween(right)
|
||
.to(0.25, { width: 348 })
|
||
.start();
|
||
cc.tween(tip)
|
||
.delay(0.15)
|
||
.to(0.15, { opacity: 255 })
|
||
.call(function () {
|
||
_this.guide = type;
|
||
if (type == 5)
|
||
_this.guide = 6;
|
||
if (type == 5 || type == 1)
|
||
_this.Player.getComponent("Player").jumpPause = false;
|
||
})
|
||
.start();
|
||
if (showNext == true) {
|
||
this.Tip.getChildByName("btn_next").active = true;
|
||
this.Tip.getChildByName("btn_jump").active = true;
|
||
cc.tween(this.Tip.getChildByName("btn_next"))
|
||
.delay(0.5)
|
||
.to(0.2, { opacity: 255 })
|
||
.start();
|
||
cc.tween(this.Tip.getChildByName("btn_jump"))
|
||
.delay(0.5)
|
||
.to(0.2, { opacity: 255 })
|
||
.start();
|
||
}
|
||
if (tip.name == "tip6") {
|
||
this.Tip.getChildByName("btn_start").active = true;
|
||
cc.tween(this.Tip.getChildByName("btn_start"))
|
||
.delay(1)
|
||
.to(0.2, { opacity: 255 })
|
||
.start();
|
||
}
|
||
};
|
||
//隐藏
|
||
GameManager.prototype.tipHide = function (tipName, num, revive) {
|
||
var _this = this;
|
||
var tip = this.Tip.getChildByName(tipName);
|
||
var left = this.Tip.getChildByName("left");
|
||
var right = this.Tip.getChildByName("right");
|
||
cc.tween(left)
|
||
.delay(0.1)
|
||
.to(0.25, { width: 0 })
|
||
.start();
|
||
cc.tween(right)
|
||
.delay(0.1)
|
||
.to(0.25, { width: 0 })
|
||
.start();
|
||
cc.tween(tip)
|
||
.to(0.12, { opacity: 0 })
|
||
.delay(1.5)
|
||
.call(function () {
|
||
if (tip.name != "tip3" && tipName != "tip5") {
|
||
_this.Player.getComponent("Player").jumpPause = true;
|
||
}
|
||
if (num != null) {
|
||
_this.startGuide(num, revive);
|
||
}
|
||
})
|
||
.start();
|
||
};
|
||
GameManager.prototype.careteGuideBlock = function (type) {
|
||
var _this = this;
|
||
this.Ground.active = false;
|
||
var tip = this.Tip.getChildByName("tip2");
|
||
if (type == 5) {
|
||
tip = this.Tip.getChildByName("tip4");
|
||
}
|
||
this.Player.getComponent("Player").jumpPause = true;
|
||
var block = cc.instantiate(this.blockPrefab[13]);
|
||
var height = this.Player.getComponent("Player").basicHeight + GameData_1.default._instance.GM_INFO.blockMin;
|
||
if (type > 4) {
|
||
height += block.height + GameData_1.default._instance.GM_INFO.blockMax;
|
||
GameData_1.default._instance.CLICK_DATA.height = true;
|
||
}
|
||
block.setPosition(cc.v2(this.round % 2 == 0 ? 480 : -480, height));
|
||
block.parent = this.node.getChildByName("Block");
|
||
var num = 150;
|
||
var time = 3;
|
||
if (type == 1 || type == 5) {
|
||
num = this.round % 2 == 0 ? num : -num;
|
||
}
|
||
else if (type == 3 || type == 4 || type == 7 || type == 8 || type == 9) {
|
||
this.Player.getComponent("Player").jumpPause = false;
|
||
num = -block.x;
|
||
time = 7;
|
||
}
|
||
cc.tween(block)
|
||
.to(time, { x: num })
|
||
.call(function () {
|
||
if (type == 1 || type == 5) {
|
||
if (type == 1)
|
||
_this.Player.getComponent("Player").jumpPause = true;
|
||
_this.tipShow(tip, type, false);
|
||
}
|
||
})
|
||
.start();
|
||
};
|
||
GameManager.prototype.showGround = function (tempY) {
|
||
var _this = this;
|
||
setTimeout(function () {
|
||
_this.Ground.active = true;
|
||
_this.Ground.y = tempY;
|
||
}, 500);
|
||
};
|
||
GameManager.prototype.guideStart = function () {
|
||
this.tipHide("tip6", null, false);
|
||
this.Tip.getChildByName("btn_next").active = false;
|
||
this.Tip.getChildByName("btn_jump").active = false;
|
||
this.Tip.getChildByName("btn_start").active = false;
|
||
GameData_1.default._instance.GM_INFO.probation = false;
|
||
this.destroyBlock(false);
|
||
this.onDestroy();
|
||
cc.director.loadScene("GameScene");
|
||
};
|
||
//下一步
|
||
GameManager.prototype.guideNext = function () {
|
||
if (this.guide == -1) {
|
||
this.tipHide("tip", 0, false);
|
||
this.Tip.getChildByName("btn_next").active = false;
|
||
this.Tip.getChildByName("btn_jump").active = false;
|
||
this.Tip.getChildByName("btn_start").active = false;
|
||
}
|
||
};
|
||
//跳过
|
||
GameManager.prototype.guideJump = function () {
|
||
this.Tip.getChildByName("btn_next").active = false;
|
||
this.Tip.getChildByName("btn_jump").active = false;
|
||
this.Tip.getChildByName("btn_start").active = false;
|
||
GameData_1.default._instance.GM_INFO.probation = false;
|
||
this.destroyBlock(false);
|
||
this.onDestroy();
|
||
cc.director.loadScene("GameScene");
|
||
};
|
||
GameManager.prototype.jump = function () {
|
||
this.Player.getComponent("Player").jump();
|
||
};
|
||
GameManager.prototype.startGame = function () {
|
||
this.createBlock();
|
||
// this.createAir();
|
||
};
|
||
GameManager.prototype.addScore = function (score) {
|
||
var _this = this;
|
||
GameData_1.default._instance.CLICK_DATA.getScore = parseInt(score);
|
||
GameManager_1._instance.score += parseInt(score);
|
||
GameData_1.default._instance.CLICK_DATA.totalScore = GameManager_1._instance.score;
|
||
this.topUI.getChildByName("nandu").getComponent(cc.Label).string = GameManager_1._instance.score + "";
|
||
var scale = GameManager_1._instance.score / GameData_1.default._instance.LEVEL_INFO.scoreMax;
|
||
cc.tween(this.topUI.getChildByName("progress").getComponent(cc.Sprite))
|
||
.to(0.5, { fillRange: scale })
|
||
.call(function () {
|
||
if (scale >= GameData_1.default._instance.LEVEL_INFO.star1 && !_this.topUI.getChildByName("star1").active) {
|
||
_this.topUI.getChildByName("star1").active = true;
|
||
}
|
||
if (scale >= GameData_1.default._instance.LEVEL_INFO.star2 && !_this.topUI.getChildByName("star2").active) {
|
||
_this.topUI.getChildByName("star2").active = true;
|
||
}
|
||
if (scale >= GameData_1.default._instance.LEVEL_INFO.star3 && !_this.topUI.getChildByName("star3").active) {
|
||
_this.topUI.getChildByName("star3").active = true;
|
||
// GameData._instance.scoreMax = 150000;
|
||
}
|
||
})
|
||
.start();
|
||
};
|
||
GameManager.prototype.createBlock = function () {
|
||
if (this.over == false && this.begin == true) {
|
||
this.Ground.active = false;
|
||
this.Player.getComponent("Player").jumpPause = false;
|
||
var num = Math.floor(Math.random() * 12);
|
||
if (this.round <= 10 && num == 5) {
|
||
num = Math.floor(Math.random() * 6 + 6);
|
||
}
|
||
var block = cc.instantiate(this.blockPrefab[num]);
|
||
var height = this.Player.getComponent("Player").basicHeight + GameData_1.default._instance.GM_INFO.blockMin;
|
||
if (num > GameData_1.default._instance.GM_INFO.blockScale) {
|
||
height += block.height + GameData_1.default._instance.GM_INFO.blockMax;
|
||
GameData_1.default._instance.CLICK_DATA.height = true;
|
||
}
|
||
if (height >= 0 && this.cameraMove == false) {
|
||
this.countHeight = this.Player.getComponent("Player").basicHeight - this.Camera.node.y;
|
||
this.cameraMove = true;
|
||
}
|
||
block.setPosition(cc.v2(this.round % 2 == 0 ? 480 : -480, height));
|
||
block.parent = this.node.getChildByName("Block");
|
||
block.zIndex = 10;
|
||
this.block = null;
|
||
this.block = block;
|
||
this.round += 1;
|
||
this.level += 1;
|
||
if (this.round > GameData_1.default._instance.GM_INFO.levelMax)
|
||
GameData_1.default._instance.GM_INFO.levelMax = this.round;
|
||
GameData_1.default._instance.CLICK_DATA.level = this.round;
|
||
GameData_1.default._instance.CLICK_DATA.round = this.level;
|
||
GameData_1.default._instance.LEVEL_INFO.layer += GameData_1.default._instance.LEVEL_INFO.layerAdd;
|
||
if (GameData_1.default._instance.LEVEL_INFO.speed < 2)
|
||
GameData_1.default._instance.LEVEL_INFO.speed += GameData_1.default._instance.LEVEL_INFO.addSpeed;
|
||
if (GameData_1.default._instance.LEVEL_INFO.reduceSpeed <= 100)
|
||
GameData_1.default._instance.LEVEL_INFO.reduceSpeed += GameData_1.default._instance.LEVEL_INFO.jiansu;
|
||
if (this.round == GameData_1.default._instance.LEVEL_INFO.round1)
|
||
GameData_1.default._instance.LEVEL_INFO.jiansu = 2;
|
||
else if (this.round == GameData_1.default._instance.LEVEL_INFO.round2)
|
||
GameData_1.default._instance.LEVEL_INFO.jiansu = 1;
|
||
else if (this.round == GameData_1.default._instance.LEVEL_INFO.round3)
|
||
GameData_1.default._instance.LEVEL_INFO.jiansu = 0.5;
|
||
}
|
||
};
|
||
//产生空气
|
||
GameManager.prototype.createAir = function () {
|
||
for (var i = 0; i < 100; i++) {
|
||
this.Ground.active = false;
|
||
var num = Math.floor(Math.random() * 12);
|
||
if (this.round <= 10 && num == 5) {
|
||
num = Math.floor(Math.random() * 6 + 6);
|
||
}
|
||
var block = cc.instantiate(this.blockPrefab[num]);
|
||
var height = this.Player.getComponent("Player").basicHeight + GameData_1.default._instance.GM_INFO.blockMin;
|
||
if (num > GameData_1.default._instance.GM_INFO.blockScale) {
|
||
height += block.height + GameData_1.default._instance.GM_INFO.blockMax;
|
||
GameData_1.default._instance.CLICK_DATA.height = true;
|
||
}
|
||
block.setPosition(cc.v2(this.round % 2 == 0 ? 480 : -480, height));
|
||
block.parent = this.node.getChildByName("Block");
|
||
block.zIndex = 10;
|
||
this.round += 1;
|
||
this.level += 1;
|
||
if (this.round > GameData_1.default._instance.GM_INFO.levelMax)
|
||
GameData_1.default._instance.GM_INFO.levelMax = this.round;
|
||
GameData_1.default._instance.CLICK_DATA.level = this.round;
|
||
GameData_1.default._instance.CLICK_DATA.round = this.level;
|
||
GameData_1.default._instance.LEVEL_INFO.layer += GameData_1.default._instance.LEVEL_INFO.layerAdd;
|
||
GameData_1.default._instance.LEVEL_INFO.speed += GameData_1.default._instance.LEVEL_INFO.addSpeed;
|
||
if (GameData_1.default._instance.LEVEL_INFO.reduceSpeed <= 80)
|
||
GameData_1.default._instance.LEVEL_INFO.reduceSpeed += GameData_1.default._instance.LEVEL_INFO.jiansu;
|
||
if (this.round == GameData_1.default._instance.LEVEL_INFO.round1)
|
||
GameData_1.default._instance.LEVEL_INFO.jiansu = 2;
|
||
else if (this.round == GameData_1.default._instance.LEVEL_INFO.round2)
|
||
GameData_1.default._instance.LEVEL_INFO.jiansu = 1;
|
||
else if (this.round == GameData_1.default._instance.LEVEL_INFO.round3)
|
||
GameData_1.default._instance.LEVEL_INFO.jiansu = 0.5;
|
||
}
|
||
};
|
||
GameManager.prototype.clearAir = function () {
|
||
cc.director.loadScene("GameScene");
|
||
};
|
||
//虚假碎裂块
|
||
GameManager.prototype.createCrackBlock = function () {
|
||
this.interfere = true;
|
||
GameData_1.default._instance.CLICK_DATA.fake = this.interfere;
|
||
if (this.round > 1)
|
||
this.destroyBlock(true);
|
||
if (this.over == false && this.begin == true) {
|
||
var block = cc.instantiate(this.blockPrefab[12]);
|
||
var height = this.Player.getComponent("Player").basicHeight;
|
||
if (GameData_1.default._instance.CLICK_DATA.height == true) {
|
||
height += block.height / 2;
|
||
}
|
||
block.setPosition(cc.v2(this.round % 2 == 0 ? 480 : -480, height));
|
||
block.parent = this.node.getChildByName("CrackBlock");
|
||
block.zIndex = 1;
|
||
}
|
||
};
|
||
GameManager.prototype.destroyBlock = function (type) {
|
||
if (type == true) {
|
||
if (this.node) {
|
||
if (this.node.getChildByName("CrackBlock")) {
|
||
if (this.node.getChildByName("CrackBlock").children) {
|
||
var block2 = this.node.getChildByName("CrackBlock").children;
|
||
for (var i = 0; i < block2.length; i++) {
|
||
if (block2[i]) {
|
||
block2[i].getComponent("Block").hide();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else {
|
||
var block = this.node.getChildByName("Block").children;
|
||
for (var i = 0; i < block.length; i++) {
|
||
if (block[i]) {
|
||
block[i].active = false;
|
||
}
|
||
}
|
||
}
|
||
};
|
||
GameManager.prototype.xinAction = function () {
|
||
var xin = this.topUI.getChildByName("xin1");
|
||
if (GameData_1.default._instance.GM_INFO.life == 2)
|
||
xin = this.topUI.getChildByName("xin3");
|
||
else if (GameData_1.default._instance.GM_INFO.life == 1)
|
||
xin = this.topUI.getChildByName("xin2");
|
||
cc.tween(xin)
|
||
.to(0.6, { scale: 1.6, opacity: 0 })
|
||
.call(function () {
|
||
xin.active = false;
|
||
})
|
||
.start();
|
||
};
|
||
//死亡
|
||
GameManager.prototype.getDeath = function (data) {
|
||
var _this = this;
|
||
if (data == true) {
|
||
this.destroyBlock(false);
|
||
cc.tween(this.Player)
|
||
.to(1, { y: -500 }, { easing: 'cubicIn' })
|
||
.call(function () {
|
||
_this.Player.getComponent("Player").init();
|
||
// this.Player.getComponent("Player").jumpPause = true;
|
||
if (_this.guide > 5) {
|
||
if (_this.guide == 6) {
|
||
_this.guide = 5;
|
||
_this.round = 2;
|
||
_this.startGuide(5, true);
|
||
}
|
||
else {
|
||
_this.round = 1;
|
||
_this.startGuide(6, true);
|
||
}
|
||
}
|
||
else {
|
||
_this.round = 0;
|
||
_this.startGuide(3, true);
|
||
}
|
||
})
|
||
.delay(0.5)
|
||
.call(function () {
|
||
})
|
||
.start();
|
||
}
|
||
else {
|
||
if (GameData_1.default._instance.GM_INFO.life > 0) {
|
||
GameData_1.default._instance.GM_INFO.life -= 1;
|
||
this.getDevive(1);
|
||
}
|
||
else {
|
||
GameData_1.default._instance.GM_INFO.life = -1;
|
||
this.getDevive(3);
|
||
}
|
||
}
|
||
};
|
||
//复活
|
||
GameManager.prototype.getDevive = function (time) {
|
||
var _this = this;
|
||
this.round = 0;
|
||
GameData_1.default._instance.LEVEL_init();
|
||
if (this.topUI.getChildByName("star3").active == true) {
|
||
// GameData._instance.LEVEL_INFO.scoreMax = 150000;
|
||
}
|
||
this.interfere = false;
|
||
GameData_1.default._instance.CLICK_DATA.fake = this.interfere;
|
||
this.destroyBlock(false);
|
||
var block2 = this.node.getChildByName("CrackBlock").children;
|
||
for (var i = 0; i < block2.length; i++) {
|
||
if (block2[i]) {
|
||
block2[i].active = false;
|
||
}
|
||
}
|
||
// this.blockArray = [];
|
||
var actionTime = 1;
|
||
if (this.Player.y > 500) {
|
||
actionTime = (this.Player.y + 500) / 1000 * actionTime;
|
||
}
|
||
cc.tween(this.Player)
|
||
.to(actionTime, { y: -500 }, { easing: 'cubicIn' })
|
||
.call(function () {
|
||
_this.Player.getComponent("Player").xinAction();
|
||
})
|
||
.delay(0.5)
|
||
.call(function () {
|
||
_this.xinAction();
|
||
_this.Player.getComponent("Player").init();
|
||
if (time > 1) {
|
||
_this.Xin.parent.active = true;
|
||
_this.Xin.getComponent(cc.Sprite).fillRange = 0;
|
||
cc.tween(_this.Xin.getComponent(cc.Sprite))
|
||
.to(time, { fillRange: 1 })
|
||
.delay(0.3)
|
||
.call(function () {
|
||
_this.Xin.parent.active = false;
|
||
})
|
||
.delay(0)
|
||
.call(function () {
|
||
_this.createBlock();
|
||
})
|
||
.start();
|
||
}
|
||
else {
|
||
setTimeout(function () {
|
||
_this.createBlock();
|
||
}, (time + 0.5) * 1000);
|
||
}
|
||
})
|
||
.start();
|
||
};
|
||
GameManager.prototype.setData = function (result) {
|
||
if (result == true || this.countTime > 0) {
|
||
GameData_1.default._instance.CLICK_DATA.totalScore = GameManager_1._instance.score;
|
||
GameData_1.default._instance.CLICK_DATA.timer = this.countTime;
|
||
GameData_1.default._instance.CLICK_DATA.level = this.round;
|
||
GameData_1.default._instance.CLICK_DATA.round = this.level;
|
||
GameData_1.default._instance.CLICK_DATA.isAFK = GameData_1.default._instance.GM_INFO.isAFK;
|
||
//CLICK_DATA 数据处理完毕后调用上传接口 上传接口内CLICK_DATA不做改变
|
||
GameTool_1.GameTool.setGameData();
|
||
}
|
||
};
|
||
//获取matchId 用于上传每次点击数据里面记录id方便查询
|
||
GameManager.prototype.getMatchId = function () {
|
||
var matchId = cc.sys.localStorage.getItem("matchId");
|
||
if (matchId == "undifend" || matchId == null) {
|
||
matchId = this.setMatchId();
|
||
}
|
||
else {
|
||
if (this.containsNanana(matchId) == true) {
|
||
matchId = this.setMatchId();
|
||
}
|
||
else {
|
||
var char = parseInt(matchId[10]);
|
||
if (this.level == 1) {
|
||
char += 1;
|
||
}
|
||
matchId = matchId.slice(0, 10) + char + "";
|
||
GameData_1.default._instance.GM_INFO.matchId = matchId;
|
||
cc.sys.localStorage.setItem("matchId", matchId);
|
||
}
|
||
}
|
||
return matchId;
|
||
};
|
||
//检测matchId 如果有缓存以前的nanana数据清除
|
||
GameManager.prototype.containsNanana = function (str) {
|
||
return /na/i.test(str);
|
||
};
|
||
//重新设置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.updateCountDownTime = function () {
|
||
var _this = this;
|
||
if (this.countTime > 0 && !GameData_1.default._instance.GM_INFO.probation) {
|
||
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();
|
||
}
|
||
if (this.countTime <= 0) {
|
||
this.unschedule(this.updateCountDownTime);
|
||
Notification_1.Notification.emit("setData", true);
|
||
this.begin = false;
|
||
this.over = true;
|
||
this.overStop();
|
||
this.setRank();
|
||
setTimeout(function () {
|
||
_this.overOpen();
|
||
}, 2000);
|
||
}
|
||
}
|
||
};
|
||
//停止所有动画
|
||
GameManager.prototype.overStop = function () {
|
||
if (this.Player.getComponent("Player").jumpAction)
|
||
this.Player.getComponent("Player").jumpAction.stop();
|
||
var block = this.node.getChildByName("Block").children;
|
||
for (var i = 0; i < block.length; i++) {
|
||
if (block[i]) {
|
||
if (block[i].getComponent("Block").tween)
|
||
block[i].getComponent("Block").tween.stop();
|
||
}
|
||
}
|
||
var block2 = this.node.getChildByName("CrackBlock").children;
|
||
for (var i = 0; i < block2.length; i++) {
|
||
if (block2[i]) {
|
||
if (block2[i].getComponent("Block").tween)
|
||
block2[i].getComponent("Block").tween.stop();
|
||
}
|
||
}
|
||
};
|
||
GameManager.prototype.setRank = function () {
|
||
GameData_1.default._instance.GM_INFO.score = this.score;
|
||
GameTool_1.GameTool.setRank();
|
||
};
|
||
GameManager.prototype.overOpen = function () {
|
||
this.Player.active = false;
|
||
this.destroyBlock(false);
|
||
this.destroyBlock(true);
|
||
this.GameOver.active = true;
|
||
this.GameOver.getChildByName("score").getComponent(cc.Label).string = this.score + "";
|
||
this.GameOver.getChildByName("level").getComponent(cc.Label).string =
|
||
GameData_1.default._instance.GM_INFO.levelMax + "";
|
||
// this.GameOver.getChildByName("difficulty").getComponent(cc.Label).string =
|
||
// GameData._instance.GM_INFO.difficultyMax + "";
|
||
var difficulty = parseInt(this.difficultyArray / this.level * 10 + "");
|
||
// console.log("难度总数",this.difficultyArray,"次数",this.level,"最终",difficulty);
|
||
this.GameOver.getChildByName("difficulty").getComponent(cc.Label).string =
|
||
difficulty / 10 + "";
|
||
};
|
||
GameManager.prototype.backLoad = function () {
|
||
this.destroyBlock(false);
|
||
this.destroyBlock(true);
|
||
this.onDestroy();
|
||
cc.director.loadScene("LoadScene");
|
||
};
|
||
GameManager.prototype.again = function () {
|
||
this.destroyBlock(false);
|
||
this.destroyBlock(true);
|
||
this.onDestroy();
|
||
cc.director.loadScene("GameScene");
|
||
};
|
||
GameManager.prototype.openRank = function () {
|
||
cc.director.loadScene("RankScene");
|
||
};
|
||
//时间格式转换
|
||
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.update = function (dt) {
|
||
var frame = cc.game.getFrameRate();
|
||
if (frame > 110)
|
||
cc.game.setFrameRate(120);
|
||
else if (frame > 80)
|
||
cc.game.setFrameRate(90);
|
||
else
|
||
cc.game.setFrameRate(60);
|
||
if (this.cameraMove == true && this.over == false) {
|
||
this.Camera.node.y = this.Player.y - this.countHeight;
|
||
if (this.Camera.node.y <= 0)
|
||
this.Camera.node.y = 0;
|
||
this.topUI.y = this.Camera.node.y + this.drop;
|
||
}
|
||
};
|
||
var GameManager_1;
|
||
__decorate([
|
||
property(cc.Camera)
|
||
], GameManager.prototype, "Camera", void 0);
|
||
__decorate([
|
||
property(cc.Node)
|
||
], GameManager.prototype, "topUI", void 0);
|
||
__decorate([
|
||
property(cc.Node)
|
||
], GameManager.prototype, "Player", void 0);
|
||
__decorate([
|
||
property(cc.Node)
|
||
], GameManager.prototype, "Ground", void 0);
|
||
__decorate([
|
||
property(cc.Node)
|
||
], GameManager.prototype, "Xin", void 0);
|
||
__decorate([
|
||
property(cc.Label)
|
||
], GameManager.prototype, "time", void 0);
|
||
__decorate([
|
||
property(cc.Node)
|
||
], GameManager.prototype, "GameOver", void 0);
|
||
__decorate([
|
||
property(cc.Node)
|
||
], GameManager.prototype, "Tip", void 0);
|
||
__decorate([
|
||
property([cc.Prefab])
|
||
], GameManager.prototype, "blockPrefab", void 0);
|
||
GameManager = GameManager_1 = __decorate([
|
||
ccclass
|
||
], GameManager);
|
||
return GameManager;
|
||
}(cc.Component));
|
||
exports.default = GameManager;
|
||
|
||
cc._RF.pop();
|
||
}
|
||
if (nodeEnv) {
|
||
__define(__module.exports, __require, __module);
|
||
}
|
||
else {
|
||
__quick_compile_project__.registerModuleFunc(__filename, function () {
|
||
__define(__module.exports, __require, __module);
|
||
});
|
||
}
|
||
})();
|
||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVsRix1Q0FBa0M7QUFDbEMsNENBQTJDO0FBQzNDLG9EQUFtRDtBQUU3QyxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUF5QywrQkFBWTtJQUFyRDtRQUFBLHFFQTZ6QkM7UUExekJHLFlBQU0sR0FBYyxJQUFJLENBQUM7UUFHekIsV0FBSyxHQUFZLElBQUksQ0FBQztRQUd0QixZQUFNLEdBQVksSUFBSSxDQUFDO1FBR3ZCLFlBQU0sR0FBWSxJQUFJLENBQUM7UUFHdkIsU0FBRyxHQUFZLElBQUksQ0FBQztRQUdwQixVQUFJLEdBQWEsSUFBSSxDQUFDO1FBR3RCLGNBQVEsR0FBWSxJQUFJLENBQUM7UUFHekIsU0FBRyxHQUFZLElBQUksQ0FBQztRQUdwQixpQkFBVyxHQUFzQixFQUFFLENBQUM7O0lBa3lCeEMsQ0FBQztvQkE3ekJvQixXQUFXO0lBa0Q1Qix3QkFBd0I7SUFHeEIsNEJBQU0sR0FBTjtRQUNJLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXpCLE9BQU87UUFDUCxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDaEQsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDdkIsbUNBQW1DO1FBQ25DLGFBQVcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQzdCLGdEQUFnRDtRQUNoRCxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNkLElBQUksQ0FB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SztJQUd2QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzRDQUNFO0lBR3BCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7NkNBQ0c7SUFHdEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztpREFDTztJQUd6QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzRDQUNFO0lBR3BCO1FBREMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29EQUNjO0lBM0JuQixXQUFXO1FBRC9CLE9BQU87T0FDYSxXQUFXLENBNnpCL0I7SUFBRCxrQkFBQztDQTd6QkQsQUE2ekJDLENBN3pCd0MsRUFBRSxDQUFDLFNBQVMsR0E2ekJwRDtrQkE3ekJvQixXQUFXIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IEdhbWVEYXRhIGZyb20gJy4vR2FtZURhdGEnO1xyXG5pbXBvcnQgeyBHYW1lVG9vbCB9IGZyb20gJy4vdG9vbC9HYW1lVG9vbCc7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbiB9IGZyb20gJy4vdG9vbC9Ob3RpZmljYXRpb24nO1xyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHYW1lTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkNhbWVyYSlcclxuICAgIENhbWVyYTogY2MuQ2FtZXJhID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIHRvcFVJOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIFBsYXllcjogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBHcm91bmQ6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgWGluOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICB0aW1lOiBjYy5MYWJlbCA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBHYW1lT3ZlcjogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBUaXA6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShbY2MuUHJlZmFiXSlcclxuICAgIGJsb2NrUHJlZmFiIDogQXJyYXk8Y2MuUHJlZmFiPiA9IFtdO1xyXG5cclxuICAgIFxyXG5cclxuICAgIHJvdW5kOiBudW1iZXI7ICAgICAgLy/lm57lkIhcclxuICAgIGxldmVsOiBudW1iZXI7ICAgICAgLy/lm57lkIhcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIGJsb2NrQXJyYXk6IGFueTtcclxuICAgIGNhbWVyYU1vdmU6Ym9vbGVhblxyXG4gICAgY291bnRIZWlnaHQ6bnVtYmVyO1xyXG4gICAgY291bnRUaW1lOiBudW1iZXI7XHJcbiAgICBvdmVyOiBib29sZWFuO1xyXG4gICAgYmVnaW46IGJvb2xlYW47XHJcbiAgICBpbnRlcmZlcmU6IGJvb2xlYW47XHJcbiAgICBvbGRTcGVlZDogbnVtYmVyOyAgICAgIC8v5LiK5LiA5Zue5ZCI6YCf5bqmXHJcbiAgICBzY29yZTogbnVtYmVyOyAgICAgIC8v5oC75b6X5YiGXHJcbiAgICBkaWZmaWN1bHR5TWF4Om51bWJlcjsgLy/mnIDpq5jpmr7luqbns7vmlbBcclxuICAgIGRpZmZpY3VsdHlBcnJheTpudW1iZXI7XHJcbiAgICBkcm9wOiBudW1iZXI7ICAgICAgLy/mkYTlg4/mnLrokL3lt65cclxuICAgIGd1aWRlOiBudW1iZXI7ICAgICAvL+iusOW9leW8leWvvOatpemqpFxyXG4gICAgQWlyOiBhbnk7XHJcbiAgICBBaXIyOiBhbnk7XHJcbiAgICBibG9jazogY2MuTm9kZTtcclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG4gICAgICAgIGNjLmdhbWUuc2V0RnJhbWVSYXRlKDYwKTtcclxuICAgICBcclxuICAgICAgICAvLyDnpLrkvovkvb/nlKhcclxuICAgICAgICB2YXIgbWFuYWdlciA9IGNjLmRpcmVjdG9yLmdldENvbGxpc2lvbk1hbmFnZXIoKTtcclxuICAgICAgICBtYW5hZ2VyLmVuYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIC8vIG1hbmFnZXIuZW5hYmxlZERlYnVnRHJhdyA9IHRydWU7XHJcbiAgICAgICAgR2FtZU1hbmFnZXIuX2luc3RhbmNlID0gdGhpcztcclxuICAgICAgICAvLyBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5wcm9iYXRpb24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLkFpciA9IFtdO1xyXG4gICAgICAgIHRoaXMuQWlyMiA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvbkVuYWJsZSgpOiB2b2lkIHtcclxuICAgICAgICBOb3RpZmljYXRpb24ub24oXCJjcmVhdGVCbG9ja1wiLHRoaXMuY3JlYXRlQmxvY2ssdGhpcyk7XHJcbiAgICAgICAgTm90aWZpY2F0aW9uLm9uKFwiYWRkU2NvcmVcIix0aGlzLmFkZFNjb3JlLHRoaXMpO1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5vbihcImNyZWF0ZUNyYWNrQmxvY2tcIix0aGlzLmNyZWF0ZUNyYWNrQmxvY2ssdGhpcyk7XHJcbiAgICAgICAgTm90aWZpY2F0aW9uLm9uKFwic2hvd0dyb3VuZFwiLHRoaXMuc2hvd0dyb3VuZCx0aGlzKTtcclxuICAgICAgICBOb3RpZmljYXRpb24ub24oXCJkZWF0aFwiLHRoaXMuZ2V0RGVhdGgsdGhpcyk7XHJcbiAgICAgICAgTm90aWZpY2F0aW9uLm9uKFwianVtcFwiLHRoaXMuanVtcCx0aGlzKTtcclxuICAgICAgICBOb3RpZmljYXRpb24ub24oXCJzZXREYXRhXCIsdGhpcy5zZXREYXRhLHRoaXMpO1xyXG4gICAgICAgIFxyXG5cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5vZmYoXCJjcmVhdGVCbG9ja1wiLHRoaXMuY3JlYXRlQmxvY2spO1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5vZmYoXCJhZGRTY29yZVwiLHRoaXMuYWRkU2NvcmUpO1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5vZmYoXCJjcmVhdGVDcmFja0Jsb2NrXCIsdGhpcy5jcmVhdGVDcmFja0Jsb2NrKTtcclxuICAgICAgICBOb3RpZmljYXRpb24ub2ZmKFwiZGVhdGhcIix0aGlzLmdldERlYXRoKTtcclxuICAgICAgICBOb3RpZmljYXRpb24ub2ZmKFwianVtcFwiLHRoaXMuanVtcCk7XHJcbiAgICAgICAgTm90aWZpY2F0aW9uLm9mZihcInNob3dHcm91bmRcIix0aGlzLnNob3dHcm91bmQpO1xyXG4gICAgICAgIE5vdGlmaWNhdGlvbi5vZmYoXCJzZXREYXRhXCIsdGhpcy5zZXREYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICAvL+agueaNruaYr+WQpuWFqOmdouWxj++8jOWBmueLrOeri+mAgumFjeaWuemdolxyXG4gICAgZml0KCl7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiYmcyXCIpLnkgPSAtMjE2Ny42NzU7XHJcbiAgICAgICAgdmFyIGpnID0gdGhpcy5zZXRGaXQoKTtcclxuICAgICAgICBpZighamcpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJiZzJcIikueSA9IC0yMTAwO1xyXG4gICAgICAgICAgICB0aGlzLnRvcFVJLnkgPSA2NjA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIC8v5Yik5pat5YWo6Z2i5bGPXHJcbiAgICBnZXRTZXRTY3JlZW5SZXNvbHV0aW9uRmxhZyAoKSB7XHJcbiAgICAgICAgbGV0IHNpemUgPSBjYy53aW5TaXplO1xyXG4gICAgICAgIGxldCB3aWR0aCA9IHNpemUud2lkdGg7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IHNpemUuaGVpZ2h0O1xyXG4gICAgICAgIGlmICgoaGVpZ2h0IC8gd2lkdGgpID4gKDE2LjIgLyA5KSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgLy/liKTmlq3lhajpnaLlsY/pgILphY1cclxuICAgIHNldEZpdCAoKSB7XHJcbiAgICAgICAgbGV0IGZsYWcgPSB0aGlzLmdldFNldFNjcmVlblJlc29sdXRpb25GbGFnKCk7XHJcbiAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmxhZztcclxuICAgIH1cclxuXHJcbiAgICBpbml0KCl7XHJcbiAgICAgICAgdGhpcy5kcm9wID0gdGhpcy50b3BVSS55IC0gdGhpcy5DYW1lcmEubm9kZS55O1xyXG4gICAgICAgIHRoaXMuc2NvcmUgPSAwO1xyXG4gICAgICAgIHRoaXMub2xkU3BlZWQgPSAxMDtcclxuICAgICAgICB0aGlzLmd1aWRlID0gLTE7XHJcbiAgICAgICAgdGhpcy5iZWdpbiA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5vdmVyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pbnRlcmZlcmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJvdW5kID0gMDtcclxuICAgICAgICB0aGlzLmxldmVsID0gMDtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5sZXZlbE1heCA9IDE7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uZGlmZmljdWx0eU1heCA9IDE7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubGlmZSA9IDM7XHJcbiAgICAgICAgdGhpcy5ibG9ja0FycmF5ID0gW107XHJcbiAgICAgICAgdGhpcy5kaWZmaWN1bHR5QXJyYXkgPSAwO1xyXG4gICAgICAgIHRoaXMuY2FtZXJhTW92ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY291bnRUaW1lID0gMTgwO1xyXG4gICAgICAgIHRoaXMudG9wVUkuZ2V0Q2hpbGRCeU5hbWUoXCJ4aW4xXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50b3BVSS5nZXRDaGlsZEJ5TmFtZShcInhpbjJcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnRvcFVJLmdldENoaWxkQnlOYW1lKFwieGluM1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudG9wVUkuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFyMVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRvcFVJLmdldENoaWxkQnlOYW1lKFwic3RhcjJcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50b3BVSS5nZXRDaGlsZEJ5TmFtZShcInN0YXIzXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9pbml0KCk7XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZSh0aGlzLnVwZGF0ZUNvdW50RG93blRpbWUsMSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9TVEFSVCwgdGhpcy5qdW1wLCB0aGlzKTtcclxuICAgICAgICB0aGlzLmZpdCgpO1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgICAgIC8vIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnByb2JhdGlvbiA9IGZhbHNlO1xyXG4gICAgICAgIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnByb2JhdGlvbil7XHJcbiAgICAgICAgICAgIHRoaXMuUGxheWVyLmdldENvbXBvbmVudChcIlBsYXllclwiKS5qdW1wUGF1c2UgPSB0cnVlO1xyXG4gICAgICAgICAgICBsZXQgdGlwID0gdGhpcy5UaXAuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXBcIik7XHJcbiAgICAgICAgICAgIHRoaXMudGlwU2hvdyh0aXAsLTEsdHJ1ZSk7XHJcblxyXG4gICAgICAgIH0gXHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiQmVnaW5cIikub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkJlZ2luXCIpLnNjYWxlID0gMjtcclxuICAgICAgICAgICAgaWYodGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiQmVnaW5cIikpe1xyXG4gICAgICAgICAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiQmVnaW5cIikpXHJcbiAgICAgICAgICAgICAgICAudG8oMC41LHtvcGFjaXR5OjI1NSxzY2FsZToxfSlcclxuICAgICAgICAgICAgICAgIC5kZWxheSgwLjUpXHJcbiAgICAgICAgICAgICAgICAudG8oMC41LHtvcGFjaXR5OjAsc2NhbGU6MH0pXHJcbiAgICAgICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0R2FtZSgpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0R2FtZSgpO1xyXG4gICAgICAgICAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgIFxyXG4gICAgICAgIH0gXHJcbiAgICB9XHJcblxyXG4gICAgLy/lvIDlkK/lvJXlr7xcclxuICAgIHN0YXJ0R3VpZGUodHlwZSxyZXZpdmUpeyAgIC8vdHlwZeS4uuesrOWHoOatpVxyXG4gICAgICAgIHRoaXMuZ3VpZGUgPSB0eXBlO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwic3RhcnRHdWlkZVwiLHR5cGUpO1xyXG4gICAgICAgIGlmKHR5cGUgPT0gMCl7XHJcbiAgICAgICAgICAgIHRoaXMuY2FyZXRlR3VpZGVCbG9jaygxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZih0eXBlID09IDIpe1xyXG4gICAgICAgICAgICBsZXQgYmxvY2sgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJCbG9ja1wiKS5jaGlsZHJlblt0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJCbG9ja1wiKS5jaGlsZHJlbi5sZW5ndGgtMV07XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKGJsb2NrKVxyXG4gICAgICAgICAgICAudG8oMC43LHt4OjB9KVxyXG4gICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICAgICAgdGhpcy50aXBIaWRlKFwidGlwMlwiLDMsZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHR5cGUgPT0gMyl7XHJcbiAgICAgICAgICAgIGlmKHJldml2ZSA9PSB0cnVlKXtcclxuICAgICAgICAgICAgICAgIHRoaXMucm91bmQgKz0gMTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FyZXRlR3VpZGVCbG9jaygzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgbGV0IHRpcCA9IHRoaXMuVGlwLmdldENoaWxkQnlOYW1lKFwidGlwM1wiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGlwU2hvdyh0aXAsdHlwZSxmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpcEhpZGUoXCJ0aXAzXCIsbnVsbCxmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3VuZCArPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgICB0aGlzLmNhcmV0ZUd1aWRlQmxvY2soMyk7XHJcbiAgICAgICAgICAgICAgICB9LCAzMDAwKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZih0eXBlID09IDQpe1xyXG4gICAgICAgICAgICB0aGlzLnJvdW5kICs9IDE7XHJcbiAgICAgICAgICAgIHRoaXMuY2FyZXRlR3VpZGVCbG9jayg0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZih0eXBlID09IDUpe1xyXG4gICAgICAgICAgICB0aGlzLnJvdW5kICs9IDE7XHJcbiAgICAgICAgICAgIHRoaXMuY2FyZXRlR3VpZGVCbG9jayg1KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZih0eXBlID09IDYpe1xyXG4gICAgICAgICAgICBsZXQgYmxvY2sgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJCbG9ja1wiKS5jaGlsZHJlblt0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJCbG9ja1wiKS5jaGlsZHJlbi5sZW5ndGgtMV07XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKGJsb2NrKVxyXG4gICAgICAgICAgICAudG8oMC43LHt4OjB9KVxyXG4gICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICAgICAgdGhpcy50aXBIaWRlKFwidGlwNFwiLDcscmV2aXZlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZih0eXBlID09IDcpe1xyXG4gICAgICAgICAgICBpZihyZXZpdmUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJvdW5kICs9IDE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhcmV0ZUd1aWRlQmxvY2soNyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIGxldCB0aXAgPSB0aGlzLlRpcC5nZXRDaGlsZEJ5TmFtZShcInRpcDVcIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpcFNob3codGlwLHR5cGUsZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50aXBIaWRlKFwidGlwNVwiLG51bGwscmV2aXZlKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdW5kICs9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FyZXRlR3VpZGVCbG9jayg3KTtcclxuICAgICAgICAgICAgICAgIH0sIDIwMDApO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHR5cGUgPT0gOCl7XHJcbiAgICAgICAgICAgIHRoaXMucm91bmQgKz0gMTtcclxuICAgICAgICAgICAgdGhpcy5jYXJldGVHdWlkZUJsb2NrKDgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHR5cGUgPT0gOSl7XHJcbiAgICAgICAgICAgIHRoaXMuUGxheWVyLmdldENvbXBvbmVudChcIlBsYXllclwiKS5qdW1wUGF1c2UgPSB0cnVlO1xyXG4gICAgICAgICAgICBsZXQgdGlwID0gdGhpcy5UaXAuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXA2XCIpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGlwU2hvdyh0aXAsdHlwZSxmYWxzZSk7XHJcbiAgICAgICAgICAgIH0sIDEwMDApO1xyXG4gICAgIFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHRpcFNob3codGlwTmFtZSx0eXBlLHNob3dOZXh0KXtcclxuICAgICAgICBsZXQgdGlwID0gdGlwTmFtZTtcclxuICAgICAgICBsZXQgbGVmdCA9IHRoaXMuVGlwLmdldENoaWxkQnlOYW1lKFwibGVmdFwiKTtcclxuICAgICAgICBsZXQgcmlnaHQgPSB0aGlzLlRpcC5nZXRDaGlsZEJ5TmFtZShcInJpZ2h0XCIpO1xyXG4gICAgICAgIGxlZnQud2lkdGggPSAwOyByaWdodC53aWR0aCA9IDA7dGlwLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgIGNjLnR3ZWVuKGxlZnQpXHJcbiAgICAgICAgLnRvKDAuMjUse3dpZHRoOjM0OH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgY2MudHdlZW4ocmlnaHQpXHJcbiAgICAgICAgLnRvKDAuMjUse3dpZHRoOjM0OH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgY2MudHdlZW4odGlwKVxyXG4gICAgICAgIC5kZWxheSgwLjE1KVxyXG4gICAgICAgIC50bygwLjE1LHtvcGFjaXR5OjI1NX0pXHJcbiAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgIHRoaXMuZ3VpZGUgPSB0eXBlO1xyXG4gICAgICAgICAgICBpZih0eXBlID09IDUpIHRoaXMuZ3VpZGUgPSA2O1xyXG4gICAgICAgICAgICBpZih0eXBlID09IDUgfHwgdHlwZSA9PSAxICkgdGhpcy5QbGF5ZXIuZ2V0Q29tcG9uZW50KFwiUGxheWVyXCIpLmp1bXBQYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgaWYoc2hvd05leHQgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIHRoaXMuVGlwLmdldENoaWxkQnlOYW1lKFwiYnRuX25leHRcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5UaXAuZ2V0Q2hpbGRCeU5hbWUoXCJidG5fanVtcFwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBjYy50d2Vlbih0aGlzLlRpcC5nZXRDaGlsZEJ5TmFtZShcImJ0bl9uZXh0XCIpKVxyXG4gICAgICAgICAgICAuZGVsYXkoMC41KVxyXG4gICAgICAgICAgICAudG8oMC4yLHtvcGFjaXR5OjI1NX0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICBjYy50d2Vlbih0aGlzLlRpcC5nZXRDaGlsZEJ5TmFtZShcImJ0bl9qdW1wXCIpKVxyXG4gICAgICAgICAgICAuZGVsYXkoMC41KVxyXG4gICAgICAgICAgICAudG8oMC4yLHtvcGFjaXR5OjI1NX0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aXAubmFtZSA9PSBcInRpcDZcIil7XHJcbiAgICAgICAgICAgIHRoaXMuVGlwLmdldENoaWxkQnlOYW1lKFwiYnRuX3N0YXJ0XCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMuVGlwLmdldENoaWxkQnlOYW1lKFwiYnRuX3N0YXJ0XCIpKVxyXG4gICAgICAgICAgICAuZGVsYXkoMSlcclxuICAgICAgICAgICAgLnRvKDAuMix7b3BhY2l0eToyNTV9KVxyXG4gICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+makOiXj1xyXG4gICAgdGlwSGlkZSh0aXBOYW1lLG51bSxyZXZpdmUpe1xyXG4gICAgICAgIGxldCB0aXAgPSB0aGlzLlRpcC5nZXRDaGlsZEJ5TmFtZSh0aXBOYW1lKTtcclxuICAgICAgICBsZXQgbGVmdCA9IHRoaXMuVGlwLmdldENoaWxkQnlOYW1lKFwibGVmdFwiKTtcclxuICAgICAgICBsZXQgcmlnaHQgPSB0aGlzLlRpcC5nZXRDaGlsZEJ5TmFtZShcInJpZ2h0XCIpO1xyXG4gICAgICAgIGNjLnR3ZWVuKGxlZnQpXHJcbiAgICAgICAgLmRlbGF5KDAuMSlcclxuICAgICAgICAudG8oMC4yNSx7d2lkdGg6MH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgY2MudHdlZW4ocmlnaHQpXHJcbiAgICAgICAgLmRlbGF5KDAuMSlcclxuICAgICAgICAudG8oMC4yNSx7d2lkdGg6MH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgY2MudHdlZW4odGlwKVxyXG4gICAgICAgIC50bygwLjEyLHtvcGFjaXR5OjB9KVxyXG4gICAgICAgIC5kZWxheSgxLjUpXHJcbiAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgIGlmKHRpcC5uYW1lICE9IFwidGlwM1wiICYmIHRpcE5hbWUgIT0gXCJ0aXA1XCIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q29tcG9uZW50KFwiUGxheWVyXCIpLmp1bXBQYXVzZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYobnVtICE9IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydEd1aWRlKG51bSxyZXZpdmUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNhcmV0ZUd1aWRlQmxvY2sodHlwZSl7XHJcbiAgICAgICAgdGhpcy5Hcm91bmQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgbGV0IHRpcCA9IHRoaXMuVGlwLmdldENoaWxkQnlOYW1lKFwidGlwMlwiKTtcclxuICAgICAgICBpZih0eXBlID09IDUpe1xyXG4gICAgICAgICAgICB0aXAgPSB0aGlzLlRpcC5nZXRDaGlsZEJ5TmFtZShcInRpcDRcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuUGxheWVyLmdldENvbXBvbmVudChcIlBsYXllclwiKS5qdW1wUGF1c2UgPSB0cnVlO1xyXG4gICAgICAgIHZhciBibG9jayA9IGNjLmluc3RhbnRpYXRlKHRoaXMuYmxvY2tQcmVmYWJbMTNdKTtcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gdGhpcy5QbGF5ZXIuZ2V0Q29tcG9uZW50KFwiUGxheWVyXCIpLmJhc2ljSGVpZ2h0ICsgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uYmxvY2tNaW47XHJcbiAgICAgICAgaWYodHlwZSA+IDQpe1xyXG4gICAgICAgICAgICBoZWlnaHQgKz0gYmxvY2suaGVpZ2h0ICsgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uYmxvY2tNYXg7XHJcbiAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmhlaWdodCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJsb2NrLnNldFBvc2l0aW9uKGNjLnYyKHRoaXMucm91bmQlMj09MD80ODA6LTQ4MCxoZWlnaHQpKTtcclxuICAgICAgICBibG9jay5wYXJlbnQgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJCbG9ja1wiKTtcclxuICAgICAgICBsZXQgbnVtID0gMTUwO1xyXG4gICAgICAgIGxldCB0aW1lID0zO1xyXG4gICAgICAgIGlmKHR5cGUgPT0gMSB8fCB0eXBlID09IDUpe1xyXG4gICAgICAgICAgICBudW0gPSB0aGlzLnJvdW5kJTI9PTA/bnVtOi1udW07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodHlwZSA9PSAzIHx8IHR5cGUgPT0gNCB8fCB0eXBlID09NyB8fCB0eXBlID09IDggfHwgdHlwZSA9PSA5KXtcclxuICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q29tcG9uZW50KFwiUGxheWVyXCIpLmp1bXBQYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBudW0gPSAtYmxvY2sueDtcclxuICAgICAgICAgICAgdGltZSA9IDc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLnR3ZWVuKGJsb2NrKSAgICAgXHJcbiAgICAgICAgLnRvKHRpbWUse3g6bnVtfSlcclxuICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgaWYodHlwZSA9PSAxIHx8IHR5cGUgPT0gNSl7XHJcbiAgICAgICAgICAgICAgICBpZih0eXBlID09IDEpIHRoaXMuUGxheWVyLmdldENvbXBvbmVudChcIlBsYXllclwiKS5qdW1wUGF1c2UgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRpcFNob3codGlwLHR5cGUsZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvd0dyb3VuZCh0ZW1wWSl7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuR3JvdW5kLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuR3JvdW5kLnkgPSB0ZW1wWTtcclxuICAgICAgICB9LCA1MDApO1xyXG4gICAgfVxyXG4gICAgZ3VpZGVTdGFydCgpe1xyXG4gICAgICAgIHRoaXMudGlwSGlkZShcInRpcDZcIixudWxsLGZhbHNlKTtcclxuICAgICAgICB0aGlzLlRpcC5nZXRDaGlsZEJ5TmFtZShcImJ0bl9uZXh0XCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuVGlwLmdldENoaWxkQnlOYW1lKFwiYnRuX2p1bXBcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5UaXAuZ2V0Q2hpbGRCeU5hbWUoXCJidG5fc3RhcnRcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ucHJvYmF0aW9uID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95QmxvY2soZmFsc2UpO1xyXG4gICAgICAgIHRoaXMub25EZXN0cm95KCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgfVxyXG4gICAgLy/kuIvkuIDmraVcclxuICAgIGd1aWRlTmV4dCgpe1xyXG4gICAgICAgIGlmKHRoaXMuZ3VpZGUgPT0gLTEpe1xyXG4gICAgICAgICAgICB0aGlzLnRpcEhpZGUoXCJ0aXBcIiwwLGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5UaXAuZ2V0Q2hpbGRCeU5hbWUoXCJidG5fbmV4dFwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5UaXAuZ2V0Q2hpbGRCeU5hbWUoXCJidG5fanVtcFwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5UaXAuZ2V0Q2hpbGRCeU5hbWUoXCJidG5fc3RhcnRcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/ot7Pov4dcclxuICAgIGd1aWRlSnVtcCgpe1xyXG4gICAgICAgIHRoaXMuVGlwLmdldENoaWxkQnlOYW1lKFwiYnRuX25leHRcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5UaXAuZ2V0Q2hpbGRCeU5hbWUoXCJidG5fanVtcFwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlRpcC5nZXRDaGlsZEJ5TmFtZShcImJ0bl9zdGFydFwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5wcm9iYXRpb24gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmRlc3Ryb3lCbG9jayhmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3koKTtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICB9XHJcblxyXG4gICAganVtcCgpe1xyXG4gICAgICAgIHRoaXMuUGxheWVyLmdldENvbXBvbmVudChcIlBsYXllclwiKS5qdW1wKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRHYW1lKCl7XHJcbiAgICAgICAgdGhpcy5jcmVhdGVCbG9jaygpO1xyXG4gICAgICAgIC8vIHRoaXMuY3JlYXRlQWlyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkU2NvcmUoc2NvcmUpe1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmdldFNjb3JlID0gcGFyc2VJbnQoc2NvcmUpO1xyXG4gICAgICAgIEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5zY29yZSArPSBwYXJzZUludChzY29yZSk7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEudG90YWxTY29yZSA9IEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5zY29yZTtcclxuICAgICAgICB0aGlzLnRvcFVJLmdldENoaWxkQnlOYW1lKFwibmFuZHVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgID0gR2FtZU1hbmFnZXIuX2luc3RhbmNlLnNjb3JlICsgXCJcIjtcclxuICAgICAgICB2YXIgc2NhbGUgPSBHYW1lTWFuYWdlci5faW5zdGFuY2Uuc2NvcmUvR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uc2NvcmVNYXg7XHJcbiAgICAgICAgY2MudHdlZW4odGhpcy50b3BVSS5nZXRDaGlsZEJ5TmFtZShcInByb2dyZXNzXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpKVxyXG4gICAgICAgIC50bygwLjUse2ZpbGxSYW5nZTpzY2FsZX0pXHJcbiAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgIGlmKHNjYWxlID49IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnN0YXIxICYmICF0aGlzLnRvcFVJLmdldENoaWxkQnlOYW1lKFwic3RhcjFcIikuYWN0aXZlKXtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9wVUkuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFyMVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHNjYWxlID49IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnN0YXIyICYmICF0aGlzLnRvcFVJLmdldENoaWxkQnlOYW1lKFwic3RhcjJcIikuYWN0aXZlKXtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9wVUkuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFyMlwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKHNjYWxlID49IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnN0YXIzICYmICF0aGlzLnRvcFVJLmdldENoaWxkQnlOYW1lKFwic3RhcjNcIikuYWN0aXZlKXtcclxuICAgICAgICAgICAgICAgIHRoaXMudG9wVUkuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFyM1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgLy8gR2FtZURhdGEuX2luc3RhbmNlLnNjb3JlTWF4ID0gMTUwMDAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuc3RhcnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBjcmVhdGVCbG9jaygpe1xyXG4gICAgICAgIGlmKHRoaXMub3ZlciA9PSBmYWxzZSAmJiB0aGlzLmJlZ2luID09IHRydWUpe1xyXG4gICAgICAgICAgICB0aGlzLkdyb3VuZC5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q29tcG9uZW50KFwiUGxheWVyXCIpLmp1bXBQYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB2YXIgbnVtID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjEyKTtcclxuICAgICAgICAgICAgaWYodGhpcy5yb3VuZCA8PSAxMCAmJiBudW0gPT0gNSl7XHJcbiAgICAgICAgICAgICAgICBudW0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqNiArIDYpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB2YXIgYmxvY2sgPSBjYy5pbnN0YW50aWF0ZSh0aGlzLmJsb2NrUHJlZmFiW251bV0pO1xyXG4gICAgICAgICAgICBsZXQgaGVpZ2h0ID0gdGhpcy5QbGF5ZXIuZ2V0Q29tcG9uZW50KFwiUGxheWVyXCIpLmJhc2ljSGVpZ2h0ICsgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uYmxvY2tNaW47XHJcbiAgICAgICAgICAgIGlmKG51bSA+IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmJsb2NrU2NhbGUpe1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0ICs9IGJsb2NrLmhlaWdodCArIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmJsb2NrTWF4O1xyXG4gICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuaGVpZ2h0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgXHJcbiAgICAgICAgICAgIGlmKGhlaWdodCA+PSAwICYmIHRoaXMuY2FtZXJhTW92ZSA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50SGVpZ2h0ID0gdGhpcy5QbGF5ZXIuZ2V0Q29tcG9uZW50KFwiUGxheWVyXCIpLmJhc2ljSGVpZ2h0IC0gdGhpcy5DYW1lcmEubm9kZS55O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jYW1lcmFNb3ZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBibG9jay5zZXRQb3NpdGlvbihjYy52Mih0aGlzLnJvdW5kJTI9PTA/NDgwOi00ODAsaGVpZ2h0KSk7XHJcbiAgICAgICAgICAgIGJsb2NrLnBhcmVudCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkJsb2NrXCIpO1xyXG4gICAgICAgICAgICBibG9jay56SW5kZXggPSAxMDtcclxuICAgICAgICAgICAgdGhpcy5ibG9jayA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMuYmxvY2sgPSBibG9jaztcclxuICAgICAgICAgICAgdGhpcy5yb3VuZCArPSAxO1xyXG4gICAgICAgICAgICB0aGlzLmxldmVsICs9IDE7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucm91bmQgPiBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5sZXZlbE1heCkgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubGV2ZWxNYXggPSB0aGlzLnJvdW5kO1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5sZXZlbCA9IHRoaXMucm91bmQ7XHJcbiAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLnJvdW5kID0gdGhpcy5sZXZlbDtcclxuICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8ubGF5ZXIgKz0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8ubGF5ZXJBZGQ7XHJcbiAgICAgICAgICAgIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnNwZWVkPDIpR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uc3BlZWQgKz0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uYWRkU3BlZWQ7XHJcblxyXG4gICAgICAgICAgICBpZihHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5yZWR1Y2VTcGVlZCA8PSAxMDApXHJcbiAgICAgICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5yZWR1Y2VTcGVlZCArPSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5qaWFuc3U7XHJcbiAgICAgICAgICAgIGlmKHRoaXMucm91bmQgPT0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8ucm91bmQxKSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5qaWFuc3UgPSAyO1xyXG4gICAgICAgICAgICBlbHNlIGlmKHRoaXMucm91bmQgPT0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8ucm91bmQyKSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5qaWFuc3UgPSAxO1xyXG4gICAgICAgICAgICBlbHNlIGlmKHRoaXMucm91bmQgPT0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8ucm91bmQzKSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5qaWFuc3UgPSAwLjU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICAgICAvL+S6p+eUn+epuuawlFxyXG4gICAgICAgIGNyZWF0ZUFpcigpe1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTwxMDA7aSsrKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuR3JvdW5kLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdmFyIG51bSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxMik7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLnJvdW5kIDw9IDEwICYmIG51bSA9PSA1KXtcclxuICAgICAgICAgICAgICAgICAgICBudW0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqNiArIDYpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIGJsb2NrID0gY2MuaW5zdGFudGlhdGUodGhpcy5ibG9ja1ByZWZhYltudW1dKTtcclxuICAgICAgICAgICAgICAgIGxldCBoZWlnaHQgPSB0aGlzLlBsYXllci5nZXRDb21wb25lbnQoXCJQbGF5ZXJcIikuYmFzaWNIZWlnaHQgKyBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5ibG9ja01pbjtcclxuICAgICAgICAgICAgICAgIGlmKG51bSA+IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmJsb2NrU2NhbGUpe1xyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCArPSBibG9jay5oZWlnaHQgKyBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5ibG9ja01heDtcclxuICAgICAgICAgICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5oZWlnaHQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICAgIGJsb2NrLnNldFBvc2l0aW9uKGNjLnYyKHRoaXMucm91bmQlMj09MD80ODA6LTQ4MCxoZWlnaHQpKTtcclxuICAgICAgICAgICAgICAgIGJsb2NrLnBhcmVudCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkJsb2NrXCIpO1xyXG4gICAgICAgICAgICAgICAgYmxvY2suekluZGV4ID0gMTA7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5yb3VuZCArPSAxO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sZXZlbCArPSAxO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5yb3VuZCA+IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmxldmVsTWF4KSBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5sZXZlbE1heCA9IHRoaXMucm91bmQ7XHJcbiAgICAgICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5sZXZlbCA9IHRoaXMucm91bmQ7XHJcbiAgICAgICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5yb3VuZCA9IHRoaXMubGV2ZWw7XHJcbiAgICAgICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5sYXllciArPSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5sYXllckFkZDtcclxuICAgICAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnNwZWVkICs9IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLmFkZFNwZWVkO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYoR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8ucmVkdWNlU3BlZWQgPD0gODApXHJcbiAgICAgICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8ucmVkdWNlU3BlZWQgKz0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uamlhbnN1O1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5yb3VuZCA9PSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5yb3VuZDEpIEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLmppYW5zdSA9IDI7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKHRoaXMucm91bmQgPT0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8ucm91bmQyKSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5qaWFuc3UgPSAxO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLnJvdW5kID09IEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnJvdW5kMykgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uamlhbnN1ID0gMC41O1xyXG4gICAgICAgICAgICB9XHJcbiAgICBcclxuICAgICAgICB9XHJcbiAgICBcclxuICAgICAgICBjbGVhckFpcigpe1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIC8v6Jma5YGH56KO6KOC5Z2XXHJcbiAgICBjcmVhdGVDcmFja0Jsb2NrKCl7XHJcbiAgICAgICAgdGhpcy5pbnRlcmZlcmUgPSB0cnVlO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmZha2UgPSB0aGlzLmludGVyZmVyZTtcclxuICAgICAgICBpZih0aGlzLnJvdW5kID4gMSkgdGhpcy5kZXN0cm95QmxvY2sodHJ1ZSk7XHJcbiAgICAgICAgaWYodGhpcy5vdmVyID09IGZhbHNlICYmIHRoaXMuYmVnaW4gPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIHZhciBibG9jayA9IGNjLmluc3RhbnRpYXRlKHRoaXMuYmxvY2tQcmVmYWJbMTJdKTtcclxuICAgICAgICAgICAgbGV0IGhlaWdodCA9IHRoaXMuUGxheWVyLmdldENvbXBvbmVudChcIlBsYXllclwiKS5iYXNpY0hlaWdodDtcclxuICAgICAgICAgICAgaWYoR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuaGVpZ2h0ID09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0ICs9IGJsb2NrLmhlaWdodC8yO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJsb2NrLnNldFBvc2l0aW9uKGNjLnYyKHRoaXMucm91bmQlMj09MD80ODA6LTQ4MCxoZWlnaHQpKTtcclxuICAgICAgICAgICAgYmxvY2sucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiQ3JhY2tCbG9ja1wiKTtcclxuICAgICAgICAgICAgYmxvY2suekluZGV4ID0gMTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBkZXN0cm95QmxvY2sodHlwZSl7XHJcbiAgICAgICAgaWYodHlwZSA9PSB0cnVlKXtcclxuICAgICAgICAgICAgaWYodGhpcy5ub2RlKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkNyYWNrQmxvY2tcIikpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkNyYWNrQmxvY2tcIikuY2hpbGRyZW4pe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYmxvY2syID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiQ3JhY2tCbG9ja1wiKS5jaGlsZHJlbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8YmxvY2syLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGJsb2NrMltpXSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2syW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB2YXIgYmxvY2sgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJCbG9ja1wiKS5jaGlsZHJlbjtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8YmxvY2subGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgaWYoYmxvY2tbaV0pe1xyXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrW2ldLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHhpbkFjdGlvbigpe1xyXG4gICAgICAgIGxldCB4aW4gID0gIHRoaXMudG9wVUkuZ2V0Q2hpbGRCeU5hbWUoXCJ4aW4xXCIpO1xyXG4gICAgICAgIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmxpZmUgPT0gMikgeGluID0gdGhpcy50b3BVSS5nZXRDaGlsZEJ5TmFtZShcInhpbjNcIik7XHJcbiAgICAgICAgZWxzZSBpZihHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5saWZlID09IDEpICB4aW4gPSB0aGlzLnRvcFVJLmdldENoaWxkQnlOYW1lKFwieGluMlwiKTtcclxuICAgICAgICBjYy50d2Vlbih4aW4pXHJcbiAgICAgICAgLnRvKDAuNix7c2NhbGU6MS42LG9wYWNpdHk6MH0pXHJcbiAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgIHhpbi5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG4gICAgfVxyXG4gICAgLy/mrbvkuqFcclxuICAgIGdldERlYXRoKGRhdGEpe1xyXG4gICAgICAgIGlmKGRhdGEgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveUJsb2NrKGZhbHNlKTtcclxuICAgICAgICAgICAgY2MudHdlZW4odGhpcy5QbGF5ZXIpXHJcbiAgICAgICAgICAgIC50bygxLHt5Oi01MDB9LHtlYXNpbmc6J2N1YmljSW4nfSlcclxuICAgICAgICAgICAgLmNhbGwoKCk9PntcclxuICAgICAgICAgICAgICAgIHRoaXMuUGxheWVyLmdldENvbXBvbmVudChcIlBsYXllclwiKS5pbml0KCk7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLlBsYXllci5nZXRDb21wb25lbnQoXCJQbGF5ZXJcIikuanVtcFBhdXNlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuZ3VpZGUgPiA1KXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmd1aWRlID09IDYpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmd1aWRlID0gNTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3VuZCA9IDI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRHdWlkZSg1LHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdW5kID0gMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydEd1aWRlKDYsdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3VuZCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydEd1aWRlKDMsdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5kZWxheSgwLjUpXHJcbiAgICAgICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgaWYoR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubGlmZSA+IDApe1xyXG4gICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubGlmZSAtPSAxO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXREZXZpdmUoMSk7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubGlmZSA9IC0xO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXREZXZpdmUoMyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgLy/lpI3mtLtcclxuICAgIGdldERldml2ZSh0aW1lKXtcclxuICAgICAgICB0aGlzLnJvdW5kID0gMDtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfaW5pdCgpO1xyXG4gICAgICAgIGlmKHRoaXMudG9wVUkuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFyM1wiKS5hY3RpdmUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIC8vIEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnNjb3JlTWF4ID0gMTUwMDAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmludGVyZmVyZSA9IGZhbHNlO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmZha2UgPSB0aGlzLmludGVyZmVyZTtcclxuICAgICAgICB0aGlzLmRlc3Ryb3lCbG9jayhmYWxzZSk7XHJcbiAgICAgICAgdmFyIGJsb2NrMiA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkNyYWNrQmxvY2tcIikuY2hpbGRyZW47XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8YmxvY2syLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgaWYoYmxvY2syW2ldKXtcclxuICAgICAgICAgICAgICAgIGJsb2NrMltpXS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB0aGlzLmJsb2NrQXJyYXkgPSBbXTtcclxuICAgICAgICBsZXQgYWN0aW9uVGltZSA9IDE7XHJcbiAgICAgICAgaWYodGhpcy5QbGF5ZXIueSA+IDUwMCl7XHJcbiAgICAgICAgICAgIGFjdGlvblRpbWUgPSAodGhpcy5QbGF5ZXIueSArIDUwMCkvMTAwMCphY3Rpb25UaW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYy50d2Vlbih0aGlzLlBsYXllcilcclxuICAgICAgICAudG8oYWN0aW9uVGltZSx7eTotNTAwfSx7ZWFzaW5nOidjdWJpY0luJ30pXHJcbiAgICAgICAgLmNhbGwoKCk9PntcclxuICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q29tcG9uZW50KFwiUGxheWVyXCIpLnhpbkFjdGlvbigpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmRlbGF5KDAuNSlcclxuICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgdGhpcy54aW5BY3Rpb24oKTtcclxuICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q29tcG9uZW50KFwiUGxheWVyXCIpLmluaXQoKTtcclxuICAgICAgICAgICAgaWYodGltZSA+IDEpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5YaW4ucGFyZW50LmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlhpbi5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5maWxsUmFuZ2UgPSAwO1xyXG4gICAgICAgICAgICAgICAgY2MudHdlZW4odGhpcy5YaW4uZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkpXHJcbiAgICAgICAgICAgICAgICAudG8odGltZSx7ZmlsbFJhbmdlOjF9KVxyXG4gICAgICAgICAgICAgICAgLmRlbGF5KDAuMylcclxuICAgICAgICAgICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuWGluLnBhcmVudC5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuZGVsYXkoMClcclxuICAgICAgICAgICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlQmxvY2soKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVCbG9jaygpO1xyXG4gICAgICAgICAgICAgICAgfSwgKHRpbWUrMC41KSoxMDAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RGF0YShyZXN1bHQpe1xyXG4gICAgICAgIGlmKHJlc3VsdCA9PSB0cnVlIHx8IHRoaXMuY291bnRUaW1lID4gMCl7XHJcbiAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLnRvdGFsU2NvcmUgPSBHYW1lTWFuYWdlci5faW5zdGFuY2Uuc2NvcmU7XHJcbiAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLnRpbWVyID0gdGhpcy5jb3VudFRpbWU7XHJcbiAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmxldmVsID0gdGhpcy5yb3VuZDtcclxuICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEucm91bmQgPSB0aGlzLmxldmVsO1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5pc0FGSyA9IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmlzQUZLO1xyXG4gICAgXHJcbiAgICAgICAgICAgIC8vQ0xJQ0tfREFUQSDmlbDmja7lpITnkIblrozmr5XlkI7osIPnlKjkuIrkvKDmjqXlj6MgIOS4iuS8oOaOpeWPo+WGhUNMSUNLX0RBVEHkuI3lgZrmlLnlj5hcclxuICAgICAgICAgICAgR2FtZVRvb2wuc2V0R2FtZURhdGEoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/ojrflj5ZtYXRjaElkICDnlKjkuo7kuIrkvKDmr4/mrKHngrnlh7vmlbDmja7ph4zpnaLorrDlvZVpZOaWueS+v+afpeivolxyXG4gICAgZ2V0TWF0Y2hJZCAoKXtcclxuICAgICAgICBsZXQgbWF0Y2hJZCA9IGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIm1hdGNoSWRcIik7XHJcbiAgICAgICAgaWYobWF0Y2hJZCA9PSBcInVuZGlmZW5kXCIgfHwgbWF0Y2hJZD09bnVsbCl7XHJcbiAgICAgICAgICAgIG1hdGNoSWQgPSAgdGhpcy5zZXRNYXRjaElkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuY29udGFpbnNOYW5hbmEobWF0Y2hJZCkgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICBtYXRjaElkID0gIHRoaXMuc2V0TWF0Y2hJZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2hhciA9IHBhcnNlSW50KG1hdGNoSWRbMTBdKTtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubGV2ZWwgPT0gMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hhciArPSAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbWF0Y2hJZCAgPSBtYXRjaElkLnNsaWNlKDAsIDEwKSArIGNoYXIgKyBcIlwiO1xyXG4gICAgICAgICAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubWF0Y2hJZCA9IG1hdGNoSWQ7XHJcbiAgICAgICAgICAgICAgICBjYy5zeXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJtYXRjaElkXCIsbWF0Y2hJZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1hdGNoSWQ7XHJcbiAgICB9XHJcbiAgICAvL+ajgOa1i21hdGNoSWQg5aaC5p6c5pyJ57yT5a2Y5Lul5YmN55qEbmFuYW5h5pWw5o2u5riF6ZmkXHJcbiAgICBjb250YWluc05hbmFuYShzdHIpIHtcclxuICAgICAgICByZXR1cm4gL25hL2kudGVzdChzdHIpO1xyXG4gICAgfVxyXG4gICAgLy/ph43mlrDorr7nva5NYXRjaElkXHJcbiAgICBzZXRNYXRjaElkICgpe1xyXG4gICAgICAgIC8vIOWumuS5ieWMheWQq+WPr+eUqOWtl+espueahOWtl+espumbhlxyXG4gICAgICAgIGNvbnN0IGNoYXJhY3RlcnMgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODknO1xyXG4gICAgICAgIC8vIOWIm+W7uuS4gOS4quaVsOe7hOS7peS/neWtmOmaj+acuuWtl+esplxyXG4gICAgICAgIGNvbnN0IHV1aWRBcnJheSA9IFtdO1xyXG4gICAgICAgIC8vIOW+queOrzEw5qyhIOeUn+aIkDEw5L2N55qEVVVJRFxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgLy8g55Sf5oiQ6ZqP5py657Si5byV77yM6IyD5Zu05piv5a2X56ym6ZuG55qE6ZW/5bqmXHJcbiAgICAgICAgICAgIGNvbnN0IHJhbmRvbUluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcmFjdGVycy5sZW5ndGgpO1xyXG4gICAgICAgICAgICAvLyDku47lrZfnrKbpm4bkuK3ojrflj5bpmo/mnLrlrZfnrKZcclxuICAgICAgICAgICAgY29uc3QgcmFuZG9tQ2hhciA9IGNoYXJhY3RlcnMuY2hhckF0KHJhbmRvbUluZGV4KTtcclxuICAgICAgICAgICAgLy8g5bCG5a2X56ym5re75Yqg5Yiw5pWw57uE5LitXHJcbiAgICAgICAgICAgIHV1aWRBcnJheS5wdXNoKHJhbmRvbUNoYXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZGF0YSA9ICB1dWlkQXJyYXkuam9pbignJykgKyAxICsgXCJcIjtcclxuICAgICAgICBjYy5zeXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJtYXRjaE51bWJlclwiLDEpO1xyXG4gICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIm1hdGNoSWRcIixkYXRhKTtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5tYXRjaElkID0gZGF0YTtcclxuICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVDb3VudERvd25UaW1lICgpIHtcclxuICAgICAgICBpZiAodGhpcy5jb3VudFRpbWUgPiAwICYmICFHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5wcm9iYXRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5jb3VudFRpbWUgLT0gMTtcclxuICAgICAgICAgICAgdGhpcy50aW1lLnN0cmluZyA9IHRoaXMuZ2V0VGltZU1hcmdpbih0aGlzLmNvdW50VGltZSk7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuY291bnRUaW1lIDwgNSl7XHJcbiAgICAgICAgICAgICAgICBjYy50d2Vlbih0aGlzLnRpbWUubm9kZSlcclxuICAgICAgICAgICAgICAgIC50bygwLjI1LHtzY2FsZToxLjUsY29sb3I6Y2MuY29sb3IoMjU1LDAsMCl9KVxyXG4gICAgICAgICAgICAgICAgLnRvKDAuMjUse3NjYWxlOjEsY29sb3I6Y2MuY29sb3IoMjU1LDI1NSwyNTUpfSlcclxuICAgICAgICAgICAgICAgIC5zdGFydCgpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYodGhpcy5jb3VudFRpbWUgPD0gMCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy51cGRhdGVDb3VudERvd25UaW1lKTtcclxuICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbi5lbWl0KFwic2V0RGF0YVwiLHRydWUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iZWdpbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vdmVyID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMub3ZlclN0b3AoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0UmFuaygpO1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vdmVyT3BlbigpO1xyXG4gICAgICAgICAgICAgICAgfSwgMjAwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+WBnOatouaJgOacieWKqOeUu1xyXG4gICAgb3ZlclN0b3AoKXtcclxuICAgICAgICBpZih0aGlzLlBsYXllci5nZXRDb21wb25lbnQoXCJQbGF5ZXJcIikuanVtcEFjdGlvbilcclxuICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q29tcG9uZW50KFwiUGxheWVyXCIpLmp1bXBBY3Rpb24uc3RvcCgpO1xyXG4gICAgICAgIHZhciBibG9jayA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkJsb2NrXCIpLmNoaWxkcmVuO1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPGJsb2NrLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgaWYoYmxvY2tbaV0pe1xyXG4gICAgICAgICAgICAgICAgaWYoYmxvY2tbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHdlZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgYmxvY2tbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHdlZW4uc3RvcCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBibG9jazIgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJDcmFja0Jsb2NrXCIpLmNoaWxkcmVuO1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPGJsb2NrMi5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKGJsb2NrMltpXSl7XHJcbiAgICAgICAgICAgICAgICBpZihibG9jazJbaV0uZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHdlZW4pXHJcbiAgICAgICAgICAgICAgICAgICAgYmxvY2syW2ldLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnR3ZWVuLnN0b3AoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRSYW5rKCl7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uc2NvcmUgPSB0aGlzLnNjb3JlO1xyXG4gICAgICAgIEdhbWVUb29sLnNldFJhbmsoKTtcclxuICAgIH1cclxuXHJcbiAgICBvdmVyT3Blbigpe1xyXG4gICAgICAgIHRoaXMuUGxheWVyLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZGVzdHJveUJsb2NrKGZhbHNlKTtcclxuICAgICAgICB0aGlzLmRlc3Ryb3lCbG9jayh0cnVlKTtcclxuICAgICAgICB0aGlzLkdhbWVPdmVyLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5HYW1lT3Zlci5nZXRDaGlsZEJ5TmFtZShcInNjb3JlXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy5zY29yZSArIFwiXCI7XHJcbiAgICAgICAgdGhpcy5HYW1lT3Zlci5nZXRDaGlsZEJ5TmFtZShcImxldmVsXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gXHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8ubGV2ZWxNYXggKyBcIlwiO1xyXG4gICAgICAgIC8vIHRoaXMuR2FtZU92ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJkaWZmaWN1bHR5XCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gXHJcbiAgICAgICAgLy8gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uZGlmZmljdWx0eU1heCArIFwiXCI7XHJcblxyXG4gICAgICAgIGxldCBkaWZmaWN1bHR5ID0gcGFyc2VJbnQodGhpcy5kaWZmaWN1bHR5QXJyYXkvdGhpcy5sZXZlbCoxMCtcIlwiKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIumavuW6puaAu+aVsFwiLHRoaXMuZGlmZmljdWx0eUFycmF5LFwi5qyh5pWwXCIsdGhpcy5sZXZlbCxcIuacgOe7iFwiLGRpZmZpY3VsdHkpO1xyXG4gICAgICAgIHRoaXMuR2FtZU92ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJkaWZmaWN1bHR5XCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gXHJcbiAgICAgICAgZGlmZmljdWx0eS8xMCArIFwiXCI7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgYmFja0xvYWQoKXtcclxuICAgICAgICB0aGlzLmRlc3Ryb3lCbG9jayhmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95QmxvY2sodHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3koKTtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJMb2FkU2NlbmVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgYWdhaW4oKXtcclxuICAgICAgICB0aGlzLmRlc3Ryb3lCbG9jayhmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95QmxvY2sodHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3koKTtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblJhbmsoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJSYW5rU2NlbmVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLy/ml7bpl7TmoLzlvI/ovazmjaJcclxuICAgIGdldFRpbWVNYXJnaW4oc2Vjb25kOm51bWJlcikge1xyXG4gICAgICAgIGxldCB0b3RhbCA9IDA7XHJcbiAgICAgICAgdG90YWwgPSBzZWNvbmQ7XHJcbiAgICAgICAgbGV0IGhvdXIgPSAwO1xyXG4gICAgICAgIGhvdXIgPSBwYXJzZUludCgodG90YWwgLyAzNjAwKSArIFwiXCIpOy8v6K6h566X5pW05pWw5bCP5pe25pWwXHJcbiAgICAgICAgbGV0IGFmdGVySG91ciA9IHRvdGFsIC0gaG91ciAqIDYwICogNjA7Ly/lj5blvpfnrpflh7rlsI/ml7bmlbDlkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICBsZXQgbWluID0gcGFyc2VJbnQoKGFmdGVySG91ciAvIDYwKStcIlwiKTsvL+iuoeeul+aVtOaVsOWIhlxyXG4gICAgICAgIGxldCBtID0gXCJcIiArIG1pbjsgIFxyXG4gICAgICAgIGlmKG1pbiA8IDEwKSBtID0gXCIwXCIrbWluO1xyXG4gICAgICAgIGxldCBhZnRlck1pbiA9IHRvdGFsIC0gaG91ciAqIDYwICogNjAgLSBtaW4gKiA2MDsvL+WPluW+l+eul+WHuuWIhuWQjuWJqeS9meeahOenkuaVsFxyXG4gICAgICAgIGxldCBtaWFvID0gYWZ0ZXJNaW4gKyBcIlwiO1xyXG4gICAgICAgIGlmKGFmdGVyTWluIDwgMTApIG1pYW8gPSBcIjBcIiArIGFmdGVyTWluO1xyXG4gICAgICAgIHJldHVybiBtICsgJzonICsgbWlhb1xyXG4gICAgfVxyXG4gICAgdXBkYXRlIChkdCkge1xyXG4gICAgICAgIHZhciBmcmFtZSA9IGNjLmdhbWUuZ2V0RnJhbWVSYXRlKCk7XHJcbiAgICAgICAgaWYoZnJhbWUgPiAxMTApIGNjLmdhbWUuc2V0RnJhbWVSYXRlKDEyMCk7XHJcbiAgICAgICAgZWxzZSBpZihmcmFtZSA+IDgwKSBjYy5nYW1lLnNldEZyYW1lUmF0ZSg5MCk7XHJcbiAgICAgICAgZWxzZSBjYy5nYW1lLnNldEZyYW1lUmF0ZSg2MCk7XHJcbiAgICAgICAgaWYodGhpcy5jYW1lcmFNb3ZlID09IHRydWUgJiYgdGhpcy5vdmVyID09IGZhbHNlKXtcclxuICAgICAgICAgICAgdGhpcy5DYW1lcmEubm9kZS55ID0gdGhpcy5QbGF5ZXIueSAtIHRoaXMuY291bnRIZWlnaHQ7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuQ2FtZXJhLm5vZGUueSA8PSAwKSB0aGlzLkNhbWVyYS5ub2RlLnkgPSAwO1xyXG4gICAgICAgICAgICB0aGlzLnRvcFVJLnkgPSB0aGlzLkNhbWVyYS5ub2RlLnkgKyB0aGlzLmRyb3A7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/tool/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, 'bc645/UI1FCCZN1kaSNle9o', 'Notification');
|
||
// Script/tool/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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFx0b29sXFxOb3RpZmljYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsTUFBTTtBQUNOLElBQUksWUFBWSxHQUFHO0lBQ2YsU0FBUyxFQUFFLEVBQUU7SUFDYixFQUFFLEVBQUUsVUFBVSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU07UUFDbEMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFNBQVMsRUFBRTtZQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUMvQjtRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsSUFBSSxFQUFFLFVBQVUsTUFBTSxFQUFFLFNBQVM7UUFDN0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxJQUFJLEtBQUssS0FBSyxTQUFTO1lBQUUsT0FBTztRQUVoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNuQyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsSUFBSSxPQUFPO2dCQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDakU7SUFDTCxDQUFDO0lBRUQsR0FBRyxFQUFFLFVBQVUsTUFBTSxFQUFFLFFBQVE7UUFDM0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxJQUFJLEtBQUssS0FBSyxTQUFTO1lBQUUsT0FBTztRQUNoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNuQyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7Z0JBQzFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7Z0JBQ3JCLE1BQU07YUFDVDtTQUNKO0lBQ0wsQ0FBQztJQUVELFNBQVMsRUFBRSxVQUFVLE1BQU07UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDdkMsQ0FBQztJQUVELFlBQVksRUFBRTtRQUNWLEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUMxQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDckI7U0FDSjtJQUNMLENBQUM7Q0FDSixDQUFDO0FBRU8sb0NBQVkiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvL+WFqOWxgOmAmuefpVxudmFyIE5vdGlmaWNhdGlvbiA9IHtcbiAgICBfZXZlbnRNYXA6IFtdLFxuICAgIG9uOiBmdW5jdGlvbiAobWFzZ0lkLCBjYWxsYmFjaywgdGFyZ2V0KSB7XG4gICAgICAgIGlmICh0aGlzLl9ldmVudE1hcFttYXNnSWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2V2ZW50TWFwW21hc2dJZF0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9ldmVudE1hcFttYXNnSWRdLnB1c2goeyBjYWxsYmFjazogY2FsbGJhY2ssIHRhcmdldDogdGFyZ2V0IH0pO1xuICAgIH0sXG5cbiAgICBlbWl0OiBmdW5jdGlvbiAobWFzZ0lkLCBwYXJhbWV0ZXIpIHtcbiAgICAgICAgbGV0IGFycmF5ID0gdGhpcy5fZXZlbnRNYXBbbWFzZ0lkXTtcbiAgICAgICAgaWYgKGFycmF5ID09PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IGFycmF5W2ldO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQpIGVsZW1lbnQuY2FsbGJhY2suY2FsbChlbGVtZW50LnRhcmdldCwgcGFyYW1ldGVyKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBvZmY6IGZ1bmN0aW9uIChtYXNnSWQsIGNhbGxiYWNrKSB7XG4gICAgICAgIGxldCBhcnJheSA9IHRoaXMuX2V2ZW50TWFwW21hc2dJZF07XG4gICAgICAgIGlmIChhcnJheSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gYXJyYXlbaV07XG4gICAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LmNhbGxiYWNrID09PSBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGFycmF5W2ldID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcblxuICAgIG9mZk1hc2dJZDogZnVuY3Rpb24gKG1hc2dJZCkge1xuICAgICAgICB0aGlzLl9ldmVudE1hcFttYXNnSWRdID0gdW5kZWZpbmVkO1xuICAgIH0sXG5cbiAgICByZW1vdmVBbGxNc2c6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yIChsZXQgayBpbiB0aGlzLl9ldmVudE1hcCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2V2ZW50TWFwW2tdKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vZmZNYXNnSWQoayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5leHBvcnQgeyBOb3RpZmljYXRpb24gfTsiXX0=
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/RankManager.js';
|
||
var __require = nodeEnv ? function (request) {
|
||
return cc.require(request);
|
||
} : function (request) {
|
||
return __quick_compile_project__.require(request, __filename);
|
||
};
|
||
function __define (exports, require, module) {
|
||
if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
|
||
cc._RF.push(module, '9c7ccNc8VlJ9Jy7qfTPoy0E', 'RankManager');
|
||
// Script/RankManager.ts
|
||
|
||
"use strict";
|
||
var __extends = (this && this.__extends) || (function () {
|
||
var extendStatics = function (d, b) {
|
||
extendStatics = Object.setPrototypeOf ||
|
||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||
return extendStatics(d, b);
|
||
};
|
||
return function (d, b) {
|
||
extendStatics(d, b);
|
||
function __() { this.constructor = d; }
|
||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||
};
|
||
})();
|
||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var GameData_1 = require("./GameData");
|
||
var List_1 = require("./ListView/List");
|
||
var HttpUtil_1 = require("./crypto/HttpUtil");
|
||
var GameTool_1 = require("./tool/GameTool");
|
||
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
//排行榜
|
||
var RankManager = /** @class */ (function (_super) {
|
||
__extends(RankManager, _super);
|
||
function RankManager() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
_this.Player = null;
|
||
_this.selfNode = null;
|
||
_this.phone = null;
|
||
return _this;
|
||
}
|
||
RankManager.prototype.onLoad = function () {
|
||
this.init();
|
||
};
|
||
//初始化数据
|
||
RankManager.prototype.init = function () {
|
||
this.rankList = cc.find("ScrollView", this.node).getComponent(List_1.default);
|
||
this.Player.getChildByName("rank").active = false;
|
||
this.listData = [];
|
||
this.selfData = null;
|
||
this.rankNumber = 100;
|
||
this.rankTotal = 100;
|
||
this.selfNode.opacity = 0;
|
||
this.fit();
|
||
};
|
||
RankManager.prototype.fit = function () {
|
||
var jg = GameTool_1.GameTool.setFit();
|
||
if (!jg) {
|
||
this.node.getChildByName("ScrollView").getChildByName("view").height = 840;
|
||
}
|
||
};
|
||
RankManager.prototype.start = function () {
|
||
this.Player.active = false;
|
||
this.getRank();
|
||
};
|
||
//调用获取排行榜接口
|
||
RankManager.prototype.getRank = function () {
|
||
var postData = {
|
||
"page": 1,
|
||
"pageSize": 100
|
||
};
|
||
//回调进getRankData
|
||
HttpUtil_1.default.rankData(2, this.getRankData.bind(this), postData);
|
||
};
|
||
//实际设置排行数据
|
||
RankManager.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].score, 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 = 101;
|
||
//如果列表大于99显示99+ 否则显示未排名
|
||
if (this.listData.length >= 99)
|
||
this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = "99+";
|
||
else
|
||
this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = "未排名";
|
||
}
|
||
}
|
||
//如果排行榜列表没有人
|
||
if (this.listData.length == 0)
|
||
this.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = "未排名";
|
||
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;
|
||
//如果没有排行分数信息
|
||
if (this.selfData.score) {
|
||
this.selfNode.getChildByName("totalLab").getComponent(cc.Label).string = this.selfData.score;
|
||
}
|
||
this.setPic(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;
|
||
if (this.selfData.score == 0)
|
||
this.selfNode.opacity = 0;
|
||
}
|
||
};
|
||
//返回按钮
|
||
RankManager.prototype.backClick = function () {
|
||
cc.director.loadScene("LoadScene");
|
||
};
|
||
//最上方用户动画
|
||
RankManager.prototype.playerAction = function () {
|
||
var _this = this;
|
||
//-254 377 210 453
|
||
this.Player.getChildByName("rank").active = false;
|
||
var time = 1;
|
||
this.tween = cc.tween(this.Player)
|
||
.to(2, { position: cc.v3(210, 535, 0) })
|
||
.call(function () {
|
||
_this.Player.getChildByName("rank").active = true;
|
||
_this.Player.getChildByName("rank").getChildByName("number")
|
||
.getComponent(cc.Label).string = parseInt(time * 100 + "") + "%";
|
||
})
|
||
.start();
|
||
if (this.listData.length > 0) {
|
||
if (this.listData.length >= 99) {
|
||
if (this.rankNumber >= 99) {
|
||
time = this.getRankRandom();
|
||
}
|
||
else
|
||
time = (this.listData.length - this.rankNumber) / this.listData.length;
|
||
}
|
||
else {
|
||
if (this.rankNumber > 99) {
|
||
time = 0;
|
||
}
|
||
else
|
||
time = (this.listData.length - this.rankNumber) / this.listData.length;
|
||
}
|
||
}
|
||
else {
|
||
time = 0;
|
||
}
|
||
setTimeout(function () {
|
||
if (_this.tween)
|
||
_this.tween.stop();
|
||
if (_this.Player) {
|
||
_this.Player.getChildByName("rank").active = true;
|
||
_this.Player.getChildByName("rank").getChildByName("number")
|
||
.getComponent(cc.Label).string = parseInt(time * 100 + "") + "%";
|
||
}
|
||
}, time * 2000);
|
||
};
|
||
RankManager.prototype.getRankRandom = function () {
|
||
var time = (Math.random() * 49 + 1) / 100;
|
||
var matchId = cc.sys.localStorage.getItem("matchNumber");
|
||
if (matchId == null || matchId == undefined) {
|
||
time = 0;
|
||
}
|
||
return time;
|
||
};
|
||
//设置头像
|
||
RankManager.prototype.setPic = function (pic) {
|
||
var _this = this;
|
||
this.phone.node.parent.getChildByName("icon").active = false;
|
||
this.phone.node.active = false;
|
||
this.Player.active = true;
|
||
this.Player.opacity = 0;
|
||
this.Player.getChildByName("mask").getChildByName("icon").active = false;
|
||
this.Player.getChildByName("mask").getChildByName("phone").active = false;
|
||
fetch(pic)
|
||
.then(function (response) {
|
||
return response.headers.get('Content-Length');
|
||
})
|
||
.then(function (errNo) {
|
||
if (errNo == "5093") {
|
||
_this.phone.node.parent.getChildByName("icon").active = true;
|
||
_this.Player.getChildByName("mask").getChildByName("icon").active = true;
|
||
}
|
||
})
|
||
.catch(function (error) {
|
||
// console.error('Error fetching X-Info:', error);
|
||
});
|
||
var self = this;
|
||
cc.assetManager.loadRemote(pic, { ext: '.png' }, function (err, texture) {
|
||
self.Player.opacity = 255;
|
||
if (texture) {
|
||
self.phone.node.active = true;
|
||
self.phone.spriteFrame = new cc.SpriteFrame(texture);
|
||
self.Player.getChildByName("mask").getChildByName("icon").active = false;
|
||
self.Player.getChildByName("mask").getChildByName("phone").active = true;
|
||
self.Player.getChildByName("mask").getChildByName("phone").getComponent(cc.Sprite)
|
||
.spriteFrame = new cc.SpriteFrame(texture);
|
||
setTimeout(function () {
|
||
self.playerAction();
|
||
}, 500);
|
||
}
|
||
else {
|
||
self.Player.getChildByName("mask").getChildByName("icon").active = true;
|
||
setTimeout(function () {
|
||
self.playerAction();
|
||
}, 500);
|
||
}
|
||
});
|
||
};
|
||
__decorate([
|
||
property(cc.Node) //用户上方头像
|
||
], RankManager.prototype, "Player", void 0);
|
||
__decorate([
|
||
property(cc.Node) //用户最下方个人信息
|
||
], RankManager.prototype, "selfNode", void 0);
|
||
__decorate([
|
||
property(cc.Sprite) //用户头像换图
|
||
], RankManager.prototype, "phone", void 0);
|
||
RankManager = __decorate([
|
||
ccclass
|
||
], RankManager);
|
||
return RankManager;
|
||
}(cc.Component));
|
||
exports.default = RankManager;
|
||
|
||
cc._RF.pop();
|
||
}
|
||
if (nodeEnv) {
|
||
__define(__module.exports, __require, __module);
|
||
}
|
||
else {
|
||
__quick_compile_project__.registerModuleFunc(__filename, function () {
|
||
__define(__module.exports, __require, __module);
|
||
});
|
||
}
|
||
})();
|
||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxSYW5rTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBa0M7QUFDbEMsd0NBQW1DO0FBQ25DLDhDQUF5QztBQUN6Qyw0Q0FBMkM7QUFFckMsSUFBQSxLQUF3QixFQUFFLENBQUMsVUFBVSxFQUFuQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWtCLENBQUM7QUFDNUMsS0FBSztBQUVMO0lBQXlDLCtCQUFZO0lBQXJEO1FBQUEscUVBb01DO1FBbE1HLFlBQU0sR0FBWSxJQUFJLENBQUM7UUFFdkIsY0FBUSxHQUFZLElBQUksQ0FBQztRQUV6QixXQUFLLEdBQWMsSUFBSSxDQUFDOztJQThMNUIsQ0FBQztJQXRMRyw0QkFBTSxHQUFOO1FBQ0ksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxPQUFPO0lBQ1AsMEJBQUksR0FBSjtRQUNJLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxjQUFJLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2xELElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxTQUFTLEdBQUUsR0FBRyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQseUJBQUcsR0FBSDtRQUNJLElBQUksRUFBRSxHQUFHLG1CQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsSUFBRyxDQUFDLEVBQUUsRUFBQztZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO1NBQzlFO0lBQ0wsQ0FBQztJQUVELDJCQUFLLEdBQUw7UUFDSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFDRCxXQUFXO0lBQ1gsNkJBQU8sR0FBUDtRQUNJLElBQUksUUFBUSxHQUFHO1lBQ1gsTUFBTSxFQUFDLENBQUM7WUFDUixVQUFVLEVBQUMsR0FBRztTQUNqQixDQUFDO1FBQ0YsZ0JBQWdCO1FBQ2hCLGtCQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxRQUFRLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0QsVUFBVTtJQUNWLGlDQUFXLEdBQVgsVUFBWSxJQUFJO1FBQ1osSUFBRyxJQUFJLEVBQUM7WUFDSixxQkFBcUI7WUFDckIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQy9CLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNsQixJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7WUFDakIsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQztnQkFDdEMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDLENBQUM7Z0JBQ3BILElBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQztvQkFDNUQsSUFBSSxHQUFHLElBQUksQ0FBQztvQkFDWixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztvQkFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUUsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO2lCQUNyRjtnQkFDRCxJQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUM7b0JBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO29CQUN0Qix1QkFBdUI7b0JBQ3ZCLElBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksRUFBRTt3QkFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7O3dCQUN2RyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUE7aUJBQ3JGO2FBQ0o7WUFDRCxZQUFZO1lBQ1osSUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDO2dCQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQTtZQUMzRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoQyxJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7Z0JBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxHQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFBO2FBQ3hFO1lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDL0YsWUFBWTtZQUNaLElBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUM7Z0JBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO2FBQ2hHO1lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLElBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLElBQUksR0FBRyxFQUFDO2dCQUM1RSxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQzthQUM1RTtpQkFDSSxJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxJQUFJLEdBQUcsRUFBQztnQkFDakYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7YUFDNUU7aUJBQ0ksSUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUM7Z0JBQ2pGLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2FBQzlFO2lCQUNHO2dCQUNBLHNEQUFzRDthQUN6RDtZQUNELElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztZQUM1QixJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLENBQUM7Z0JBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1NBQzFEO0lBQ0wsQ0FBQztJQUNELE1BQU07SUFDTiwrQkFBUyxHQUFUO1FBQ0ksRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNELFNBQVM7SUFDVCxrQ0FBWSxHQUFaO1FBQUEsaUJBc0NDO1FBckNHLG1CQUFtQjtRQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2xELElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNiLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQ2pDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsRUFBQyxRQUFRLEVBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUM7YUFDakMsSUFBSSxDQUFDO1lBQ0YsS0FBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNqRCxLQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO2lCQUMxRCxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBSSxRQUFRLENBQUMsSUFBSSxHQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDcEUsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxFQUFFLENBQUM7UUFFVCxJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUN4QixJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBQztnQkFDMUIsSUFBRyxJQUFJLENBQUMsVUFBVSxJQUFJLEVBQUUsRUFBQztvQkFDckIsSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztpQkFDL0I7O29CQUNLLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQzthQUM5RTtpQkFDRztnQkFDQSxJQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxFQUFDO29CQUNwQixJQUFJLEdBQUcsQ0FBQyxDQUFBO2lCQUNYOztvQkFDSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7YUFDN0U7U0FDSjthQUNHO1lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQztTQUNaO1FBQ0QsVUFBVSxDQUFDO1lBQ1AsSUFBRyxLQUFJLENBQUMsS0FBSztnQkFBQyxLQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hDLElBQUcsS0FBSSxDQUFDLE1BQU0sRUFBQztnQkFDWCxLQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNqRCxLQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO3FCQUMxRCxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBSSxRQUFRLENBQUMsSUFBSSxHQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7YUFDbkU7UUFDTCxDQUFDLEVBQUUsSUFBSSxHQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRCxtQ0FBYSxHQUFiO1FBQ0ksSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQyxHQUFDLEdBQUcsQ0FBQTtRQUNuQyxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekQsSUFBRyxPQUFPLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxTQUFTLEVBQUM7WUFDdkMsSUFBSSxHQUFHLENBQUMsQ0FBQztTQUNaO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELE1BQU07SUFDQyw0QkFBTSxHQUFiLFVBQWMsR0FBRztRQUFqQixpQkF5Q0M7UUF4Q0csSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQzdELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN6RSxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUMxRSxLQUFLLENBQUMsR0FBRyxDQUFDO2FBQ1QsSUFBSSxDQUFDLFVBQUEsUUFBUTtZQUNWLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUM7YUFDRCxJQUFJLENBQUMsVUFBQSxLQUFLO1lBQ1AsSUFBRyxLQUFLLElBQUksTUFBTSxFQUFDO2dCQUNmLEtBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDNUQsS0FBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7YUFDM0U7UUFDTCxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsVUFBQSxLQUFLO1lBQ1Isa0RBQWtEO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFDLEdBQUcsRUFBQyxNQUFNLEVBQUMsRUFBQyxVQUFDLEdBQUcsRUFBRSxPQUFvQjtZQUNuRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7WUFDMUIsSUFBRyxPQUFPLEVBQUM7Z0JBQ1AsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNyRCxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDekUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ3pFLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQztxQkFDakYsV0FBVyxHQUFHLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDM0MsVUFBVSxDQUFDO29CQUNQLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDeEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2FBQ1g7aUJBQ0c7Z0JBQ0EsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ3hFLFVBQVUsQ0FBQztvQkFDUCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3hCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUNYO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBak1EO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBVSxRQUFROytDQUNiO0lBRXZCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBVSxXQUFXO2lEQUNkO0lBRXpCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBUSxRQUFROzhDQUNaO0lBTlAsV0FBVztRQUQvQixPQUFPO09BQ2EsV0FBVyxDQW9NL0I7SUFBRCxrQkFBQztDQXBNRCxBQW9NQyxDQXBNd0MsRUFBRSxDQUFDLFNBQVMsR0FvTXBEO2tCQXBNb0IsV0FBVyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBHYW1lRGF0YSBmcm9tIFwiLi9HYW1lRGF0YVwiO1xyXG5pbXBvcnQgTGlzdCBmcm9tIFwiLi9MaXN0Vmlldy9MaXN0XCI7XHJcbmltcG9ydCBIdHRwVXRpbCBmcm9tIFwiLi9jcnlwdG8vSHR0cFV0aWxcIjtcclxuaW1wb3J0IHsgR2FtZVRvb2wgfSBmcm9tIFwiLi90b29sL0dhbWVUb29sXCI7XHJcblxyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG4vL+aOkuihjOamnFxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSYW5rTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSkgICAgICAgICAgLy/nlKjmiLfkuIrmlrnlpLTlg49cclxuICAgIFBsYXllcjogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSkgICAgICAgICAgLy/nlKjmiLfmnIDkuIvmlrnkuKrkurrkv6Hmga9cclxuICAgIHNlbGZOb2RlOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGUpICAgICAgICAvL+eUqOaIt+WktOWDj+aNouWbvlxyXG4gICAgcGhvbmU6IGNjLlNwcml0ZSA9IG51bGw7XHJcbiAgICBwcml2YXRlIHJhbmtMaXN0OiBMaXN0OyAgICAgLy/mjpLooYzmppxcclxuICAgIHR3ZWVuOiBjYy5Ud2VlbjxjYy5Ob2RlPjsgICAvL+acgOS4iuaWueeUqOaIt+WktOWDj+WKqOeUu1xyXG4gICAgbGlzdERhdGE6IGFueTsgICAgICAgICAgICAgIC8v5oC75YiX6KGo5L+h5oGvXHJcbiAgICBzZWxmRGF0YTogYW55OyAgICAgICAgICAgICAgLy/oh6rlt7Hkv6Hmga9cclxuICAgIHJhbmtOdW1iZXI6IG51bWJlcjsgICAgICAgICAvL+eUqOaIt+iHquW3seaOkuWQjSDmnInlj6/og73kuI3lnKjmjpLooYzmppzlhoU5OStcclxuICAgIHJhbmtUb3RhbDogbnVtYmVyOyAgICAgICAgICAvL+iOt+WPluaOkuihjOamnOeUqOaIt+aVsOmHjyDnjrDlnKjkuLoxMDBcclxuXHJcbiAgICBvbkxvYWQoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcbiAgICAvL+WIneWni+WMluaVsOaNrlxyXG4gICAgaW5pdCgpe1xyXG4gICAgICAgIHRoaXMucmFua0xpc3QgPSBjYy5maW5kKFwiU2Nyb2xsVmlld1wiLCB0aGlzLm5vZGUpLmdldENvbXBvbmVudChMaXN0KTtcclxuICAgICAgICB0aGlzLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5saXN0RGF0YSA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZkRhdGEgPSBudWxsO1xyXG4gICAgICAgIHRoaXMucmFua051bWJlciA9IDEwMDtcclxuICAgICAgICB0aGlzLnJhbmtUb3RhbD0gMTAwO1xyXG4gICAgICAgIHRoaXMuc2VsZk5vZGUub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgdGhpcy5maXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBmaXQoKXtcclxuICAgICAgICB2YXIgamcgPSBHYW1lVG9vbC5zZXRGaXQoKTtcclxuICAgICAgICBpZighamcpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJTY3JvbGxWaWV3XCIpLmdldENoaWxkQnlOYW1lKFwidmlld1wiKS5oZWlnaHQgPSA4NDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0KCkge1xyXG4gICAgICAgIHRoaXMuUGxheWVyLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZ2V0UmFuaygpO1xyXG4gICAgfVxyXG4gICAgLy/osIPnlKjojrflj5bmjpLooYzmppzmjqXlj6NcclxuICAgIGdldFJhbmsoKXtcclxuICAgICAgICBsZXQgcG9zdERhdGEgPSB7XHJcbiAgICAgICAgICAgIFwicGFnZVwiOjEsXHJcbiAgICAgICAgICAgIFwicGFnZVNpemVcIjoxMDBcclxuICAgICAgICB9OyBcclxuICAgICAgICAvL+Wbnuiwg+i/m2dldFJhbmtEYXRhXHJcbiAgICAgICAgSHR0cFV0aWwucmFua0RhdGEoMix0aGlzLmdldFJhbmtEYXRhLmJpbmQodGhpcykscG9zdERhdGEpO1xyXG4gICAgfVxyXG4gICAgLy/lrp7pmYXorr7nva7mjpLooYzmlbDmja5cclxuICAgIGdldFJhbmtEYXRhKGRhdGEpe1xyXG4gICAgICAgIGlmKGRhdGEpe1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICAgICAgdGhpcy5saXN0RGF0YSA9IGRhdGEuZGF0YS5saXN0O1xyXG4gICAgICAgICAgICB0aGlzLnNlbGZEYXRhID0gZGF0YS5kYXRhLmluZm87XHJcbiAgICAgICAgICAgIGxldCByYW5rRGF0YSA9IFtdO1xyXG4gICAgICAgICAgICBsZXQgc2VsZiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDtpPD10aGlzLmxpc3REYXRhLmxlbmd0aC0xO2krKyl7XHJcbiAgICAgICAgICAgICAgICByYW5rRGF0YS5wdXNoKHtyYW5rOihpKzEpLCBuYW1lOnRoaXMubGlzdERhdGFbaV0ubmlja05hbWUsIHRvdGFsOnRoaXMubGlzdERhdGFbaV0uc2NvcmUsIHBpYzp0aGlzLmxpc3REYXRhW2ldLnBpY30pO1xyXG4gICAgICAgICAgICAgICAgaWYoR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8udXNlcklkID09IHRoaXMubGlzdERhdGFbaV0udXNlcklkKXtcclxuICAgICAgICAgICAgICAgICAgICBzZWxmID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJhbmtOdW1iZXIgPSBpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0oaSsxKSArIFwiXCI7IFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYoaSA9PSAodGhpcy5saXN0RGF0YS5sZW5ndGgtMSkgJiYgc2VsZiA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yYW5rTnVtYmVyID0gMTAxO1xyXG4gICAgICAgICAgICAgICAgICAgIC8v5aaC5p6c5YiX6KGo5aSn5LqOOTnmmL7npLo5OSsg5ZCm5YiZ5pi+56S65pyq5o6S5ZCNXHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5saXN0RGF0YS5sZW5ndGggPj0gOTkpdGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBcIjk5K1wiOyBcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gXCLmnKrmjpLlkI1cIiBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL+WmguaenOaOkuihjOamnOWIl+ihqOayoeacieS6ulxyXG4gICAgICAgICAgICBpZih0aGlzLmxpc3REYXRhLmxlbmd0aCA9PSAwKSB0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IFwi5pyq5o6S5ZCNXCIgXHJcbiAgICAgICAgICAgIHRoaXMucmFua0xpc3Quc2V0RGF0YShyYW5rRGF0YSk7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuc2VsZkRhdGEubmlja05hbWUubGVuZ3RoID4gNil7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGZEYXRhLm5pY2tOYW1lPSB0aGlzLnNlbGZEYXRhLm5pY2tOYW1lLnN1YnN0cmluZygwLDYpICsgXCIuLi5cIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJuYW1lTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy5zZWxmRGF0YS5uaWNrTmFtZTtcclxuICAgICAgICAgICAgLy/lpoLmnpzmsqHmnInmjpLooYzliIbmlbDkv6Hmga9cclxuICAgICAgICAgICAgaWYodGhpcy5zZWxmRGF0YS5zY29yZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwidG90YWxMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLnNlbGZEYXRhLnNjb3JlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2V0UGljKHRoaXMuc2VsZkRhdGEucGljKTtcclxuICAgICAgICAgICAgaWYodGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPT0gXCIxXCIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJvbmVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID09IFwiMlwiKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidHdvXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZih0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua0xhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9PSBcIjNcIil7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcInRocmVlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJmb3VyXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zZWxmTm9kZS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICBpZih0aGlzLnNlbGZEYXRhLnNjb3JlID09IDApIHRoaXMuc2VsZk5vZGUub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/ov5Tlm57mjInpkq5cclxuICAgIGJhY2tDbGljaygpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkxvYWRTY2VuZVwiKTtcclxuICAgIH1cclxuICAgIC8v5pyA5LiK5pa555So5oi35Yqo55S7XHJcbiAgICBwbGF5ZXJBY3Rpb24oKXtcclxuICAgICAgICAvLy0yNTQgMzc3ICAyMTAgNDUzXHJcbiAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGxldCB0aW1lID0gMTtcclxuICAgICAgICB0aGlzLnR3ZWVuID0gY2MudHdlZW4odGhpcy5QbGF5ZXIpXHJcbiAgICAgICAgLnRvKDIse3Bvc2l0aW9uOmNjLnYzKDIxMCw1MzUsMCl9KVxyXG4gICAgICAgIC5jYWxsKCgpID0+e1xyXG4gICAgICAgICAgICB0aGlzLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwibnVtYmVyXCIpXHJcbiAgICAgICAgICAgIC5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9ICBwYXJzZUludCh0aW1lKjEwMCArIFwiXCIpICsgXCIlXCI7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuc3RhcnQoKTtcclxuXHJcbiAgICAgICAgaWYodGhpcy5saXN0RGF0YS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgaWYodGhpcy5saXN0RGF0YS5sZW5ndGggPj0gOTkpe1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5yYW5rTnVtYmVyID49IDk5KXtcclxuICAgICAgICAgICAgICAgICAgICB0aW1lID0gdGhpcy5nZXRSYW5rUmFuZG9tKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlICB0aW1lID0gKHRoaXMubGlzdERhdGEubGVuZ3RoIC0gdGhpcy5yYW5rTnVtYmVyKS90aGlzLmxpc3REYXRhLmxlbmd0aDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5yYW5rTnVtYmVyID4gOTkpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRpbWUgPSAwXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHRpbWUgPSAodGhpcy5saXN0RGF0YS5sZW5ndGggLSB0aGlzLnJhbmtOdW1iZXIpL3RoaXMubGlzdERhdGEubGVuZ3RoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRpbWUgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgaWYodGhpcy50d2Vlbil0aGlzLnR3ZWVuLnN0b3AoKTtcclxuICAgICAgICAgICAgaWYodGhpcy5QbGF5ZXIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJudW1iZXJcIilcclxuICAgICAgICAgICAgICAgIC5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9ICBwYXJzZUludCh0aW1lKjEwMCArIFwiXCIpICsgXCIlXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCB0aW1lKjIwMDApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFJhbmtSYW5kb20oKXtcclxuICAgICAgICBsZXQgdGltZSA9IChNYXRoLnJhbmRvbSgpKjQ5KzEpLzEwMFxyXG4gICAgICAgIHZhciBtYXRjaElkID0gY2Muc3lzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibWF0Y2hOdW1iZXJcIik7XHJcbiAgICAgICAgaWYobWF0Y2hJZCA9PSBudWxsIHx8IG1hdGNoSWQgPT0gdW5kZWZpbmVkKXtcclxuICAgICAgICAgICAgdGltZSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aW1lO1xyXG4gICAgfVxyXG5cclxuICAgIC8v6K6+572u5aS05YOPXHJcbiAgICBwdWJsaWMgc2V0UGljKHBpYyl7XHJcbiAgICAgICAgdGhpcy5waG9uZS5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5waG9uZS5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuUGxheWVyLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5QbGF5ZXIub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgdGhpcy5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJtYXNrXCIpLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikuZ2V0Q2hpbGRCeU5hbWUoXCJwaG9uZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBmZXRjaChwaWMpXHJcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ0NvbnRlbnQtTGVuZ3RoJyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAudGhlbihlcnJObyA9PiB7XHJcbiAgICAgICAgICAgIGlmKGVyck5vID09IFwiNTA5M1wiKXtcclxuICAgICAgICAgICAgICAgIHRoaXMucGhvbmUubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIFgtSW5mbzonLCBlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIGNjLmFzc2V0TWFuYWdlci5sb2FkUmVtb3RlKHBpYywge2V4dDonLnBuZyd9LChlcnIsIHRleHR1cmU6Y2MuVGV4dHVyZTJEKSA9PiB7XHJcbiAgICAgICAgICAgIHNlbGYuUGxheWVyLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgIGlmKHRleHR1cmUpe1xyXG4gICAgICAgICAgICAgICAgc2VsZi5waG9uZS5ub2RlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBzZWxmLnBob25lLnNwcml0ZUZyYW1lID0gbmV3IGNjLlNwcml0ZUZyYW1lKHRleHR1cmUpO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5QbGF5ZXIuZ2V0Q2hpbGRCeU5hbWUoXCJtYXNrXCIpLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHNlbGYuUGxheWVyLmdldENoaWxkQnlOYW1lKFwibWFza1wiKS5nZXRDaGlsZEJ5TmFtZShcInBob25lXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBzZWxmLlBsYXllci5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikuZ2V0Q2hpbGRCeU5hbWUoXCJwaG9uZVwiKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKVxyXG4gICAgICAgICAgICAgICAgLnNwcml0ZUZyYW1lID0gbmV3IGNjLlNwcml0ZUZyYW1lKHRleHR1cmUpO1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5wbGF5ZXJBY3Rpb24oKTtcclxuICAgICAgICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIHNlbGYuUGxheWVyLmdldENoaWxkQnlOYW1lKFwibWFza1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYucGxheWVyQWN0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxufVxyXG4iXX0=
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/GameScene.js';
|
||
var __require = nodeEnv ? function (request) {
|
||
return cc.require(request);
|
||
} : function (request) {
|
||
return __quick_compile_project__.require(request, __filename);
|
||
};
|
||
function __define (exports, require, module) {
|
||
if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
|
||
cc._RF.push(module, 'd14c5oIAFtGepa7XMccAMNQ', 'GameScene');
|
||
// Script/GameScene.ts
|
||
|
||
"use strict";
|
||
// Learn TypeScript:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
|
||
// Learn Attribute:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
|
||
// Learn life-cycle callbacks:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
|
||
var __extends = (this && this.__extends) || (function () {
|
||
var extendStatics = function (d, b) {
|
||
extendStatics = Object.setPrototypeOf ||
|
||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||
return extendStatics(d, b);
|
||
};
|
||
return function (d, b) {
|
||
extendStatics(d, b);
|
||
function __() { this.constructor = d; }
|
||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||
};
|
||
})();
|
||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
var NewClass = /** @class */ (function (_super) {
|
||
__extends(NewClass, _super);
|
||
function NewClass() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
_this.label = null;
|
||
_this.text = 'hello';
|
||
return _this;
|
||
// update (dt) {}
|
||
}
|
||
// LIFE-CYCLE CALLBACKS:
|
||
// onLoad () {}
|
||
NewClass.prototype.start = function () {
|
||
};
|
||
__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lU2NlbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFNUUsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFHMUM7SUFBc0MsNEJBQVk7SUFBbEQ7UUFBQSxxRUFpQkM7UUFkRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7O1FBVXZCLGlCQUFpQjtJQUNyQixDQUFDO0lBVEcsd0JBQXdCO0lBRXhCLGVBQWU7SUFFZix3QkFBSyxHQUFMO0lBRUEsQ0FBQztJQVhEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7MkNBQ0k7SUFHdkI7UUFEQyxRQUFROzBDQUNjO0lBTk4sUUFBUTtRQUQ1QixPQUFPO09BQ2EsUUFBUSxDQWlCNUI7SUFBRCxlQUFDO0NBakJELEFBaUJDLENBakJxQyxFQUFFLENBQUMsU0FBUyxHQWlCakQ7a0JBakJvQixRQUFRIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgbGFiZWw6IGNjLkxhYmVsID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHlcclxuICAgIHRleHQ6IHN0cmluZyA9ICdoZWxsbyc7XHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgLy8gb25Mb2FkICgpIHt9XHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ==
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/Block.js';
|
||
var __require = nodeEnv ? function (request) {
|
||
return cc.require(request);
|
||
} : function (request) {
|
||
return __quick_compile_project__.require(request, __filename);
|
||
};
|
||
function __define (exports, require, module) {
|
||
if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
|
||
cc._RF.push(module, '2bf4dXY+rJG37abLKiCEh7s', 'Block');
|
||
// Script/Block.ts
|
||
|
||
"use strict";
|
||
var __extends = (this && this.__extends) || (function () {
|
||
var extendStatics = function (d, b) {
|
||
extendStatics = Object.setPrototypeOf ||
|
||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||
return extendStatics(d, b);
|
||
};
|
||
return function (d, b) {
|
||
extendStatics(d, b);
|
||
function __() { this.constructor = d; }
|
||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||
};
|
||
})();
|
||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var GameData_1 = require("./GameData");
|
||
var GameManager_1 = require("./GameManager");
|
||
var Notification_1 = require("./tool/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;
|
||
_this.label = null;
|
||
_this.text = 'hello';
|
||
return _this;
|
||
}
|
||
// LIFE-CYCLE CALLBACKS:
|
||
NewClass.prototype.onLoad = function () {
|
||
this.node.getComponent(cc.PolygonCollider).enabled = true;
|
||
this.speed = 10;
|
||
this.num = 0;
|
||
this.move = false;
|
||
if (this.node.name.length > 6) {
|
||
this.num = parseInt(this.node.name.substring(5, 7));
|
||
}
|
||
else
|
||
this.num = parseInt(this.node.name.substring(5, 6));
|
||
this.speed = GameData_1.default._instance.BLOCK_INFO[this.num - 1].speed;
|
||
this.init();
|
||
};
|
||
NewClass.prototype.start = function () {
|
||
};
|
||
NewClass.prototype.init = function () {
|
||
var _this = this;
|
||
var speedTemp = this.speed;
|
||
this.getSpeed();
|
||
if (this.num > GameData_1.default._instance.GM_INFO.blockScale) {
|
||
if (this.speed < GameData_1.default._instance.LEVEL_INFO.slowSpeed)
|
||
this.speed = GameData_1.default._instance.LEVEL_INFO.slowSpeed;
|
||
}
|
||
else {
|
||
if (this.speed < GameData_1.default._instance.LEVEL_INFO.fastSpeed)
|
||
this.speed = GameData_1.default._instance.LEVEL_INFO.fastSpeed;
|
||
}
|
||
if (this.speed > speedTemp)
|
||
this.speed = speedTemp;
|
||
if (this.num != 13 && !GameData_1.default._instance.GM_INFO.probation) {
|
||
GameData_1.default._instance.CLICK_DATA.block = this.num;
|
||
GameData_1.default._instance.CLICK_DATA.speed = this.speed;
|
||
this.getDifficulty();
|
||
GameManager_1.default._instance.Air2.push(this.speed);
|
||
if (GameManager_1.default._instance.Air2.length > 99) {
|
||
console.log("被限制后", GameManager_1.default._instance.Air2);
|
||
}
|
||
}
|
||
else {
|
||
if (GameManager_1.default._instance.block) {
|
||
var random = parseInt(Math.random() * 3 + "") + 1;
|
||
this.speed = GameManager_1.default._instance.block.getComponent("Block").speed + random;
|
||
}
|
||
this.node.getComponent(cc.PolygonCollider).enabled = false;
|
||
this.node.getComponent(cc.BoxCollider).enabled = false;
|
||
GameData_1.default._instance.CLICK_DATA.fakeSpeed = this.speed;
|
||
}
|
||
this.move = true;
|
||
this.tween =
|
||
cc.tween(this.node)
|
||
.to(this.speed, { x: -this.node.x })
|
||
.call(function () {
|
||
_this.move = false;
|
||
})
|
||
.start();
|
||
};
|
||
NewClass.prototype.getSpeed = function () {
|
||
//先加范围 厚的
|
||
var reduceSpeed = GameData_1.default._instance.LEVEL_INFO.reduceSpeed;
|
||
if (reduceSpeed > 35)
|
||
reduceSpeed = 35;
|
||
reduceSpeed = parseInt(Math.random() * reduceSpeed + "");
|
||
var random = Math.random() * 10;
|
||
var max = 1;
|
||
if (GameData_1.default._instance.LEVEL_INFO.speed < 1.3)
|
||
max = 9;
|
||
else if (GameData_1.default._instance.LEVEL_INFO.speed < 1.5)
|
||
max = 7;
|
||
else if (GameData_1.default._instance.LEVEL_INFO.speed < 1.8)
|
||
max = 5;
|
||
else if (GameData_1.default._instance.LEVEL_INFO.speed < 2)
|
||
max = 3;
|
||
if (random > max)
|
||
reduceSpeed = -reduceSpeed;
|
||
//先乘以系数
|
||
this.speed = this.speed / GameData_1.default._instance.LEVEL_INFO.speed;
|
||
this.speed = parseInt(this.speed * 10 / 10 + "");
|
||
//后减去随机值
|
||
reduceSpeed = parseInt(reduceSpeed * 10 / 10 + "");
|
||
this.speed = this.speed - reduceSpeed / 10;
|
||
if (this.num != 13) {
|
||
GameManager_1.default._instance.Air.push(this.speed);
|
||
if (GameManager_1.default._instance.Air.length == 99) {
|
||
console.log("初始数据", GameManager_1.default._instance.Air);
|
||
}
|
||
}
|
||
};
|
||
NewClass.prototype.getDifficulty = function () {
|
||
var difficulty1 = 0;
|
||
var sudu = Math.abs(this.speed - GameManager_1.default._instance.oldSpeed);
|
||
difficulty1 = (sudu / 10 + 1) * (11 - this.speed);
|
||
if (difficulty1 <= 1)
|
||
difficulty1 = 1;
|
||
else if (difficulty1 >= 7)
|
||
difficulty1 = 7;
|
||
var difficulty2 = 0;
|
||
if (this.node.width < 180)
|
||
difficulty2 = 0;
|
||
else if (this.node.width < 199)
|
||
difficulty2 = 0.5;
|
||
else
|
||
difficulty2 = 1;
|
||
var difficulty3 = 0;
|
||
if (GameManager_1.default._instance.interfere == true) {
|
||
difficulty3 = 1;
|
||
}
|
||
var difficulty4 = 0;
|
||
if (this.num > 6) {
|
||
difficulty4 = 1;
|
||
}
|
||
GameManager_1.default._instance.oldSpeed = this.speed;
|
||
this.difficulty = 0;
|
||
this.difficulty = difficulty1 + difficulty2 + difficulty3 + difficulty4;
|
||
this.difficulty = parseInt(this.difficulty * 10 + "");
|
||
GameData_1.default._instance.CLICK_DATA.difficulty = this.difficulty / 10;
|
||
GameManager_1.default._instance.difficultyArray += GameData_1.default._instance.CLICK_DATA.difficulty;
|
||
if (GameData_1.default._instance.CLICK_DATA.difficulty > GameData_1.default._instance.GM_INFO.difficultyMax)
|
||
GameData_1.default._instance.GM_INFO.difficultyMax = GameData_1.default._instance.CLICK_DATA.difficulty;
|
||
};
|
||
NewClass.prototype.setScore = function (fen) {
|
||
var score = 0;
|
||
var difficulty = this.difficulty / 10;
|
||
var layer = GameData_1.default._instance.LEVEL_INFO.layer;
|
||
var doubleHit = GameData_1.default._instance.LEVEL_INFO.doubleHit;
|
||
score = parseInt(fen * difficulty * layer * doubleHit + "");
|
||
Notification_1.Notification.emit("addScore", score);
|
||
};
|
||
NewClass.prototype.hide = function () {
|
||
var _this = this;
|
||
cc.tween(this.node)
|
||
.to(0.2, { opacity: 0 })
|
||
.call(function () {
|
||
_this.node.active = false;
|
||
_this.node.removeFromParent();
|
||
_this.node = null;
|
||
})
|
||
.start();
|
||
};
|
||
NewClass.prototype.onCollisionEnter = function (other, self) {
|
||
if (GameManager_1.default._instance) {
|
||
if (GameManager_1.default._instance.over == true) {
|
||
return;
|
||
}
|
||
}
|
||
if (other.node.name == "Player") {
|
||
var max = self.name.length;
|
||
var ColliderName = other.name.substring(6, max);
|
||
if (this.move == true) {
|
||
if (this.tween) {
|
||
this.tween.stop();
|
||
}
|
||
}
|
||
}
|
||
};
|
||
NewClass.prototype.update = function (dt) {
|
||
};
|
||
__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxCbG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBa0M7QUFDbEMsNkNBQXdDO0FBQ3hDLG9EQUFtRDtBQUM3QyxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQWtLQztRQS9KRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7O0lBNEozQixDQUFDO0lBckpHLHdCQUF3QjtJQUV4Qix5QkFBTSxHQUFOO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDMUQsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNsQixJQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7WUFDekIsSUFBSSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ3JEOztZQUFNLElBQUksQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN6RCxJQUFJLENBQUMsS0FBSyxHQUFHLGtCQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFDLENBQUMsQ0FB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SSxDQUFDLE1BQU0sQ0FBQztZQUMzQixJQUFJLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0MsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksRUFBQztnQkFDakIsSUFBRyxJQUFJLENBQUMsS0FBSyxFQUFDO29CQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7aUJBQ3JCO2FBQ0o7U0FDSjtJQUNMLENBQUM7SUFFRCx5QkFBTSxHQUFOLFVBQVEsRUFBRTtJQUNWLENBQUM7SUE5SkQ7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzsyQ0FDSTtJQUd2QjtRQURDLFFBQVE7MENBQ2M7SUFOTixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBa0s1QjtJQUFELGVBQUM7Q0FsS0QsQUFrS0MsQ0FsS3FDLEVBQUUsQ0FBQyxTQUFTLEdBa0tqRDtrQkFsS29CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgR2FtZURhdGEgZnJvbSBcIi4vR2FtZURhdGFcIjtcclxuaW1wb3J0IEdhbWVNYW5hZ2VyIGZyb20gXCIuL0dhbWVNYW5hZ2VyXCI7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbiB9IGZyb20gJy4vdG9vbC9Ob3RpZmljYXRpb24nO1xyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld0NsYXNzIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuICAgIHR3ZWVuOiBjYy5Ud2VlbjxjYy5Ob2RlPjtcclxuICAgIHNwZWVkOiBudW1iZXI7ICAvL+enu+WKqOmAn+W6pu+8jOaXtumXtOWPguaVsO+8jOS9jeenu+S4quWbuuWumlxyXG4gICAgbW92ZTogYm9vbGVhbjsgIC8v5piv5ZCm5Zyo56e75Yqo54q25oCB44CCXHJcbiAgICBudW06IG51bWJlcjtcclxuICAgIGRpZmZpY3VsdHk6IG51bWJlcjtcclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDb21wb25lbnQoY2MuUG9seWdvbkNvbGxpZGVyKS5lbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNwZWVkID0gMTA7XHJcbiAgICAgICAgdGhpcy5udW0gPSAwO1xyXG4gICAgICAgIHRoaXMubW92ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmKHRoaXMubm9kZS5uYW1lLmxlbmd0aCA+IDYpe1xyXG4gICAgICAgICAgICB0aGlzLm51bSA9IHBhcnNlSW50KHRoaXMubm9kZS5uYW1lLnN1YnN0cmluZyg1LDcpKVxyXG4gICAgICAgIH1lbHNlICB0aGlzLm51bSA9IHBhcnNlSW50KHRoaXMubm9kZS5uYW1lLnN1YnN0cmluZyg1LDYpKVxyXG4gICAgICAgIHRoaXMuc3BlZWQgPSBHYW1lRGF0YS5faW5zdGFuY2UuQkxPQ0tfSU5GT1t0aGlzLm51bS0xXS5zcGVlZDtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCgpe1xyXG4gICAgICAgIGxldCBzcGVlZFRlbXAgPSB0aGlzLnNwZWVkO1xyXG4gICAgICAgIHRoaXMuZ2V0U3BlZWQoKTtcclxuICAgICAgICBpZih0aGlzLm51bSA+IEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmJsb2NrU2NhbGUpe1xyXG4gICAgICAgICAgICBpZih0aGlzLnNwZWVkIDwgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uc2xvd1NwZWVkKXRoaXMuc3BlZWQgPSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5zbG93U3BlZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZih0aGlzLnNwZWVkIDwgR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uZmFzdFNwZWVkKXRoaXMuc3BlZWQgPSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5mYXN0U3BlZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHRoaXMuc3BlZWQgPiBzcGVlZFRlbXApIHRoaXMuc3BlZWQgPSBzcGVlZFRlbXA7XHJcblxyXG4gICAgICAgIGlmKHRoaXMubnVtICE9IDEzICYmICFHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5wcm9iYXRpb24pe1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5ibG9jayA9IHRoaXMubnVtO1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5zcGVlZCA9IHRoaXMuc3BlZWQ7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RGlmZmljdWx0eSgpO1xyXG4gICAgICAgICAgICBHYW1lTWFuYWdlci5faW5zdGFuY2UuQWlyMi5wdXNoKHRoaXMuc3BlZWQpO1xyXG4gICAgICAgICAgICBpZihHYW1lTWFuYWdlci5faW5zdGFuY2UuQWlyMi5sZW5ndGggPiA5OSl7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuiiq+mZkOWItuWQjlwiLEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5BaXIyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBpZihHYW1lTWFuYWdlci5faW5zdGFuY2UuYmxvY2spe1xyXG4gICAgICAgICAgICAgICAgbGV0IHJhbmRvbSA9IHBhcnNlSW50KE1hdGgucmFuZG9tKCkqMytcIlwiKSArIDFcclxuICAgICAgICAgICAgICAgIHRoaXMuc3BlZWQgPSBHYW1lTWFuYWdlci5faW5zdGFuY2UuYmxvY2suZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuc3BlZWQgKyByYW5kb207XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENvbXBvbmVudChjYy5Qb2x5Z29uQ29sbGlkZXIpLmVuYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENvbXBvbmVudChjYy5Cb3hDb2xsaWRlcikuZW5hYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5mYWtlU3BlZWQgPSB0aGlzLnNwZWVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1vdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMudHdlZW4gPSBcclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUpXHJcbiAgICAgICAgLnRvKHRoaXMuc3BlZWQse3g6LXRoaXMubm9kZS54fSlcclxuICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgdGhpcy5tb3ZlID0gZmFsc2U7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuc3RhcnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTcGVlZCgpe1xyXG4gICAgICAgIC8v5YWI5Yqg6IyD5Zu0ICDljprnmoRcclxuICAgICAgICBsZXQgcmVkdWNlU3BlZWQgPSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5yZWR1Y2VTcGVlZDtcclxuICAgICAgICBpZihyZWR1Y2VTcGVlZCA+IDM1KSByZWR1Y2VTcGVlZCA9IDM1XHJcbiAgICAgICAgcmVkdWNlU3BlZWQgPSBwYXJzZUludChNYXRoLnJhbmRvbSgpKnJlZHVjZVNwZWVkICsgXCJcIik7XHJcbiAgICAgICAgbGV0IHJhbmRvbSA9IE1hdGgucmFuZG9tKCkqMTA7XHJcbiAgICAgICAgbGV0IG1heCA9IDE7XHJcbiAgICAgICAgaWYoR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uc3BlZWQgPCAxLjMpIG1heCA9IDk7XHJcbiAgICAgICAgZWxzZSBpZihHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5zcGVlZCA8IDEuNSkgbWF4ID0gNztcclxuICAgICAgICBlbHNlIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5MRVZFTF9JTkZPLnNwZWVkIDwgMS44KSBtYXggPSA1O1xyXG4gICAgICAgIGVsc2UgaWYoR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uc3BlZWQgPCAyKSBtYXggPSAzO1xyXG4gICAgICAgIGlmKHJhbmRvbSA+IG1heCkgcmVkdWNlU3BlZWQgPSAtcmVkdWNlU3BlZWQ7XHJcbiAgICAgICAgLy/lhYjkuZjku6Xns7vmlbBcclxuICAgICAgICB0aGlzLnNwZWVkID0gdGhpcy5zcGVlZC9HYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5zcGVlZDtcclxuICAgICAgICB0aGlzLnNwZWVkID0gcGFyc2VJbnQodGhpcy5zcGVlZCoxMC8xMCArIFwiXCIpO1xyXG4gICAgICAgIC8v5ZCO5YeP5Y676ZqP5py65YC8IFxyXG4gICAgICAgIHJlZHVjZVNwZWVkID0gcGFyc2VJbnQocmVkdWNlU3BlZWQqMTAvMTAgKyBcIlwiKTtcclxuICAgICAgICB0aGlzLnNwZWVkID0gdGhpcy5zcGVlZCAtIHJlZHVjZVNwZWVkLzEwO1xyXG4gICAgICAgIGlmKHRoaXMubnVtICE9IDEzICl7XHJcbiAgICAgICAgICAgIEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5BaXIucHVzaCh0aGlzLnNwZWVkKTtcclxuICAgICAgICAgICAgaWYoR2FtZU1hbmFnZXIuX2luc3RhbmNlLkFpci5sZW5ndGggPT0gOTkpe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLliJ3lp4vmlbDmja5cIixHYW1lTWFuYWdlci5faW5zdGFuY2UuQWlyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXREaWZmaWN1bHR5KCl7XHJcbiAgICAgICAgdmFyIGRpZmZpY3VsdHkxID0gMDtcclxuICAgICAgICB2YXIgc3VkdSA9IE1hdGguYWJzKHRoaXMuc3BlZWQgLSBHYW1lTWFuYWdlci5faW5zdGFuY2Uub2xkU3BlZWQpO1xyXG4gICAgICAgIGRpZmZpY3VsdHkxID0gKHN1ZHUvMTArMSkqKDExLXRoaXMuc3BlZWQpO1xyXG4gICAgICAgIGlmKGRpZmZpY3VsdHkxIDw9IDEpIGRpZmZpY3VsdHkxID0gMTtcclxuICAgICAgICBlbHNlIGlmKGRpZmZpY3VsdHkxID49IDcpIGRpZmZpY3VsdHkxID0gNztcclxuICAgICAgICB2YXIgZGlmZmljdWx0eTIgPSAwO1xyXG4gICAgICAgIGlmKHRoaXMubm9kZS53aWR0aCA8IDE4MCkgZGlmZmljdWx0eTIgPSAwO1xyXG4gICAgICAgIGVsc2UgaWYodGhpcy5ub2RlLndpZHRoIDwgMTk5KSBkaWZmaWN1bHR5MiA9IDAuNTtcclxuICAgICAgICBlbHNlIGRpZmZpY3VsdHkyID0gMTtcclxuICAgICAgICB2YXIgZGlmZmljdWx0eTMgPSAwO1xyXG4gICAgICAgIGlmKEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5pbnRlcmZlcmUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgIGRpZmZpY3VsdHkzID0gMTtcclxuICAgICAgICB9IFxyXG4gICAgICAgIHZhciBkaWZmaWN1bHR5NCA9IDA7XHJcbiAgICAgICAgaWYodGhpcy5udW0gPiA2KXtcclxuICAgICAgICAgICAgZGlmZmljdWx0eTQgPSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBHYW1lTWFuYWdlci5faW5zdGFuY2Uub2xkU3BlZWQgPSB0aGlzLnNwZWVkO1xyXG4gICAgICAgIHRoaXMuZGlmZmljdWx0eSAgPSAwO1xyXG4gICAgICAgIHRoaXMuZGlmZmljdWx0eSA9IGRpZmZpY3VsdHkxICsgZGlmZmljdWx0eTIgKyBkaWZmaWN1bHR5MyArIGRpZmZpY3VsdHk0O1xyXG4gICAgICAgIHRoaXMuZGlmZmljdWx0eSAgPSBwYXJzZUludCh0aGlzLmRpZmZpY3VsdHkgKjEwICsgXCJcIik7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuZGlmZmljdWx0eSA9IHRoaXMuZGlmZmljdWx0eS8xMDtcclxuICAgICAgICBHYW1lTWFuYWdlci5faW5zdGFuY2UuZGlmZmljdWx0eUFycmF5ICs9ICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfREFUQS5kaWZmaWN1bHR5O1xyXG4gICAgICAgIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBLmRpZmZpY3VsdHkgPiBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5kaWZmaWN1bHR5TWF4KVxyXG4gICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5kaWZmaWN1bHR5TWF4ID0gR2FtZURhdGEuX2luc3RhbmNlLkNMSUNLX0RBVEEuZGlmZmljdWx0eTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRTY29yZShmZW4pe1xyXG4gICAgICAgIGxldCBzY29yZSA9IDA7XHJcbiAgICAgICAgbGV0IGRpZmZpY3VsdHkgPSB0aGlzLmRpZmZpY3VsdHkgLyAxMDtcclxuICAgICAgICBsZXQgbGF5ZXIgPSBHYW1lRGF0YS5faW5zdGFuY2UuTEVWRUxfSU5GTy5sYXllcjtcclxuICAgICAgICBsZXQgZG91YmxlSGl0ID0gR2FtZURhdGEuX2luc3RhbmNlLkxFVkVMX0lORk8uZG91YmxlSGl0O1xyXG4gICAgICAgIHNjb3JlID0gcGFyc2VJbnQoZmVuICogZGlmZmljdWx0eSAqIGxheWVyICogZG91YmxlSGl0ICsgXCJcIik7XHJcbiAgICAgICAgTm90aWZpY2F0aW9uLmVtaXQoXCJhZGRTY29yZVwiLHNjb3JlKTtcclxuICAgIH1cclxuXHJcbiAgICBoaWRlKCl7XHJcbiAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlKVxyXG4gICAgICAgIC50bygwLjIse29wYWNpdHk6MH0pXHJcbiAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnJlbW92ZUZyb21QYXJlbnQoKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlID0gbnVsbDtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ29sbGlzaW9uRW50ZXIob3RoZXI6IGNjLkNvbGxpZGVyLCBzZWxmOiBjYy5Db2xsaWRlcikge1xyXG4gICAgICAgIGlmKEdhbWVNYW5hZ2VyLl9pbnN0YW5jZSl7XHJcbiAgICAgICAgICAgIGlmKEdhbWVNYW5hZ2VyLl9pbnN0YW5jZS5vdmVyID09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKG90aGVyLm5vZGUubmFtZSA9PSBcIlBsYXllclwiKXtcclxuICAgICAgICAgICAgbGV0IG1heCA9IHNlbGYubmFtZS5sZW5ndGg7XHJcbiAgICAgICAgICAgIGxldCBDb2xsaWRlck5hbWUgPSBvdGhlci5uYW1lLnN1YnN0cmluZyg2LG1heCk7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubW92ZSA9PSB0cnVlKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMudHdlZW4pe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHdlZW4uc3RvcCgpOyBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlIChkdCkge1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/tool/AudioManager.js';
|
||
var __require = nodeEnv ? function (request) {
|
||
return cc.require(request);
|
||
} : function (request) {
|
||
return __quick_compile_project__.require(request, __filename);
|
||
};
|
||
function __define (exports, require, module) {
|
||
if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
|
||
cc._RF.push(module, '7574f5PdlZP4Kt9dxMgkIPZ', 'AudioManager');
|
||
// Script/tool/AudioManager.ts
|
||
|
||
"use strict";
|
||
var __extends = (this && this.__extends) || (function () {
|
||
var extendStatics = function (d, b) {
|
||
extendStatics = Object.setPrototypeOf ||
|
||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
||
return extendStatics(d, b);
|
||
};
|
||
return function (d, b) {
|
||
extendStatics(d, b);
|
||
function __() { this.constructor = d; }
|
||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||
};
|
||
})();
|
||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
||
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
||
};
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
var AudioManager = /** @class */ (function (_super) {
|
||
__extends(AudioManager, _super);
|
||
function AudioManager() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
//背景音乐
|
||
_this.audioGameBgm0 = null;
|
||
//跳跃
|
||
_this.jump = null;
|
||
//落地上
|
||
_this.luodi = null;
|
||
//碰撞
|
||
_this.pz = null;
|
||
//落方块上
|
||
_this.luodui = null;
|
||
return _this;
|
||
}
|
||
AudioManager_1 = AudioManager;
|
||
AudioManager.prototype.ctor = function () {
|
||
this.mAudioMap = {};
|
||
/**
|
||
* 默认音量大小
|
||
* @type {number}
|
||
*/
|
||
this.bgMusicVolume = 0.1;
|
||
this.effectMusicVolume = 1;
|
||
this.mMusicSwitch = 1;
|
||
this.mEffectSwitch = 1;
|
||
};
|
||
AudioManager.prototype.play = function (audioSource, loop, callback, isBgMusic) {
|
||
if (isBgMusic && !this.mMusicSwitch)
|
||
return;
|
||
if (!isBgMusic && !this.mEffectSwitch)
|
||
return;
|
||
var volume = isBgMusic ? this.bgMusicVolume : this.effectMusicVolume;
|
||
if (cc.sys.isBrowser) {
|
||
if (audioSource == this.brickSound) {
|
||
volume = 0.1;
|
||
}
|
||
volume = 1;
|
||
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 {
|
||
return audioSource;
|
||
}
|
||
};
|
||
AudioManager.prototype.save = function () {
|
||
// cc.wwx.Storage.setItem(cc.wwx.Storage.Key_Setting_Music_Volume, this.mMusicSwitch);
|
||
// cc.wwx.Storage.setItem(cc.wwx.Storage.Key_Setting_Effect_Volume, this.mEffectSwitch);
|
||
};
|
||
AudioManager.prototype.onLoad = function () {
|
||
if (AudioManager_1._instance == null) {
|
||
AudioManager_1._instance = this;
|
||
cc.game.addPersistRootNode(this.node);
|
||
}
|
||
else {
|
||
this.node.destroy();
|
||
return;
|
||
}
|
||
this.reward = false;
|
||
this.finish = false;
|
||
this.rewardCount = 0;
|
||
this.ctor();
|
||
this.preload();
|
||
};
|
||
AudioManager.prototype.preload = function () {
|
||
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;
|
||
// }
|
||
// });
|
||
// }
|
||
});
|
||
};
|
||
AudioManager.prototype.getAudioMusicSwitch = function () {
|
||
return this.mMusicSwitch;
|
||
};
|
||
AudioManager.prototype.getAudioEffectSwitch = function () {
|
||
return this.mEffectSwitch;
|
||
};
|
||
AudioManager.prototype.trunAudioSound = function (on) {
|
||
this.switchMusic(on);
|
||
this.switchEffect(on);
|
||
};
|
||
AudioManager.prototype.switchMusic = function (on) {
|
||
if (this.mMusicSwitch != (on ? 1 : 0)) {
|
||
this.mMusicSwitch = 1 - this.mMusicSwitch;
|
||
// this.save();
|
||
}
|
||
if (on) {
|
||
this.playMusicGame();
|
||
}
|
||
else {
|
||
this.stopMusic();
|
||
}
|
||
};
|
||
AudioManager.prototype.switchEffect = function (on) {
|
||
if (this.mEffectSwitch != (on ? 1 : 0)) {
|
||
this.mEffectSwitch = 1 - this.mEffectSwitch;
|
||
// this.save();
|
||
}
|
||
};
|
||
AudioManager.prototype.onHide = function () {
|
||
cc.audioEngine.pauseAll();
|
||
// if (CC_JSB) {
|
||
// } else {
|
||
// for (var key in this.mAudioMap) {
|
||
// if (key === this.mMusicKey) {
|
||
// this.mAudioMap[key].pause();
|
||
// } else {
|
||
// this.mAudioMap[key].stop();
|
||
// }
|
||
// }
|
||
// }
|
||
};
|
||
AudioManager.prototype.onShow = function () {
|
||
cc.audioEngine.resumeAll();
|
||
// if (CC_JSB) {
|
||
// } else {
|
||
// if (!this.mMusicSwitch) return;
|
||
// var context = this.mAudioMap[this.mMusicKey];
|
||
// if (context) {
|
||
// context.play();
|
||
// }
|
||
// }
|
||
};
|
||
AudioManager.prototype.playMusic = function (key, callback, loop) {
|
||
loop = typeof loop == 'undefined' || loop ? true : false;
|
||
this.stopMusic();
|
||
this.mMusicKey = this.play(key, loop, callback, true);
|
||
};
|
||
/**
|
||
* 游戏背景音乐
|
||
*/
|
||
AudioManager.prototype.playMusicGame = function () {
|
||
// this.playMusic(this.audioGameBgm0,{},true);
|
||
};
|
||
/**
|
||
* 停止背景音乐播放
|
||
*/
|
||
AudioManager.prototype.stopMusic = function () {
|
||
// cc.wwx.OutPut.log('stopMusic audio effect wx: ' + this.mMusicKey);
|
||
var context = this.mAudioMap[this.mMusicKey];
|
||
if (typeof (context) != 'undefined') {
|
||
if (cc.sys.isBrowser) {
|
||
cc.audioEngine.stop(context);
|
||
}
|
||
else {
|
||
context.stop();
|
||
}
|
||
cc.audioEngine.stop(context);
|
||
}
|
||
};
|
||
// 炸弹、火箭爆炸音效
|
||
AudioManager.prototype.playJump = function () {
|
||
return this.play(this.jump, false, null, this.mEffectSwitch);
|
||
};
|
||
//激光音效
|
||
AudioManager.prototype.playLuo = function () {
|
||
return this.play(this.luodui, false, null, this.mEffectSwitch);
|
||
};
|
||
//技能音效
|
||
AudioManager.prototype.playGround = function () {
|
||
return this.play(this.luodi, false, null, this.mEffectSwitch);
|
||
};
|
||
//技能音效
|
||
AudioManager.prototype.playPz = function () {
|
||
return this.play(this.pz, false, null, this.mEffectSwitch);
|
||
};
|
||
/*
|
||
* 游戏开始音效
|
||
*
|
||
*/
|
||
AudioManager.prototype.playGameStart = function () {
|
||
};
|
||
/*
|
||
* 失败的游戏结束
|
||
*/
|
||
AudioManager.prototype.playGameOver = function () {
|
||
};
|
||
/*
|
||
* 成功的游戏结束
|
||
*/
|
||
AudioManager.prototype.playGameResultFailed = function () {
|
||
};
|
||
/*
|
||
* 成功的游戏结束
|
||
*/
|
||
AudioManager.prototype.playGameResultSuccess = function () {
|
||
};
|
||
/**
|
||
* 报警的音效
|
||
*/
|
||
AudioManager.prototype.playWarning = function () {
|
||
};
|
||
/*
|
||
* 方块碰撞的声音
|
||
*/
|
||
AudioManager.prototype.playBrick = function () {
|
||
// return this.play(this.brickSound,false);
|
||
};
|
||
//方块破碎的声音
|
||
AudioManager.prototype.brickBoom = function () {
|
||
};
|
||
/**
|
||
* 按钮
|
||
*/
|
||
AudioManager.prototype.playAudioButton = function () {
|
||
};
|
||
AudioManager.prototype.playRandomMatch = function () {
|
||
this.playMusic(this.audioGameBgm0, {}, true);
|
||
};
|
||
AudioManager.prototype.playMatchFoundSound = function () {
|
||
this.stopMusic();
|
||
// return this.play(this.matchFoundSound, false);
|
||
};
|
||
var AudioManager_1;
|
||
__decorate([
|
||
property(cc.AudioClip)
|
||
], AudioManager.prototype, "audioGameBgm0", void 0);
|
||
__decorate([
|
||
property(cc.AudioClip)
|
||
], AudioManager.prototype, "jump", void 0);
|
||
__decorate([
|
||
property(cc.AudioClip)
|
||
], AudioManager.prototype, "luodi", void 0);
|
||
__decorate([
|
||
property(cc.AudioClip)
|
||
], AudioManager.prototype, "pz", void 0);
|
||
__decorate([
|
||
property(cc.AudioClip)
|
||
], AudioManager.prototype, "luodui", void 0);
|
||
AudioManager = AudioManager_1 = __decorate([
|
||
ccclass
|
||
], AudioManager);
|
||
return AudioManager;
|
||
}(cc.Component));
|
||
exports.default = AudioManager;
|
||
;
|
||
// export { AudioManager };
|
||
|
||
cc._RF.pop();
|
||
}
|
||
if (nodeEnv) {
|
||
__define(__module.exports, __require, __module);
|
||
}
|
||
else {
|
||
__quick_compile_project__.registerModuleFunc(__filename, function () {
|
||
__define(__module.exports, __require, __module);
|
||
});
|
||
}
|
||
})();
|
||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFx0b29sXFxBdWRpb01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQU0sSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFFMUM7SUFBMEMsZ0NBQVk7SUFBdEQ7UUFBQSxxRUErUkM7UUE3UkcsTUFBTTtRQUVOLG1CQUFhLEdBQWlCLElBQUksQ0FBQztRQUNuQyxJQUFJO1FBRUosVUFBSSxHQUFpQixJQUFJLENBQUM7UUFDMUIsS0FBSztRQUVMLFdBQUssR0FBaUIsSUFBSSxDQUFDO1FBQzNCLElBQUk7UUFFSixRQUFFLEdBQWlCLElBQUksQ0FBQztRQUN4QixNQUFNO1FBRU4sWUFBTSxHQUFpQixJQUFJLENBQUM7O0lBK1FoQyxDQUFDO3FCQS9Sb0IsWUFBWTtJQStCN0IsMkJBQUksR0FBSjtRQUVJLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCOzs7V0FHRztRQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFFM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNELDJCQUFJLEdBQUosVUFBTSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxTQUFTO1FBQ3hDLElBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPO1FBQzVDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU87UUFDOUMsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJ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Q29udGVudCI6WyJjb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcbkBjY2NsYXNzXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBdWRpb01hbmFnZXIgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xuXG4gICAgLy/og4zmma/pn7PkuZBcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIGF1ZGlvR2FtZUJnbTA6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgLy/ot7Pot4NcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIGp1bXA6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XG4gICAgLy/okL3lnLDkuIpcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIGx1b2RpOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIC8v56Kw5pKeXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBwejogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICAvL+iQveaWueWdl+S4ilxuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgbHVvZHVpOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuXG4gICAgbUF1ZGlvTWFwOiB7fTtcbiAgICBiZ011c2ljVm9sdW1lOiBudW1iZXI7XG4gICAgZWZmZWN0TXVzaWNWb2x1bWU6IG51bWJlcjtcbiAgICBtTXVzaWNTd2l0Y2g6IG51bWJlcjtcbiAgICBtRWZmZWN0U3dpdGNoOiBudW1iZXI7XG4gICAgYnJpY2tTb3VuZDogYW55O1xuICAgIHJld2FyZDogYm9vbGVhbjtcbiAgICBmaW5pc2g6IGJvb2xlYW47XG4gICAgcmV3YXJkQ291bnQ6IG51bWJlcjtcblxuICAgIG1NdXNpY0tleTogYW55O1xuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcblxuICAgIGN0b3IgKCkge1xuICAgICAgICBcbiAgICAgICAgdGhpcy5tQXVkaW9NYXAgPSB7fTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOm7mOiupOmfs+mHj+Wkp+Wwj1xuICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5iZ011c2ljVm9sdW1lID0gMC4xO1xuICAgICAgICB0aGlzLmVmZmVjdE11c2ljVm9sdW1lID0gMTtcblxuICAgICAgICB0aGlzLm1NdXNpY1N3aXRjaCA9IDE7XG4gICAgICAgIHRoaXMubUVmZmVjdFN3aXRjaCA9IDE7XG4gICAgfVxuICAgIHBsYXkgKGF1ZGlvU291cmNlLCBsb29wLCBjYWxsYmFjaywgaXNCZ011c2ljKSB7XG4gICAgICAgIGlmIChpc0JnTXVzaWMgJiYgIXRoaXMubU11c2ljU3dpdGNoKSByZXR1cm47XG4gICAgICAgIGlmICghaXNCZ011c2ljICYmICF0aGlzLm1FZmZlY3RTd2l0Y2gpIHJldHVybjtcbiAgICAgICAgdmFyIHZvbHVtZSA9IGlzQmdNdXNpYyA/IHRoaXMuYmdNdXNpY1ZvbHVtZSA6IHRoaXMuZWZmZWN0TXVzaWNWb2x1bWU7XG5cbiAgICAgICAgaWYgKGNjLnN5cy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIGlmKGF1ZGlvU291cmNlID09IHRoaXMuYnJpY2tTb3VuZCl7XG4gICAgICAgICAgICAgICAgdm9sdW1lID0gMC4xO1xuICAgICAgICAgICAgfSBcbiAgICAgICAgICAgIHZvbHVtZSA9IDE7XG4gICAgICAgICAgICB2YXIgY29udGV4dCA9IGNjLmF1ZGlvRW5naW5lLnBsYXkoYXVkaW9Tb3VyY2UsIGxvb3AsIHZvbHVtZSk7XG4gICAgICAgICAgICBpZiAoY2FsbGJhY2spe1xuICAgICAgICAgICAgICAgIGNjLmF1ZGlvRW5naW5lLnNldEZpbmlzaENhbGxiYWNrKGNvbnRleHQsIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNjLnd3eC5PdXRQdXQubG9nKCdwbGF5IGF1ZGlvIGVmZmVjdCBpc0Jyb3dzZXI6ICcgKyBjb250ZXh0LnNyYyk7XG5cbiAgICAgICAgICAgIHRoaXMubUF1ZGlvTWFwW2F1ZGlvU291cmNlXSA9IGNvbnRleHQ7XG4gICAgICAgICAgICByZXR1cm4gYXVkaW9Tb3VyY2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYXVkaW9Tb3VyY2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzYXZlICgpIHtcbiAgICAgICAgLy8gY2Mud3d4LlN0b3JhZ2Uuc2V0SXRlbShjYy53d3guU3RvcmFnZS5LZXlfU2V0dGluZ19NdXNpY19Wb2x1bWUsIHRoaXMubU11c2ljU3dpdGNoKTtcbiAgICAgICAgLy8gY2Mud3d4LlN0b3JhZ2Uuc2V0SXRlbShjYy53d3guU3RvcmFnZS5LZXlfU2V0dGluZ19FZmZlY3RfVm9sdW1lLCB0aGlzLm1FZmZlY3RTd2l0Y2gpO1xuICAgIH1cbiAgICBvbkxvYWQoKSB7XG5cbiAgICAgICAgaWYgKEF1ZGlvTWFuYWdlci5faW5zdGFuY2UgPT0gbnVsbCkge1xuICAgICAgICAgICAgQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZSA9IHRoaXM7XG4gICAgICAgICAgICBjYy5nYW1lLmFkZFBlcnNpc3RSb290Tm9kZSh0aGlzLm5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ub2RlLmRlc3Ryb3koKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJld2FyZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZpbmlzaCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJld2FyZENvdW50ID0gMDtcbiAgICAgICAgdGhpcy5jdG9yKCk7XG5cbiAgICAgICAgdGhpcy5wcmVsb2FkKCk7XG4gICAgfVxuICAgIHByZWxvYWQgKCkge1xuICAgICAgICBpZiAoIShjYy5zeXMucGxhdGZvcm0gPT09IGNjLnN5cy5XRUNIQVRfR0FNRSkpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgdmFyIG11c2ljcyA9IFtcbiAgICAgICAgICAgIHRoaXMuYXVkaW9HYW1lQmdtMCxcbiAgICAgICAgXTtcbiAgICAgICAgbXVzaWNzLmZvckVhY2goZnVuY3Rpb24ocGF0aCkge1xuICAgICAgICAgICAgLy8gdmFyIG11c2ljUGF0aCA9IHd4RG93bmxvYWRlci5SRU1PVEVfU0VSVkVSX1JPT1QgKyBwYXRoO1xuICAgICAgICAgICAgLy8gaWYgKG11c2ljUGF0aCAhPSB3eERvd25sb2FkZXIuUkVNT1RFX1NFUlZFUl9ST09UICYmIG11c2ljUGF0aC5lbmRzV2l0aCgnLm1wMycpKSB7XG4gICAgICAgICAgICAvLyAgICAgY2MubG9hZGVyLmxvYWQobXVzaWNQYXRoLCBmdW5jdGlvbihlcnIsIHJlbW90ZVVybCkge1xuICAgICAgICAgICAgLy8gICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAvLyAgICAgICAgICAgICBjYy5lcnJvcihlcnIubWVzc2FnZSB8fCBlcnIpO1xuICAgICAgICAgICAgLy8gICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgLy8gICAgICAgICB9XG4gICAgICAgICAgICAvLyAgICAgfSk7XG4gICAgICAgICAgICAvLyB9XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZ2V0QXVkaW9NdXNpY1N3aXRjaCgpXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5tTXVzaWNTd2l0Y2g7XG5cbiAgICB9XG4gICAgZ2V0QXVkaW9FZmZlY3RTd2l0Y2goKVxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubUVmZmVjdFN3aXRjaDtcbiAgICB9XG4gICAgdHJ1bkF1ZGlvU291bmQob24pXG4gICAge1xuICAgICAgICB0aGlzLnN3aXRjaE11c2ljKG9uKTtcbiAgICAgICAgdGhpcy5zd2l0Y2hFZmZlY3Qob24pXG4gICAgfVxuICAgIHN3aXRjaE11c2ljIChvbikge1xuICAgICAgICBpZiAodGhpcy5tTXVzaWNTd2l0Y2ggIT0gKG9uPzE6MCkpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRoaXMubU11c2ljU3dpdGNoID0gMS10aGlzLm1NdXNpY1N3aXRjaDtcbiAgICAgICAgICAgIC8vIHRoaXMuc2F2ZSgpO1xuICAgICAgICAgICAgXG4gICAgICAgIH1cbiAgICAgICAgaWYob24pXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRoaXMucGxheU11c2ljR2FtZSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgdGhpcy5zdG9wTXVzaWMoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzd2l0Y2hFZmZlY3QgKG9uKSB7XG4gICAgICAgIGlmICh0aGlzLm1FZmZlY3RTd2l0Y2ggIT0gKG9uPzE6MCkpe1xuICAgICAgICAgICAgdGhpcy5tRWZmZWN0U3dpdGNoID0gMS10aGlzLm1FZmZlY3RTd2l0Y2g7XG4gICAgICAgICAgICAvLyB0aGlzLnNhdmUoKTtcblxuICAgICAgICB9XG4gICAgfVxuICAgIG9uSGlkZSAoKSB7XG4gICAgICAgIGNjLmF1ZGlvRW5naW5lLnBhdXNlQWxsKCk7XG5cbiAgICAgICAgLy8gaWYgKENDX0pTQikge1xuICAgICAgICAvLyB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgZm9yICh2YXIga2V5IGluIHRoaXMubUF1ZGlvTWFwKSB7XG4gICAgICAgIC8vICAgICAgICAgaWYgKGtleSA9PT0gdGhpcy5tTXVzaWNLZXkpIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5tQXVkaW9NYXBba2V5XS5wYXVzZSgpO1xuICAgICAgICAvLyAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vICAgICAgICAgICAgIHRoaXMubUF1ZGlvTWFwW2tleV0uc3RvcCgpO1xuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIG9uU2hvdyAoKSB7XG4gICAgICAgIGNjLmF1ZGlvRW5naW5lLnJlc3VtZUFsbCgpO1xuXG4gICAgICAgIC8vIGlmIChDQ19KU0IpIHtcbiAgICAgICAgLy8gfSBlbHNlIHtcbiAgICAgICAgLy8gICAgIGlmICghdGhpcy5tTXVzaWNTd2l0Y2gpIHJldHVybjtcbiAgICAgICAgLy8gICAgIHZhciBjb250ZXh0ID0gdGhpcy5tQXVkaW9NYXBbdGhpcy5tTXVzaWNLZXldO1xuICAgICAgICAvLyAgICAgaWYgKGNvbnRleHQpIHtcbiAgICAgICAgLy8gICAgICAgICBjb250ZXh0LnBsYXkoKTtcbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy8gfVxuICAgIH1cbiAgICBwbGF5TXVzaWMgKGtleSwgY2FsbGJhY2ssIGxvb3ApIHtcbiAgICAgICAgbG9vcCA9IHR5cGVvZiBsb29wID09ICd1bmRlZmluZWQnICB8fCBsb29wID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICB0aGlzLnN0b3BNdXNpYygpO1xuICAgICAgICB0aGlzLm1NdXNpY0tleSA9IHRoaXMucGxheShrZXksIGxvb3AsIGNhbGxiYWNrLCB0cnVlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5ri45oiP6IOM5pmv6Z+z5LmQXG4gICAgICovXG4gICAgcGxheU11c2ljR2FtZSAoKSB7XG4gICAgICAgIC8vIHRoaXMucGxheU11c2ljKHRoaXMuYXVkaW9HYW1lQmdtMCx7fSx0cnVlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5YGc5q2i6IOM5pmv6Z+z5LmQ5pKt5pS+XG4gICAgICovXG4gICAgc3RvcE11c2ljICgpIHtcbiAgICAgICAgLy8gY2Mud3d4Lk91dFB1dC5sb2coJ3N0b3BNdXNpYyBhdWRpbyBlZmZlY3Qgd3g6ICcgKyB0aGlzLm1NdXNpY0tleSk7XG5cbiAgICAgICAgdmFyIGNvbnRleHQgPSB0aGlzLm1BdWRpb01hcFt0aGlzLm1NdXNpY0tleV07XG5cbiAgICAgICAgaWYgKHR5cGVvZihjb250ZXh0KSAhPSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgaWYgKGNjLnN5cy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zdG9wKGNvbnRleHQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNjLmF1ZGlvRW5naW5lLnN0b3AoY29udGV4dCk7XG5cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyDngrjlvLnjgIHngavnrq3niIbngrjpn7PmlYhcbiAgICBwbGF5SnVtcCAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYXkodGhpcy5qdW1wLCBmYWxzZSxudWxsLHRoaXMubUVmZmVjdFN3aXRjaCk7XG4gICAgfVxuICAgIC8v5r+A5YWJ6Z+z5pWIXG4gICAgcGxheUx1bygpXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5wbGF5KHRoaXMubHVvZHVpLCBmYWxzZSxudWxsLHRoaXMubUVmZmVjdFN3aXRjaCk7XG4gICAgfVxuICAgIC8v5oqA6IO96Z+z5pWIXG4gICAgcGxheUdyb3VuZCgpXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5wbGF5KHRoaXMubHVvZGksIGZhbHNlLG51bGwsdGhpcy5tRWZmZWN0U3dpdGNoKTtcbiAgICB9XG5cbiAgICAvL+aKgOiDvemfs+aViFxuICAgIHBsYXlQeigpXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy5wbGF5KHRoaXMucHosIGZhbHNlLG51bGwsdGhpcy5tRWZmZWN0U3dpdGNoKTtcbiAgICB9XG4gICAgLypcbiAgICAgKiDmuLjmiI/lvIDlp4vpn7PmlYhcbiAgICAgKlxuICAgICAqL1xuICAgICBwbGF5R2FtZVN0YXJ0KClcbiAgICAge1xuICAgICBcbiAgICAgfVxuICAgICAvKlxuICAgICAgKiDlpLHotKXnmoTmuLjmiI/nu5PmnZ9cbiAgICAgICovXG4gICAgIHBsYXlHYW1lT3ZlcigpXG4gICAgIHtcbiAgIFxuICAgICB9XG4gICAgLypcbiAgICAgICog5oiQ5Yqf55qE5ri45oiP57uT5p2fXG4gICAgICAqL1xuICAgIHBsYXlHYW1lUmVzdWx0RmFpbGVkKClcbiAgICB7XG5cbiAgICB9XG4gICAgLypcbiAgKiDmiJDlip/nmoTmuLjmiI/nu5PmnZ9cbiAgKi9cbiAgICBwbGF5R2FtZVJlc3VsdFN1Y2Nlc3MoKVxuICAgIHtcblxuICAgIH1cbiAgICAvKipcbiAgICAgKiDmiqXorabnmoTpn7PmlYhcbiAgICAgKi9cbiAgICBwbGF5V2FybmluZygpXG4gICAge1xuXG4gICAgfVxuXG4gICAgLypcbiAgICAgKiDmlrnlnZfnorDmkp7nmoTlo7Dpn7NcbiAgICAgKi9cbiAgICBwbGF5QnJpY2soKVxuICAgIHtcbiAgICAgICAgLy8gcmV0dXJuIHRoaXMucGxheSh0aGlzLmJyaWNrU291bmQsZmFsc2UpO1xuICAgIH1cbiAgICAvL+aWueWdl+egtOeijueahOWjsOmfs1xuICAgIGJyaWNrQm9vbSgpe1xuICAgXG4gICAgfVxuICAgIC8qKlxuICAgICAqIOaMiemSrlxuICAgICAqL1xuICAgIHBsYXlBdWRpb0J1dHRvbiAoKSB7XG4gXG4gICAgfVxuXG4gICAgcGxheVJhbmRvbU1hdGNoKClcbiAgICB7XG4gICAgICAgIHRoaXMucGxheU11c2ljKHRoaXMuYXVkaW9HYW1lQmdtMCx7fSx0cnVlKTtcbiAgICB9XG4gICAgcGxheU1hdGNoRm91bmRTb3VuZCgpXG4gICAge1xuICAgICAgICB0aGlzLnN0b3BNdXNpYygpO1xuICAgICAgICAvLyByZXR1cm4gdGhpcy5wbGF5KHRoaXMubWF0Y2hGb3VuZFNvdW5kLCBmYWxzZSk7XG4gICAgfVxuXG59O1xuXG4vLyBleHBvcnQgeyBBdWRpb01hbmFnZXIgfTsiXX0=
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/tool/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, 'e4f51plCa5CE6sxRV+Bx5GJ', 'Storage');
|
||
// Script/tool/Storage.ts
|
||
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.StorageMessage = void 0;
|
||
//缓存浏览器数据
|
||
var StorageMessage = {
|
||
getStorage: function (key) {
|
||
var result = null;
|
||
if (cc.sys.localStorage.getItem(key)) {
|
||
var result = cc.sys.localStorage.getItem(key);
|
||
}
|
||
if (result) {
|
||
result = JSON.parse(result);
|
||
}
|
||
return result;
|
||
},
|
||
setStorage: function (key, value) {
|
||
//主动拉起分享接口
|
||
var temp = JSON.stringify(value);
|
||
cc.sys.localStorage.setItem(key, temp);
|
||
},
|
||
removeStorage: function (key) {
|
||
//主动删除消息接口
|
||
if (cc.sys.localStorage.getItem(key)) {
|
||
cc.sys.localStorage.removeItem(key);
|
||
}
|
||
},
|
||
};
|
||
exports.StorageMessage = StorageMessage;
|
||
|
||
cc._RF.pop();
|
||
}
|
||
if (nodeEnv) {
|
||
__define(__module.exports, __require, __module);
|
||
}
|
||
else {
|
||
__quick_compile_project__.registerModuleFunc(__filename, function () {
|
||
__define(__module.exports, __require, __module);
|
||
});
|
||
}
|
||
})();
|
||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFx0b29sXFxTdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBQVM7QUFDVCxJQUFJLGNBQWMsR0FBRztJQUNqQixVQUFVLEVBQUcsVUFBUyxHQUFHO1FBQ3JCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBQztZQUNsQyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDL0M7UUFFRCxJQUFHLE1BQU0sRUFBQztZQUNSLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzdCO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUNELFVBQVUsRUFBRyxVQUFTLEdBQUcsRUFBQyxLQUFLO1FBQzNCLFVBQVU7UUFDVixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDMUMsQ0FBQztJQUNELGFBQWEsRUFBRyxVQUFTLEdBQUc7UUFDMUIsVUFBVTtRQUNWLElBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFDO1lBQ2xDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtTQUNwQztJQUNILENBQUM7Q0FDSixDQUFDO0FBRU8sd0NBQWMiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvL+e8k+WtmOa1j+iniOWZqOaVsOaNrlxudmFyIFN0b3JhZ2VNZXNzYWdlID0ge1xuICAgIGdldFN0b3JhZ2UgOiBmdW5jdGlvbihrZXkpe1xuICAgICAgICB2YXIgcmVzdWx0ID0gbnVsbDtcbiAgICAgICAgaWYoY2Muc3lzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSkpe1xuICAgICAgICAgIHZhciByZXN1bHQgPSBjYy5zeXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgaWYocmVzdWx0KXtcbiAgICAgICAgICByZXN1bHQgPSBKU09OLnBhcnNlKHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIHNldFN0b3JhZ2UgOiBmdW5jdGlvbihrZXksdmFsdWUpe1xuICAgICAgICAvL+S4u+WKqOaLiei1t+WIhuS6q+aOpeWPo1xuICAgICAgICB2YXIgdGVtcCA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgICAgY2Muc3lzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdGVtcClcbiAgICB9LFxuICAgIHJlbW92ZVN0b3JhZ2UgOiBmdW5jdGlvbihrZXkpe1xuICAgICAgLy/kuLvliqjliKDpmaTmtojmga/mjqXlj6NcbiAgICAgIGlmKGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKXtcbiAgICAgICAgY2Muc3lzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSlcbiAgICAgIH1cbiAgICB9LFxufTtcblxuZXhwb3J0IHsgU3RvcmFnZU1lc3NhZ2UgfTsiXX0=
|
||
//------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)) + 5; //计算创建的item实例数量,比当前scrollView容器能放下的item数量再加上2个
|
||
this.halfScrollView = this.scrollView.node.height / 2 + this.itemHeight / 2 + this.spaceY; //计算bufferZone,item的显示范围
|
||
this.updateFun = this.updateV;
|
||
}
|
||
else if (this.type == ListType.Horizontal) {
|
||
this.scrollView.horizontal = true;
|
||
this.scrollView.vertical = false;
|
||
this.content.width = dataLen * this.itemWidth + (dataLen - 1) * this.spaceX + this.padding_left + this.padding_right;
|
||
this.content.height = this.content.parent.height;
|
||
this.spawnCount = Math.round(this.scrollView.node.width / (this.itemWidth + this.spaceX)) + 2;
|
||
this.halfScrollView = this.scrollView.node.width / 2 + this.itemWidth / 2 + this.spaceX;
|
||
this.updateFun = this.udpateH;
|
||
}
|
||
else if (this.type == ListType.Grid) {
|
||
if (this.startAxis == StartAxisType.Vertical) {
|
||
this.scrollView.horizontal = false;
|
||
this.scrollView.vertical = true;
|
||
this.content.width = this.content.parent.width;
|
||
//如果left和right间隔过大,导致放不下一个item,则left和right都设置为0,相当于不生效
|
||
if (this.padding_left + this.padding_right + this.itemWidth + this.spaceX > this.content.width) {
|
||
this.padding_left = 0;
|
||
this.padding_right = 0;
|
||
console.error("padding_left或padding_right过大");
|
||
}
|
||
this.gridCol = Math.floor((this.content.width - this.padding_left - this.padding_right) / (this.itemWidth + this.spaceX));
|
||
this.gridRow = Math.ceil(dataLen / this.gridCol);
|
||
this.content.height = this.gridRow * this.itemHeight + (this.gridRow - 1) * this.spaceY + this.padding_top + this.padding_buttom;
|
||
this.spawnCount = Math.round(this.scrollView.node.height / (this.itemHeight + this.spaceY)) * this.gridCol + this.gridCol * 2;
|
||
this.halfScrollView = this.scrollView.node.height / 2 + this.itemHeight / 2 + this.spaceY;
|
||
this.updateFun = this.updateGrid_V;
|
||
}
|
||
else if (this.startAxis == StartAxisType.Horizontal) {
|
||
this.scrollView.horizontal = true;
|
||
this.scrollView.vertical = false;
|
||
//计算高间隔
|
||
this.content.height = this.content.parent.height;
|
||
//如果left和right间隔过大,导致放不下一个item,则left和right都设置为0,相当于不生效
|
||
if (this.padding_top + this.padding_buttom + this.itemHeight + this.spaceY > this.content.height) {
|
||
this.padding_top = 0;
|
||
this.padding_buttom = 0;
|
||
console.error("padding_top或padding_buttom过大");
|
||
}
|
||
this.gridRow = Math.floor((this.content.height - this.padding_top - this.padding_buttom) / (this.itemHeight + this.spaceY));
|
||
this.gridCol = Math.ceil(dataLen / this.gridRow);
|
||
this.content.width = this.gridCol * this.itemWidth + (this.gridCol - 1) * this.spaceX + this.padding_left + this.padding_right;
|
||
this.spawnCount = Math.round(this.scrollView.node.width / (this.itemWidth + this.spaceX)) * this.gridRow + this.gridRow * 2;
|
||
this.halfScrollView = this.scrollView.node.width / 2 + this.itemWidth / 2 + this.spaceX;
|
||
this.updateFun = this.updateGrid_H;
|
||
}
|
||
}
|
||
};
|
||
/**
|
||
* 创建列表
|
||
* @param startIndex 起始显示的数据索引 0表示第一项
|
||
* @param offset scrollView偏移量
|
||
*/
|
||
List.prototype.createList = function (startIndex, offset) {
|
||
//当需要显示的数据长度 > 虚拟列表长度, 删除最末尾几个数据时,列表需要重置位置到scrollView最底端
|
||
if (this.itemDataList.length > this.spawnCount && (startIndex + this.spawnCount - 1) >= this.itemDataList.length) {
|
||
startIndex = this.itemDataList.length - this.spawnCount;
|
||
offset = this.scrollView.getMaxScrollOffset();
|
||
//当需要显示的数据长度 <= 虚拟列表长度, 隐藏多余的虚拟列表项
|
||
}
|
||
else if (this.itemDataList.length <= this.spawnCount) {
|
||
startIndex = 0;
|
||
}
|
||
for (var i = 0; i < this.spawnCount; i++) {
|
||
var item = void 0;
|
||
//需要显示的数据索引在数据范围内,则item实例显示出来
|
||
if (i + startIndex < this.itemDataList.length) {
|
||
if (this.itemList[i] == null) {
|
||
item = this.getItem();
|
||
this.itemList.push(item);
|
||
item.parent = this.content;
|
||
}
|
||
else {
|
||
item = this.itemList[i];
|
||
}
|
||
//需要显示的数据索引超过了数据范围,则item实例隐藏起来
|
||
}
|
||
else {
|
||
//item实例数量 > 需要显示的数据量
|
||
if (this.itemList.length > (this.itemDataList.length - startIndex)) {
|
||
item = this.itemList.pop();
|
||
item.removeFromParent();
|
||
this.itemPool.push(item);
|
||
}
|
||
continue;
|
||
}
|
||
var itemRender = item.getComponent(ItemRender_1.default);
|
||
itemRender.itemIndex = i + startIndex;
|
||
itemRender.data = this.itemDataList[i + startIndex];
|
||
itemRender.dataChanged();
|
||
if (this.type == ListType.Vertical) {
|
||
//因为content的锚点X是0,所以item的x值是content.with/2表示居中,锚点Y是1,所以item的y值从content顶部向下是0到负无穷。所以item.y= -item.height/2时,是在content的顶部。
|
||
item.setPosition(this.content.width / 2, -item.height * (0.5 + i + startIndex) - this.spaceY * (i + startIndex) - this.padding_top);
|
||
}
|
||
else if (this.type == ListType.Horizontal) {
|
||
item.setPosition(item.width * (0.5 + i + startIndex) + this.spaceX * (i + startIndex) + this.padding_left, -this.content.height / 2);
|
||
}
|
||
else if (this.type == ListType.Grid) {
|
||
if (this.startAxis == StartAxisType.Vertical) {
|
||
var row = Math.floor((i + startIndex) / this.gridCol);
|
||
var col = (i + startIndex) % this.gridCol;
|
||
item.setPosition(item.width * (0.5 + col) + this.spaceX * col + this.padding_left, -item.height * (0.5 + row) - this.spaceY * row - this.padding_top);
|
||
item.opacity = 255;
|
||
}
|
||
else if (this.startAxis == StartAxisType.Horizontal) {
|
||
var row = (i + startIndex) % this.gridRow;
|
||
var col = Math.floor((i + startIndex) / this.gridRow);
|
||
item.setPosition(item.width * (0.5 + col) + this.spaceX * col + this.padding_left, -item.height * (0.5 + row) - this.spaceY * row - this.padding_top);
|
||
item.opacity = 255;
|
||
}
|
||
}
|
||
}
|
||
this.scrollView.scrollToOffset(offset);
|
||
};
|
||
/**获取一个列表项 */
|
||
List.prototype.getItem = function () {
|
||
if (this.itemPool.length == 0) {
|
||
return cc.instantiate(this.itemRender);
|
||
}
|
||
else {
|
||
return this.itemPool.pop();
|
||
}
|
||
};
|
||
List.prototype.update = function (dt) {
|
||
if (this.bScrolling == false) {
|
||
return;
|
||
}
|
||
this.updateTimer += dt;
|
||
if (this.updateTimer < this.updateInterval) {
|
||
return;
|
||
}
|
||
this.updateTimer = 0;
|
||
this.bScrolling = false;
|
||
this.updateFun();
|
||
};
|
||
List.prototype.onScrolling = function () {
|
||
this.bScrolling = true;
|
||
};
|
||
/**垂直排列 */
|
||
List.prototype.updateV = function () {
|
||
var items = this.itemList;
|
||
var item;
|
||
var bufferZone = this.halfScrollView;
|
||
var isUp = this.scrollView.content.y > this.lastContentPosY;
|
||
var offset = (this.itemHeight + this.spaceY) * items.length;
|
||
for (var i = 0; i < items.length; i++) {
|
||
item = items[i];
|
||
var viewPos = this.getPositionInView(item);
|
||
if (isUp) {
|
||
//item上滑时,超出了scrollView上边界,将item移动到下方复用,item移动到下方的位置必须不超过content的下边界
|
||
if (viewPos.y > bufferZone && item.y - offset - this.padding_buttom > -this.content.height) {
|
||
var itemRender = item.getComponent(ItemRender_1.default);
|
||
var itemIndex = itemRender.itemIndex + items.length;
|
||
itemRender.itemIndex = itemIndex;
|
||
itemRender.data = this.itemDataList[itemIndex];
|
||
itemRender.dataChanged();
|
||
item.y = item.y - offset;
|
||
}
|
||
}
|
||
else {
|
||
//item下滑时,超出了scrollView下边界,将item移动到上方复用,item移动到上方的位置必须不超过content的上边界
|
||
if (viewPos.y < -bufferZone && item.y + offset + this.padding_top < 0) {
|
||
var itemRender = item.getComponent(ItemRender_1.default);
|
||
var itemIndex = itemRender.itemIndex - items.length;
|
||
itemRender.itemIndex = itemIndex;
|
||
itemRender.data = this.itemDataList[itemIndex];
|
||
itemRender.dataChanged();
|
||
item.y = item.y + offset;
|
||
}
|
||
}
|
||
}
|
||
this.lastContentPosY = this.scrollView.content.y;
|
||
};
|
||
/**水平排列 */
|
||
List.prototype.udpateH = function () {
|
||
var items = this.itemList;
|
||
var item;
|
||
var bufferZone = this.halfScrollView;
|
||
var isRight = this.scrollView.content.x > this.lastContentPosX;
|
||
var offset = (this.itemWidth + this.spaceX) * items.length;
|
||
for (var i = 0; i < items.length; i++) {
|
||
item = items[i];
|
||
var viewPos = this.getPositionInView(item);
|
||
if (isRight) {
|
||
//item右滑时,超出了scrollView右边界,将item移动到左方复用,item移动到左方的位置必须不超过content的左边界
|
||
if (viewPos.x > bufferZone && item.x - offset - this.padding_left > 0) {
|
||
var itemRender = item.getComponent(ItemRender_1.default);
|
||
var itemIndex = itemRender.itemIndex - items.length;
|
||
itemRender.itemIndex = itemIndex;
|
||
itemRender.data = this.itemDataList[itemIndex];
|
||
itemRender.dataChanged();
|
||
item.x = item.x - offset;
|
||
}
|
||
}
|
||
else {
|
||
//item左滑时,超出了scrollView左边界,将item移动到右方复用,item移动到右方的位置必须不超过content的右边界
|
||
if (viewPos.x < -bufferZone && item.x + offset + this.padding_right < this.content.width) {
|
||
var itemRender = item.getComponent(ItemRender_1.default);
|
||
var itemIndex = itemRender.itemIndex + items.length;
|
||
itemRender.itemIndex = itemIndex;
|
||
itemRender.data = this.itemDataList[itemIndex];
|
||
itemRender.dataChanged();
|
||
item.x = item.x + offset;
|
||
}
|
||
}
|
||
}
|
||
this.lastContentPosX = this.scrollView.content.x;
|
||
};
|
||
/**网格垂直排列 */
|
||
List.prototype.updateGrid_V = function () {
|
||
var items = this.itemList;
|
||
var item;
|
||
var bufferZone = this.halfScrollView;
|
||
var isUp = this.scrollView.content.y > this.lastContentPosY;
|
||
var offset = (this.itemHeight + this.spaceY) * (this.spawnCount / this.gridCol);
|
||
for (var i = 0; i < items.length; i++) {
|
||
item = items[i];
|
||
var viewPos = this.getPositionInView(item);
|
||
if (isUp) {
|
||
//item上滑时,超出了scrollView上边界,将item移动到下方复用,item移动到下方的位置必须不超过content的下边界
|
||
if (viewPos.y > bufferZone && item.y - offset - this.padding_buttom > -this.content.height) {
|
||
var itemRender = item.getComponent(ItemRender_1.default);
|
||
var itemIndex = itemRender.itemIndex + (this.spawnCount / this.gridCol) * this.gridCol;
|
||
if (this.itemDataList[itemIndex] != null) {
|
||
item.y = item.y - offset;
|
||
itemRender.itemIndex = itemIndex;
|
||
itemRender.data = this.itemDataList[itemIndex];
|
||
itemRender.dataChanged();
|
||
item.opacity = 255;
|
||
}
|
||
else {
|
||
item.y = item.y - offset;
|
||
itemRender.itemIndex = itemIndex;
|
||
item.opacity = 0;
|
||
}
|
||
}
|
||
}
|
||
else { //item下滑时,超出了scrollView下边界,将item移动到上方复用,item移动到上方的位置必须不超过content的上边界
|
||
if (viewPos.y < -bufferZone && item.y + offset + this.padding_top < 0) {
|
||
var itemRender = item.getComponent(ItemRender_1.default);
|
||
var itemIndex = itemRender.itemIndex - (this.spawnCount / this.gridCol) * this.gridCol;
|
||
if (this.itemDataList[itemIndex] != null) {
|
||
item.y = item.y + offset;
|
||
itemRender.itemIndex = itemIndex;
|
||
itemRender.data = this.itemDataList[itemIndex];
|
||
itemRender.dataChanged();
|
||
item.opacity = 255;
|
||
}
|
||
else {
|
||
item.y = item.y + offset;
|
||
itemRender.itemIndex = itemIndex;
|
||
item.opacity = 0;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
this.lastContentPosY = this.scrollView.content.y;
|
||
};
|
||
/**网格水平排列 */
|
||
List.prototype.updateGrid_H = function () {
|
||
var items = this.itemList;
|
||
var item;
|
||
var bufferZone = this.halfScrollView;
|
||
var isRight = this.scrollView.content.x > this.lastContentPosX;
|
||
var offset = (this.itemWidth + this.spaceX) * (this.spawnCount / this.gridRow);
|
||
for (var i = 0; i < items.length; i++) {
|
||
item = items[i];
|
||
var viewPos = this.getPositionInView(item);
|
||
if (isRight) {
|
||
//item右滑时,超出了scrollView右边界,将item移动到左方复用,item移动到左方的位置必须不超过content的左边界
|
||
if (viewPos.x > bufferZone && item.x - offset - this.padding_left > 0) {
|
||
var itemRender = item.getComponent(ItemRender_1.default);
|
||
var itemIndex = itemRender.itemIndex - (this.spawnCount / this.gridRow) * this.gridRow;
|
||
if (this.itemDataList[itemIndex] != null) {
|
||
item.x = item.x - offset;
|
||
itemRender.itemIndex = itemIndex;
|
||
itemRender.data = this.itemDataList[itemIndex];
|
||
itemRender.dataChanged();
|
||
item.opacity = 255;
|
||
}
|
||
else {
|
||
item.x = item.x - offset;
|
||
itemRender.itemIndex = itemIndex;
|
||
item.opacity = 0;
|
||
}
|
||
}
|
||
}
|
||
else {
|
||
//item左滑时,超出了scrollView左边界,将item移动到右方复用,item移动到右方的位置必须不超过content的右边界
|
||
if (viewPos.x < -bufferZone && item.x + offset + this.padding_right < this.content.width) {
|
||
var itemRender = item.getComponent(ItemRender_1.default);
|
||
var itemIndex = itemRender.itemIndex + (this.spawnCount / this.gridRow) * this.gridRow;
|
||
if (this.itemDataList[itemIndex] != null) {
|
||
item.x = item.x + offset;
|
||
itemRender.itemIndex = itemIndex;
|
||
itemRender.data = this.itemDataList[itemIndex];
|
||
itemRender.dataChanged();
|
||
item.opacity = 255;
|
||
}
|
||
else {
|
||
item.x = item.x + offset;
|
||
itemRender.itemIndex = itemIndex;
|
||
item.opacity = 0;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
this.lastContentPosX = this.scrollView.content.x;
|
||
};
|
||
/**获取item在scrollView的局部坐标 */
|
||
List.prototype.getPositionInView = function (item) {
|
||
var worldPos = item.parent.convertToWorldSpaceAR(item.position);
|
||
var viewPos = this.scrollView.node.convertToNodeSpaceAR(worldPos);
|
||
return viewPos;
|
||
};
|
||
/**获取列表数据 */
|
||
List.prototype.getListData = function () {
|
||
return this.itemDataList;
|
||
};
|
||
/**
|
||
* 增加一项数据到列表的末尾
|
||
* @param data 数据
|
||
*/
|
||
List.prototype.addItem = function (data) {
|
||
this.itemDataList.push(data);
|
||
this.updateContent();
|
||
};
|
||
/**
|
||
* 增加一项数据到列表指定位置
|
||
* @param index 位置,0表示第1项
|
||
* @param data 数据
|
||
*/
|
||
List.prototype.addItemAt = function (index, data) {
|
||
if (this.itemDataList[index] != null || this.itemDataList.length == index) {
|
||
this.itemDataList.splice(index, 1, data);
|
||
this.updateContent();
|
||
}
|
||
};
|
||
/**
|
||
* 删除一项数据
|
||
* @param index 删除项的位置 ,0表示第1项
|
||
*/
|
||
List.prototype.deleteItem = function (index) {
|
||
if (this.itemDataList[index] != null) {
|
||
this.itemDataList.splice(index, 1);
|
||
this.updateContent();
|
||
}
|
||
};
|
||
/**
|
||
* 改变一项数据
|
||
* @param index 位置,0表示第1项
|
||
* @param data 替换的数据
|
||
*/
|
||
List.prototype.changeItem = function (index, data) {
|
||
if (this.itemDataList[index] != null) {
|
||
this.itemDataList[index] = data;
|
||
this.updateContent();
|
||
}
|
||
};
|
||
/**获取第一个Item的位置 */
|
||
List.prototype.updateContent = function () {
|
||
//显示列表实例为0个
|
||
if (this.itemList.length == 0) {
|
||
this.countListParam();
|
||
this.createList(0, new cc.Vec2(0, 0));
|
||
//显示列表的实例不为0个,则需要重新排列item实例数组
|
||
}
|
||
else {
|
||
if (this.type == ListType.Vertical) {
|
||
this.itemList.sort(function (a, b) {
|
||
return b.y - a.y;
|
||
});
|
||
}
|
||
else if (this.type == ListType.Horizontal) {
|
||
this.itemList.sort(function (a, b) {
|
||
return a.x - b.x;
|
||
});
|
||
}
|
||
else if (this.type == ListType.Grid) {
|
||
if (this.startAxis == StartAxisType.Vertical) {
|
||
this.itemList.sort(function (a, b) {
|
||
return a.x - b.x;
|
||
});
|
||
this.itemList.sort(function (a, b) {
|
||
return b.y - a.y;
|
||
});
|
||
}
|
||
else if (this.startAxis == StartAxisType.Horizontal) {
|
||
this.itemList.sort(function (a, b) {
|
||
return b.y - a.y;
|
||
});
|
||
this.itemList.sort(function (a, b) {
|
||
return a.x - b.x;
|
||
});
|
||
}
|
||
}
|
||
this.countListParam();
|
||
//获取第一个item实例需要显示的数据索引
|
||
var startIndex = this.itemList[0].getComponent(ItemRender_1.default).itemIndex;
|
||
if (this.type == ListType.Grid && this.startAxis == StartAxisType.Vertical) {
|
||
startIndex += (startIndex + this.spawnCount) % this.gridCol;
|
||
}
|
||
else if (this.type == ListType.Grid && this.startAxis == StartAxisType.Horizontal) {
|
||
startIndex += (startIndex + this.spawnCount) % this.gridRow;
|
||
}
|
||
//getScrollOffset()和scrollToOffset()的x值是相反的
|
||
var offset = this.scrollView.getScrollOffset();
|
||
offset.x = -offset.x;
|
||
this.createList(startIndex, offset);
|
||
}
|
||
};
|
||
/**销毁 */
|
||
List.prototype.onDestroy = function () {
|
||
//清理列表项
|
||
var len = this.itemList.length;
|
||
for (var i = 0; i < len; i++) {
|
||
if (cc.isValid(this.itemList[i], true)) {
|
||
this.itemList[i].destroy();
|
||
}
|
||
}
|
||
this.itemList.length = 0;
|
||
//清理对象池
|
||
len = this.itemPool.length;
|
||
for (var i = 0; i < len; i++) {
|
||
if (cc.isValid(this.itemPool[i], true)) {
|
||
this.itemPool[i].destroy();
|
||
}
|
||
}
|
||
this.itemPool.length = 0;
|
||
//清理列表数据
|
||
this.itemDataList.length = 0;
|
||
};
|
||
__decorate([
|
||
property({ type: cc.Node, tooltip: "列表项" })
|
||
], List.prototype, "itemRender", void 0);
|
||
__decorate([
|
||
property({ type: cc.Enum(ListType), tooltip: "排列方式" })
|
||
], List.prototype, "type", void 0);
|
||
__decorate([
|
||
property({ type: cc.Enum(StartAxisType), tooltip: "网格布局中的方向", visible: function () { return this.type == ListType.Grid; } })
|
||
], List.prototype, "startAxis", void 0);
|
||
__decorate([
|
||
property({ type: cc.Integer, tooltip: "列表项X间隔", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } })
|
||
], List.prototype, "spaceX", void 0);
|
||
__decorate([
|
||
property({ type: cc.Integer, tooltip: "列表项Y间隔", visible: function () { return this.type == ListType.Vertical || this.type == ListType.Grid; } })
|
||
], List.prototype, "spaceY", void 0);
|
||
__decorate([
|
||
property({ type: cc.Integer, tooltip: "上间距", visible: function () { return (this.type == ListType.Vertical || this.type == ListType.Grid); } })
|
||
], List.prototype, "padding_top", void 0);
|
||
__decorate([
|
||
property({ type: cc.Integer, tooltip: "下间距", visible: function () { return (this.type == ListType.Vertical || this.type == ListType.Grid); } })
|
||
], List.prototype, "padding_buttom", void 0);
|
||
__decorate([
|
||
property({ type: cc.Integer, tooltip: "左间距", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } })
|
||
], List.prototype, "padding_left", void 0);
|
||
__decorate([
|
||
property(cc.Integer)
|
||
], List.prototype, "_padding", void 0);
|
||
__decorate([
|
||
property({ type: cc.Integer, tooltip: "右间距", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } })
|
||
], List.prototype, "padding_right", void 0);
|
||
List = __decorate([
|
||
ccclass
|
||
], List);
|
||
return List;
|
||
}(cc.Component));
|
||
exports.default = List;
|
||
|
||
cc._RF.pop();
|
||
}
|
||
if (nodeEnv) {
|
||
__define(__module.exports, __require, __module);
|
||
}
|
||
else {
|
||
__quick_compile_project__.registerModuleFunc(__filename, function () {
|
||
__define(__module.exports, __require, __module);
|
||
});
|
||
}
|
||
})();
|
||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxMaXN0Vmlld1xcTGlzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsMkNBQXFDO0FBRS9CLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRTVDLFlBQVk7QUFDWixJQUFZLFFBT1g7QUFQRCxXQUFZLFFBQVE7SUFDaEIsVUFBVTtJQUNWLG1EQUFjLENBQUE7SUFDZCxVQUFVO0lBQ1YsK0NBQVksQ0FBQTtJQUNaLFVBQVU7SUFDVix1Q0FBUSxDQUFBO0FBQ1osQ0FBQyxFQVBXLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBT25CO0FBRUQsY0FBYztBQUNkLElBQVksYUFLWDtBQUxELFdBQVksYUFBYTtJQUNyQixVQUFVO0lBQ1YsNkRBQWMsQ0FBQTtJQUNkLFVBQVU7SUFDVix5REFBWSxDQUFBO0FBQ2hCLENBQUMsRUFMVyxhQUFhLEdBQWIscUJBQWEsS0FBYixxQkFBYSxRQUt4QjtBQUVEOzs7Ozs7O0dBT0c7QUFFSDtJQUFrQyx3QkFBWTtJQUE5QztRQUFBLHFFQXdpQkM7UUF0aUJHLHFEQUFxRDtRQUNyRCxVQUFVO1FBRUgsZ0JBQVUsR0FBWSxJQUFJLENBQUM7UUFFbEMsVUFBVTtRQUVILFVBQUksR0FBYSxRQUFRLENBQUMsUUFBUSxDQUFDO1FBRTFDLGNBQWM7UUFFUCxlQUFTLEdBQWtCLGFBQWEsQ0FBQyxVQUFVLENBQUM7UUFFM0QsY0FBYztRQUVQLFlBQU0sR0FBVyxDQUFDLENBQUM7UUFFMUIsY0FBYztRQUVQLFlBQU0sR0FBVyxDQUFDLENBQUM7UUFFMUIsU0FBUztRQUVGLGlCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBRS9C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QUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3Q0FDL0c7SUFJMUI7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sZ0JBQUssT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUM7d0NBQzNHO0lBSTFCO1FBREMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLGdCQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQzs2Q0FDckc7SUFJL0I7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sZ0JBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUMsRUFBRSxDQUFDO2dEQUNsRztJQUlsQztRQURDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxnQkFBSyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUM7OENBQ3RHO0lBS2hDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUM7MENBQ087SUFJNUI7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sZ0JBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUMsRUFBRSxDQUFDOytDQUNyRztJQTFDaEIsSUFBSTtRQUR4QixPQUFPO09BQ2EsSUFBSSxDQXdpQnhCO0lBQUQsV0FBQztDQXhpQkQsQUF3aUJDLENBeGlCaUMsRUFBRSxDQUFDLFNBQVMsR0F3aUI3QztrQkF4aUJvQixJQUFJIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IEl0ZW1SZW5kZXIgZnJvbSBcIi4vSXRlbVJlbmRlclwiXHJcblxyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuLyoq5YiX6KGo5o6S5YiX5pa55byPICovXHJcbmV4cG9ydCBlbnVtIExpc3RUeXBlIHtcclxuICAgIC8qKuawtOW5s+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+ihqFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0RGF0YShpdGVtRGF0YUxpc3Q6IEFycmF5PGFueT4pIHtcclxuICAgICAgICB0aGlzLml0ZW1EYXRhTGlzdCA9IGl0ZW1EYXRhTGlzdC5zbGljZSgpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKuiuoeeul+WIl+ihqOeahOWQhOmhueWPguaVsCAqL1xyXG4gICAgcHJpdmF0ZSBjb3VudExpc3RQYXJhbSgpIHtcclxuICAgICAgICBsZXQgZGF0YUxlbiA9IHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aDtcclxuICAgICAgICBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLlZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy5ob3Jpem9udGFsID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy52ZXJ0aWNhbCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGVudC53aWR0aCA9IHRoaXMuY29udGVudC5wYXJlbnQud2lkdGg7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGVudC5oZWlnaHQgPSBkYXRhTGVuICogdGhpcy5pdGVtSGVpZ2h0ICsgKGRhdGFMZW4gLSAxKSAqIHRoaXMuc3BhY2VZICsgdGhpcy5wYWRkaW5nX3RvcCArIHRoaXMucGFkZGluZ19idXR0b207XHJcbiAgICAgICAgICAgIHRoaXMuc3Bhd25Db3VudCA9IE1hdGgucm91bmQodGhpcy5zY3JvbGxWaWV3Lm5vZGUuaGVpZ2h0IC8gKHRoaXMuaXRlbUhlaWdodCArIHRoaXMuc3BhY2VZKSkgKyA1OyAvL+iuoeeul+WIm+W7uueahGl0ZW3lrp7kvovmlbDph4/vvIzmr5TlvZPliY1zY3JvbGxWaWV35a655Zmo6IO95pS+5LiL55qEaXRlbeaVsOmHj+WGjeWKoOS4ijLkuKpcclxuICAgICAgICAgICAgdGhpcy5oYWxmU2Nyb2xsVmlldyA9IHRoaXMuc2Nyb2xsVmlldy5ub2RlLmhlaWdodCAvIDIgKyB0aGlzLml0ZW1IZWlnaHQgLyAyICsgdGhpcy5zcGFjZVk7IC8v6K6h566XYnVmZmVyWm9uZe+8jGl0ZW3nmoTmmL7npLrojIPlm7RcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVGdW4gPSB0aGlzLnVwZGF0ZVY7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuSG9yaXpvbnRhbCkge1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcuaG9yaXpvbnRhbCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy52ZXJ0aWNhbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQud2lkdGggPSBkYXRhTGVuICogdGhpcy5pdGVtV2lkdGggKyAoZGF0YUxlbiAtIDEpICogdGhpcy5zcGFjZVggKyB0aGlzLnBhZGRpbmdfbGVmdCArIHRoaXMucGFkZGluZ19yaWdodDtcclxuICAgICAgICAgICAgdGhpcy5jb250ZW50LmhlaWdodCA9IHRoaXMuY29udGVudC5wYXJlbnQuaGVpZ2h0O1xyXG4gICAgICAgICAgICB0aGlzLnNwYXduQ291bnQgPSBNYXRoLnJvdW5kKHRoaXMuc2Nyb2xsVmlldy5ub2RlLndpZHRoIC8gKHRoaXMuaXRlbVdpZHRoICsgdGhpcy5zcGFjZVgpKSArIDI7XHJcbiAgICAgICAgICAgIHRoaXMuaGFsZlNjcm9sbFZpZXcgPSB0aGlzLnNjcm9sbFZpZXcubm9kZS53aWR0aCAvIDIgKyB0aGlzLml0ZW1XaWR0aCAvIDIgKyB0aGlzLnNwYWNlWDtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVGdW4gPSB0aGlzLnVkcGF0ZUg7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zdGFydEF4aXMgPT0gU3RhcnRBeGlzVHlwZS5WZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxWaWV3Lmhvcml6b250YWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy52ZXJ0aWNhbCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnQud2lkdGggPSB0aGlzLmNvbnRlbnQucGFyZW50LndpZHRoO1xyXG4gICAgICAgICAgICAgICAgLy/lpoLmnpxsZWZ05ZKMcmlnaHTpl7TpmpTov4flpKfvvIzlr7zoh7TmlL7kuI3kuIvkuIDkuKppdGVt77yM5YiZbGVmdOWSjHJpZ2h06YO96K6+572u5Li6MO+8jOebuOW9k+S6juS4jeeUn+aViFxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFkZGluZ19sZWZ0ICsgdGhpcy5wYWRkaW5nX3JpZ2h0ICsgdGhpcy5pdGVtV2lkdGggKyB0aGlzLnNwYWNlWCA+IHRoaXMuY29udGVudC53aWR0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFkZGluZ19sZWZ0ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZGRpbmdfcmlnaHQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJwYWRkaW5nX2xlZnTmiJZwYWRkaW5nX3JpZ2h06L+H5aSnXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZENvbCA9IE1hdGguZmxvb3IoKHRoaXMuY29udGVudC53aWR0aCAtIHRoaXMucGFkZGluZ19sZWZ0IC0gdGhpcy5wYWRkaW5nX3JpZ2h0KSAvICh0aGlzLml0ZW1XaWR0aCArIHRoaXMuc3BhY2VYKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWRSb3cgPSBNYXRoLmNlaWwoZGF0YUxlbiAvIHRoaXMuZ3JpZENvbCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnQuaGVpZ2h0ID0gdGhpcy5ncmlkUm93ICogdGhpcy5pdGVtSGVpZ2h0ICsgKHRoaXMuZ3JpZFJvdyAtIDEpICogdGhpcy5zcGFjZVkgKyB0aGlzLnBhZGRpbmdfdG9wICsgdGhpcy5wYWRkaW5nX2J1dHRvbTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3Bhd25Db3VudCA9IE1hdGgucm91bmQodGhpcy5zY3JvbGxWaWV3Lm5vZGUuaGVpZ2h0IC8gKHRoaXMuaXRlbUhlaWdodCArIHRoaXMuc3BhY2VZKSkgKiB0aGlzLmdyaWRDb2wgKyB0aGlzLmdyaWRDb2wgKiAyO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYWxmU2Nyb2xsVmlldyA9IHRoaXMuc2Nyb2xsVmlldy5ub2RlLmhlaWdodCAvIDIgKyB0aGlzLml0ZW1IZWlnaHQgLyAyICsgdGhpcy5zcGFjZVk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUZ1biA9IHRoaXMudXBkYXRlR3JpZF9WO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuSG9yaXpvbnRhbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxWaWV3Lmhvcml6b250YWwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxWaWV3LnZlcnRpY2FsID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAvL+iuoeeul+mrmOmXtOmalFxyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LmhlaWdodCA9IHRoaXMuY29udGVudC5wYXJlbnQuaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgLy/lpoLmnpxsZWZ05ZKMcmlnaHTpl7TpmpTov4flpKfvvIzlr7zoh7TmlL7kuI3kuIvkuIDkuKppdGVt77yM5YiZbGVmdOWSjHJpZ2h06YO96K6+572u5Li6MO+8jOebuOW9k+S6juS4jeeUn+aViFxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFkZGluZ190b3AgKyB0aGlzLnBhZGRpbmdfYnV0dG9tICsgdGhpcy5pdGVtSGVpZ2h0ICsgdGhpcy5zcGFjZVkgPiB0aGlzLmNvbnRlbnQuaGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWRkaW5nX3RvcCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWRkaW5nX2J1dHRvbSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcInBhZGRpbmdfdG9w5oiWcGFkZGluZ19idXR0b23ov4flpKdcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkUm93ID0gTWF0aC5mbG9vcigodGhpcy5jb250ZW50LmhlaWdodCAtIHRoaXMucGFkZGluZ190b3AgLSB0aGlzLnBhZGRpbmdfYnV0dG9tKSAvICh0aGlzLml0ZW1IZWlnaHQgKyB0aGlzLnNwYWNlWSkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkQ29sID0gTWF0aC5jZWlsKGRhdGFMZW4gLyB0aGlzLmdyaWRSb3cpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LndpZHRoID0gdGhpcy5ncmlkQ29sICogdGhpcy5pdGVtV2lkdGggKyAodGhpcy5ncmlkQ29sIC0gMSkgKiB0aGlzLnNwYWNlWCArIHRoaXMucGFkZGluZ19sZWZ0ICsgdGhpcy5wYWRkaW5nX3JpZ2h0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zcGF3bkNvdW50ID0gTWF0aC5yb3VuZCh0aGlzLnNjcm9sbFZpZXcubm9kZS53aWR0aCAvICh0aGlzLml0ZW1XaWR0aCArIHRoaXMuc3BhY2VYKSkgKiB0aGlzLmdyaWRSb3cgKyB0aGlzLmdyaWRSb3cgKiAyO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYWxmU2Nyb2xsVmlldyA9IHRoaXMuc2Nyb2xsVmlldy5ub2RlLndpZHRoIC8gMiArIHRoaXMuaXRlbVdpZHRoIC8gMiArIHRoaXMuc3BhY2VYO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGdW4gPSB0aGlzLnVwZGF0ZUdyaWRfSDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWIm+W7uuWIl+ihqCBcclxuICAgICAqIEBwYXJhbSBzdGFydEluZGV4IOi1t+Wni+aYvuekuueahOaVsOaNrue0ouW8lSAw6KGo56S656ys5LiA6aG5XHJcbiAgICAgKiBAcGFyYW0gb2Zmc2V0ICAgICBzY3JvbGxWaWV35YGP56e76YePXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgY3JlYXRlTGlzdChzdGFydEluZGV4OiBudW1iZXIsIG9mZnNldDogY2MuVmVjMikge1xyXG4gICAgICAgIC8v5b2T6ZyA6KaB5pi+56S655qE5pWw5o2u6ZW/5bqmID4g6Jma5ouf5YiX6KGo6ZW/5bqm77yMIOWIoOmZpOacgOacq+WwvuWHoOS4quaVsOaNruaXtu+8jOWIl+ihqOmcgOimgemHjee9ruS9jee9ruWIsHNjcm9sbFZpZXfmnIDlupXnq69cclxuICAgICAgICBpZiAodGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoID4gdGhpcy5zcGF3bkNvdW50ICYmIChzdGFydEluZGV4ICsgdGhpcy5zcGF3bkNvdW50IC0gMSkgPj0gdGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHN0YXJ0SW5kZXggPSB0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGggLSB0aGlzLnNwYXduQ291bnQ7XHJcbiAgICAgICAgICAgIG9mZnNldCA9IHRoaXMuc2Nyb2xsVmlldy5nZXRNYXhTY3JvbGxPZmZzZXQoKTtcclxuXHJcbiAgICAgICAgICAgIC8v5b2T6ZyA6KaB5pi+56S655qE5pWw5o2u6ZW/5bqmIDw9IOiZmuaLn+WIl+ihqOmVv+W6pu+8jCDpmpDol4/lpJrkvZnnmoTomZrmi5/liJfooajpobkgXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGggPD0gdGhpcy5zcGF3bkNvdW50KSB7XHJcbiAgICAgICAgICAgIHN0YXJ0SW5kZXggPSAwO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNwYXduQ291bnQ7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbTogY2MuTm9kZTtcclxuICAgICAgICAgICAgLy/pnIDopoHmmL7npLrnmoTmlbDmja7ntKLlvJXlnKjmlbDmja7ojIPlm7TlhoXvvIzliJlpdGVt5a6e5L6L5pi+56S65Ye65p2lXHJcbiAgICAgICAgICAgIGlmIChpICsgc3RhcnRJbmRleCA8IHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbUxpc3RbaV0gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSB0aGlzLmdldEl0ZW0oKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1MaXN0LnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5wYXJlbnQgPSB0aGlzLmNvbnRlbnQ7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSB0aGlzLml0ZW1MaXN0W2ldO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy/pnIDopoHmmL7npLrnmoTmlbDmja7ntKLlvJXotoXov4fkuobmlbDmja7ojIPlm7TvvIzliJlpdGVt5a6e5L6L6ZqQ6JeP6LW35p2lXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3lrp7kvovmlbDph48gPiDpnIDopoHmmL7npLrnmoTmlbDmja7ph49cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1MaXN0Lmxlbmd0aCA+ICh0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGggLSBzdGFydEluZGV4KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSB0aGlzLml0ZW1MaXN0LnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucmVtb3ZlRnJvbVBhcmVudCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVBvb2wucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGkgKyBzdGFydEluZGV4O1xyXG4gICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpICsgc3RhcnRJbmRleF07XHJcbiAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgIC8v5Zug5Li6Y29udGVudOeahOmUmueCuVjmmK8w77yM5omA5LulaXRlbeeahHjlgLzmmK9jb250ZW50LndpdGgvMuihqOekuuWxheS4re+8jOmUmueCuVnmmK8x77yM5omA5LulaXRlbeeahHnlgLzku45jb250ZW506aG26YOo5ZCR5LiL5pivMOWIsOi0n+aXoOept+OAguaJgOS7pWl0ZW0ueT0gLWl0ZW0uaGVpZ2h0LzLml7bvvIzmmK/lnKhjb250ZW5055qE6aG26YOo44CCXHJcbiAgICAgICAgICAgICAgICBpdGVtLnNldFBvc2l0aW9uKHRoaXMuY29udGVudC53aWR0aCAvIDIsIC1pdGVtLmhlaWdodCAqICgwLjUgKyBpICsgc3RhcnRJbmRleCkgLSB0aGlzLnNwYWNlWSAqIChpICsgc3RhcnRJbmRleCkgLSB0aGlzLnBhZGRpbmdfdG9wKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuSG9yaXpvbnRhbCkge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5zZXRQb3NpdGlvbihpdGVtLndpZHRoICogKDAuNSArIGkgKyBzdGFydEluZGV4KSArIHRoaXMuc3BhY2VYICogKGkgKyBzdGFydEluZGV4KSArIHRoaXMucGFkZGluZ19sZWZ0LCAtdGhpcy5jb250ZW50LmhlaWdodCAvIDIpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGFydEF4aXMgPT0gU3RhcnRBeGlzVHlwZS5WZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciByb3cgPSBNYXRoLmZsb29yKChpICsgc3RhcnRJbmRleCkgLyB0aGlzLmdyaWRDb2wpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb2wgPSAoaSArIHN0YXJ0SW5kZXgpICUgdGhpcy5ncmlkQ29sO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0UG9zaXRpb24oaXRlbS53aWR0aCAqICgwLjUgKyBjb2wpICsgdGhpcy5zcGFjZVggKiBjb2wgKyB0aGlzLnBhZGRpbmdfbGVmdCwgLWl0ZW0uaGVpZ2h0ICogKDAuNSArIHJvdykgLSB0aGlzLnNwYWNlWSAqIHJvdyAtIHRoaXMucGFkZGluZ190b3ApO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGFydEF4aXMgPT0gU3RhcnRBeGlzVHlwZS5Ib3Jpem9udGFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvdyA9IChpICsgc3RhcnRJbmRleCkgJSB0aGlzLmdyaWRSb3c7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbCA9IE1hdGguZmxvb3IoKGkgKyBzdGFydEluZGV4KSAvIHRoaXMuZ3JpZFJvdyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRQb3NpdGlvbihpdGVtLndpZHRoICogKDAuNSArIGNvbCkgKyB0aGlzLnNwYWNlWCAqIGNvbCArIHRoaXMucGFkZGluZ19sZWZ0LCAtaXRlbS5oZWlnaHQgKiAoMC41ICsgcm93KSAtIHRoaXMuc3BhY2VZICogcm93IC0gdGhpcy5wYWRkaW5nX3RvcCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNjcm9sbFZpZXcuc2Nyb2xsVG9PZmZzZXQob2Zmc2V0KTtcclxuICAgIH1cclxuXHJcbiAgICAvKirojrflj5bkuIDkuKrliJfooajpobkgKi9cclxuICAgIHByaXZhdGUgZ2V0SXRlbSgpIHtcclxuICAgICAgICBpZiAodGhpcy5pdGVtUG9vbC5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2MuaW5zdGFudGlhdGUodGhpcy5pdGVtUmVuZGVyKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtUG9vbC5wb3AoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlKGR0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuYlNjcm9sbGluZyA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBkYXRlVGltZXIgKz0gZHQ7XHJcbiAgICAgICAgaWYgKHRoaXMudXBkYXRlVGltZXIgPCB0aGlzLnVwZGF0ZUludGVydmFsKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGRhdGVUaW1lciA9IDA7XHJcbiAgICAgICAgdGhpcy5iU2Nyb2xsaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy51cGRhdGVGdW4oKTtcclxuICAgIH1cclxuXHJcbiAgICBvblNjcm9sbGluZygpIHtcclxuICAgICAgICB0aGlzLmJTY3JvbGxpbmcgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKuWeguebtOaOkuWIlyAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVWKCkge1xyXG4gICAgICAgIGxldCBpdGVtcyA9IHRoaXMuaXRlbUxpc3Q7XHJcbiAgICAgICAgbGV0IGl0ZW07XHJcbiAgICAgICAgbGV0IGJ1ZmZlclpvbmUgPSB0aGlzLmhhbGZTY3JvbGxWaWV3O1xyXG4gICAgICAgIGxldCBpc1VwID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueSA+IHRoaXMubGFzdENvbnRlbnRQb3NZO1xyXG4gICAgICAgIGxldCBvZmZzZXQgPSAodGhpcy5pdGVtSGVpZ2h0ICsgdGhpcy5zcGFjZVkpICogaXRlbXMubGVuZ3RoO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaXRlbSA9IGl0ZW1zW2ldO1xyXG4gICAgICAgICAgICBsZXQgdmlld1BvcyA9IHRoaXMuZ2V0UG9zaXRpb25JblZpZXcoaXRlbSk7XHJcbiAgICAgICAgICAgIGlmIChpc1VwKSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3kuIrmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35LiK6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOS4i+aWueWkjeeUqO+8jGl0ZW3np7vliqjliLDkuIvmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5LiL6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy55ID4gYnVmZmVyWm9uZSAmJiBpdGVtLnkgLSBvZmZzZXQgLSB0aGlzLnBhZGRpbmdfYnV0dG9tID4gLXRoaXMuY29udGVudC5oZWlnaHQpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCArIGl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnkgPSBpdGVtLnkgLSBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3kuIvmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35LiL6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOS4iuaWueWkjeeUqO+8jGl0ZW3np7vliqjliLDkuIrmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5LiK6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy55IDwgLWJ1ZmZlclpvbmUgJiYgaXRlbS55ICsgb2Zmc2V0ICsgdGhpcy5wYWRkaW5nX3RvcCA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCAtIGl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnkgPSBpdGVtLnkgKyBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sYXN0Q29udGVudFBvc1kgPSB0aGlzLnNjcm9sbFZpZXcuY29udGVudC55O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKuawtOW5s+aOkuWIlyAqL1xyXG4gICAgcHJpdmF0ZSB1ZHBhdGVIKCkge1xyXG4gICAgICAgIGxldCBpdGVtcyA9IHRoaXMuaXRlbUxpc3Q7XHJcbiAgICAgICAgbGV0IGl0ZW07XHJcbiAgICAgICAgbGV0IGJ1ZmZlclpvbmUgPSB0aGlzLmhhbGZTY3JvbGxWaWV3O1xyXG4gICAgICAgIGxldCBpc1JpZ2h0ID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueCA+IHRoaXMubGFzdENvbnRlbnRQb3NYO1xyXG4gICAgICAgIGxldCBvZmZzZXQgPSAodGhpcy5pdGVtV2lkdGggKyB0aGlzLnNwYWNlWCkgKiBpdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpdGVtID0gaXRlbXNbaV07XHJcbiAgICAgICAgICAgIGxldCB2aWV3UG9zID0gdGhpcy5nZXRQb3NpdGlvbkluVmlldyhpdGVtKTtcclxuICAgICAgICAgICAgaWYgKGlzUmlnaHQpIHtcclxuICAgICAgICAgICAgICAgIC8vaXRlbeWPs+a7keaXtu+8jOi2heWHuuS6hnNjcm9sbFZpZXflj7PovrnnlYzvvIzlsIZpdGVt56e75Yqo5Yiw5bem5pa55aSN55So77yMaXRlbeenu+WKqOWIsOW3puaWueeahOS9jee9ruW/hemhu+S4jei2hei/h2NvbnRlbnTnmoTlt6bovrnnlYxcclxuICAgICAgICAgICAgICAgIGlmICh2aWV3UG9zLnggPiBidWZmZXJab25lICYmIGl0ZW0ueCAtIG9mZnNldCAtIHRoaXMucGFkZGluZ19sZWZ0ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtUmVuZGVyOiBJdGVtUmVuZGVyID0gaXRlbS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1JbmRleCA9IGl0ZW1SZW5kZXIuaXRlbUluZGV4IC0gaXRlbXMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YSA9IHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ueCA9IGl0ZW0ueCAtIG9mZnNldDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vaXRlbeW3pua7keaXtu+8jOi2heWHuuS6hnNjcm9sbFZpZXflt6bovrnnlYzvvIzlsIZpdGVt56e75Yqo5Yiw5Y+z5pa55aSN55So77yMaXRlbeenu+WKqOWIsOWPs+aWueeahOS9jee9ruW/hemhu+S4jei2hei/h2NvbnRlbnTnmoTlj7PovrnnlYxcclxuICAgICAgICAgICAgICAgIGlmICh2aWV3UG9zLnggPCAtYnVmZmVyWm9uZSAmJiBpdGVtLnggKyBvZmZzZXQgKyB0aGlzLnBhZGRpbmdfcmlnaHQgPCB0aGlzLmNvbnRlbnQud2lkdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCArIGl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnggPSBpdGVtLnggKyBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sYXN0Q29udGVudFBvc1ggPSB0aGlzLnNjcm9sbFZpZXcuY29udGVudC54O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKue9keagvOWeguebtOaOkuWIlyAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVHcmlkX1YoKSB7XHJcbiAgICAgICAgbGV0IGl0ZW1zID0gdGhpcy5pdGVtTGlzdDtcclxuICAgICAgICBsZXQgaXRlbTogY2MuTm9kZTtcclxuICAgICAgICBsZXQgYnVmZmVyWm9uZSA9IHRoaXMuaGFsZlNjcm9sbFZpZXc7XHJcbiAgICAgICAgbGV0IGlzVXAgPSB0aGlzLnNjcm9sbFZpZXcuY29udGVudC55ID4gdGhpcy5sYXN0Q29udGVudFBvc1k7XHJcbiAgICAgICAgbGV0IG9mZnNldCA9ICh0aGlzLml0ZW1IZWlnaHQgKyB0aGlzLnNwYWNlWSkgKiAodGhpcy5zcGF3bkNvdW50IC8gdGhpcy5ncmlkQ29sKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtc1tpXTtcclxuICAgICAgICAgICAgbGV0IHZpZXdQb3MgPSB0aGlzLmdldFBvc2l0aW9uSW5WaWV3KGl0ZW0pO1xyXG4gICAgICAgICAgICBpZiAoaXNVcCkge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5LiK5ruR5pe277yM6LaF5Ye65LqGc2Nyb2xsVmlld+S4iui+ueeVjO+8jOWwhml0ZW3np7vliqjliLDkuIvmlrnlpI3nlKjvvIxpdGVt56e75Yqo5Yiw5LiL5pa555qE5L2N572u5b+F6aG75LiN6LaF6L+HY29udGVudOeahOS4i+i+ueeVjFxyXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdQb3MueSA+IGJ1ZmZlclpvbmUgJiYgaXRlbS55IC0gb2Zmc2V0IC0gdGhpcy5wYWRkaW5nX2J1dHRvbSA+IC10aGlzLmNvbnRlbnQuaGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggKyAodGhpcy5zcGF3bkNvdW50IC8gdGhpcy5ncmlkQ29sKSAqIHRoaXMuZ3JpZENvbDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueSA9IGl0ZW0ueSAtIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YSA9IHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueSA9IGl0ZW0ueSAtIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Ugey8vaXRlbeS4i+a7keaXtu+8jOi2heWHuuS6hnNjcm9sbFZpZXfkuIvovrnnlYzvvIzlsIZpdGVt56e75Yqo5Yiw5LiK5pa55aSN55So77yMaXRlbeenu+WKqOWIsOS4iuaWueeahOS9jee9ruW/hemhu+S4jei2hei/h2NvbnRlbnTnmoTkuIrovrnnlYxcclxuICAgICAgICAgICAgICAgIGlmICh2aWV3UG9zLnkgPCAtYnVmZmVyWm9uZSAmJiBpdGVtLnkgKyBvZmZzZXQgKyB0aGlzLnBhZGRpbmdfdG9wIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtUmVuZGVyOiBJdGVtUmVuZGVyID0gaXRlbS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1JbmRleCA9IGl0ZW1SZW5kZXIuaXRlbUluZGV4IC0gKHRoaXMuc3Bhd25Db3VudCAvIHRoaXMuZ3JpZENvbCkgKiB0aGlzLmdyaWRDb2w7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnkgPSBpdGVtLnkgKyBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnkgPSBpdGVtLnkgKyBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmxhc3RDb250ZW50UG9zWSA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50Lnk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoq572R5qC85rC05bmz5o6S5YiXICovXHJcbiAgICBwcml2YXRlIHVwZGF0ZUdyaWRfSCgpIHtcclxuICAgICAgICBsZXQgaXRlbXMgPSB0aGlzLml0ZW1MaXN0O1xyXG4gICAgICAgIGxldCBpdGVtO1xyXG4gICAgICAgIGxldCBidWZmZXJab25lID0gdGhpcy5oYWxmU2Nyb2xsVmlldztcclxuICAgICAgICBsZXQgaXNSaWdodCA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50LnggPiB0aGlzLmxhc3RDb250ZW50UG9zWDtcclxuICAgICAgICBsZXQgb2Zmc2V0ID0gKHRoaXMuaXRlbVdpZHRoICsgdGhpcy5zcGFjZVgpICogKHRoaXMuc3Bhd25Db3VudCAvIHRoaXMuZ3JpZFJvdyk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpdGVtID0gaXRlbXNbaV07XHJcbiAgICAgICAgICAgIGxldCB2aWV3UG9zID0gdGhpcy5nZXRQb3NpdGlvbkluVmlldyhpdGVtKTtcclxuICAgICAgICAgICAgaWYgKGlzUmlnaHQpIHtcclxuICAgICAgICAgICAgICAgIC8vaXRlbeWPs+a7keaXtu+8jOi2heWHuuS6hnNjcm9sbFZpZXflj7PovrnnlYzvvIzlsIZpdGVt56e75Yqo5Yiw5bem5pa55aSN55So77yMaXRlbeenu+WKqOWIsOW3puaWueeahOS9jee9ruW/hemhu+S4jei2hei/h2NvbnRlbnTnmoTlt6bovrnnlYxcclxuICAgICAgICAgICAgICAgIGlmICh2aWV3UG9zLnggPiBidWZmZXJab25lICYmIGl0ZW0ueCAtIG9mZnNldCAtIHRoaXMucGFkZGluZ19sZWZ0ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtUmVuZGVyOiBJdGVtUmVuZGVyID0gaXRlbS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1JbmRleCA9IGl0ZW1SZW5kZXIuaXRlbUluZGV4IC0gKHRoaXMuc3Bhd25Db3VudCAvIHRoaXMuZ3JpZFJvdykgKiB0aGlzLmdyaWRSb3c7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnggPSBpdGVtLnggLSBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnggPSBpdGVtLnggLSBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vaXRlbeW3pua7keaXtu+8jOi2heWHuuS6hnNjcm9sbFZpZXflt6bovrnnlYzvvIzlsIZpdGVt56e75Yqo5Yiw5Y+z5pa55aSN55So77yMaXRlbeenu+WKqOWIsOWPs+aWueeahOS9jee9ruW/hemhu+S4jei2hei/h2NvbnRlbnTnmoTlj7PovrnnlYxcclxuICAgICAgICAgICAgICAgIGlmICh2aWV3UG9zLnggPCAtYnVmZmVyWm9uZSAmJiBpdGVtLnggKyBvZmZzZXQgKyB0aGlzLnBhZGRpbmdfcmlnaHQgPCB0aGlzLmNvbnRlbnQud2lkdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCArICh0aGlzLnNwYXduQ291bnQgLyB0aGlzLmdyaWRSb3cpICogdGhpcy5ncmlkUm93O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS54ID0gaXRlbS54ICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS54ID0gaXRlbS54ICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sYXN0Q29udGVudFBvc1ggPSB0aGlzLnNjcm9sbFZpZXcuY29udGVudC54O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKuiOt+WPlml0ZW3lnKhzY3JvbGxWaWV355qE5bGA6YOo5Z2Q5qCHICovXHJcbiAgICBwcml2YXRlIGdldFBvc2l0aW9uSW5WaWV3KGl0ZW0pIHtcclxuICAgICAgICBsZXQgd29ybGRQb3MgPSBpdGVtLnBhcmVudC5jb252ZXJ0VG9Xb3JsZFNwYWNlQVIoaXRlbS5wb3NpdGlvbik7XHJcbiAgICAgICAgbGV0IHZpZXdQb3MgPSB0aGlzLnNjcm9sbFZpZXcubm9kZS5jb252ZXJ0VG9Ob2RlU3BhY2VBUih3b3JsZFBvcyk7XHJcbiAgICAgICAgcmV0dXJuIHZpZXdQb3M7XHJcbiAgICB9XHJcblxyXG4gICAgLyoq6I635Y+W5YiX6KGo5pWw5o2uICovXHJcbiAgICBwdWJsaWMgZ2V0TGlzdERhdGEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbURhdGFMaXN0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5aKe5Yqg5LiA6aG55pWw5o2u5Yiw5YiX6KGo55qE5pyr5bC+XHJcbiAgICAgKiBAcGFyYW0gZGF0YSDmlbDmja5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZEl0ZW0oZGF0YTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5pdGVtRGF0YUxpc3QucHVzaChkYXRhKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWinuWKoOS4gOmhueaVsOaNruWIsOWIl+ihqOaMh+WumuS9jee9rlxyXG4gICAgICogQHBhcmFtIGluZGV4ICAg5L2N572u77yMMOihqOekuuesrDHpoblcclxuICAgICAqIEBwYXJhbSBkYXRhICDmlbDmja5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZEl0ZW1BdChpbmRleDogbnVtYmVyLCBkYXRhOiBhbnkpIHtcclxuICAgICAgICBpZiAodGhpcy5pdGVtRGF0YUxpc3RbaW5kZXhdICE9IG51bGwgfHwgdGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoID09IGluZGV4KSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXRlbURhdGFMaXN0LnNwbGljZShpbmRleCwgMSwgZGF0YSk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWIoOmZpOS4gOmhueaVsOaNrlxyXG4gICAgICogQHBhcmFtIGluZGV4IOWIoOmZpOmhueeahOS9jee9riAsMOihqOekuuesrDHpoblcclxuICAgICAqL1xyXG4gICAgcHVibGljIGRlbGV0ZUl0ZW0oaW5kZXg6IG51bWJlcikge1xyXG4gICAgICAgIGlmICh0aGlzLml0ZW1EYXRhTGlzdFtpbmRleF0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1EYXRhTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmlLnlj5jkuIDpobnmlbDmja5cclxuICAgICAqIEBwYXJhbSBpbmRleCAgIOS9jee9riww6KGo56S656ysMemhuVxyXG4gICAgICogQHBhcmFtIGRhdGEgIOabv+aNoueahOaVsOaNrlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2hhbmdlSXRlbShpbmRleDogbnVtYmVyLCBkYXRhOiBhbnkpIHtcclxuICAgICAgICBpZiAodGhpcy5pdGVtRGF0YUxpc3RbaW5kZXhdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5pdGVtRGF0YUxpc3RbaW5kZXhdID0gZGF0YTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKuiOt+WPluesrOS4gOS4qkl0ZW3nmoTkvY3nva4gKi9cclxuICAgIHByaXZhdGUgdXBkYXRlQ29udGVudCgpIHtcclxuICAgICAgICAvL+aYvuekuuWIl+ihqOWunuS+i+S4ujDkuKpcclxuICAgICAgICBpZiAodGhpcy5pdGVtTGlzdC5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvdW50TGlzdFBhcmFtKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlTGlzdCgwLCBuZXcgY2MuVmVjMigwLCAwKSk7XHJcbiAgICAgICAgICAgIC8v5pi+56S65YiX6KGo55qE5a6e5L6L5LiN5Li6MOS4qu+8jOWImemcgOimgemHjeaWsOaOkuWIl2l0ZW3lrp7kvovmlbDnu4RcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLlZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1MaXN0LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIueSAtIGEueTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5Ib3Jpem9udGFsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1MaXN0LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEueCAtIGIueDtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGFydEF4aXMgPT0gU3RhcnRBeGlzVHlwZS5WZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUxpc3Quc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEueCAtIGIueDtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1MaXN0LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiLnkgLSBhLnk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuSG9yaXpvbnRhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbUxpc3Quc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGIueSAtIGEueTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1MaXN0LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnggLSBiLng7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuY291bnRMaXN0UGFyYW0oKTtcclxuXHJcbiAgICAgICAgICAgIC8v6I635Y+W56ys5LiA5LiqaXRlbeWunuS+i+mcgOimgeaYvuekuueahOaVsOaNrue0ouW8lVxyXG4gICAgICAgICAgICB2YXIgc3RhcnRJbmRleCA9IHRoaXMuaXRlbUxpc3RbMF0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpLml0ZW1JbmRleDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCAmJiB0aGlzLnN0YXJ0QXhpcyA9PSBTdGFydEF4aXNUeXBlLlZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICBzdGFydEluZGV4ICs9IChzdGFydEluZGV4ICsgdGhpcy5zcGF3bkNvdW50KSAlIHRoaXMuZ3JpZENvbDtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCAmJiB0aGlzLnN0YXJ0QXhpcyA9PSBTdGFydEF4aXNUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggKz0gKHN0YXJ0SW5kZXggKyB0aGlzLnNwYXduQ291bnQpICUgdGhpcy5ncmlkUm93O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL2dldFNjcm9sbE9mZnNldCgp5ZKMc2Nyb2xsVG9PZmZzZXQoKeeahHjlgLzmmK/nm7jlj43nmoRcclxuICAgICAgICAgICAgdmFyIG9mZnNldDogY2MuVmVjMiA9IHRoaXMuc2Nyb2xsVmlldy5nZXRTY3JvbGxPZmZzZXQoKTtcclxuICAgICAgICAgICAgb2Zmc2V0LnggPSAtIG9mZnNldC54O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVMaXN0KHN0YXJ0SW5kZXgsIG9mZnNldCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKumUgOavgSAqL1xyXG4gICAgcHVibGljIG9uRGVzdHJveSgpIHtcclxuICAgICAgICAvL+a4heeQhuWIl+ihqOmhuVxyXG4gICAgICAgIGxldCBsZW4gPSB0aGlzLml0ZW1MaXN0Lmxlbmd0aDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChjYy5pc1ZhbGlkKHRoaXMuaXRlbUxpc3RbaV0sIHRydWUpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1MaXN0W2ldLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLml0ZW1MaXN0Lmxlbmd0aCA9IDA7XHJcbiAgICAgICAgLy/muIXnkIblr7nosaHmsaBcclxuICAgICAgICBsZW4gPSB0aGlzLml0ZW1Qb29sLmxlbmd0aDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChjYy5pc1ZhbGlkKHRoaXMuaXRlbVBvb2xbaV0sIHRydWUpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1Qb29sW2ldLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLml0ZW1Qb29sLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgLy/muIXnkIbliJfooajmlbDmja5cclxuICAgICAgICB0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGggPSAwO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
||
//------QC-SOURCE-SPLIT------
|
||
|
||
(function() {
|
||
var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
|
||
var __module = nodeEnv ? module : {exports:{}};
|
||
var __filename = 'preview-scripts/assets/Script/Camera.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, 'ba5152SuShBF7Gc5uHiGsp0', 'Camera');
|
||
// Script/Camera.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 GameManager_1 = require("./GameManager");
|
||
var Notification_1 = require("./tool/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;
|
||
_this.label = null;
|
||
_this.text = 'hello';
|
||
return _this;
|
||
// update (dt) {}
|
||
}
|
||
// LIFE-CYCLE CALLBACKS:
|
||
// onLoad () {}
|
||
NewClass.prototype.start = function () {
|
||
this.node.on(cc.Node.EventType.TOUCH_START, this.jump, this);
|
||
};
|
||
NewClass.prototype.jump = function () {
|
||
if (GameManager_1.default._instance) {
|
||
if (GameManager_1.default._instance.over == false && GameManager_1.default._instance.begin == true) {
|
||
Notification_1.Notification.emit("jump", null);
|
||
}
|
||
}
|
||
else if (GameData_1.default._instance.GM_INFO.probation == true) {
|
||
Notification_1.Notification.emit("jump", null);
|
||
}
|
||
};
|
||
__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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxDYW1lcmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7QUFDbEYsdUNBQWtDO0FBQ2xDLDZDQUF3QztBQUN4QyxvREFBbUQ7QUFDN0MsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFHMUM7SUFBc0MsNEJBQVk7SUFBbEQ7UUFBQSxxRUE4QkM7UUEzQkcsV0FBSyxHQUFhLElBQUksQ0FBQztRQUd2QixVQUFJLEdBQVcsT0FBTyxDQUFDOztRQXVCdkIsaUJBQWlCO0lBQ3JCLENBQUM7SUF0Qkcsd0JBQXdCO0lBRXhCLGVBQWU7SUFFZix3QkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELHVCQUFJLEdBQUo7UUFDSSxJQUFHLHFCQUFXLENBQUMsU0FBUyxFQUFDO1lBQ3JCLElBQUcscUJBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLEtBQUssSUFBSSxxQkFBVyxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFDO2dCQUMxRSwyQkFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUMsSUFBSSxDQUFDLENBQUM7YUFDbEM7U0FDSjthQUNJLElBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUM7WUFDakQsMkJBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2xDO0lBRUwsQ0FBQztJQXZCRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOzJDQUNJO0lBR3ZCO1FBREMsUUFBUTswQ0FDYztJQU5OLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0E4QjVCO0lBQUQsZUFBQztDQTlCRCxBQThCQyxDQTlCcUMsRUFBRSxDQUFDLFNBQVMsR0E4QmpEO2tCQTlCb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuaW1wb3J0IEdhbWVEYXRhIGZyb20gJy4vR2FtZURhdGEnO1xyXG5pbXBvcnQgR2FtZU1hbmFnZXIgZnJvbSAnLi9HYW1lTWFuYWdlcic7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbiB9IGZyb20gJy4vdG9vbC9Ob3RpZmljYXRpb24nO1xyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld0NsYXNzIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX1NUQVJULCB0aGlzLmp1bXAsIHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGp1bXAoKXtcclxuICAgICAgICBpZihHYW1lTWFuYWdlci5faW5zdGFuY2Upe1xyXG4gICAgICAgICAgICBpZihHYW1lTWFuYWdlci5faW5zdGFuY2Uub3ZlciA9PSBmYWxzZSAmJiBHYW1lTWFuYWdlci5faW5zdGFuY2UuYmVnaW4gPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24uZW1pdChcImp1bXBcIixudWxsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnByb2JhdGlvbiA9PSB0cnVlKXtcclxuICAgICAgICAgICAgTm90aWZpY2F0aW9uLmVtaXQoXCJqdW1wXCIsbnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICBcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0=
|
||
//------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, '53de0OgdaRLNq9UFqvuJI/u', '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 _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
|
||
var NewClass = /** @class */ (function (_super) {
|
||
__extends(NewClass, _super);
|
||
function NewClass() {
|
||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||
_this.label = null;
|
||
_this.text = 'hello';
|
||
return _this;
|
||
// update (dt) {}
|
||
}
|
||
// LIFE-CYCLE CALLBACKS:
|
||
// onLoad () {}
|
||
NewClass.prototype.start = function () {
|
||
};
|
||
NewClass.prototype.reStart = function () {
|
||
cc.director.loadScene("GameScene");
|
||
};
|
||
__decorate([
|
||
property(cc.Label)
|
||
], NewClass.prototype, "label", void 0);
|
||
__decorate([
|
||
property
|
||
], NewClass.prototype, "text", void 0);
|
||
NewClass = __decorate([
|
||
ccclass
|
||
], NewClass);
|
||
return NewClass;
|
||
}(cc.Component));
|
||
exports.default = NewClass;
|
||
|
||
cc._RF.pop();
|
||
}
|
||
if (nodeEnv) {
|
||
__define(__module.exports, __require, __module);
|
||
}
|
||
else {
|
||
__quick_compile_project__.registerModuleFunc(__filename, function () {
|
||
__define(__module.exports, __require, __module);
|
||
});
|
||
}
|
||
})();
|
||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lT3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQXFCQztRQWxCRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7O1FBY3ZCLGlCQUFpQjtJQUNyQixDQUFDO0lBYkcsd0JBQXdCO0lBRXhCLGVBQWU7SUFFZix3QkFBSyxHQUFMO0lBRUEsQ0FBQztJQUVELDBCQUFPLEdBQVA7UUFDSSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBZkQ7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzsyQ0FDSTtJQUd2QjtRQURDLFFBQVE7MENBQ2M7SUFOTixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBcUI1QjtJQUFELGVBQUM7Q0FyQkQsQUFxQkMsQ0FyQnFDLEVBQUUsQ0FBQyxTQUFTLEdBcUJqRDtrQkFyQm9CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld0NsYXNzIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJlU3RhcnQoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0=
|
||
//------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, '35a73aTEIBAZoXKp/xutwzU', 'GameTool');
|
||
// Script/tool/GameTool.ts
|
||
|
||
"use strict";
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
exports.GameTool = void 0;
|
||
var GameData_1 = require("../GameData");
|
||
var HttpUtil_1 = require("../crypto/HttpUtil");
|
||
var Storage_1 = require("./Storage");
|
||
//最大工具类
|
||
var GameTool = {
|
||
_startTime: 0,
|
||
_endTime: 0,
|
||
_totalTime: 0,
|
||
getSeedRandom: function (min, max) {
|
||
max = max || 1;
|
||
min = min || 0;
|
||
GameData_1.default._instance.GM_INFO.currSeed = (GameData_1.default._instance.GM_INFO.currSeed * 9301 + 49297) % 233280;
|
||
var rnd = GameData_1.default._instance.GM_INFO.currSeed / 233280.0;
|
||
var tmp = min + rnd * (max - min);
|
||
return Math.floor(tmp);
|
||
},
|
||
//获取userId
|
||
Authentication: function () {
|
||
var name = "user_" + GameData_1.default._instance.GM_INFO.gameId;
|
||
var data = JSON.parse(localStorage.getItem(name));
|
||
if (data == "undifend" || data == null || data == "") {
|
||
var url = "https://api.sparkus.cn/api/user/auth/login?domain=hui32579WdYPsgYq&callback=" +
|
||
encodeURIComponent(location.href);
|
||
window.location.href = url;
|
||
}
|
||
else {
|
||
if (!this.isNumber(data.userId)) {
|
||
var url = "https://api.sparkus.cn/api/user/auth/login?domain=hui32579WdYPsgYq&callback=" +
|
||
encodeURIComponent(location.href);
|
||
console.log("链接不合法", url);
|
||
window.location.href = url;
|
||
}
|
||
else {
|
||
Storage_1.StorageMessage.setStorage(name, data);
|
||
GameData_1.default._instance.GM_INFO.userId = parseInt(data.userId);
|
||
}
|
||
}
|
||
},
|
||
isNumber: function (value) {
|
||
var result = false;
|
||
result = typeof value === 'number';
|
||
if (result)
|
||
if (value < 200000)
|
||
result = false;
|
||
return result;
|
||
},
|
||
//埋点上传
|
||
setGameData: function () {
|
||
//GAME_DATA 初始化 每次清零
|
||
GameData_1.default._instance.GAME_DATA = [];
|
||
GameData_1.default._instance.GAME_DATA.push(GameData_1.default._instance.CLICK_DATA);
|
||
//GAME_DATA 赋值后 CLICK_DATA清零
|
||
GameData_1.default._instance.CLICK_init();
|
||
var matchId = this.getMatchId(GameData_1.default._instance.GAME_DATA[0].round);
|
||
var postData = {
|
||
"matchId": matchId,
|
||
"scode": GameData_1.default._instance.GM_INFO.scode,
|
||
"data": GameData_1.default._instance.GAME_DATA
|
||
};
|
||
console.log("上传数据:", postData);
|
||
HttpUtil_1.default.uploadUserLogData(postData, function () { });
|
||
},
|
||
setRank: function () {
|
||
//GAME_DATA 初始化 每次清零
|
||
var postData = {
|
||
"type": 1,
|
||
"round": "1",
|
||
"score": GameData_1.default._instance.GM_INFO.score,
|
||
"success": GameData_1.default._instance.GM_INFO.success
|
||
};
|
||
HttpUtil_1.default.rankData(1, function () { }, postData);
|
||
},
|
||
//获取matchId 用于上传每次点击数据里面记录id方便查询
|
||
getMatchId: function (level) {
|
||
var matchId = cc.sys.localStorage.getItem("matchId");
|
||
if (matchId == "undifend" || matchId == null) {
|
||
matchId = this.setMatchId();
|
||
}
|
||
else {
|
||
if (this.containsNanana(matchId) == true) {
|
||
matchId = this.setMatchId();
|
||
}
|
||
else {
|
||
var char = parseInt(cc.sys.localStorage.getItem("matchNumber"));
|
||
if (level == 1) {
|
||
char += 1;
|
||
cc.sys.localStorage.setItem("matchNumber", char);
|
||
}
|
||
matchId = matchId.slice(0, 10) + char + "";
|
||
GameData_1.default._instance.GM_INFO.matchId = matchId;
|
||
cc.sys.localStorage.setItem("matchId", matchId);
|
||
}
|
||
}
|
||
return matchId;
|
||
},
|
||
//检测matchId 如果有缓存以前的nanana数据清除
|
||
containsNanana: function (str) {
|
||
return /na/i.test(str);
|
||
},
|
||
//重新设置MatchId
|
||
setMatchId: function () {
|
||
// 定义包含可用字符的字符集
|
||
var characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
||
// 创建一个数组以保存随机字符
|
||
var uuidArray = [];
|
||
// 循环10次 生成10位的UUID
|
||
for (var i = 0; i < 10; i++) {
|
||
// 生成随机索引,范围是字符集的长度
|
||
var randomIndex = Math.floor(Math.random() * characters.length);
|
||
// 从字符集中获取随机字符
|
||
var randomChar = characters.charAt(randomIndex);
|
||
// 将字符添加到数组中
|
||
uuidArray.push(randomChar);
|
||
}
|
||
var data = uuidArray.join('') + 1 + "";
|
||
cc.sys.localStorage.setItem("matchNumber", 1);
|
||
cc.sys.localStorage.setItem("matchId", data);
|
||
GameData_1.default._instance.GM_INFO.matchId = data;
|
||
return data;
|
||
},
|
||
getSetScreenResolutionFlag: function () {
|
||
var size = cc.winSize;
|
||
var width = size.width;
|
||
var height = size.height;
|
||
if ((height / width) > (16.2 / 9))
|
||
return false;
|
||
return true;
|
||
},
|
||
//判断全面屏适配
|
||
setFit: function () {
|
||
var flag = GameTool.getSetScreenResolutionFlag();
|
||
if (flag) {
|
||
// console.log("不是全面屏");
|
||
}
|
||
else {
|
||
// console.log("是全面屏");
|
||
}
|
||
return flag;
|
||
},
|
||
getTip: function () {
|
||
var index = Math.floor(Math.random() * 4) + 1;
|
||
switch (index) {
|
||
case 1: {
|
||
return "根据小球的位置,合理晃动手机,确保小球不掉出木板。";
|
||
}
|
||
case 2: {
|
||
return "根据小球位置控制晃动幅度,过大或过小都不是个好选择。";
|
||
}
|
||
case 3: {
|
||
return "不要被天上掉落的障碍吓到,有时候它反而会帮你保持平衡。";
|
||
}
|
||
case 4: {
|
||
return "尝试着顶开掉落的障碍,是个很酷的玩法。";
|
||
}
|
||
}
|
||
},
|
||
beginTiming: function () {
|
||
this._startTime = new Date().getTime();
|
||
},
|
||
endTiming: function () {
|
||
this._endTime = new Date().getTime();
|
||
// this._totalTime = endTime - this._startTime;
|
||
},
|
||
//如果是判断时常的游戏 调用此方法
|
||
updateScoreTime: function () {
|
||
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);
|
||
GameData_1.default._instance.GM_INFO.currScore = this._totalTime;
|
||
this._startTime = endTime;
|
||
},
|
||
//倒计时调用此方法
|
||
countDown: function () {
|
||
this._endTime = new Date().getTime();
|
||
this._totalTime = Math.floor((this._endTime - this._startTime) / 1000);
|
||
GameData_1.default._instance.GM_INFO.remainingTime = GameData_1.default._instance.GM_INFO.totalTime - this._totalTime;
|
||
},
|
||
getGameInfo: function (node) {
|
||
var jg = false;
|
||
return jg;
|
||
},
|
||
//根据服务器数据重置所需要所有数据
|
||
reset: function () {
|
||
// console.log("本地数据丢失,重新启动游戏");
|
||
cc.director.loadScene('LoadScene');
|
||
},
|
||
setGameInfo: function (pd) {
|
||
},
|
||
//输入秒,返回需要展示时间格式
|
||
getTimeMargin: function (second) {
|
||
var total = second;
|
||
var hour = Math.floor(total / (60 * 60)); //计算整数小时数
|
||
var afterHour = total - hour * 60 * 60; //取得算出小时数后剩余的秒数
|
||
var min = Math.floor(afterHour / 60); //计算整数分
|
||
var afterMin = total - hour * 60 * 60 - min * 60; //取得算出分后剩余的秒数
|
||
return '剩余:' + hour + ':' + min + ':' + afterMin;
|
||
},
|
||
getTimeMargin2: function (second) {
|
||
var total = second;
|
||
var min = null;
|
||
var afterMin = null;
|
||
var hour = Math.floor(total / (60 * 60)); //计算整数小时数
|
||
var afterHour = total - hour * 60 * 60; //取得算出小时数后剩余的秒数
|
||
min = Math.floor(afterHour / 60); //计算整数分
|
||
if (min < 10)
|
||
min = "0" + min;
|
||
afterMin = total - hour * 60 * 60 - min * 60; //取得算出分后剩余的秒数
|
||
if (afterMin < 10)
|
||
afterMin = "0" + afterMin;
|
||
return '剩余:' + min + ':' + afterMin;
|
||
},
|
||
//将时间转换为59:23
|
||
getTime: function (time) {
|
||
var label = "";
|
||
var number_1 = null;
|
||
var number_2 = null;
|
||
number_1 = Math.floor(time / 60);
|
||
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;
|
||
},
|
||
//number 为传进来的数值,type为最多显示几位数
|
||
getNumber: function (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 = Math.floor(number / Math.pow(count, 8) * 10) / 10 + "S";
|
||
else
|
||
number = Math.floor(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 = Math.floor(number / Math.pow(count, 7) * 10) / 10 + "s";
|
||
else
|
||
number = Math.floor(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 = Math.floor(number / Math.pow(count, 6) * 10) / 10 + "Q";
|
||
else
|
||
number = Math.floor(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 = Math.floor(number / Math.pow(count, 5) * 10) / 10 + "q";
|
||
else
|
||
number = Math.floor(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 = Math.floor(number / Math.pow(count, 4) * 10) / 10 + "t";
|
||
else
|
||
number = Math.floor(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 = Math.floor(number / Math.pow(count, 3) * 10) / 10 + "b";
|
||
else
|
||
number = Math.floor(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 = Math.floor(number / Math.pow(count, 2) * 10) / 10 + "m";
|
||
else
|
||
number = Math.floor(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 = Math.floor(number / Math.pow(count, 1) * 10) / 10 + "k";
|
||
}
|
||
else
|
||
number = Math.floor(number / Math.pow(count, 1)) + "k";
|
||
}
|
||
else {
|
||
number = Math.floor(number / Math.pow(count, 0)) + "";
|
||
}
|
||
// console.log("结果为"+type+"位数",number);
|
||
return number;
|
||
},
|
||
begainTiming: function () {
|
||
this._startTime = new Date().getTime();
|
||
},
|
||
endTiming2: function () {
|
||
var endTime = new Date().getTime();
|
||
this._endTime = endTime;
|
||
this._totalTime = endTime - this._startTime;
|
||
},
|
||
getScoreTime: function () {
|
||
var endTime = new Date().getTime();
|
||
var tempTime = endTime - this._startTime;
|
||
if (tempTime < 0 || tempTime > 500) {
|
||
tempTime = Math.round(cc.director.getAnimationInterval() * 1000);
|
||
}
|
||
GameData_1.default._instance.GM_INFO.currScore += tempTime;
|
||
this._startTime = endTime;
|
||
},
|
||
getFormatTime: function (time) {
|
||
var date = new Date();
|
||
date.setTime(time);
|
||
var ms = date.getMilliseconds();
|
||
// let msString = date.getMilliseconds();
|
||
var msString = null;
|
||
var secondString = null;
|
||
var minString = null;
|
||
msString = Math.floor(ms / 10) % 100;
|
||
secondString = date.getSeconds();
|
||
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;
|
||
},
|
||
pushLister: function () {
|
||
},
|
||
removeAllLister: function () {
|
||
},
|
||
};
|
||
exports.GameTool = GameTool;
|
||
|
||
cc._RF.pop();
|
||
}
|
||
if (nodeEnv) {
|
||
__define(__module.exports, __require, __module);
|
||
}
|
||
else {
|
||
__quick_compile_project__.registerModuleFunc(__filename, function () {
|
||
__define(__module.exports, __require, __module);
|
||
});
|
||
}
|
||
})();
|
||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFx0b29sXFxHYW1lVG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3Q0FBbUM7QUFDbkMsK0NBQTBDO0FBQzFDLHFDQUEyQztBQUMzQyxPQUFPO0FBQ1AsSUFBSSxRQUFRLEdBQUc7SUFDWCxVQUFVLEVBQUUsQ0FBQztJQUNiLFFBQVEsRUFBRSxDQUFDO0lBQ1gsVUFBVSxFQUFFLENBQUM7SUFDYixhQUFhLEVBQUUsVUFBVSxHQUFHLEVBQUUsR0FBRztRQUM3QixHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNmLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2Ysa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLGtCQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUNwRyxJQUFJLEdBQUcsR0FBRyxrQkFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6RCxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQ0QsVUFBVTtJQUNWLGNBQWM7UUFDVixJQUFJLElBQUksR0FBRyxPQUFPLEdBQUcsa0JBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUN2RCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNsRCxJQUFHLElBQUksSUFBSSxVQUFVLElBQUksSUFBSSxJQUFFLElBQUksSUFBSSxJQUFJLElBQUksRUFB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LEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQSxlQUFlO1FBQ3RELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUEsT0FBTztRQUM1QyxJQUFJLFFBQVEsR0FBRyxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFBLGFBQWE7UUFDOUQsT0FBTyxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQTtJQUNwRCxDQUFDO0lBRUQsY0FBYyxFQUFDLFVBQUMsTUFBTTtRQUNsQixJQUFJLEtBQUssR0FBRyxNQUFNLENBQUM7UUFDbkIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDO1FBQ2YsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxTQUFTO1FBQ2xELElBQUksU0FBUyxHQUFHLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFBLGVBQWU7UUFDdEQsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUEsT0FBTztRQUN4QyxJQUFHLEdBQUcsR0FBRyxFQUFFO1lBQUUsR0FBRyxHQUFHLEdBQUcsR0FBQyxHQUFHLENBQUM7UUFDM0IsUUFBUSxHQUFHLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUEsYUFBYTtRQUMxRCxJQUFHLFFBQVEsR0FBRyxFQUFFO1lBQUUsUUFBUSxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUM7UUFDNUMsT0FBTyxLQUFLLEdBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxR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QUFFO1lBQ2hCLFNBQVMsR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDO1NBQy9CO1FBQ0QsU0FBUyxHQUFHLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDNUIsT0FBTyxTQUFTLEdBQUcsWUFBWSxHQUFHLFFBQVEsQ0FBQztJQUUvQyxDQUFDO0lBQ0QsVUFBVSxFQUFDO0lBRVgsQ0FBQztJQUNELGVBQWUsRUFBQztJQUVoQixDQUFDO0NBRUosQ0FBQztBQUNPLDRCQUFRIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEdhbWVEYXRhIGZyb20gXCIuLi9HYW1lRGF0YVwiO1xyXG5pbXBvcnQgSHR0cFV0aWwgZnJvbSBcIi4uL2NyeXB0by9IdHRwVXRpbFwiO1xyXG5pbXBvcnQgeyBTdG9yYWdlTWVzc2FnZSB9IGZyb20gXCIuL1N0b3JhZ2VcIjtcclxuLy/mnIDlpKflt6XlhbfnsbtcclxudmFyIEdhbWVUb29sID0ge1xyXG4gICAgX3N0YXJ0VGltZTogMCxcclxuICAgIF9lbmRUaW1lOiAwLFxyXG4gICAgX3RvdGFsVGltZTogMCxcclxuICAgIGdldFNlZWRSYW5kb206IGZ1bmN0aW9uIChtaW4sIG1heCkgey8v5YyF5ZCrbWluIOS4jeWMheWQq21heFxyXG4gICAgICAgIG1heCA9IG1heCB8fCAxO1xyXG4gICAgICAgIG1pbiA9IG1pbiB8fCAwO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmN1cnJTZWVkID0gKEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmN1cnJTZWVkICogOTMwMSArIDQ5Mjk3KSAlIDIzMzI4MDtcclxuICAgICAgICBsZXQgcm5kID0gR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uY3VyclNlZWQgLyAyMzMyODAuMDtcclxuICAgICAgICBsZXQgdG1wID0gbWluICsgcm5kICogKG1heCAtIG1pbik7XHJcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodG1wKTtcclxuICAgIH0sXHJcbiAgICAvL+iOt+WPlnVzZXJJZFxyXG4gICAgQXV0aGVudGljYXRpb24oKXtcclxuICAgICAgICBsZXQgbmFtZSA9IFwidXNlcl9cIiArIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLmdhbWVJZDtcclxuICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0obmFtZSkpO1xyXG4gICAgICAgIGlmKGRhdGEgPT0gXCJ1bmRpZmVuZFwiIHx8IGRhdGE9PW51bGwgfHwgZGF0YSA9PSBcIlwiKXtcclxuICAgICAgICAgICAgbGV0IHVybCA9IFwiaHR0cHM6Ly9hcGkuc3Bhcmt1cy5jbi9hcGkvdXNlci9hdXRoL2xvZ2luP2RvbWFpbj1odWkzMjU3OVdkWVBzZ1lxJmNhbGxiYWNrPVwiKyBcclxuICAgICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KGxvY2F0aW9uLmhyZWYpO1xyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHVybDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgaWYoIXRoaXMuaXNOdW1iZXIoZGF0YS51c2VySWQpKXtcclxuICAgICAgICAgICAgICAgIGxldCB1cmwgPSBcImh0dHBzOi8vYXBpLnNwYXJrdXMuY24vYXBpL3VzZXIvYXV0aC9sb2dpbj9kb21haW49aHVpMzI1NzlXZFlQc2dZcSZjYWxsYmFjaz1cIitcclxuICAgICAgICAgICAgICAgIGVuY29kZVVSSUNvbXBvbmVudChsb2NhdGlvbi5ocmVmKTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi6ZO+5o6l5LiN5ZCI5rOVXCIsdXJsKTtcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBTdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKG5hbWUsZGF0YSk7XHJcbiAgICAgICAgICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy51c2VySWQgPSBwYXJzZUludChkYXRhLnVzZXJJZCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBpc051bWJlcih2YWx1ZSkge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICByZXN1bHQgPSB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO1xyXG4gICAgICAgIGlmKHJlc3VsdCkgaWYodmFsdWUgPCAyMDAwMDApIHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9LFxyXG5cclxuICAgIC8v5Z+L54K55LiK5LygXHJcbiAgICBzZXRHYW1lRGF0YSgpe1xyXG4gICAgICAgIC8vR0FNRV9EQVRBIOWIneWni+WMliDmr4/mrKHmuIXpm7ZcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR0FNRV9EQVRBID0gW107XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdBTUVfREFUQS5wdXNoKEdhbWVEYXRhLl9pbnN0YW5jZS5DTElDS19EQVRBKTtcclxuICAgICAgICAvL0dBTUVfREFUQSDotYvlgLzlkI4gQ0xJQ0tfREFUQea4hembtiBcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuQ0xJQ0tfaW5pdCgpO1xyXG5cclxuICAgICAgICBsZXQgbWF0Y2hJZCA9IHRoaXMuZ2V0TWF0Y2hJZChHYW1lRGF0YS5faW5zdGFuY2UuR0FNRV9EQVRBWzBdLnJvdW5kKTtcclxuICAgICAgICBsZXQgcG9zdERhdGEgPSB7XHJcbiAgICAgICAgICAgIFwibWF0Y2hJZFwiOm1hdGNoSWQsXHJcbiAgICAgICAgICAgIFwic2NvZGVcIjpHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5zY29kZSxcclxuICAgICAgICAgICAgXCJkYXRhXCI6IEdhbWVEYXRhLl9pbnN0YW5jZS5HQU1FX0RBVEFcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5Lyg5pWw5o2uOlwiLHBvc3REYXRhKTtcclxuICAgICAgICBIdHRwVXRpbC51cGxvYWRVc2VyTG9nRGF0YShwb3N0RGF0YSxmdW5jdGlvbigpe30pXHJcbiAgICB9LFxyXG5cclxuICAgIHNldFJhbmsoKXtcclxuICAgICAgICAvL0dBTUVfREFUQSDliJ3lp4vljJYg5q+P5qyh5riF6Zu2XHJcbiAgICAgICAgbGV0IHBvc3REYXRhID0ge1xyXG4gICAgICAgICAgICBcInR5cGVcIjoxLFxyXG4gICAgICAgICAgICBcInJvdW5kXCI6XCIxXCIsXHJcbiAgICAgICAgICAgIFwic2NvcmVcIjogR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uc2NvcmUsXHJcbiAgICAgICAgICAgIFwic3VjY2Vzc1wiOiBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5zdWNjZXNzXHJcbiAgICAgICAgfTtcclxuICAgICAgICBIdHRwVXRpbC5yYW5rRGF0YSgxLGZ1bmN0aW9uKCl7fSxwb3N0RGF0YSk7XHJcbiAgICB9LFxyXG5cclxuICAgIC8v6I635Y+WbWF0Y2hJZCAg55So5LqO5LiK5Lyg5q+P5qyh54K55Ye75pWw5o2u6YeM6Z2i6K6w5b2VaWTmlrnkvr/mn6Xor6JcclxuICAgIGdldE1hdGNoSWQgKGxldmVsKXtcclxuICAgICAgICBsZXQgbWF0Y2hJZCA9IGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIm1hdGNoSWRcIik7XHJcbiAgICAgICAgaWYobWF0Y2hJZCA9PSBcInVuZGlmZW5kXCIgfHwgbWF0Y2hJZD09bnVsbCl7XHJcbiAgICAgICAgICAgIG1hdGNoSWQgPSAgdGhpcy5zZXRNYXRjaElkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuY29udGFpbnNOYW5hbmEobWF0Y2hJZCkgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICBtYXRjaElkID0gIHRoaXMuc2V0TWF0Y2hJZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2hhciAgPSBwYXJzZUludChjYy5zeXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJtYXRjaE51bWJlclwiKSk7XHJcbiAgICAgICAgICAgICAgICBpZihsZXZlbCA9PSAxKXtcclxuICAgICAgICAgICAgICAgICAgICBjaGFyICs9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgY2Muc3lzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKFwibWF0Y2hOdW1iZXJcIixjaGFyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG1hdGNoSWQgID0gbWF0Y2hJZC5zbGljZSgwLCAxMCkgKyBjaGFyICsgXCJcIjtcclxuICAgICAgICAgICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLm1hdGNoSWQgPSBtYXRjaElkO1xyXG4gICAgICAgICAgICAgICAgY2Muc3lzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKFwibWF0Y2hJZFwiLG1hdGNoSWQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtYXRjaElkO1xyXG4gICAgfSxcclxuICAgIC8v5qOA5rWLbWF0Y2hJZCDlpoLmnpzmnInnvJPlrZjku6XliY3nmoRuYW5hbmHmlbDmja7muIXpmaRcclxuICAgIGNvbnRhaW5zTmFuYW5hKHN0cikge1xyXG4gICAgICAgIHJldHVybiAvbmEvaS50ZXN0KHN0cik7XHJcbiAgICB9LFxyXG4gICAgLy/ph43mlrDorr7nva5NYXRjaElkXHJcbiAgICBzZXRNYXRjaElkICgpe1xyXG4gICAgICAgIC8vIOWumuS5ieWMheWQq+WPr+eUqOWtl+espueahOWtl+espumbhlxyXG4gICAgICAgIGNvbnN0IGNoYXJhY3RlcnMgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODknO1xyXG4gICAgICAgIC8vIOWIm+W7uuS4gOS4quaVsOe7hOS7peS/neWtmOmaj+acuuWtl+esplxyXG4gICAgICAgIGNvbnN0IHV1aWRBcnJheSA9IFtdO1xyXG4gICAgICAgIC8vIOW+queOrzEw5qyhIOeUn+aIkDEw5L2N55qEVVVJRFxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgLy8g55Sf5oiQ6ZqP5py657Si5byV77yM6IyD5Zu05piv5a2X56ym6ZuG55qE6ZW/5bqmXHJcbiAgICAgICAgICAgIGNvbnN0IHJhbmRvbUluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcmFjdGVycy5sZW5ndGgpO1xyXG4gICAgICAgICAgICAvLyDku47lrZfnrKbpm4bkuK3ojrflj5bpmo/mnLrlrZfnrKZcclxuICAgICAgICAgICAgY29uc3QgcmFuZG9tQ2hhciA9IGNoYXJhY3RlcnMuY2hhckF0KHJhbmRvbUluZGV4KTtcclxuICAgICAgICAgICAgLy8g5bCG5a2X56ym5re75Yqg5Yiw5pWw57uE5LitXHJcbiAgICAgICAgICAgIHV1aWRBcnJheS5wdXNoKHJhbmRvbUNoYXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZGF0YSA9ICB1dWlkQXJyYXkuam9pbignJykgKyAxICsgXCJcIjtcclxuICAgICAgICBjYy5zeXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJtYXRjaE51bWJlclwiLDEpO1xyXG4gICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIm1hdGNoSWRcIixkYXRhKTtcclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5tYXRjaElkID0gZGF0YTtcclxuICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgIH0sXHJcbiAgICBcclxuICAgIGdldFNldFNjcmVlblJlc29sdXRpb25GbGFnOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgbGV0IHNpemUgPSBjYy53aW5TaXplO1xyXG4gICAgICAgIGxldCB3aWR0aCA9IHNpemUud2lkdGg7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IHNpemUuaGVpZ2h0O1xyXG4gICAgICAgIGlmICgoaGVpZ2h0IC8gd2lkdGgpID4gKDE2LjIgLyA5KSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSxcclxuICAgIC8v5Yik5pat5YWo6Z2i5bGP6YCC6YWNXHJcbiAgICBzZXRGaXQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBsZXQgZmxhZyA9IEdhbWVUb29sLmdldFNldFNjcmVlblJlc29sdXRpb25GbGFnKCk7XHJcbiAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICBcdC8vIGNvbnNvbGUubG9nKFwi5LiN5piv5YWo6Z2i5bGPXCIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgXHQvLyBjb25zb2xlLmxvZyhcIuaYr+WFqOmdouWxj1wiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZsYWc7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldFRpcDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGxldCBpbmRleCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDQpICsgMTtcclxuICAgICAgICBzd2l0Y2ggKGluZGV4KSB7XHJcbiAgICAgICAgICAgIGNhc2UgMToge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwi5qC55o2u5bCP55CD55qE5L2N572u77yM5ZCI55CG5pmD5Yqo5omL5py677yM56Gu5L+d5bCP55CD5LiN5o6J5Ye65pyo5p2/44CCXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXNlIDI6IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIuagueaNruWwj+eQg+S9jee9ruaOp+WItuaZg+WKqOW5heW6pu+8jOi/h+Wkp+aIlui/h+Wwj+mDveS4jeaYr+S4quWlvemAieaLqeOAglwiXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FzZSAzOiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCLkuI3opoHooqvlpKnkuIrmjonokL3nmoTpmpznoo3lkJPliLDvvIzmnInml7blgJnlroPlj43ogIzkvJrluK7kvaDkv53mjIHlubPooaHjgIJcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhc2UgNDoge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwi5bCd6K+V552A6aG25byA5o6J6JC955qE6Zqc56KN77yM5piv5Liq5b6I6YW355qE546p5rOV44CCXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgYmVnaW5UaW1pbmc6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLl9zdGFydFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgIH0sXHJcblxyXG4gICAgZW5kVGltaW5nOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5fZW5kVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIC8vIHRoaXMuX3RvdGFsVGltZSA9IGVuZFRpbWUgLSB0aGlzLl9zdGFydFRpbWU7XHJcbiAgICB9LFxyXG4gICAgLy/lpoLmnpzmmK/liKTmlq3ml7bluLjnmoTmuLjmiI8g6LCD55So5q2k5pa55rOVXHJcbiAgICB1cGRhdGVTY29yZVRpbWU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIGxldCB0ZW1wVGltZSA9IGVuZFRpbWUgLSB0aGlzLl9zdGFydFRpbWU7XHJcbiAgICAgICAgaWYgKHRlbXBUaW1lIDwgMCB8fCB0ZW1wVGltZSA+IDUwMCkge1xyXG4gICAgICAgICAgICB0ZW1wVGltZSA9IE1hdGgucm91bmQoY2MuZGlyZWN0b3IuZ2V0QW5pbWF0aW9uSW50ZXJ2YWwoKSAqIDEwMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9lbmRUaW1lICs9IHRlbXBUaW1lIC8gMTAwMDtcclxuICAgICAgICB0aGlzLl90b3RhbFRpbWUgPSB0aGlzLl9lbmRUaW1lLnRvRml4ZWQoMik7XHJcbiAgICAgICAgR2FtZURhdGEuX2luc3RhbmNlLkdNX0lORk8uY3VyclNjb3JlID0gdGhpcy5fdG90YWxUaW1lO1xyXG4gICAgICAgIHRoaXMuX3N0YXJ0VGltZSA9IGVuZFRpbWU7XHJcbiAgICB9LFxyXG4gICAgLy/lgJLorqHml7bosIPnlKjmraTmlrnms5VcclxuICAgIGNvdW50RG93bjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuX2VuZFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICB0aGlzLl90b3RhbFRpbWUgPSBNYXRoLmZsb29yKCh0aGlzLl9lbmRUaW1lIC0gdGhpcy5fc3RhcnRUaW1lKSAvIDEwMDApO1xyXG4gICAgICAgIEdhbWVEYXRhLl9pbnN0YW5jZS5HTV9JTkZPLnJlbWFpbmluZ1RpbWUgPSBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy50b3RhbFRpbWUgLSB0aGlzLl90b3RhbFRpbWU7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldEdhbWVJbmZvOiBmdW5jdGlvbihub2RlKXtcclxuICAgICAgICB2YXIgamcgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm4gamc7XHJcbiAgICB9LFxyXG4gICAgLy/moLnmja7mnI3liqHlmajmlbDmja7ph43nva7miYDpnIDopoHmiYDmnInmlbDmja5cclxuICAgIHJlc2V0OiBmdW5jdGlvbigpe1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pys5Zyw5pWw5o2u5Lii5aSxLOmHjeaWsOWQr+WKqOa4uOaIj1wiKTtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoJ0xvYWRTY2VuZScpO1xyXG4gICAgfSxcclxuXHJcbiAgICBzZXRHYW1lSW5mbzogZnVuY3Rpb24ocGQpe1xyXG4gICBcclxuICAgIH0sXHJcbiAgICAvL+i+k+WFpeenkizov5Tlm57pnIDopoHlsZXnpLrml7bpl7TmoLzlvI9cclxuICAgIGdldFRpbWVNYXJnaW46KHNlY29uZCkgPT4ge1xyXG4gICAgICAgIGxldCB0b3RhbCA9IHNlY29uZDtcclxuICAgICAgICBsZXQgaG91ciA9IE1hdGguZmxvb3IodG90YWwgLyAoNjAgKiA2MCkpOy8v6K6h566X5pW05pWw5bCP5pe25pWwXHJcbiAgICAgICAgbGV0IGFmdGVySG91ciA9IHRvdGFsIC0gaG91ciAqIDYwICogNjA7Ly/lj5blvpfnrpflh7rlsI/ml7bmlbDlkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICBsZXQgbWluID0gTWF0aC5mbG9vcihhZnRlckhvdXIgLyA2MCk7Ly/orqHnrpfmlbTmlbDliIZcclxuICAgICAgICBsZXQgYWZ0ZXJNaW4gPSB0b3RhbCAtIGhvdXIgKiA2MCAqIDYwIC0gbWluICogNjA7Ly/lj5blvpfnrpflh7rliIblkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICByZXR1cm4gJ+WJqeS9mTonICsgaG91ciArICc6JyArIG1pbiArICc6JyArIGFmdGVyTWluXHJcbiAgICB9LFxyXG5cclxuICAgIGdldFRpbWVNYXJnaW4yOihzZWNvbmQpID0+IHtcclxuICAgICAgICBsZXQgdG90YWwgPSBzZWNvbmQ7XHJcbiAgICAgICAgbGV0IG1pbiA9IG51bGw7XHJcbiAgICAgICAgbGV0IGFmdGVyTWluID0gbnVsbDtcclxuICAgICAgICBsZXQgaG91ciA9IE1hdGguZmxvb3IodG90YWwgLyAoNjAgKiA2MCkpOy8v6K6h566X5pW05pWw5bCP5pe25pWwXHJcbiAgICAgICAgbGV0IGFmdGVySG91ciA9IHRvdGFsIC0gaG91ciAqIDYwICogNjA7Ly/lj5blvpfnrpflh7rlsI/ml7bmlbDlkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICBtaW4gPSBNYXRoLmZsb29yKGFmdGVySG91ciAvIDYwKTsvL+iuoeeul+aVtOaVsOWIhlxyXG4gICAgICAgIGlmKG1pbiA8IDEwKSBtaW4gPSBcIjBcIittaW47XHJcbiAgICAgICAgYWZ0ZXJNaW4gPSB0b3RhbCAtIGhvdXIgKiA2MCAqIDYwIC0gbWluICogNjA7Ly/lj5blvpfnrpflh7rliIblkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICBpZihhZnRlck1pbiA8IDEwKSBhZnRlck1pbiA9IFwiMFwiICsgYWZ0ZXJNaW47XHJcbiAgICAgICAgcmV0dXJuICfliankvZk6JyAgKyBtaW4gKyAnOicgKyBhZnRlck1pblxyXG4gICAgfSxcclxuICAgIC8v5bCG5pe26Ze06L2s5o2i5Li6NTk6MjNcclxuICAgIGdldFRpbWU6IGZ1bmN0aW9uKHRpbWUpe1xyXG4gICAgICAgIHZhciBsYWJlbCA9IFwiXCI7XHJcbiAgICAgICAgdmFyIG51bWJlcl8xID0gbnVsbDtcclxuICAgICAgICB2YXIgbnVtYmVyXzIgPSBudWxsO1xyXG4gICAgICAgIG51bWJlcl8xID0gTWF0aC5mbG9vcih0aW1lLzYwKVxyXG4gICAgICAgIG51bWJlcl8yID0gdGltZS1udW1iZXJfMSo2MDtcclxuICAgICAgICBpZihudW1iZXJfMSA8IDEwKXtcclxuICAgICAgICAgICAgbnVtYmVyXzEgPSBcIjBcIitudW1iZXJfMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYobnVtYmVyXzIgPCAxMCl7XHJcbiAgICAgICAgICAgIG51bWJlcl8yID0gXCIwXCIrbnVtYmVyXzI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxhYmVsID0gbnVtYmVyXzEgKyBcIjpcIiArIG51bWJlcl8yO1xyXG4gICAgICAgIHJldHVybiBsYWJlbDtcclxuICAgIH0sXHJcbiAgICAvL251bWJlciDkuLrkvKDov5vmnaXnmoTmlbDlgLwsdHlwZeS4uuacgOWkmuaYvuekuuWHoOS9jeaVsFxyXG4gICAgZ2V0TnVtYmVyOiBmdW5jdGlvbihudW1iZXIsdHlwZSl7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codHlwZSxcIumcgOimgei9rOaNoueahOaVsOWtl+S4ujpcIixudW1iZXIpO1xyXG4gICAgICAgIHZhciBjb3VudCA9IDEwMDA7XHJcbiAgICAgICAgdmFyIHBsYWNlID0gdHlwZSAtIDM7XHJcbiAgICAgICAgaWYobnVtYmVyID4gTWF0aC5wb3coY291bnQsOCkqTWF0aC5wb3coMTAscGxhY2UpKXtcclxuICAgICAgICAgICAgaWYobnVtYmVyL01hdGgucG93KGNvdW50LDgpIDwgMTAwKVxyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gTWF0aC5mbG9vcihudW1iZXIvTWF0aC5wb3coY291bnQsOCkqMTApLzEwK1wiU1wiO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBNYXRoLmZsb29yKG51bWJlci9NYXRoLnBvdyhjb3VudCw4KSkrXCJTXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYobnVtYmVyID4gTWF0aC5wb3coY291bnQsNykqTWF0aC5wb3coMTAscGxhY2UpKXtcclxuICAgICAgICAgICAgaWYobnVtYmVyL01hdGgucG93KGNvdW50LDcpIDwgMTAwKVxyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gTWF0aC5mbG9vcihudW1iZXIvTWF0aC5wb3coY291bnQsNykqMTApLzEwK1wic1wiO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBNYXRoLmZsb29yKG51bWJlci9NYXRoLnBvdyhjb3VudCw3KSkrXCJzXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYobnVtYmVyID4gTWF0aC5wb3coY291bnQsNikqTWF0aC5wb3coMTAscGxhY2UpKXtcclxuICAgICAgICAgICAgaWYobnVtYmVyL01hdGgucG93KGNvdW50LDYpIDwgMTAwKVxyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gTWF0aC5mbG9vcihudW1iZXIvTWF0aC5wb3coY291bnQsNikqMTApLzEwK1wiUVwiO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBNYXRoLmZsb29yKG51bWJlci9NYXRoLnBvdyhjb3VudCw2KSkrXCJRXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYobnVtYmVyID4gTWF0aC5wb3coY291bnQsNSkqTWF0aC5wb3coMTAscGxhY2UpKXtcclxuICAgICAgICAgICAgaWYobnVtYmVyL01hdGgucG93KGNvdW50LDUpIDwgMTAwKVxyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gTWF0aC5mbG9vcihudW1iZXIvTWF0aC5wb3coY291bnQsNSkqMTApLzEwK1wicVwiO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBNYXRoLmZsb29yKG51bWJlci9NYXRoLnBvdyhjb3VudCw1KSkrXCJxXCI7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bWJlciA+IE1hdGgucG93KGNvdW50LDQpKk1hdGgucG93KDEwLHBsYWNlKSl7XHJcbiAgICAgICAgICAgIGlmKG51bWJlci9NYXRoLnBvdyhjb3VudCw0KSA8IDEwMClcclxuICAgICAgICAgICAgICAgIG51bWJlciA9IE1hdGguZmxvb3IobnVtYmVyL01hdGgucG93KGNvdW50LDQpKjEwKS8xMCtcInRcIjtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gTWF0aC5mbG9vcihudW1iZXIvTWF0aC5wb3coY291bnQsNCkpK1widFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bWJlciA+IE1hdGgucG93KGNvdW50LDMpKk1hdGgucG93KDEwLHBsYWNlKSl7XHJcbiAgICAgICAgICAgIGlmKG51bWJlci9NYXRoLnBvdyhjb3VudCwzKSA8IDEwMClcclxuICAgICAgICAgICAgICAgIG51bWJlciA9IE1hdGguZmxvb3IobnVtYmVyL01hdGgucG93KGNvdW50LDMpKjEwKS8xMCtcImJcIjtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gTWF0aC5mbG9vcihudW1iZXIvTWF0aC5wb3coY291bnQsMykpK1wiYlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bWJlciA+IE1hdGgucG93KGNvdW50LDIpKk1hdGgucG93KDEwLHBsYWNlKSl7XHJcbiAgICAgICAgICAgIGlmKG51bWJlci9NYXRoLnBvdyhjb3VudCwyKSA8IDEwMClcclxuICAgICAgICAgICAgICAgIG51bWJlciA9IE1hdGguZmxvb3IobnVtYmVyL01hdGgucG93KGNvdW50LDIpKjEwKS8xMCtcIm1cIjtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gTWF0aC5mbG9vcihudW1iZXIvTWF0aC5wb3coY291bnQsMikpK1wibVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bWJlciA+IE1hdGgucG93KGNvdW50LDEpKk1hdGgucG93KDEwLHBsYWNlKSl7XHJcbiAgICAgICAgICAgIGlmKG51bWJlci9NYXRoLnBvdyhjb3VudCwxKSA8IDEwMCl7XHJcbiAgICAgICAgICAgICAgICBudW1iZXIgPSBNYXRoLmZsb29yKG51bWJlci9NYXRoLnBvdyhjb3VudCwxKSoxMCkvMTArXCJrXCI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgbnVtYmVyID0gTWF0aC5mbG9vcihudW1iZXIvTWF0aC5wb3coY291bnQsMSkpK1wia1wiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBudW1iZXIgPSBNYXRoLmZsb29yKG51bWJlci9NYXRoLnBvdyhjb3VudCwwKSkrXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLnu5PmnpzkuLpcIit0eXBlK1wi5L2N5pWwXCIsbnVtYmVyKTtcclxuICAgICAgICByZXR1cm4gbnVtYmVyO1xyXG4gICAgfSxcclxuXHJcbiAgICBiZWdhaW5UaW1pbmc6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLl9zdGFydFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgIH0sXHJcblxyXG4gICAgZW5kVGltaW5nMjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGxldCBlbmRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgdGhpcy5fZW5kVGltZSA9IGVuZFRpbWU7XHJcbiAgICAgICAgdGhpcy5fdG90YWxUaW1lID0gZW5kVGltZSAtIHRoaXMuX3N0YXJ0VGltZTtcclxuICAgIH0sXHJcbiAgICBnZXRTY29yZVRpbWU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBsZXQgZW5kVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIGxldCB0ZW1wVGltZSA9IGVuZFRpbWUgLSB0aGlzLl9zdGFydFRpbWU7XHJcbiAgICAgICAgaWYgKHRlbXBUaW1lIDwgMCB8fCB0ZW1wVGltZSA+IDUwMCkge1xyXG4gICAgICAgICAgICB0ZW1wVGltZSA9IE1hdGgucm91bmQoY2MuZGlyZWN0b3IuZ2V0QW5pbWF0aW9uSW50ZXJ2YWwoKSAqIDEwMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBHYW1lRGF0YS5faW5zdGFuY2UuR01fSU5GTy5jdXJyU2NvcmUgKz0gdGVtcFRpbWU7XHJcbiAgICAgICAgdGhpcy5fc3RhcnRUaW1lID0gZW5kVGltZTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0Rm9ybWF0VGltZTogZnVuY3Rpb24gKHRpbWUpIHtcclxuICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgZGF0ZS5zZXRUaW1lKHRpbWUpO1xyXG4gICAgICAgIGxldCBtcyA9IGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCk7XHJcbiAgICAgICAgLy8gbGV0IG1zU3RyaW5nID0gZGF0ZS5nZXRNaWxsaXNlY29uZHMoKTtcclxuICAgICAgICBsZXQgbXNTdHJpbmcgPSBudWxsO1xyXG4gICAgICAgIGxldCBzZWNvbmRTdHJpbmcgPSBudWxsO1xyXG4gICAgICAgIGxldCBtaW5TdHJpbmcgPSBudWxsO1xyXG4gICAgICAgIG1zU3RyaW5nID0gTWF0aC5mbG9vcihtcyAvIDEwKSAlIDEwMDtcclxuICAgICAgICBzZWNvbmRTdHJpbmcgPSBkYXRlLmdldFNlY29uZHMoKTtcclxuICAgICAgICBtaW5TdHJpbmcgPSBkYXRlLmdldE1pbnV0ZXMoKTtcclxuICAgICAgICBpZiAobXNTdHJpbmcgPCAxMCkge1xyXG4gICAgICAgICAgICBtc1N0cmluZyA9IFwiMFwiICsgbXNTdHJpbmc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzZWNvbmRTdHJpbmcgPCAxMCkge1xyXG4gICAgICAgICAgICBzZWNvbmRTdHJpbmcgPSBcIjBcIiArIHNlY29uZFN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgICAgc2Vjb25kU3RyaW5nID0gc2Vjb25kU3RyaW5nICsgXCI6XCI7XHJcblxyXG4gICAgICAgIGlmIChtaW5TdHJpbmcgPCAxMCkge1xyXG4gICAgICAgICAgICBtaW5TdHJpbmcgPSBcIjBcIiArIG1pblN0cmluZztcclxuICAgICAgICB9XHJcbiAgICAgICAgbWluU3RyaW5nID0gbWluU3RyaW5nICsgXCI6XCI7XHJcbiAgICAgICAgcmV0dXJuIG1pblN0cmluZyArIHNlY29uZFN0cmluZyArIG1zU3RyaW5nO1xyXG5cclxuICAgIH0sXHJcbiAgICBwdXNoTGlzdGVyOmZ1bmN0aW9uICgpIHtcclxuICAgICAgICBcclxuICAgIH0sXHJcbiAgICByZW1vdmVBbGxMaXN0ZXI6ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIFxyXG4gICAgfSxcclxuXHJcbn07XHJcbmV4cG9ydCB7IEdhbWVUb29sIH07Il19
|
||
//------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------
|