123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- (function() {
- var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
- var __module = nodeEnv ? module : {exports:{}};
- var __filename = 'preview-scripts/assets/script/utils/LongPressButton.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, '8d78fVbUK1N/pK7gUvjkYGI', 'LongPressButton');
- // script/utils/LongPressButton.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 gameMethod_1 = require("../common/gameMethod");
- var EventConst_1 = require("../data/const/EventConst");
- var EventMng_1 = require("../manager/EventMng");
- var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property;
- var LongPressButton = /** @class */ (function (_super) {
- __extends(LongPressButton, _super);
- function LongPressButton() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- _this.timerInterval = 0.2; //设置长按的间隔,默认0.2秒
- _this.keepTime = 0; //当次长按时长
- _this.passTime = 0;
- _this.bLongPress = false; // 是否长按状态
- _this.bGray = false;
- _this.bInterrupt = false;
- _this.bClick = false;
- _this._IsAllowlongPress = true; // 是否允许长按
- return _this;
- }
- Object.defineProperty(LongPressButton.prototype, "IsAllowlongPress", {
- get: function () {
- return this._IsAllowlongPress;
- },
- set: function (bAllowlongPress) {
- this._IsAllowlongPress = bAllowlongPress;
- },
- enumerable: false,
- configurable: true
- });
- LongPressButton.prototype.onEnable = function () {
- this.node.on(fgui.Event.TOUCH_BEGIN, this.onTouchStart, this);
- this.node.on(fgui.Event.TOUCH_MOVE, this.onTouchMove, this);
- this.node.on(fgui.Event.TOUCH_END, this.onTouchEnd, this);
- };
- LongPressButton.prototype.onDisable = function () {
- // 清理事件监听
- this.node.off(fgui.Event.TOUCH_BEGIN, this.onTouchStart, this);
- this.node.off(fgui.Event.TOUCH_MOVE, this.onTouchMove, this);
- this.node.off(fgui.Event.TOUCH_END, this.onTouchEnd, this);
- EventMng_1.default.emit(EventConst_1.UserEvent.BTNTOUCHDISABLE);
- };
- LongPressButton.prototype.onchangeState = function (bGray) {
- if (bGray && this.bGray != bGray) {
- if (this.bClick && this.grayClickCallback) {
- this.grayClickCallback();
- }
- this.bGray = true;
- this.unschedule(this.longPressDown);
- this.clearTime();
- }
- this.bGray = bGray;
- };
- // 长按事件
- LongPressButton.prototype.longPressDown = function () {
- this.bLongPress = true;
- if (this.bPalyAni) {
- this.ShowAni();
- }
- };
- LongPressButton.prototype.onTouchStart = function (event) {
- if (this.bGray) {
- if (this.grayClickCallback) {
- this.grayClickCallback();
- }
- return;
- }
- this.bClick = true;
- this.passTime = 0;
- this.keepTime = 0;
- this.bInterrupt = false;
- this.bCallback = true;
- this.unschedule(this.longPressDown);
- if (this._IsAllowlongPress) {
- this.scheduleOnce(this.longPressDown, 0.2);
- }
- };
- LongPressButton.prototype.onTouchMove = function (event) {
- if (this.bLongPress && !gameMethod_1.gameMethod.isEmpty(this.gButton)) {
- // 使用hitTest方法判断触摸点是否在组件范围内
- if (!this.gButton.hitTest(event.pos)) {
- this.onTouchEnd(null);
- this.bInterrupt = true;
- }
- }
- };
- LongPressButton.prototype.onTouchEnd = function (event) {
- if (this.bInterrupt) {
- // console.log("中断事件,不在相应");
- return;
- }
- this.unschedule(this.longPressDown);
- this.clearTime();
- EventMng_1.default.emit(EventConst_1.UserEvent.BTNTOUCHEND);
- };
- LongPressButton.prototype.update = function (dt) {
- this.passTime += dt;
- this.keepTime += dt;
- // 触摸计时
- if (this.bLongPress) {
- if (this.passTime > this.timerInterval) {
- this.handleLongPress(false);
- this.passTime = 0;
- }
- }
- };
- LongPressButton.prototype.clearTime = function () {
- if (this.bClick && this.bCallback) {
- this.handleLongPress(true);
- }
- this.passTime = 0;
- this.keepTime = 0;
- this.bLongPress = false;
- this.bClick = false;
- this.StopAni();
- };
- // 长按事件回调
- LongPressButton.prototype.handleLongPress = function (bEnd) {
- if (this.callbackFunc && !this.bGray) {
- this.callbackFunc(bEnd, this.bGray, this.bLongPress);
- }
- };
- LongPressButton.prototype.setCallback = function (callbackFunc, gButton, grayClickCallback) {
- this.callbackFunc = callbackFunc;
- this.grayClickCallback = grayClickCallback;
- this.gButton = gButton;
- };
- LongPressButton.prototype.SetLongData = function (data) {
- this.callbackFunc = data === null || data === void 0 ? void 0 : data.callbackFunc;
- this.grayClickCallback = data === null || data === void 0 ? void 0 : data.grayClickCallback;
- this.gButton = data === null || data === void 0 ? void 0 : data.gButton;
- this.scale = (data === null || data === void 0 ? void 0 : data.scale) || 1;
- this.targetScale = this.scale * 0.9;
- this.aniTime = (data === null || data === void 0 ? void 0 : data.aniTime) || 0.15;
- this.bPalyAni = (data === null || data === void 0 ? void 0 : data.bPalyAni) || false;
- };
- LongPressButton.prototype.interrupt = function (bCallback) {
- if (bCallback === void 0) { bCallback = true; }
- this.bCallback = bCallback;
- this.passTime = 0;
- this.keepTime = 0;
- this.bLongPress = false;
- this.bClick = false;
- this.StopAni();
- };
- LongPressButton.prototype.ShowAni = function () {
- this.StopAni();
- this.PlayAni();
- };
- LongPressButton.prototype.PlayAni = function () {
- cc.tween(this.gButton.node).to(this.aniTime, { scale: this.targetScale }).to(this.aniTime, { scale: this.scale }).union().repeatForever().start();
- };
- LongPressButton.prototype.StopAni = function () {
- cc.Tween.stopAllByTarget(this.gButton.node);
- this.gButton.node.scale = this.scale;
- };
- // 是否处于点击状态
- LongPressButton.prototype.IsClickState = function () {
- return this.bClick;
- };
- // 是否处于点击状态
- LongPressButton.prototype.IsLongClickState = function () {
- return this.bLongPress;
- };
- __decorate([
- property(cc.Float)
- ], LongPressButton.prototype, "timerInterval", void 0);
- LongPressButton = __decorate([
- ccclass
- ], LongPressButton);
- return LongPressButton;
- }(cc.Component));
- exports.default = LongPressButton;
- 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvdXRpbHMvTG9uZ1ByZXNzQnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFrRDtBQUNsRCx1REFBcUQ7QUFDckQsZ0RBQTJDO0FBWXJDLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBRTFDO0lBQTZDLG1DQUFZO0lBQXpEO1FBQUEscUVBK0tDO1FBN0tHLG1CQUFhLEdBQVUsR0FBRyxDQUFDLENBQUMsZ0JBQWdCO1FBS3JDLGNBQVEsR0FBVSxDQUFDLENBQUMsQ0FBQyxRQUFRO1FBQzVCLGNBQVEsR0FBVSxDQUFDLENBQUM7UUFDcEIsZ0JBQVUsR0FBVyxLQUFLLENBQUMsQ0FBQyxTQUFTO1FBQ3JDLFdBQUssR0FBVyxLQUFLLENBQUM7UUFDdEIsZ0JBQVUsR0FBVyxLQUFLLENBQUM7UUFDM0IsWUFBTSxHQUFXLEtBQUssQ0FBQztRQU92Qix1QkFBaUIsR0FBVyxJQUFJLENBQUMsQ0FBQyxTQUFTOztJQTRKdkQsQ0FBQztJQTFKRyxzQkFBSSw2Q0FBZ0I7YUFHcEI7WUFDSSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUNsQyxDQUFDO2FBTEQsVUFBcUIsZUFBdUI7WUFDeEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGVBQWUsQ0FBQztRQUM3QyxDQUFDOzs7T0FBQTtJQUtTLGtDQUFRLEdBQWxCO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVE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LE9BQU87T0FDYSxlQUFlLENBK0tuQztJQUFELHNCQUFDO0NBL0tELEFBK0tDLENBL0s0QyxFQUFFLENBQUMsU0FBUyxHQStLeEQ7a0JBL0tvQixlQUFlIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2FtZU1ldGhvZCB9IGZyb20gXCIuLi9jb21tb24vZ2FtZU1ldGhvZFwiO1xuaW1wb3J0IHsgVXNlckV2ZW50IH0gZnJvbSBcIi4uL2RhdGEvY29uc3QvRXZlbnRDb25zdFwiO1xuaW1wb3J0IEV2ZW50TW5nIGZyb20gXCIuLi9tYW5hZ2VyL0V2ZW50TW5nXCI7XG5cblxuZXhwb3J0IGludGVyZmFjZSBMb25nUHJlc3NCdXR0b25QYXJhbSB7XG5cdHNjYWxlPzogbnVtYmVyO1xuICAgIGFuaVRpbWU/Om51bWJlcjtcblx0Z0J1dHRvbj86Zmd1aS5HQnV0dG9uO1xuICAgIGJQYWx5QW5pPzpib29sZWFuO1xuXHRjYWxsYmFja0Z1bmM/OihiRW5kOmJvb2xlYW4sYkdyYXk6Ym9vbGVhbixiTG9uZ1ByZXNzPzpib29sZWFuKT0+dm9pZDtcbiAgICBncmF5Q2xpY2tDYWxsYmFjaz86KCk9PnZvaWRcbn1cblxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XG5AY2NjbGFzc1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9uZ1ByZXNzQnV0dG9uIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcbiAgICBAcHJvcGVydHkoY2MuRmxvYXQpXG4gICAgdGltZXJJbnRlcnZhbDpudW1iZXIgPSAwLjI7IC8v6K6+572u6ZW/5oyJ55qE6Ze06ZqU77yM6buY6K6kMC4y56eSXG5cbiAgICBjYWxsYmFja0Z1bmM6KGJFbmQ6Ym9vbGVhbixiR3JheTpib29sZWFuLGJMb25nUHJlc3M/OmJvb2xlYW4pPT52b2lkIDsgLy8g6ZW/5oyJ5oyJ6ZKu55qE5Zue6LCD5Ye95pWwXG4gICAgZ3JheUNsaWNrQ2FsbGJhY2s6KCk9PnZvaWQ7XG5cbiAgICBwdWJsaWMga2VlcFRpbWU6bnVtYmVyID0gMDsgLy/lvZPmrKHplb/mjInml7bplb9cbiAgICBwcml2YXRlIHBhc3NUaW1lOm51bWJlciA9IDA7XG4gICAgcHJpdmF0ZSBiTG9uZ1ByZXNzOmJvb2xlYW4gPSBmYWxzZTsgLy8g5piv5ZCm6ZW/5oyJ54q25oCBXG4gICAgcHJpdmF0ZSBiR3JheTpib29sZWFuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBiSW50ZXJydXB0OmJvb2xlYW4gPSBmYWxzZTtcbiAgICBwcml2YXRlIGJDbGljazpib29sZWFuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBnQnV0dG9uOmZndWkuR0J1dHRvbjtcbiAgICBwcml2YXRlIHNjYWxlOm51bWJlcjtcbiAgICBwcml2YXRlIHRhcmdldFNjYWxlOm51bWJlcjtcbiAgICBwcml2YXRlIGFuaVRpbWU6bnVtYmVyO1xuICAgIHByaXZhdGUgYlBhbHlBbmk6Ym9vbGVhbjsgIC8vIOaYr+WQpuaSreaUvumVv+aMieWKqOeUu1xuICAgIHByaXZhdGUgYkNhbGxiYWNrOmJvb2xlYW47IC8vIOS4reaWreS6i+S7tuaYr+WQpumcgOimgeWbnuiwg+ebuOW6lFxuICAgIHByaXZhdGUgX0lzQWxsb3dsb25nUHJlc3M6Ym9vbGVhbiA9IHRydWU7IC8vIOaYr+WQpuWFgeiuuOmVv+aMiVxuXG4gICAgc2V0IElzQWxsb3dsb25nUHJlc3MoYkFsbG93bG9uZ1ByZXNzOmJvb2xlYW4pe1xuICAgICAgICB0aGlzLl9Jc0FsbG93bG9uZ1ByZXNzID0gYkFsbG93bG9uZ1ByZXNzO1xuICAgIH1cbiAgICBnZXQgSXNBbGxvd2xvbmdQcmVzcygpe1xuICAgICAgICByZXR1cm4gdGhpcy5fSXNBbGxvd2xvbmdQcmVzcztcbiAgICB9XG4gICAgXG4gICAgcHJvdGVjdGVkIG9uRW5hYmxlKCkge1xuICAgICAgICB0aGlzLm5vZGUub24oZmd1aS5FdmVudC5UT1VDSF9CRUdJTiwgdGhpcy5vblRvdWNoU3RhcnQsIHRoaXMpO1xuICAgICAgICB0aGlzLm5vZGUub24oZmd1aS5FdmVudC5UT1VDSF9NT1ZFLCB0aGlzLm9uVG91Y2hNb3ZlLCB0aGlzKTtcbiAgICAgICAgdGhpcy5ub2RlLm9uKGZndWkuRXZlbnQuVE9VQ0hfRU5ELCB0aGlzLm9uVG91Y2hFbmQsIHRoaXMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkRpc2FibGUoKSB7XG4gICAgICAgIC8vIOa4heeQhuS6i+S7tuebkeWQrFxuICAgICAgICB0aGlzLm5vZGUub2ZmKGZndWkuRXZlbnQuVE9VQ0hfQkVHSU4sIHRoaXMub25Ub3VjaFN0YXJ0LCB0aGlzKTtcbiAgICAgICAgdGhpcy5ub2RlLm9mZihmZ3VpLkV2ZW50LlRPVUNIX01PVkUsIHRoaXMub25Ub3VjaE1vdmUsIHRoaXMpO1xuICAgICAgICB0aGlzLm5vZGUub2ZmKGZndWkuRXZlbnQuVE9VQ0hfRU5ELCB0aGlzLm9uVG91Y2hFbmQsIHRoaXMpO1xuICAgICAgICBFdmVudE1uZy5lbWl0KFVzZXJFdmVudC5CVE5UT1VDSERJU0FCTEUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbmNoYW5nZVN0YXRlKGJHcmF5OmJvb2xlYW4pe1xuICAgICAgICBpZiAoYkdyYXkgJiYgdGhpcy5iR3JheSAhPSBiR3JheSl7XG4gICAgICAgICAgICBpZiAodGhpcy5iQ2xpY2sgJiYgdGhpcy5ncmF5Q2xpY2tDYWxsYmFjayl7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmF5Q2xpY2tDYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5iR3JheSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy5sb25nUHJlc3NEb3duKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5iR3JheSA9IGJHcmF5O1xuICAgIH1cblxuICAgIC8vIOmVv+aMieS6i+S7tlxuXHRwcml2YXRlIGxvbmdQcmVzc0Rvd24oKSB7XG4gICAgICAgIHRoaXMuYkxvbmdQcmVzcyA9IHRydWU7XG4gICAgICAgIGlmICh0aGlzLmJQYWx5QW5pKXtcbiAgICAgICAgICAgIHRoaXMuU2hvd0FuaSgpO1xuICAgICAgICB9XG4gICAgfVxuIFxuICAgIHByaXZhdGUgb25Ub3VjaFN0YXJ0KGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmJHcmF5KXtcbiAgICAgICAgICAgIGlmICh0aGlzLmdyYXlDbGlja0NhbGxiYWNrKXtcbiAgICAgICAgICAgICAgICB0aGlzLmdyYXlDbGlja0NhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5iQ2xpY2sgPSB0cnVlO1xuICAgICAgICB0aGlzLnBhc3NUaW1lID0gMDtcbiAgICAgICAgdGhpcy5rZWVwVGltZSA9IDBcbiAgICAgICAgdGhpcy5iSW50ZXJydXB0ID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYkNhbGxiYWNrID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy5sb25nUHJlc3NEb3duKTtcbiAgICAgICAgaWYgKHRoaXMuX0lzQWxsb3dsb25nUHJlc3Mpe1xuICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UodGhpcy5sb25nUHJlc3NEb3duLDAuMilcbiAgICAgICAgfVxuICAgIH1cbiBcbiAgICBwcml2YXRlIG9uVG91Y2hNb3ZlKGV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmJMb25nUHJlc3MgJiYgIWdhbWVNZXRob2QuaXNFbXB0eSh0aGlzLmdCdXR0b24pKXtcbiAgICAgICAgICAgIC8vIOS9v+eUqGhpdFRlc3Tmlrnms5XliKTmlq3op6bmkbjngrnmmK/lkKblnKjnu4Tku7bojIPlm7TlhoVcbiAgICAgICAgICAgIGlmICghdGhpcy5nQnV0dG9uLmhpdFRlc3QoZXZlbnQucG9zKSkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Ub3VjaEVuZChudWxsKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJJbnRlcnJ1cHQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuIFxuICAgIHByaXZhdGUgb25Ub3VjaEVuZChldmVudCkge1xuICAgICAgICBpZiAodGhpcy5iSW50ZXJydXB0KXtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5Lit5pat5LqL5Lu277yM5LiN5Zyo55u45bqUXCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudW5zY2hlZHVsZSh0aGlzLmxvbmdQcmVzc0Rvd24pO1xuICAgICAgICB0aGlzLmNsZWFyVGltZSgpO1xuICAgICAgICBFdmVudE1uZy5lbWl0KFVzZXJFdmVudC5CVE5UT1VDSEVORCk7XG4gICAgfVxuXG4gICAgdXBkYXRlKGR0KSB7XG4gICAgICAgIHRoaXMucGFzc1RpbWUgKz0gZHQ7XG4gICAgICAgIHRoaXMua2VlcFRpbWUgKz0gZHRcbiAgICAgICAgLy8g6Kem5pG46K6h5pe2XG4gICAgICAgIGlmICh0aGlzLmJMb25nUHJlc3MpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBhc3NUaW1lID4gdGhpcy50aW1lckludGVydmFsKXtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUxvbmdQcmVzcyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXNzVGltZSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgcHVibGljIGNsZWFyVGltZSgpe1xuICAgICAgICBpZiAodGhpcy5iQ2xpY2sgJiYgdGhpcy5iQ2FsbGJhY2spe1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVMb25nUHJlc3ModHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wYXNzVGltZSA9IDA7XG4gICAgICAgIHRoaXMua2VlcFRpbWUgPSAwXG4gICAgICAgIHRoaXMuYkxvbmdQcmVzcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJDbGljayA9IGZhbHNlO1xuICAgICAgICB0aGlzLlN0b3BBbmkoKTtcbiAgICB9XG5cbiAgICAvLyDplb/mjInkuovku7blm57osINcbiAgICBwcml2YXRlIGhhbmRsZUxvbmdQcmVzcyhiRW5kOmJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHRoaXMuY2FsbGJhY2tGdW5jICYmICF0aGlzLmJHcmF5KXtcbiAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tGdW5jKGJFbmQsdGhpcy5iR3JheSx0aGlzLmJMb25nUHJlc3MpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldENhbGxiYWNrKGNhbGxiYWNrRnVuYzooYkVuZDpib29sZWFuLGJHcmF5OmJvb2xlYW4pPT52b2lkLGdCdXR0b24/OmZndWkuR0J1dHRvbixncmF5Q2xpY2tDYWxsYmFjaz86KCk9PnZvaWQpe1xuICAgICAgICB0aGlzLmNhbGxiYWNrRnVuYyA9IGNhbGxiYWNrRnVuYztcbiAgICAgICAgdGhpcy5ncmF5Q2xpY2tDYWxsYmFjayA9IGdyYXlDbGlja0NhbGxiYWNrO1xuICAgICAgICB0aGlzLmdCdXR0b24gPSBnQnV0dG9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBTZXRMb25nRGF0YShkYXRhOkxvbmdQcmVzc0J1dHRvblBhcmFtKXtcbiAgICAgICAgdGhpcy5jYWxsYmFja0Z1bmMgPSBkYXRhPy5jYWxsYmFja0Z1bmM7XG4gICAgICAgIHRoaXMuZ3JheUNsaWNrQ2FsbGJhY2sgPSBkYXRhPy5ncmF5Q2xpY2tDYWxsYmFjaztcbiAgICAgICAgdGhpcy5nQnV0dG9uID0gZGF0YT8uZ0J1dHRvbjtcbiAgICAgICAgdGhpcy5zY2FsZSA9IGRhdGE/LnNjYWxlIHx8IDE7XG4gICAgICAgIHRoaXMudGFyZ2V0U2NhbGUgPSB0aGlzLnNjYWxlICogMC45O1xuICAgICAgICB0aGlzLmFuaVRpbWUgPSBkYXRhPy5hbmlUaW1lIHx8IDAuMTU7XG4gICAgICAgIHRoaXMuYlBhbHlBbmkgPSBkYXRhPy5iUGFseUFuaSB8fCBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW50ZXJydXB0KGJDYWxsYmFjazpib29sZWFuID0gdHJ1ZSl7XG4gICAgICAgIHRoaXMuYkNhbGxiYWNrID0gYkNhbGxiYWNrO1xuICAgICAgICB0aGlzLnBhc3NUaW1lID0gMDtcbiAgICAgICAgdGhpcy5rZWVwVGltZSA9IDBcbiAgICAgICAgdGhpcy5iTG9uZ1ByZXNzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYkNsaWNrID0gZmFsc2U7XG4gICAgICAgIHRoaXMuU3RvcEFuaSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBTaG93QW5pKCl7XG4gICAgICAgIHRoaXMuU3RvcEFuaSgpO1xuICAgICAgICB0aGlzLlBsYXlBbmkoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBQbGF5QW5pKCl7XG4gICAgICAgIGNjLnR3ZWVuKHRoaXMuZ0J1dHRvbi5ub2RlKS50byh0aGlzLmFuaVRpbWUse3NjYWxlOnRoaXMudGFyZ2V0U2NhbGV9KS50byh0aGlzLmFuaVRpbWUse3NjYWxlOnRoaXMuc2NhbGV9KS51bmlvbigpLnJlcGVhdEZvcmV2ZXIoKS5zdGFydCgpO1xuICAgIH1cbiAgICBwcml2YXRlIFN0b3BBbmkoKXtcbiAgICAgICAgY2MuVHdlZW4uc3RvcEFsbEJ5VGFyZ2V0KHRoaXMuZ0J1dHRvbi5ub2RlKVxuICAgICAgICB0aGlzLmdCdXR0b24ubm9kZS5zY2FsZSA9IHRoaXMuc2NhbGU7XG4gICAgfVxuICAgIC8vIOaYr+WQpuWkhOS6jueCueWHu+eKtuaAgVxuICAgIHB1YmxpYyBJc0NsaWNrU3RhdGUoKXtcbiAgICAgICAgcmV0dXJuIHRoaXMuYkNsaWNrO1xuICAgIH1cbiAgICAvLyDmmK/lkKblpITkuo7ngrnlh7vnirbmgIFcbiAgICBwdWJsaWMgSXNMb25nQ2xpY2tTdGF0ZSgpe1xuICAgICAgICByZXR1cm4gdGhpcy5iTG9uZ1ByZXNzO1xuICAgIH1cbn0iXX0=
|