"use strict";
|
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
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) : new P(function (resolve) { resolve(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 };
|
}
|
};
|
var _this_1 = this;
|
Object.defineProperty(exports, "__esModule", { value: true });
|
var getSaveData = function (_this) { return __awaiter(_this_1, void 0, void 0, function () {
|
var formId, doccode, _a, error, result, data, formData;
|
return __generator(this, function (_b) {
|
switch (_b.label) {
|
case 0:
|
formId = _this.data.formId;
|
doccode = _this.data.doccode;
|
return [4, wx.$utils.to(wx.$http.request({
|
url: "/shopping/panicBuying.do?m=getPanicBuyingDetail",
|
data: {
|
doccode: doccode,
|
isEdit: true,
|
SellerOpenId: wx.globalData.OpenId
|
}
|
}))];
|
case 1:
|
_a = _b.sent(), error = _a[0], result = _a[1];
|
if (error) {
|
console.log(error);
|
return [2];
|
}
|
console.log(result);
|
data = result.list[0];
|
formData = {
|
promotionsTitle: data.title,
|
promotionDescription: data.description,
|
startTime: data.effectiveStartDate,
|
endTime: data.effectiveEndDate,
|
coverImageList: (data.coverImageUrl && _this.getCoverImageList(data)) || [],
|
imagesList: data.imagesUrl,
|
coverImage: data.coverImage,
|
images: data.images,
|
freeId: data.freeId,
|
};
|
if (formId == 710802) {
|
formData.originalPrice = data.originalPrice;
|
formData.flashSalePrice = data.salesPrice;
|
formData.flashSaleTotal = data.quantity;
|
formData.flashSaleLimit = data.restrictBuyingQuantity;
|
}
|
if (formId == 710803) {
|
formData.originalPrice = data.salesPrice;
|
}
|
if (formId == 710804) {
|
formData.originalPrice = data.originalPrice;
|
formData.flashSalePrice = data.salesPrice;
|
formData.flashSaleTotal = data.numberOfTeam;
|
}
|
_this.setData(__assign({}, formData, { coverImageUrl: data.coverImageUrl, sellerList: result.sellerList, storeList: result.storeList, status: data.panicBuyingStatus, delivery: {
|
freeId: data.freeId,
|
freeName: data.freeName,
|
isRequiredAddress: data.isRequiredAddress,
|
transCosts: data.transCosts,
|
} }));
|
console.log('配送数据。。。', _this.data.delivery);
|
wx.setNavigationBarTitle({
|
title: data.title
|
});
|
return [2];
|
}
|
});
|
}); };
|
exports.getSaveData = getSaveData;
|
var postFormData = function (_this, data) { return __awaiter(_this_1, void 0, void 0, function () {
|
var _a, error, res;
|
return __generator(this, function (_b) {
|
switch (_b.label) {
|
case 0: return [4, wx.$utils.to(wx.$http.request({
|
url: '/shopping/panicBuying.do?m=saveDocCode',
|
data: data,
|
method: 'POST'
|
}))];
|
case 1:
|
_a = _b.sent(), error = _a[0], res = _a[1];
|
if (error) {
|
console.log(error);
|
return [2, false];
|
}
|
console.log(res);
|
if (res.state === 'success') {
|
wx.showToast({
|
title: '成功',
|
duration: 2000
|
});
|
_this.setData({
|
doccode: res.DocCode
|
});
|
}
|
if (res.state === 'failed' && res.sellerCheckedBalance > 0) {
|
_this.setData({
|
sellerUnCheckedNames: res.sellerUnCheckedNames,
|
isShowDialog: true
|
});
|
}
|
return [2, res.state === 'success'];
|
}
|
});
|
}); };
|
var promotionsSubmitHandler = function (_this, validatorInstance) { return __awaiter(_this_1, void 0, void 0, function () {
|
var formData, type, timeQuantum, sellerEdit, storeEdit, fileUploader, fileUploaderMultiple, checkTransCosts, transCosts, deliveryMethod, checkStartTime, checkEndTime, checkCoverImage, checkAllData, sellerList, storeList, checkDefaultSeller, checkArr, data, coverImage, coverImageUrl, images, selectedTime, rules, _i, rules_1, rule, errorMsg;
|
return __generator(this, function (_a) {
|
switch (_a.label) {
|
case 0:
|
formData = _this.data;
|
type = {
|
710802: 1,
|
710803: 2,
|
710804: 3,
|
};
|
timeQuantum = _this.selectComponent('#time-quantum');
|
sellerEdit = _this.selectComponent('#seller-edit');
|
storeEdit = _this.selectComponent('#store-edit');
|
fileUploader = _this.selectComponent('#file-uploader');
|
fileUploaderMultiple = _this.selectComponent('#file-uploader-multiple');
|
checkTransCosts = true;
|
transCosts = 0;
|
if (formData.formId == 710802 || formData.formId == 710804) {
|
deliveryMethod = _this.selectComponent('#delivery-method');
|
if (deliveryMethod.data.isRequiredAddress) {
|
checkTransCosts = deliveryMethod.checkFields();
|
transCosts = Number(deliveryMethod.data.transCosts);
|
}
|
}
|
console.log(timeQuantum);
|
checkStartTime = timeQuantum.checkTime("startTime");
|
checkEndTime = timeQuantum.checkTime("endTime");
|
checkCoverImage = fileUploader.checkImages("coverImage", "请上传一张封面图");
|
checkAllData = validatorInstance.checkAllData();
|
sellerList = sellerEdit.getSellerList();
|
if (sellerList.length < 1) {
|
wx.showToast({
|
title: '请选择营销人员',
|
icon: 'none',
|
duration: 2000
|
});
|
return [2];
|
}
|
storeList = storeEdit.getSelectedStoreIdList();
|
console.log('待提交的门店id', storeList);
|
checkDefaultSeller = sellerEdit.checkDefaultSeller();
|
if (!checkDefaultSeller) {
|
wx.showToast({
|
title: '请选择默认营销人员',
|
icon: 'none',
|
duration: 2000
|
});
|
return [2];
|
}
|
console.log('checkDefaultSeller', checkDefaultSeller);
|
checkArr = [checkTransCosts, checkStartTime, checkEndTime, checkCoverImage, checkAllData];
|
data = {};
|
if (!checkArr.every(function (item) {
|
return item;
|
})) return [3, 2];
|
console.log('....提交成功');
|
coverImage = fileUploader.getCoverImageUnid();
|
coverImageUrl = fileUploader.getImgList()[0].url || '';
|
_this.setData({
|
coverImageUrl: coverImageUrl
|
});
|
images = fileUploaderMultiple.getImagesUnid();
|
console.log(coverImage, images, coverImageUrl);
|
selectedTime = timeQuantum.getSelectedTime();
|
data = {
|
docCode: formData.doccode,
|
formId: formData.formId,
|
docStatus: 100,
|
coverImage: coverImage,
|
images: images,
|
effectiveStartDate: formData.startTime || selectedTime.startTime,
|
effectiveEndDate: formData.endTime || selectedTime.endTime,
|
freeId: formData.freeId,
|
title: formData.promotionsTitle,
|
description: formData.promotionDescription || '',
|
storeList: storeList,
|
sellerList: sellerList,
|
};
|
if (formData.formId == 710802) {
|
data.transCosts = transCosts;
|
data.originalPrice = Number(formData.originalPrice);
|
data.quantity = Number(formData.flashSaleTotal);
|
data.salesPrice = Number(formData.flashSalePrice);
|
data.restrictBuyingQuantity = Number(formData.flashSaleLimit);
|
}
|
if (formData.formId == 710803) {
|
data.salesPrice = Number(formData.originalPrice);
|
}
|
if (formData.formId == 710804) {
|
data.transCosts = transCosts;
|
data.originalPrice = Number(formData.originalPrice);
|
data.salesPrice = Number(formData.flashSalePrice);
|
data.numberOfTeam = Number(formData.flashSaleTotal);
|
}
|
console.log('待发布数据', data);
|
return [4, postFormData(_this, data)];
|
case 1:
|
if (!(_a.sent()))
|
return [2];
|
if (_this.data.fromPage == 'edit') {
|
wx.navigateBack();
|
}
|
else {
|
wx.redirectTo({
|
url: "../promotionsManageList/promotionsManageList?tab=" + type[formData.formId]
|
});
|
}
|
return [3, 3];
|
case 2:
|
console.log('还有错误未处理');
|
if (!checkCoverImage) {
|
wx.$utils.scrollToError('#file-uploader', '请上传一张封面图');
|
return [2];
|
}
|
if (!checkAllData) {
|
rules = validatorInstance.getRulers();
|
for (_i = 0, rules_1 = rules; _i < rules_1.length; _i++) {
|
rule = rules_1[_i];
|
errorMsg = _this.data[rule + "Error"];
|
if (errorMsg) {
|
wx.$utils.scrollToError("#" + rule, errorMsg);
|
break;
|
}
|
}
|
return [2];
|
}
|
if (!checkStartTime) {
|
wx.$utils.scrollToError('#time-quantum', '开始时间需小于结束时间');
|
}
|
_a.label = 3;
|
case 3: return [2];
|
}
|
});
|
}); };
|
exports.promotionsSubmitHandler = promotionsSubmitHandler;
|
var promotionsSaveHandler = function (_this) { return __awaiter(_this_1, void 0, void 0, function () {
|
var formData, timeQuantum, sellerEdit, sellerList, storeEdit, storeList, fileUploader, fileUploaderMultiple, coverImage, images, transCosts, deliveryMethod, selectedTime, data;
|
return __generator(this, function (_a) {
|
switch (_a.label) {
|
case 0:
|
formData = _this.data;
|
timeQuantum = _this.selectComponent('#time-quantum');
|
sellerEdit = _this.selectComponent('#seller-edit');
|
sellerList = sellerEdit.getSellerList();
|
storeEdit = _this.selectComponent('#store-edit');
|
storeList = storeEdit.getSelectedStoreIdList();
|
console.log('待提交的门店id', storeList);
|
fileUploader = _this.selectComponent('#file-uploader');
|
fileUploaderMultiple = _this.selectComponent('#file-uploader-multiple');
|
console.log('....提交成功');
|
coverImage = fileUploader.getCoverImageUnid();
|
images = fileUploaderMultiple.getImagesUnid();
|
transCosts = 0;
|
if (formData.formId == 710802 || formData.formId == 710804) {
|
deliveryMethod = _this.selectComponent('#delivery-method');
|
if (deliveryMethod.data.isRequiredAddress) {
|
transCosts = Number(deliveryMethod.data.transCosts);
|
}
|
}
|
console.log(coverImage, images);
|
selectedTime = timeQuantum.getSelectedTime();
|
data = {
|
docCode: formData.doccode,
|
formId: formData.formId,
|
docStatus: 0,
|
coverImage: coverImage,
|
images: images,
|
effectiveStartDate: formData.startTime || selectedTime.startTime,
|
effectiveEndDate: formData.endTime || selectedTime.endTime,
|
freeId: formData.freeId,
|
title: formData.promotionsTitle,
|
description: formData.promotionDescription,
|
storeList: storeList,
|
sellerList: sellerList,
|
};
|
if (formData.formId == 710802) {
|
data.transCosts = transCosts;
|
data.originalPrice = Number(formData.originalPrice) || 0;
|
data.quantity = Number(formData.flashSaleTotal) || 0;
|
data.salesPrice = Number(formData.flashSalePrice) || 0;
|
data.restrictBuyingQuantity = Number(formData.flashSaleLimit) || 0;
|
}
|
if (formData.formId == 710803) {
|
data.salesPrice = Number(formData.originalPrice) || 0;
|
}
|
if (formData.formId == 710804) {
|
data.transCosts = transCosts;
|
data.originalPrice = Number(formData.originalPrice) || 0;
|
data.salesPrice = Number(formData.flashSalePrice) || 0;
|
data.numberOfTeam = Number(formData.flashSaleTotal) || 0;
|
}
|
console.log('待保存数据', data);
|
return [4, postFormData(_this, data)];
|
case 1:
|
if (!(_a.sent()))
|
return [2];
|
wx.showModal({
|
title: '提示',
|
content: '保存成功',
|
confirmText: '前往预览',
|
cancelText: '留在此处',
|
success: function (res) {
|
if (res.confirm) {
|
console.log('用户点击确定');
|
wx.redirectTo({
|
url: "/pages/detail/detail?from=promotionsDraft&doccode=" + _this.data.doccode
|
});
|
}
|
else if (res.cancel) {
|
console.log('用户点击取消');
|
}
|
}
|
});
|
return [2];
|
}
|
});
|
}); };
|
exports.promotionsSaveHandler = promotionsSaveHandler;
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbW90aW9uc0NyZWF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByb21vdGlvbnNDcmVhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxtQkFxVUE7O0FBclVBLElBQU0sV0FBVyxHQUFHLFVBQU8sS0FBUzs7Ozs7Z0JBQzlCLE1BQU0sR0FBUSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDaEMsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUNYLFdBQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ3RDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO3dCQUNmLEdBQUcsRUFBQyxpREFBaUQ7d0JBQ3JELElBQUksRUFBQzs0QkFDSCxPQUFPLFNBQUE7NEJBQ1AsTUFBTSxFQUFDLElBQUk7NEJBQ1gsWUFBWSxFQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTTt5QkFDbEM7cUJBQ0YsQ0FBQyxDQUNILEVBQUE7O2dCQVRHLEtBQWtCLFNBU3JCLEVBVEksS0FBSyxRQUFBLEVBQUUsTUFBTSxRQUFBO2dCQVVsQixJQUFJLEtBQUssRUFBQztvQkFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNuQixXQUFPO2lCQUNSO2dCQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2hCLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixRQUFRLEdBQU87b0JBQ2pCLGVBQWUsRUFBRSxJQUFJLENBQUMsS0FBSztvQkFDM0Isb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFdBQVc7b0JBQ3RDLFNBQVMsRUFBRSxJQUFJLENBQUMsa0JBQWtCO29CQUNsQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtvQkFD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PSBhc3luYyAoX3RoaXM6YW55KSA9PntcclxuICBsZXQgZm9ybUlkOiBhbnkgPSBfdGhpcy5kYXRhLmZvcm1JZDtcclxuICBsZXQgZG9jY29kZSA9IF90aGlzLmRhdGEuZG9jY29kZTtcclxuICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxyXG4gICAgd3guJGh0dHAucmVxdWVzdCh7XHJcbiAgICAgIHVybDpgL3Nob3BwaW5nL3BhbmljQnV5aW5nLmRvP209Z2V0UGFuaWNCdXlpbmdEZXRhaWxgLFxyXG4gICAgICBkYXRhOntcclxuICAgICAgICBkb2Njb2RlLFxyXG4gICAgICAgIGlzRWRpdDp0cnVlLFxyXG4gICAgICAgIFNlbGxlck9wZW5JZDp3eC5nbG9iYWxEYXRhLk9wZW5JZFxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIClcclxuICBpZiAoZXJyb3Ipe1xyXG4gICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gIGxldCBkYXRhID0gcmVzdWx0Lmxpc3RbMF07XHJcbiAgbGV0IGZvcm1EYXRhOmFueSA9IHtcclxuICAgIHByb21vdGlvbnNUaXRsZTogZGF0YS50aXRsZSxcclxuICAgIHByb21vdGlvbkRlc2NyaXB0aW9uOiBkYXRhLmRlc2NyaXB0aW9uLFxyXG4gICAgc3RhcnRUaW1lOiBkYXRhLmVmZmVjdGl2ZVN0YXJ0RGF0ZSxcclxuICAgIGVuZFRpbWU6IGRhdGEuZWZmZWN0aXZlRW5kRGF0ZSxcclxuICAgIGNvdmVySW1hZ2VMaXN0OiAoZGF0YS5jb3ZlckltYWdlVXJsJiZfdGhpcy5nZXRDb3ZlckltYWdlTGlzdChkYXRhKSl8fFtdLFxyXG4gICAgLy8gaW1hZ2VzTGlzdDogKGRhdGEuaW1hZ2VzVXJsLmxlbmd0aD4wJiZfdGhpcy5nZXRJbWFnZXNMaXN0KGRhdGEpKXx8W10sXHJcbiAgICBpbWFnZXNMaXN0OiBkYXRhLmltYWdlc1VybCxcclxuICAgIGNvdmVySW1hZ2U6IGRhdGEuY292ZXJJbWFnZSxcclxuICAgIGltYWdlczogZGF0YS5pbWFnZXMsXHJcbiAgICBmcmVlSWQ6ZGF0YS5mcmVlSWQsXHJcbiAgfTtcclxuICBpZiAoZm9ybUlkPT03MTA4MDIpe1xyXG4gICAgZm9ybURhdGEub3JpZ2luYWxQcmljZT1kYXRhLm9yaWdpbmFsUHJpY2U7XHJcbiAgICBmb3JtRGF0YS5mbGFzaFNhbGVQcmljZT0gZGF0YS5zYWxlc1ByaWNlO1xyXG4gICAgZm9ybURhdGEuZmxhc2hTYWxlVG90YWw9IGRhdGEucXVhbnRpdHk7XHJcbiAgICBmb3JtRGF0YS5mbGFzaFNhbGVMaW1pdD0gZGF0YS5yZXN0cmljdEJ1eWluZ1F1YW50aXR5O1xyXG4gIH1cclxuICBpZiAoZm9ybUlkPT03MTA4MDMpe1xyXG4gICAgZm9ybURhdGEub3JpZ2luYWxQcmljZT1kYXRhLnNhbGVzUHJpY2U7XHJcbiAgfVxyXG4gIGlmIChmb3JtSWQ9PTcxMDgwNCl7XHJcbiAgICBmb3JtRGF0YS5vcmlnaW5hbFByaWNlPWRhdGEub3JpZ2luYWxQcmljZTtcclxuICAgIGZvcm1EYXRhLmZsYXNoU2FsZVByaWNlPSBkYXRhLnNhbGVzUHJpY2U7XHJcbiAgICBmb3JtRGF0YS5mbGFzaFNhbGVUb3RhbD0gZGF0YS5udW1iZXJPZlRlYW07XHJcbiAgfVxyXG4gIF90aGlzLnNldERhdGEoe1xyXG4gICAgLi4uZm9ybURhdGEsXHJcbiAgICBjb3ZlckltYWdlVXJsOmRhdGEuY292ZXJJbWFnZVVybCxcclxuICAgIC8vIFtgZWZmZWN0aXZlU3RhcnREYXRlYF06IGRhdGEuZWZmZWN0aXZlU3RhcnREYXRlLFxyXG4gICAgLy8gW2BlZmZlY3RpdmVFbmREYXRlYF06IGRhdGEuZWZmZWN0aXZlRW5kRGF0ZSxcclxuICAgIC8vIFtgZnJlZUlkYF06IGRhdGEuZnJlZUlkLFxyXG4gICAgLy8gW2B0aXRsZWBdOiBkYXRhLnRpdGxlLFxyXG4gICAgLy8gW2BvcmlnaW5hbFByaWNlYF06IGRhdGEub3JpZ2luYWxQcmljZSxcclxuICAgIC8vIFtgc2FsZXNQcmljZWBdOiBkYXRhLnNhbGVzUHJpY2UsXHJcbiAgICAvLyBbYHF1YW50aXR5YF06IGRhdGEucXVhbnRpdHksXHJcbiAgICAvLyBbYHJlc3RyaWN0QnV5aW5nUXVhbnRpdHlgXTogZGF0YS5yZXN0cmljdEJ1eWluZ1F1YW50aXR5LFxyXG4gICAgLy8gW2BkZXNjcmlwdGlvbmBdOiBkYXRhLmRlc2NyaXB0aW9uLFxyXG4gICAgc2VsbGVyTGlzdDpyZXN1bHQuc2VsbGVyTGlzdCxcclxuICAgIHN0b3JlTGlzdDpyZXN1bHQuc3RvcmVMaXN0LFxyXG4gICAgc3RhdHVzOmRhdGEucGFuaWNCdXlpbmdTdGF0dXMsXHJcbiAgICBkZWxpdmVyeTp7XHJcbiAgICAgIGZyZWVJZDpkYXRhLmZyZWVJZCxcclxuICAgICAgZnJlZU5hbWU6ZGF0YS5mcmVlTmFtZSxcclxuICAgICAgaXNSZXF1aXJlZEFkZHJlc3M6ZGF0YS5pc1JlcXVpcmVkQWRkcmVzcyxcclxuICAgICAgdHJhbnNDb3N0czpkYXRhLnRyYW5zQ29zdHMsXHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgY29uc29sZS5sb2coJ+mFjemAgeaVsOaNruOAguOAguOAgicsX3RoaXMuZGF0YS5kZWxpdmVyeSk7XHJcbiAgd3guc2V0TmF2aWdhdGlvbkJhclRpdGxlKHtcclxuICAgIHRpdGxlOiBkYXRhLnRpdGxlXHJcbiAgfSlcclxufVxyXG5cclxuY29uc3QgcG9zdEZvcm1EYXRhID0gYXN5bmMgKF90aGlzOmFueSxkYXRhOm9iamVjdCkgPT57XHJcbiAgbGV0IFtlcnJvciwgcmVzXSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xyXG4gICAgICB1cmw6Jy9zaG9wcGluZy9wYW5pY0J1eWluZy5kbz9tPXNhdmVEb2NDb2RlJyxcclxuICAgICAgZGF0YSxcclxuICAgICAgbWV0aG9kOidQT1NUJ1xyXG4gICAgfSlcclxuICApXHJcbiAgaWYgKGVycm9yKSB7XHJcbiAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIGNvbnNvbGUubG9nKHJlcyk7XHJcbiAgaWYgKHJlcy5zdGF0ZSA9PT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICB0aXRsZTogJ+aIkOWKnycsXHJcbiAgICAgIGR1cmF0aW9uOiAyMDAwXHJcbiAgICB9KVxyXG4gICAgX3RoaXMuc2V0RGF0YSh7XHJcbiAgICAgIGRvY2NvZGU6cmVzLkRvY0NvZGVcclxuICAgIH0pXHJcbiAgICAvLyBjb25zb2xlLmxvZygn5rS75Yqo5Y2V5Y+3JyxfdGhpcy5kYXRhLmZvcm1EYXRhKTtcclxuICB9XHJcbiAgaWYgKHJlcy5zdGF0ZSA9PT0gJ2ZhaWxlZCcmJnJlcy5zZWxsZXJDaGVja2VkQmFsYW5jZT4wKSB7XHJcbiAgICBfdGhpcy5zZXREYXRhKHtcclxuICAgICAgc2VsbGVyVW5DaGVja2VkTmFtZXM6IHJlcy5zZWxsZXJVbkNoZWNrZWROYW1lcyxcclxuICAgICAgaXNTaG93RGlhbG9nOiB0cnVlXHJcbiAgICB9KVxyXG4gIH1cclxuICByZXR1cm4gcmVzLnN0YXRlID09PSAnc3VjY2Vzcyc7XHJcbn1cclxuY29uc3QgcHJvbW90aW9uc1N1Ym1pdEhhbmRsZXIgPSBhc3luYyAoX3RoaXM6YW55LHZhbGlkYXRvckluc3RhbmNlOmFueSkgPT57XHJcbiAgLy8gbGV0IHtfdGhpcyx2YWxpZGF0b3JJbnN0YW5jZX0gPSBvYmo7XHJcbiAgbGV0IGZvcm1EYXRhOiBhbnkgPSBfdGhpcy5kYXRhO1xyXG4gIGxldCB0eXBlID0ge1xyXG4gICAgNzEwODAyOiAxLCAvL+enkuadgFxyXG4gICAgNzEwODAzOiAyLCAvL+aKpeWQjVxyXG4gICAgNzEwODA0OiAzLCAvL+Wboui0rVxyXG4gIH1cclxuICBsZXQgdGltZVF1YW50dW0gPSBfdGhpcy5zZWxlY3RDb21wb25lbnQoJyN0aW1lLXF1YW50dW0nKTtcclxuICBsZXQgc2VsbGVyRWRpdCA9IF90aGlzLnNlbGVjdENvbXBvbmVudCgnI3NlbGxlci1lZGl0Jyk7XHJcbiAgbGV0IHN0b3JlRWRpdCA9IF90aGlzLnNlbGVjdENvbXBvbmVudCgnI3N0b3JlLWVkaXQnKTtcclxuICBsZXQgZmlsZVVwbG9hZGVyID0gX3RoaXMuc2VsZWN0Q29tcG9uZW50KCcjZmlsZS11cGxvYWRlcicpO1xyXG4gIGxldCBmaWxlVXBsb2FkZXJNdWx0aXBsZSA9IF90aGlzLnNlbGVjdENvbXBvbmVudCgnI2ZpbGUtdXBsb2FkZXItbXVsdGlwbGUnKTtcclxuXHJcbiAgbGV0IGNoZWNrVHJhbnNDb3N0cyA9IHRydWU7XHJcbiAgbGV0IHRyYW5zQ29zdHMgPSAwO1xyXG4gIGlmIChmb3JtRGF0YS5mb3JtSWQ9PTcxMDgwMnx8Zm9ybURhdGEuZm9ybUlkPT03MTA4MDQpe1xyXG4gICAgbGV0IGRlbGl2ZXJ5TWV0aG9kID0gX3RoaXMuc2VsZWN0Q29tcG9uZW50KCcjZGVsaXZlcnktbWV0aG9kJyk7XHJcbiAgICBpZiAoZGVsaXZlcnlNZXRob2QuZGF0YS5pc1JlcXVpcmVkQWRkcmVzcyl7XHJcbiAgICAgIGNoZWNrVHJhbnNDb3N0cyA9IGRlbGl2ZXJ5TWV0aG9kLmNoZWNrRmllbGRzKCk7XHJcbiAgICAgIHRyYW5zQ29zdHMgPSBOdW1iZXIoZGVsaXZlcnlNZXRob2QuZGF0YS50cmFuc0Nvc3RzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnNvbGUubG9nKHRpbWVRdWFudHVtKTtcclxuXHJcbiAgbGV0IGNoZWNrU3RhcnRUaW1lID0gdGltZVF1YW50dW0uY2hlY2tUaW1lKFwic3RhcnRUaW1lXCIpO1xyXG4gIGxldCBjaGVja0VuZFRpbWUgPSB0aW1lUXVhbnR1bS5jaGVja1RpbWUoXCJlbmRUaW1lXCIpO1xyXG4gIGxldCBjaGVja0NvdmVySW1hZ2UgPSBmaWxlVXBsb2FkZXIuY2hlY2tJbWFnZXMoXCJjb3ZlckltYWdlXCIsIFwi6K+35LiK5Lyg5LiA5byg5bCB6Z2i5Zu+XCIpO1xyXG4gIC8vIGxldCBjaGVja0ltYWdlcyA9IGZpbGVVcGxvYWRlck11bHRpcGxlLmNoZWNrSW1hZ2VzKFwiaW1hZ2VzXCIsIFwi6K+36Iez5bCR5LiK5Lyg5LiA5byg5Zu+54mHXCIpO1xyXG4gIGxldCBjaGVja0FsbERhdGEgPSB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0FsbERhdGEoKTtcclxuICAvLyBpZiAoX3RoaXMuZGF0YS5nb29kc0ltZ0xpc3QubGVuZ3RoIDwgMSkge1xyXG4gIC8vICAgY29uc29sZS5sb2coJ+ivt+S4iuS8oOS6p+WTgeWbvueJhycpO1xyXG4gIC8vIH1cclxuICBsZXQgc2VsbGVyTGlzdCA9IHNlbGxlckVkaXQuZ2V0U2VsbGVyTGlzdCgpO1xyXG4gIGlmIChzZWxsZXJMaXN0Lmxlbmd0aDwxKSB7XHJcbiAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICB0aXRsZTogJ+ivt+mAieaLqeiQpemUgOS6uuWRmCcsXHJcbiAgICAgIGljb246ICdub25lJyxcclxuICAgICAgZHVyYXRpb246IDIwMDBcclxuICAgIH0pXHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgbGV0IHN0b3JlTGlzdCA9IHN0b3JlRWRpdC5nZXRTZWxlY3RlZFN0b3JlSWRMaXN0KCk7XHJcbiAgY29uc29sZS5sb2coJ+W+heaPkOS6pOeahOmXqOW6l2lkJyxzdG9yZUxpc3QpO1xyXG4gIGxldCBjaGVja0RlZmF1bHRTZWxsZXIgPSBzZWxsZXJFZGl0LmNoZWNrRGVmYXVsdFNlbGxlcigpO1xyXG4gIGlmICghY2hlY2tEZWZhdWx0U2VsbGVyKSB7XHJcbiAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICB0aXRsZTogJ+ivt+mAieaLqem7mOiupOiQpemUgOS6uuWRmCcsXHJcbiAgICAgIGljb246ICdub25lJyxcclxuICAgICAgZHVyYXRpb246IDIwMDBcclxuICAgIH0pXHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgY29uc29sZS5sb2coJ2NoZWNrRGVmYXVsdFNlbGxlcicsY2hlY2tEZWZhdWx0U2VsbGVyKTtcclxuICBsZXQgY2hlY2tBcnIgPSBbY2hlY2tUcmFuc0Nvc3RzLGNoZWNrU3RhcnRUaW1lLGNoZWNrRW5kVGltZSxjaGVja0NvdmVySW1hZ2UsY2hlY2tBbGxEYXRhXTtcclxuICBsZXQgZGF0YSA9IHt9IGFzIGFueTtcclxuICBpZiAoY2hlY2tBcnIuZXZlcnkoKGl0ZW0pPT57XHJcbiAgICByZXR1cm4gaXRlbVxyXG4gIH0pKXtcclxuICAgIGNvbnNvbGUubG9nKCcuLi4u5o+Q5Lqk5oiQ5YqfJyk7XHJcbiAgICBsZXQgY292ZXJJbWFnZSA9IGZpbGVVcGxvYWRlci5nZXRDb3ZlckltYWdlVW5pZCgpO1xyXG4gICAgbGV0IGNvdmVySW1hZ2VVcmwgPSBmaWxlVXBsb2FkZXIuZ2V0SW1nTGlzdCgpWzBdLnVybHx8Jyc7XHJcbiAgICBfdGhpcy5zZXREYXRhKHtcclxuICAgICAgY292ZXJJbWFnZVVybFxyXG4gICAgfSlcclxuICAgIGxldCBpbWFnZXMgPSBmaWxlVXBsb2FkZXJNdWx0aXBsZS5nZXRJbWFnZXNVbmlkKCk7XHJcbiAgICBjb25zb2xlLmxvZyhjb3ZlckltYWdlLGltYWdlcyxjb3ZlckltYWdlVXJsKTtcclxuICAgIGxldCBzZWxlY3RlZFRpbWUgPSB0aW1lUXVhbnR1bS5nZXRTZWxlY3RlZFRpbWUoKTtcclxuICAgIGRhdGEgPSB7XHJcbiAgICAgIGRvY0NvZGU6IGZvcm1EYXRhLmRvY2NvZGUsIC8v5rS75Yqo5Y2V5Y+377yM5paw5bu65rS75Yqo5pe25Li656m65YC877yM57yW6L6R5pe26ZyA6KaBZG9jY29kZeWAvFxyXG4gICAgICBmb3JtSWQ6IGZvcm1EYXRhLmZvcm1JZCwgLy/lip/og73lj7fvvJrnp5LmnYAgNzEwODAyIO+8jCDmiqXlkI3pgoDnuqYgNzEwODAzIO+8jOWboui0rSA3MTA4MDRcclxuICAgICAgZG9jU3RhdHVzOjEwMCwgLy/ljZXmja7nirbmgIE6IDAg5L+d5a2Y77yI6LW36I2J77yJIO+8jDEwMCDlj5HluINcclxuICAgICAgY292ZXJJbWFnZSxcclxuICAgICAgaW1hZ2VzLFxyXG4gICAgICAvLyAuLi5fdGhpcy5kYXRhLmZvcm1EYXRhLFxyXG5cclxuICAgICAgZWZmZWN0aXZlU3RhcnREYXRlOiBmb3JtRGF0YS5zdGFydFRpbWUgfHwgc2VsZWN0ZWRUaW1lLnN0YXJ0VGltZSxcclxuICAgICAgZWZmZWN0aXZlRW5kRGF0ZTogZm9ybURhdGEuZW5kVGltZSAgfHwgc2VsZWN0ZWRUaW1lLmVuZFRpbWUsXHJcbiAgICAgIGZyZWVJZDogZm9ybURhdGEuZnJlZUlkLFxyXG4gICAgICB0aXRsZTogZm9ybURhdGEucHJvbW90aW9uc1RpdGxlLFxyXG4gICAgICBkZXNjcmlwdGlvbjogZm9ybURhdGEucHJvbW90aW9uRGVzY3JpcHRpb258fCcnLFxyXG4gICAgICBzdG9yZUxpc3QsXHJcbiAgICAgIHNlbGxlckxpc3QsXHJcbiAgICB9XHJcbiAgICBpZiAoZm9ybURhdGEuZm9ybUlkPT03MTA4MDIpe1xyXG4gICAgICBkYXRhLnRyYW5zQ29zdHMgPSB0cmFuc0Nvc3RzO1xyXG4gICAgICBkYXRhLm9yaWdpbmFsUHJpY2U9TnVtYmVyKGZvcm1EYXRhLm9yaWdpbmFsUHJpY2UpO1xyXG4gICAgICBkYXRhLnF1YW50aXR5ID0gTnVtYmVyKGZvcm1EYXRhLmZsYXNoU2FsZVRvdGFsKTtcclxuICAgICAgZGF0YS5zYWxlc1ByaWNlID0gTnVtYmVyKGZvcm1EYXRhLmZsYXNoU2FsZVByaWNlKTtcclxuICAgICAgZGF0YS5yZXN0cmljdEJ1eWluZ1F1YW50aXR5PSBOdW1iZXIoZm9ybURhdGEuZmxhc2hTYWxlTGltaXQpO1xyXG4gICAgfVxyXG4gICAgaWYgKGZvcm1EYXRhLmZvcm1JZD09NzEwODAzKXtcclxuICAgICAgZGF0YS5zYWxlc1ByaWNlID0gTnVtYmVyKGZvcm1EYXRhLm9yaWdpbmFsUHJpY2UpO1xyXG4gICAgfVxyXG4gICAgaWYgKGZvcm1EYXRhLmZvcm1JZD09NzEwODA0KXtcclxuICAgICAgZGF0YS50cmFuc0Nvc3RzID0gdHJhbnNDb3N0cztcclxuICAgICAgZGF0YS5vcmlnaW5hbFByaWNlPU51bWJlcihmb3JtRGF0YS5vcmlnaW5hbFByaWNlKTtcclxuICAgICAgZGF0YS5zYWxlc1ByaWNlID0gTnVtYmVyKGZvcm1EYXRhLmZsYXNoU2FsZVByaWNlKTtcclxuICAgICAgZGF0YS5udW1iZXJPZlRlYW09IE51bWJlcihmb3JtRGF0YS5mbGFzaFNhbGVUb3RhbClcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKCflvoXlj5HluIPmlbDmja4nLGRhdGEpO1xyXG4gICAgaWYgKCFhd2FpdCBwb3N0Rm9ybURhdGEoX3RoaXMsZGF0YSkpIHJldHVybjtcclxuICAgIGlmIChfdGhpcy5kYXRhLmZyb21QYWdlPT0nZWRpdCcpe1xyXG4gICAgICB3eC5uYXZpZ2F0ZUJhY2soKTtcclxuICAgIH0gZWxzZXtcclxuICAgICAgd3gucmVkaXJlY3RUbyh7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHVybDpgLi4vcHJvbW90aW9uc01hbmFnZUxpc3QvcHJvbW90aW9uc01hbmFnZUxpc3Q/dGFiPSR7dHlwZVtmb3JtRGF0YS5mb3JtSWRdfWBcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgY29uc29sZS5sb2coJ+i/mOaciemUmeivr+acquWkhOeQhicpO1xyXG4gICAgaWYgKCFjaGVja0NvdmVySW1hZ2UpIHtcclxuICAgICAgd3guJHV0aWxzLnNjcm9sbFRvRXJyb3IoJyNmaWxlLXVwbG9hZGVyJywn6K+35LiK5Lyg5LiA5byg5bCB6Z2i5Zu+JylcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCFjaGVja0FsbERhdGEpIHtcclxuICAgICAgbGV0IHJ1bGVzID0gdmFsaWRhdG9ySW5zdGFuY2UuZ2V0UnVsZXJzKCk7XHJcbiAgICAgIGZvciAoY29uc3QgcnVsZSBvZiBydWxlcykge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBsZXQgZXJyb3JNc2cgPSBfdGhpcy5kYXRhW2Ake3J1bGV9RXJyb3JgXTtcclxuICAgICAgICBpZiAoZXJyb3JNc2cpe1xyXG4gICAgICAgICAgd3guJHV0aWxzLnNjcm9sbFRvRXJyb3IoYCMke3J1bGV9YCxlcnJvck1zZylcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWNoZWNrU3RhcnRUaW1lKXtcclxuICAgICAgd3guJHV0aWxzLnNjcm9sbFRvRXJyb3IoJyN0aW1lLXF1YW50dW0nLCflvIDlp4vml7bpl7TpnIDlsI/kuo7nu5PmnZ/ml7bpl7QnKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG59XHJcblxyXG5jb25zdCBwcm9tb3Rpb25zU2F2ZUhhbmRsZXIgPSBhc3luYyAoX3RoaXM6YW55KSA9PntcclxuICBsZXQgZm9ybURhdGE6IGFueSA9IF90aGlzLmRhdGE7XHJcbiAgLy8gbGV0IHR5cGUgPSB7XHJcbiAgLy8gICA3MTA4MDI6IDEsIC8v56eS5p2AXHJcbiAgLy8gICA3MTA4MDM6IDIsIC8v5oql5ZCNXHJcbiAgLy8gICA3MTA4MDQ6IDMsIC8v5Zui6LStXHJcbiAgLy8gfVxyXG4gIGxldCB0aW1lUXVhbnR1bSA9IF90aGlzLnNlbGVjdENvbXBvbmVudCgnI3RpbWUtcXVhbnR1bScpO1xyXG4gIGxldCBzZWxsZXJFZGl0ID0gX3RoaXMuc2VsZWN0Q29tcG9uZW50KCcjc2VsbGVyLWVkaXQnKTtcclxuICBsZXQgc2VsbGVyTGlzdCA9IHNlbGxlckVkaXQuZ2V0U2VsbGVyTGlzdCgpO1xyXG4gIGxldCBzdG9yZUVkaXQgPSBfdGhpcy5zZWxlY3RDb21wb25lbnQoJyNzdG9yZS1lZGl0Jyk7XHJcbiAgbGV0IHN0b3JlTGlzdCA9IHN0b3JlRWRpdC5nZXRTZWxlY3RlZFN0b3JlSWRMaXN0KCk7XHJcbiAgY29uc29sZS5sb2coJ+W+heaPkOS6pOeahOmXqOW6l2lkJyxzdG9yZUxpc3QpO1xyXG4gIGxldCBmaWxlVXBsb2FkZXIgPSBfdGhpcy5zZWxlY3RDb21wb25lbnQoJyNmaWxlLXVwbG9hZGVyJyk7XHJcbiAgbGV0IGZpbGVVcGxvYWRlck11bHRpcGxlID0gX3RoaXMuc2VsZWN0Q29tcG9uZW50KCcjZmlsZS11cGxvYWRlci1tdWx0aXBsZScpO1xyXG4gIGNvbnNvbGUubG9nKCcuLi4u5o+Q5Lqk5oiQ5YqfJyk7XHJcbiAgbGV0IGNvdmVySW1hZ2UgPSBmaWxlVXBsb2FkZXIuZ2V0Q292ZXJJbWFnZVVuaWQoKTtcclxuICBsZXQgaW1hZ2VzID0gZmlsZVVwbG9hZGVyTXVsdGlwbGUuZ2V0SW1hZ2VzVW5pZCgpO1xyXG5cclxuICBsZXQgdHJhbnNDb3N0cyA9IDA7XHJcbiAgaWYgKGZvcm1EYXRhLmZvcm1JZD09NzEwODAyfHxmb3JtRGF0YS5mb3JtSWQ9PTcxMDgwNCl7XHJcbiAgICBsZXQgZGVsaXZlcnlNZXRob2QgPSBfdGhpcy5zZWxlY3RDb21wb25lbnQoJyNkZWxpdmVyeS1tZXRob2QnKTtcclxuICAgIGlmIChkZWxpdmVyeU1ldGhvZC5kYXRhLmlzUmVxdWlyZWRBZGRyZXNzKXtcclxuICAgICAgdHJhbnNDb3N0cyA9IE51bWJlcihkZWxpdmVyeU1ldGhvZC5kYXRhLnRyYW5zQ29zdHMpO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb25zb2xlLmxvZyhjb3ZlckltYWdlLGltYWdlcyk7XHJcbiAgbGV0IHNlbGVjdGVkVGltZSA9IHRpbWVRdWFudHVtLmdldFNlbGVjdGVkVGltZSgpO1xyXG4gIGxldCBkYXRhOmFueSA9IHtcclxuICAgIGRvY0NvZGU6IGZvcm1EYXRhLmRvY2NvZGUsIC8v5rS75Yqo5Y2V5Y+377yM5paw5bu65rS75Yqo5pe25Li656m65YC877yM57yW6L6R5pe26ZyA6KaBZG9jY29kZeWAvFxyXG4gICAgZm9ybUlkOiBmb3JtRGF0YS5mb3JtSWQsIC8v5Yqf6IO95Y+377ya56eS5p2AIDcxMDgwMiDvvIwg5oql5ZCN6YKA57qmIDcxMDgwMyDvvIzlm6LotK0gNzEwODA0XHJcbiAgICBkb2NTdGF0dXM6IDAsIC8v5Y2V5o2u54q25oCBOiAwIOS/neWtmO+8iOi1t+iNie+8iSDvvIwxMDAg5Y+R5biDXHJcbiAgICBjb3ZlckltYWdlLFxyXG4gICAgaW1hZ2VzLFxyXG4gICAgLy8gLi4uX3RoaXMuZGF0YS5mb3JtRGF0YSxcclxuXHJcbiAgICBlZmZlY3RpdmVTdGFydERhdGU6IGZvcm1EYXRhLnN0YXJ0VGltZSB8fCBzZWxlY3RlZFRpbWUuc3RhcnRUaW1lLFxyXG4gICAgZWZmZWN0aXZlRW5kRGF0ZTogZm9ybURhdGEuZW5kVGltZSAgfHwgc2VsZWN0ZWRUaW1lLmVuZFRpbWUsXHJcbiAgICBmcmVlSWQ6IGZvcm1EYXRhLmZyZWVJZCxcclxuICAgIHRpdGxlOiBmb3JtRGF0YS5wcm9tb3Rpb25zVGl0bGUsXHJcbiAgICBkZXNjcmlwdGlvbjogZm9ybURhdGEucHJvbW90aW9uRGVzY3JpcHRpb24sXHJcbiAgICBzdG9yZUxpc3QsXHJcbiAgICBzZWxsZXJMaXN0LFxyXG4gIH1cclxuICBpZiAoZm9ybURhdGEuZm9ybUlkPT03MTA4MDIpe1xyXG4gICAgZGF0YS50cmFuc0Nvc3RzID0gdHJhbnNDb3N0cztcclxuICAgIGRhdGEub3JpZ2luYWxQcmljZT1OdW1iZXIoZm9ybURhdGEub3JpZ2luYWxQcmljZSl8fDA7XHJcbiAgICBkYXRhLnF1YW50aXR5ID0gTnVtYmVyKGZvcm1EYXRhLmZsYXNoU2FsZVRvdGFsKXx8MDtcclxuICAgIGRhdGEuc2FsZXNQcmljZSA9IE51bWJlcihmb3JtRGF0YS5mbGFzaFNhbGVQcmljZSl8fDA7XHJcbiAgICBkYXRhLnJlc3RyaWN0QnV5aW5nUXVhbnRpdHk9IE51bWJlcihmb3JtRGF0YS5mbGFzaFNhbGVMaW1pdCl8fDA7XHJcbiAgfVxyXG4gIGlmIChmb3JtRGF0YS5mb3JtSWQ9PTcxMDgwMyl7XHJcbiAgICBkYXRhLnNhbGVzUHJpY2UgPSBOdW1iZXIoZm9ybURhdGEub3JpZ2luYWxQcmljZSl8fDA7XHJcbiAgfVxyXG4gIGlmIChmb3JtRGF0YS5mb3JtSWQ9PTcxMDgwNCl7XHJcbiAgICBkYXRhLnRyYW5zQ29zdHMgPSB0cmFuc0Nvc3RzO1xyXG4gICAgZGF0YS5vcmlnaW5hbFByaWNlPU51bWJlcihmb3JtRGF0YS5vcmlnaW5hbFByaWNlKXx8MDtcclxuICAgIGRhdGEuc2FsZXNQcmljZSA9IE51bWJlcihmb3JtRGF0YS5mbGFzaFNhbGVQcmljZSl8fDA7XHJcbiAgICBkYXRhLm51bWJlck9mVGVhbT0gTnVtYmVyKGZvcm1EYXRhLmZsYXNoU2FsZVRvdGFsKXx8MFxyXG4gIH1cclxuICBjb25zb2xlLmxvZygn5b6F5L+d5a2Y5pWw5o2uJyxkYXRhKTtcclxuICBpZiAoIWF3YWl0IHBvc3RGb3JtRGF0YShfdGhpcyxkYXRhKSkgcmV0dXJuO1xyXG4gIHd4LnNob3dNb2RhbCh7XHJcbiAgICB0aXRsZTogJ+aPkOekuicsXHJcbiAgICBjb250ZW50OiAn5L+d5a2Y5oiQ5YqfJyxcclxuICAgIGNvbmZpcm1UZXh0OifliY3lvoDpooTop4gnLFxyXG4gICAgY2FuY2VsVGV4dDon55WZ5Zyo5q2k5aSEJyxcclxuICAgIHN1Y2Nlc3MgKHJlcykge1xyXG4gICAgICBpZiAocmVzLmNvbmZpcm0pIHtcclxuICAgICAgICBjb25zb2xlLmxvZygn55So5oi354K55Ye756Gu5a6aJylcclxuICAgICAgICB3eC5yZWRpcmVjdFRvKHtcclxuICAgICAgICAgIHVybDpgL3BhZ2VzL2RldGFpbC9kZXRhaWw/ZnJvbT1wcm9tb3Rpb25zRHJhZnQmZG9jY29kZT0ke190aGlzLmRhdGEuZG9jY29kZX1gXHJcbiAgICAgICAgfSlcclxuICAgICAgfSBlbHNlIGlmIChyZXMuY2FuY2VsKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ+eUqOaIt+eCueWHu+WPlua2iCcpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9KVxyXG4gIHJldHVybjtcclxufVxyXG5leHBvcnQge1xyXG4gIHByb21vdGlvbnNTdWJtaXRIYW5kbGVyLFxyXG4gIHByb21vdGlvbnNTYXZlSGFuZGxlcixcclxuICBnZXRTYXZlRGF0YVxyXG59XHJcbiJdfQ==
|