榆山数据端小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

335 lines
35 KiB

"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 });
var basicReality_1 = require("../../../../../../api/basicReality");
Component({
data: {
streetContentList: [],
upOrDownStatus: 'down',
selectCondition: {
label: '组织活动总次数',
value: '0'
},
conditionOrder: 'asc',
conditionListVisible: false,
conditionList: [
{ value: '0', label: '组织活动总次数' },
{ value: '1', label: '参加活动总人数' },
{ value: '2', label: '省市级和区直机关-组织次数' },
{ value: '3', label: '省市级和区直机关-参与人数' },
{ value: '4', label: '驻区企事业单位-组织次数' },
{ value: '5', label: '驻区企事业单位-参加人数' },
{ value: '6', label: '驻区两新组织-组织次数' },
{ value: '7', label: '驻区两新组织-参加次数' }
],
developSituation: {},
unionAmount: {
resourceAmountTotal: 0,
resourceTimes: 0,
averageAmount: 0
},
categoryList: [
{ value: '21', label: '省级、市级和区直机关' },
{ value: '23', label: '驻区企事业单位' },
{ value: '24', label: '驻区两新组织' }
],
selectUnionCondition: {
value: '21',
label: '省级、市级和区直机关'
},
unionConditionVisible: false,
developSituationLineChart: {},
streetPreloadContentList: [
{ detailList: [1, 2], contentList: [1, 2, 3] },
{ detailList: [1, 2], contentList: [1, 2, 3] },
{ detailList: [1, 2], contentList: [1, 2, 3] }
],
preloadVisible: true,
streetId: '',
timeId: '',
deptNum: ''
},
lifetimes: {
attached: function () {
this.analysisOfBranch();
this.getResourceAmount();
this.deptAnalysisOfBranch();
this.rankingOfDevelopment();
}
},
methods: {
onUpOrDown: function () {
this.setData({
upOrDownStatus: this.data.upOrDownStatus === 'up' ? 'down' : 'up'
});
},
onShowConditionList: function () {
this.setData({
conditionListVisible: !this.data.conditionListVisible
});
},
onChangeCondition: function (e) {
var _this = this;
this.setData({
conditionListVisible: false,
preloadVisible: true,
streetContentList: []
});
var condition = e.currentTarget.dataset.condition;
this.data.conditionList.forEach(function (item) {
if (item.value === condition) {
_this.setData({
selectCondition: {
label: item.label,
value: item.value
}
});
}
});
this.rankingOfDevelopment();
},
onChangeConditionOrder: function () {
this.setData({
conditionOrder: this.data.conditionOrder === 'asc' ? 'desc' : 'asc',
preloadVisible: true,
streetContentList: []
});
this.rankingOfDevelopment();
},
analysisOfBranch: function () {
return __awaiter(this, void 0, void 0, function () {
var para, res, err_1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
para = {
streetId: this.data.streetId,
someMonthsType: this.data.timeId,
categoryType: '1'
};
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4, basicReality_1.analysisOfBranch(para)];
case 2:
res = _a.sent();
console.log('联建共建开展情况图表数据', res);
Object.assign(this.data.developSituation, res.data);
this.setData({
developSituation: this.data.developSituation
});
return [3, 4];
case 3:
err_1 = _a.sent();
console.error(err_1);
return [3, 4];
case 4: return [2];
}
});
});
},
getResourceAmount: function () {
return __awaiter(this, void 0, void 0, function () {
var para, res, err_2;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
para = {
streetId: this.data.streetId,
someMonthsType: this.data.timeId
};
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4, basicReality_1.getResourceAmount(para)];
case 2:
res = _a.sent();
console.log('联建共建资源整合金额', res);
Object.assign(this.data.unionAmount, res.data);
this.setData({
unionAmount: this.data.unionAmount
});
return [3, 4];
case 3:
err_2 = _a.sent();
console.error(err_2);
return [3, 4];
case 4: return [2];
}
});
});
},
onShowUnionConditionList: function () {
this.setData({
unionConditionVisible: !this.data.unionConditionVisible
});
},
onChnageUnionCondition: function (e) {
var _this = this;
var condition = e.currentTarget.dataset.condition;
this.data.categoryList.forEach(function (item) {
if (item.value === condition) {
_this.setData({
selectUnionCondition: {
label: item.label,
value: item.value
},
unionConditionVisible: false
});
}
});
this.deptAnalysisOfBranch();
},
deptAnalysisOfBranch: function () {
return __awaiter(this, void 0, void 0, function () {
var para, res, _a, categoryList, joinNumList, organizationsCountList, averageNum, err_3;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
para = {
streetId: this.data.streetId,
someMonthsType: this.data.timeId,
categoryCode: this.data.selectUnionCondition.value
};
_b.label = 1;
case 1:
_b.trys.push([1, 3, , 4]);
return [4, basicReality_1.deptAnalysisOfBranch(para)];
case 2:
res = _b.sent();
console.log('联建共建折线图', res);
_a = res.data, categoryList = _a.categoryList, joinNumList = _a.joinNumList, organizationsCountList = _a.organizationsCountList, averageNum = _a.averageNum;
Object.assign(this.data.developSituationLineChart, { categoryList: categoryList, joinNumList: joinNumList, organizationsCountList: organizationsCountList, averageNum: averageNum });
this.setData({
developSituationLineChart: this.data.developSituationLineChart,
deptNum: res.data.deptNum
});
return [3, 4];
case 3:
err_3 = _b.sent();
console.error(err_3);
return [3, 4];
case 4: return [2];
}
});
});
},
rankingOfDevelopment: function () {
return __awaiter(this, void 0, void 0, function () {
var para, res, list_1, err_4;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
para = {
streetId: this.data.streetId,
someMonthsType: this.data.timeId,
order: this.data.conditionOrder === 'asc' ? '0' : '1',
type: this.data.selectCondition.value
};
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4, basicReality_1.rankingOfDevelopment(para)];
case 2:
res = _a.sent();
console.log('联建共建开展情况排名', res);
list_1 = [];
if (res.data.streetList && res.data.streetList.length > 0) {
res.data.streetList.forEach(function (street) {
var contentList = [];
street.categoryInfoList.forEach(function (category) {
contentList.push({
name: category.categoryName,
organizationNum: category.organizationsCount,
enterNum: category.joinNum
});
});
var detailList = [
{ name: '组织总次数', num: street.allOrganizationsCount },
{ name: '参加总次数', num: street.allJoinNumCount }
];
list_1.push({
contentList: contentList,
detailList: detailList,
streetName: street.deptname
});
});
}
this.setData({
streetContentList: list_1,
preloadVisible: false
});
return [3, 4];
case 3:
err_4 = _a.sent();
this.setData({
streetContentList: [],
preloadVisible: false
});
console.error(err_4);
return [3, 4];
case 4: return [2];
}
});
});
},
chooseStreetId: function (e) {
this.setData({
streetId: e.detail,
streetContentList: [],
preloadVisible: true
});
this.rankingOfDevelopment();
this.deptAnalysisOfBranch();
this.getResourceAmount();
this.analysisOfBranch();
},
chooseTimeId: function (e) {
this.setData({
timeId: e.detail,
streetContentList: [],
preloadVisible: true
});
this.rankingOfDevelopment();
this.deptAnalysisOfBranch();
this.getResourceAmount();
this.analysisOfBranch();
}
}
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pb25Db25zdHJ1Y3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1bmlvbkNvbnN0cnVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1FQUFvSTtBQUVwSSxTQUFTLENBQUM7SUFDUixJQUFJLEVBQUU7UUFDSixpQkFBaUIsRUFBRSxFQUFFO1FBQ3JCLGNBQWMsRUFBRSxNQUFNO1FBQ3RCLGVBQWUsRUFBRTtZQUNmLEtBQUssRUFBRSxTQUFTO1lBQ2hCLEtBQUssRUFBRSxHQUFHO1NBQ1g7UUFDRCxjQUFjLEVBQUUsS0FBSztRQUNyQixvQkFBb0IsRUFBRSxLQUFLO1FBQzNCLGFBQWEsRUFBRTtZQUNiLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ2hDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ2hDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFO1lBQ3RDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFO1lBQ3RDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFO1lBQ3JDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFO1lBQ3JDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO1lBQ3BDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO1NBQ3JDO1FBQ0QsZ0JBQWdCLEVBQUUsRUFBRTtRQUNwQixXQUFXLEVBQUU7WUFDWCxtQkFBbUIsRUFBRSxDQUFDO1lBQ3RCLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLGFBQWEsRUFBRSxDQUFDO1NBQ2pCO1FBQ0QsWUFBWSxFQUFFO1lBQ1osRUFB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QUcsQ0FBQyxDQUFBOzs7Ozs7U0FFckI7UUFDRCxjQUFjLEVBQWQsVUFBZ0IsQ0FBTTtZQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUNYLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTTtnQkFDbEIsaUJBQWlCLEVBQUUsRUFBRTtnQkFDckIsY0FBYyxFQUFFLElBQUk7YUFDckIsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUE7WUFDM0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUE7WUFDM0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUE7UUFDekIsQ0FBQztRQUNELFlBQVksRUFBWixVQUFjLENBQU07WUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDWCxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU07Z0JBQ2hCLGlCQUFpQixFQUFFLEVBQUU7Z0JBQ3JCLGNBQWMsRUFBRSxJQUFJO2FBQ3JCLENBQUMsQ0FBQTtZQUNGLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFBO1lBQzNCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFBO1lBQzNCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1lBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1FBQ3pCLENBQUM7S0FDRjtDQUNGLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuYWx5c2lzT2ZCcmFuY2gsIGdldFJlc291cmNlQW1vdW50LCBkZXB0QW5hbHlzaXNPZkJyYW5jaCwgcmFua2luZ09mRGV2ZWxvcG1lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9hcGkvYmFzaWNSZWFsaXR5J1xyXG5cclxuQ29tcG9uZW50KHtcclxuICBkYXRhOiB7XHJcbiAgICBzdHJlZXRDb250ZW50TGlzdDogW10sXHJcbiAgICB1cE9yRG93blN0YXR1czogJ2Rvd24nLFxyXG4gICAgc2VsZWN0Q29uZGl0aW9uOiB7XHJcbiAgICAgIGxhYmVsOiAn57uE57uH5rS75Yqo5oC75qyh5pWwJyxcclxuICAgICAgdmFsdWU6ICcwJ1xyXG4gICAgfSxcclxuICAgIGNvbmRpdGlvbk9yZGVyOiAnYXNjJyxcclxuICAgIGNvbmRpdGlvbkxpc3RWaXNpYmxlOiBmYWxzZSxcclxuICAgIGNvbmRpdGlvbkxpc3Q6IFtcclxuICAgICAgeyB2YWx1ZTogJzAnLCBsYWJlbDogJ+e7hOe7h+a0u+WKqOaAu+asoeaVsCcgfSxcclxuICAgICAgeyB2YWx1ZTogJzEnLCBsYWJlbDogJ+WPguWKoOa0u+WKqOaAu+S6uuaVsCcgfSxcclxuICAgICAgeyB2YWx1ZTogJzInLCBsYWJlbDogJ+ecgeW4gue6p+WSjOWMuuebtOacuuWFsy3nu4Tnu4fmrKHmlbAnIH0sXHJcbiAgICAgIHsgdmFsdWU6ICczJywgbGFiZWw6ICfnnIHluILnuqflkozljLrnm7TmnLrlhbMt5Y+C5LiO5Lq65pWwJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnNCcsIGxhYmVsOiAn6am75Yy65LyB5LqL5Lia5Y2V5L2NLee7hOe7h+asoeaVsCcgfSxcclxuICAgICAgeyB2YWx1ZTogJzUnLCBsYWJlbDogJ+mpu+WMuuS8geS6i+S4muWNleS9jS3lj4LliqDkurrmlbAnIH0sXHJcbiAgICAgIHsgdmFsdWU6ICc2JywgbGFiZWw6ICfpqbvljLrkuKTmlrDnu4Tnu4ct57uE57uH5qyh5pWwJyB9LFxyXG4gICAgICB7IHZhbHVlOiAnNycsIGxhYmVsOiAn6am75Yy65Lik5paw57uE57uHLeWPguWKoOasoeaVsCcgfVxyXG4gICAgXSxcclxuICAgIGRldmVsb3BTaXR1YXRpb246IHt9LCAvLyDogZTlu7rlhbHlu7rlvIDlsZXmg4XlhrXlm77ooajmlbDmja5cclxuICAgIHVuaW9uQW1vdW50OiB7XHJcbiAgICAgIHJlc291cmNlQW1vdW50VG90YWw6IDAsXHJcbiAgICAgIHJlc291cmNlVGltZXM6IDAsXHJcbiAgICAgIGF2ZXJhZ2VBbW91bnQ6IDBcclxuICAgIH0sXHJcbiAgICBjYXRlZ29yeUxpc3Q6IFtcclxuICAgICAgeyB2YWx1ZTogJzIxJywgbGFiZWw6ICfnnIHnuqfjgIHluILnuqflkozljLrnm7TmnLrlhbMnfSxcclxuICAgICAgeyB2YWx1ZTogJzIzJywgbGFiZWw6ICfpqbvljLrkvIHkuovkuJrljZXkvY0nfSxcclxuICAgICAgeyB2YWx1ZTogJzI0JywgbGFiZWw6ICfpqbvljLrkuKTmlrDnu4Tnu4cnfV0sXHJcbiAgICAgIHNlbGVjdFVuaW9uQ29uZGl0aW9uOiB7XHJcbiAgICAgICAgdmFsdWU6ICcyMScsXHJcbiAgICAgICAgbGFiZWw6ICfnnIHnuqfjgIHluILnuqflkozljLrnm7TmnLrlhbMnXHJcbiAgICAgIH0sXHJcbiAgICAgIHVuaW9uQ29uZGl0aW9uVmlzaWJsZTogZmFsc2UsXHJcbiAgICAgIGRldmVsb3BTaXR1YXRpb25MaW5lQ2hhcnQ6IHt9LFxyXG4gICAgICBzdHJlZXRQcmVsb2FkQ29udGVudExpc3Q6IFtcclxuICAgICAgICB7ZGV0YWlsTGlzdDogWzEsMl0sIGNvbnRlbnRMaXN0OiBbMSwyLDNdfSxcclxuICAgICAgICB7ZGV0YWlsTGlzdDogWzEsMl0sIGNvbnRlbnRMaXN0OiBbMSwyLDNdfSxcclxuICAgICAgICB7ZGV0YWlsTGlzdDogWzEsMl0sIGNvbnRlbnRMaXN0OiBbMSwyLDNdfVxyXG4gICAgICBdLFxyXG4gICAgICBwcmVsb2FkVmlzaWJsZTogdHJ1ZSxcclxuICAgICAgc3RyZWV0SWQ6ICcnLFxyXG4gICAgICB0aW1lSWQ6ICcnLFxyXG4gICAgICBkZXB0TnVtOiAnJ1xyXG4gIH0sXHJcbiAgbGlmZXRpbWVzOiB7XHJcbiAgICBhdHRhY2hlZCAoKSB7XHJcbiAgICAgIHRoaXMuYW5hbHlzaXNPZkJyYW5jaCgpXHJcbiAgICAgIHRoaXMuZ2V0UmVzb3VyY2VBbW91bnQoKVxyXG4gICAgICB0aGlzLmRlcHRBbmFseXNpc09mQnJhbmNoKClcclxuICAgICAgdGhpcy5yYW5raW5nT2ZEZXZlbG9wbWVudCgpXHJcbiAgICB9XHJcbiAgfSxcclxuICBtZXRob2RzOiB7XHJcbiAgICAvLyDlhZrlkZjlj4LkuI7lj5HmjKXmg4XlhrXmjpLlkI0g5pS26LW3L+WxleW8gFxyXG4gICAgb25VcE9yRG93biAoKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgdXBPckRvd25TdGF0dXM6IHRoaXMuZGF0YS51cE9yRG93blN0YXR1cyA9PT0gJ3VwJyA/ICdkb3duJyA6ICd1cCdcclxuICAgICAgfSlcclxuICAgIH0sXHJcbiAgICAvLyDmmL7npLrnrZvpgInmnaHku7bliJfooahcclxuICAgIG9uU2hvd0NvbmRpdGlvbkxpc3QgKCkge1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIGNvbmRpdGlvbkxpc3RWaXNpYmxlOiAhdGhpcy5kYXRhLmNvbmRpdGlvbkxpc3RWaXNpYmxlXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgLy8g5YiH5o2i5o6S5ZCN5p2h5Lu2XHJcbiAgICBvbkNoYW5nZUNvbmRpdGlvbiAoZSkge1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIGNvbmRpdGlvbkxpc3RWaXNpYmxlOiBmYWxzZSxcclxuICAgICAgICBwcmVsb2FkVmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICBzdHJlZXRDb250ZW50TGlzdDogW11cclxuICAgICAgfSlcclxuICAgICAgY29uc3QgeyBjb25kaXRpb24gfSA9IGUuY3VycmVudFRhcmdldC5kYXRhc2V0XHJcbiAgICAgIHRoaXMuZGF0YS5jb25kaXRpb25MaXN0LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgaWYgKGl0ZW0udmFsdWUgPT09IGNvbmRpdGlvbikge1xyXG4gICAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgICAgc2VsZWN0Q29uZGl0aW9uOiB7XHJcbiAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0ubGFiZWwsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMucmFua2luZ09mRGV2ZWxvcG1lbnQoKVxyXG4gICAgfSxcclxuICAgIC8vIOato+WPjeW6j+WIh+aNolxyXG4gICAgb25DaGFuZ2VDb25kaXRpb25PcmRlciAoKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgY29uZGl0aW9uT3JkZXI6IHRoaXMuZGF0YS5jb25kaXRpb25PcmRlciA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJyxcclxuICAgICAgICBwcmVsb2FkVmlzaWJsZTogdHJ1ZSxcclxuICAgICAgICBzdHJlZXRDb250ZW50TGlzdDogW11cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5yYW5raW5nT2ZEZXZlbG9wbWVudCgpXHJcbiAgICB9LFxyXG4gICAgLy8g6I635Y+W6IGU5bu65YWx5bu65byA5bGV5oOF5Ya15Zu+6KGo5pWw5o2uXHJcbiAgICBhc3luYyBhbmFseXNpc09mQnJhbmNoICgpIHtcclxuICAgICAgY29uc3QgcGFyYSA9IHtcclxuICAgICAgICBzdHJlZXRJZDogdGhpcy5kYXRhLnN0cmVldElkLFxyXG4gICAgICAgIHNvbWVNb250aHNUeXBlOiB0aGlzLmRhdGEudGltZUlkLFxyXG4gICAgICAgIGNhdGVnb3J5VHlwZTogJzEnXHJcbiAgICAgIH1cclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCByZXM6IGFueSA9IGF3YWl0IGFuYWx5c2lzT2ZCcmFuY2gocGFyYSlcclxuICAgICAgICBjb25zb2xlLmxvZygn6IGU5bu65YWx5bu65byA5bGV5oOF5Ya15Zu+6KGo5pWw5o2uJywgcmVzKVxyXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5kYXRhLmRldmVsb3BTaXR1YXRpb24sIHJlcy5kYXRhKVxyXG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICBkZXZlbG9wU2l0dWF0aW9uOiB0aGlzLmRhdGEuZGV2ZWxvcFNpdHVhdGlvblxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLy8g6I635Y+W6LWE5rqQ5pW05ZCI6YeR6aKdXHJcbiAgICBhc3luYyBnZXRSZXNvdXJjZUFtb3VudCAoKSB7XHJcbiAgICAgIGNvbnN0IHBhcmEgPSB7XHJcbiAgICAgICAgc3RyZWV0SWQ6IHRoaXMuZGF0YS5zdHJlZXRJZCxcclxuICAgICAgICBzb21lTW9udGhzVHlwZTogdGhpcy5kYXRhLnRpbWVJZFxyXG4gICAgICB9XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcmVzOiBhbnkgPSBhd2FpdCBnZXRSZXNvdXJjZUFtb3VudChwYXJhKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKCfogZTlu7rlhbHlu7rotYTmupDmlbTlkIjph5Hpop0nLCByZXMpXHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmRhdGEudW5pb25BbW91bnQsIHJlcy5kYXRhKVxyXG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICB1bmlvbkFtb3VudDogdGhpcy5kYXRhLnVuaW9uQW1vdW50XHJcbiAgICAgICAgfSlcclxuICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvLyDogZTlu7rlhbHlu7rlvIDlsZXmg4XlhrXnrZvpgInliJfooahcclxuICAgIG9uU2hvd1VuaW9uQ29uZGl0aW9uTGlzdCAoKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgdW5pb25Db25kaXRpb25WaXNpYmxlOiAhdGhpcy5kYXRhLnVuaW9uQ29uZGl0aW9uVmlzaWJsZVxyXG4gICAgICB9KVxyXG4gICAgfSxcclxuICAgIC8vIOWIh+aNouiBlOW7uuWFseW7uuW8gOWxleaDheWGteetm+mAieadoeS7tlxyXG4gICAgb25DaG5hZ2VVbmlvbkNvbmRpdGlvbiAoZSkge1xyXG4gICAgICBjb25zdCB7IGNvbmRpdGlvbiB9ID0gZS5jdXJyZW50VGFyZ2V0LmRhdGFzZXRcclxuICAgICAgdGhpcy5kYXRhLmNhdGVnb3J5TGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLnZhbHVlID09PSBjb25kaXRpb24pIHtcclxuICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgIHNlbGVjdFVuaW9uQ29uZGl0aW9uOiB7XHJcbiAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0ubGFiZWwsXHJcbiAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWVcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdW5pb25Db25kaXRpb25WaXNpYmxlOiBmYWxzZVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuZGVwdEFuYWx5c2lzT2ZCcmFuY2goKVxyXG4gICAgfSxcclxuICAgIC8vIOiOt+WPluiBlOW7uuWFseW7uuaKmOe6v+WbvlxyXG4gICAgYXN5bmMgZGVwdEFuYWx5c2lzT2ZCcmFuY2ggKCkge1xyXG4gICAgICBjb25zdCBwYXJhID0ge1xyXG4gICAgICAgIHN0cmVldElkOiB0aGlzLmRhdGEuc3RyZWV0SWQsXHJcbiAgICAgICAgc29tZU1vbnRoc1R5cGU6IHRoaXMuZGF0YS50aW1lSWQsXHJcbiAgICAgICAgY2F0ZWdvcnlDb2RlOiB0aGlzLmRhdGEuc2VsZWN0VW5pb25Db25kaXRpb24udmFsdWVcclxuICAgICAgfVxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlczogYW55ID0gYXdhaXQgZGVwdEFuYWx5c2lzT2ZCcmFuY2gocGFyYSlcclxuICAgICAgICBjb25zb2xlLmxvZygn6IGU5bu65YWx5bu65oqY57q/5Zu+JywgcmVzKVxyXG4gICAgICAgIGNvbnN0IHsgY2F0ZWdvcnlMaXN0LCBqb2luTnVtTGlzdCwgb3JnYW5pemF0aW9uc0NvdW50TGlzdCwgYXZlcmFnZU51bSB9ID0gcmVzLmRhdGFcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuZGF0YS5kZXZlbG9wU2l0dWF0aW9uTGluZUNoYXJ0LCB7IGNhdGVnb3J5TGlzdCwgam9pbk51bUxpc3QsIG9yZ2FuaXphdGlvbnNDb3VudExpc3QsIGF2ZXJhZ2VOdW0gfSlcclxuICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgZGV2ZWxvcFNpdHVhdGlvbkxpbmVDaGFydDogdGhpcy5kYXRhLmRldmVsb3BTaXR1YXRpb25MaW5lQ2hhcnQsXHJcbiAgICAgICAgICBkZXB0TnVtOiByZXMuZGF0YS5kZXB0TnVtXHJcbiAgICAgICAgfSlcclxuICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvLyDogZTlu7rlhbHlu7rlvIDlsZXmg4XlhrXmjpLlkI1cclxuICAgIGFzeW5jIHJhbmtpbmdPZkRldmVsb3BtZW50ICgpIHtcclxuICAgICAgY29uc3QgcGFyYSA9IHtcclxuICAgICAgICBzdHJlZXRJZDogdGhpcy5kYXRhLnN0cmVldElkLFxyXG4gICAgICAgIHNvbWVNb250aHNUeXBlOiB0aGlzLmRhdGEudGltZUlkLFxyXG4gICAgICAgIG9yZGVyOiB0aGlzLmRhdGEuY29uZGl0aW9uT3JkZXIgPT09ICdhc2MnID8gJzAnIDogJzEnLFxyXG4gICAgICAgIHR5cGU6IHRoaXMuZGF0YS5zZWxlY3RDb25kaXRpb24udmFsdWVcclxuICAgICAgfVxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlczogYW55ID0gYXdhaXQgcmFua2luZ09mRGV2ZWxvcG1lbnQocGFyYSlcclxuICAgICAgICBjb25zb2xlLmxvZygn6IGU5bu65YWx5bu65byA5bGV5oOF5Ya15o6S5ZCNJywgcmVzKVxyXG4gICAgICAgIGNvbnN0IGxpc3Q6IGFueVtdID0gW11cclxuICAgICAgICBpZiAocmVzLmRhdGEuc3RyZWV0TGlzdCAmJiByZXMuZGF0YS5zdHJlZXRMaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHJlcy5kYXRhLnN0cmVldExpc3QuZm9yRWFjaCgoc3RyZWV0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgbGV0IGNvbnRlbnRMaXN0OiBBbnlBcnJheSA9IFtdXHJcbiAgICAgICAgICAgIHN0cmVldC5jYXRlZ29yeUluZm9MaXN0LmZvckVhY2goIChjYXRlZ29yeTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgY29udGVudExpc3QucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBjYXRlZ29yeS5jYXRlZ29yeU5hbWUsXHJcbiAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25OdW06IGNhdGVnb3J5Lm9yZ2FuaXphdGlvbnNDb3VudCxcclxuICAgICAgICAgICAgICAgIGVudGVyTnVtOiBjYXRlZ29yeS5qb2luTnVtXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgY29uc3QgZGV0YWlsTGlzdCA9IFtcclxuICAgICAgICAgICAgICB7IG5hbWU6ICfnu4Tnu4fmgLvmrKHmlbAnLCBudW06IHN0cmVldC5hbGxPcmdhbml6YXRpb25zQ291bnQgfSxcclxuICAgICAgICAgICAgICB7IG5hbWU6ICflj4LliqDmgLvmrKHmlbAnLCBudW06IHN0cmVldC5hbGxKb2luTnVtQ291bnR9XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgbGlzdC5wdXNoKHtcclxuICAgICAgICAgICAgICBjb250ZW50TGlzdCxcclxuICAgICAgICAgICAgICBkZXRhaWxMaXN0LFxyXG4gICAgICAgICAgICAgIHN0cmVldE5hbWU6IHN0cmVldC5kZXB0bmFtZVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgIHN0cmVldENvbnRlbnRMaXN0OiBsaXN0LFxyXG4gICAgICAgICAgcHJlbG9hZFZpc2libGU6IGZhbHNlXHJcbiAgICAgICAgfSlcclxuICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgIHN0cmVldENvbnRlbnRMaXN0OiBbXSxcclxuICAgICAgICAgIHByZWxvYWRWaXNpYmxlOiBmYWxzZVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjaG9vc2VTdHJlZXRJZCAoZTogYW55KSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgc3RyZWV0SWQ6IGUuZGV0YWlsLFxyXG4gICAgICAgIHN0cmVldENvbnRlbnRMaXN0OiBbXSxcclxuICAgICAgICBwcmVsb2FkVmlzaWJsZTogdHJ1ZVxyXG4gICAgICB9KVxyXG4gICAgICB0aGlzLnJhbmtpbmdPZkRldmVsb3BtZW50KClcclxuICAgICAgdGhpcy5kZXB0QW5hbHlzaXNPZkJyYW5jaCgpXHJcbiAgICAgIHRoaXMuZ2V0UmVzb3VyY2VBbW91bnQoKVxyXG4gICAgICB0aGlzLmFuYWx5c2lzT2ZCcmFuY2goKVxyXG4gICAgfSxcclxuICAgIGNob29zZVRpbWVJZCAoZTogYW55KSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgdGltZUlkOiBlLmRldGFpbCxcclxuICAgICAgICBzdHJlZXRDb250ZW50TGlzdDogW10sXHJcbiAgICAgICAgcHJlbG9hZFZpc2libGU6IHRydWVcclxuICAgICAgfSlcclxuICAgICAgdGhpcy5yYW5raW5nT2ZEZXZlbG9wbWVudCgpXHJcbiAgICAgIHRoaXMuZGVwdEFuYWx5c2lzT2ZCcmFuY2goKVxyXG4gICAgICB0aGlzLmdldFJlc291cmNlQW1vdW50KClcclxuICAgICAgdGhpcy5hbmFseXNpc09mQnJhbmNoKClcclxuICAgIH1cclxuICB9XHJcbn0pIl19