New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@farris/bef

Package Overview
Dependencies
Maintainers
28
Versions
244
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@farris/bef - npm Package Compare versions

Comparing version 0.0.12-20230928062855-dev to 0.0.12-20231120111254-dev

25

esm2015/lib/bef_data_path_util.js

@@ -130,5 +130,12 @@ /**

/** @type {?} */
const subPaths = path.split('/');
for (let i = subPaths.length - 1; i > 0; i--) {
if (subPaths[i] && subPaths[i].endsWith('s')) {
const subPaths = path.split('/').filter((/**
* @param {?} p
* @return {?}
*/
(p) => p));
for (let i = subPaths.length - 1; i >= 0; i--) {
if (i % 2 === 0) {
subPaths[i] = encodeURIComponent(subPaths[i]);
}
if (subPaths[i] && subPaths[i].endsWith('s') && i % 2 !== 0) {
subPaths[i] = subPaths[i].substr(0, subPaths[i].length - 1).toLowerCase();

@@ -138,3 +145,3 @@ }

// url不再转小写,兼容主键有大写字母的情况
return subPaths.join('/'); // .toLowerCase();
return '/' + subPaths.join('/'); // .toLowerCase();
}

@@ -169,7 +176,7 @@ /**

*/
item => !!item && item.indexOf(':') === -1)).forEach((/**
(item) => !!item && item.indexOf(':') === -1)).forEach((/**
* @param {?} node
* @return {?}
*/
node => {
(node) => {
result.push(node);

@@ -194,7 +201,7 @@ }));

*/
item => !!item && item.indexOf(':') !== -1)).forEach((/**
(item) => !!item && item.indexOf(':') !== -1)).forEach((/**
* @param {?} id
* @return {?}
*/
id => {
(id) => {
result.push(id.split(':')[1]);

@@ -206,2 +213,2 @@ }));

export { BefDataPathUtil };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX2RhdGFfcGF0aF91dGlsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvYmVmX2RhdGFfcGF0aF91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNRLG1CQUFtQixFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFDckUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUt4QixNQUFNLGVBQWU7Ozs7Ozs7Ozs7O0lBU1osTUFBTSxDQUFDLGtCQUFrQixDQUFDLFdBQThCLEVBQUUsV0FBd0I7O2NBQ2pGLGdCQUFnQixHQUFhLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQzs7Y0FDakYsU0FBUyxHQUFhLEVBQUU7O1lBRTFCLG9CQUFvQixHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVztRQUN2RCxTQUFTLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXJELGdCQUFnQixDQUFDLE9BQU87Ozs7UUFBQyxDQUFDLFFBQWdCLEVBQUUsRUFBRTs7a0JBQ3RDLFFBQVEsR0FBRyxZQUFZLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQztZQUMxRixJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLENBQUMsSUFBSSxFQUFFO2dCQUM5QyxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksV0FBVyxDQUFDLENBQUM7YUFDOUM7O2tCQUNLLGtCQUFrQixHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQztZQUN6RCxvQkFBb0IsR0FBRyxrQkFBa0IsQ0FBQyxXQUFXLENBQUM7WUFDdEQsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDN0MsU0FBUyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FB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QU0sR0FBRyxFQUFFO1FBQ2pCLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDOUIsT0FBTyxNQUFNLENBQUM7U0FDZjtRQUNELEtBQUssQ0FBQyxNQUFNOzs7O1FBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPOzs7O1FBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdEUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixDQUFDLEVBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Ozs7OztJQUtNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFlOztjQUN2QyxNQUFNLEdBQUcsRUFBRTtRQUNqQixJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzlCLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFDRCxLQUFLLENBQUMsTUFBTTs7OztRQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsT0FBTzs7OztRQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3BFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsRUFBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztDQUNGO0FBRUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmluZGluZ0RhdGEsIEJpbmRpbmdQcm9wZXJ0eVR5cGUsIFByb3BlcnR5VXRpbCwgQmluZGluZ1BhdGhDb252ZXJ0ZXJcbn0gZnJvbSAnQGZhcnJpcy9kZXZraXQnO1xuXG4vKipcbiAqIEJlZuaVsOaNruS4reWQhOenjVBhdGjnmoTovazmjaJcbiAqL1xuY2xhc3MgQmVmRGF0YVBhdGhVdGlsIHtcblxuICAvKipcbiAgICog6L2s5o2i5oiQ6Lev5b6E5pWw57uEXG4gICAqIOi/lOWbnue7k+aenO+8mlxuICAgKiDkuLvooajvvIgv77yJ77yaWyBwYXJlbnRJZCBdXG4gICAqIOS7juihqO+8iC9jaGlsZENvZGVz77yJ77yaWyBwYXJlbnRJZCwgY2hpbGRDb2RlcywgY2hpbGRJZCBdXG4gICAqIOS7juS7juihqO+8iC9jaGlsZENvZGVzL2dyYW5kQ29kZXPvvInvvJogWyBwYXJlbnRJZCwgY2hpbGRDb2RlLCBjaGlsZElkLCBncmFuZENvZGUsIGdyYW5kSWQgXVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0VG9QYXRoQXJyYXkoYmluZGluZ1BhdGg6IHN0cmluZyB8IHN0cmluZ1tdLCBiaW5kaW5nRGF0YTogQmluZGluZ0RhdGEpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgYmluZGluZ1BhdGhBcnJheTogc3RyaW5nW10gPSBCaW5kaW5nUGF0aENvbnZlcnRlci50b0JpbmRpbmdQYXRoQXJyYXkoYmluZGluZ1BhdGgpO1xuICAgIGNvbnN0IHBhdGhBcnJheTogc3RyaW5nW10gPSBbXTtcblxuICAgIGxldCBjdXJyZW50QmluZGluZ09iamVjdCA9IGJpbmRpbmdEYXRhLmxpc3QuY3VycmVudEl0ZW07XG4gICAgcGF0aEFycmF5LnB1c2goY3VycmVudEJpbmRpbmdPYmplY3QucHJpbWFyeUtleVZhbHVlKTtcblxuICAgIGJpbmRpbmdQYXRoQXJyYXkuZm9yRWFjaCgocHJvcE5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcHJvcEluZm8gPSBQcm9wZXJ0eVV0aWwuZ2V0UHJvcGVydHlCeU5hbWUoY3VycmVudEJpbmRpbmdPYmplY3QucHJvcGVydGllcywgcHJvcE5hbWUpO1xuICAgICAgaWYgKHByb3BJbmZvLnR5cGUgIT09IEJpbmRpbmdQcm9wZXJ0eVR5cGUuTGlzdCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cHJvcEluZm8ubmFtZX3kuI3mmK/lrZDooajlr7nlupTnmoTlsZ7mgKdgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRCaW5kaW5nTGlzdCA9IGN1cnJlbnRCaW5kaW5nT2JqZWN0W3Byb3BOYW1lXTtcbiAgICAgIGN1cnJlbnRCaW5kaW5nT2JqZWN0ID0gY3VycmVudEJpbmRpbmdMaXN0LmN1cnJlbnRJdGVtO1xuICAgICAgcGF0aEFycmF5LnB1c2godGhpcy50cmltVHJhaWxpbmdTKHByb3BOYW1lKSk7XG4gICAgICBwYXRoQXJyYXkucHVzaChjdXJyZW50QmluZGluZ09iamVjdC5wcmltYXJ5S2V5VmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBhdGhBcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiDovazmjaLkuLpSZXN0VXJs6YeM55qE6Lev5b6EXG4gICAqXG4gICAqIOi/lOWbnue7k+aenO+8mlxuICAgKiDkuLvooajvvIgv77yJ77yaL1xuICAgKiDku47ooajvvIgvaml3dEVkdXPvvInvvJoveHh4L2ppd3RFZHVcbiAgICog5LuO5LuO6KGo77yIL2ppd3RFZHVzL2ppd3RHcmFkZXPvvInvvJogL3h4eC9qaXd0RWR1L3h4eC9qaXd0R3JhZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFRvUGF0aFVybChiaW5kaW5nUGF0aDogc3RyaW5nIHwgc3RyaW5nW10sIGJpbmRpbmdEYXRhOiBCaW5kaW5nRGF0YSk6IHN0cmluZyB7XG4gICAgY29uc3QgcGF0aEFycmF5ID0gdGhpcy5jb252ZXJ0VG9QYXRoQXJyYXkoYmluZGluZ1BhdGgsIGJpbmRpbmdEYXRhKTtcbiAgICBwYXRoQXJyYXkucG9wKCk7XG4gICAgcmV0dXJuICcvJyArIHBhdGhBcnJheS5qb2luKCcvJyk7XG4gIH1cblxuICAvKipcbiAgICog6L2s5o2i5Li66KGo5ZCN5pWw57uEXG4gICAqIOi/lOWbnue7k+aenO+8mlxuICAgKiDkuLvooajvvIgv77yJ77yaW11cbiAgICog5LuO6KGo77yIL2NoaWxkQ29kZXPvvInvvJpbIGNoaWxkQ29kZXMgXVxuICAgKiDku47ku47ooajvvIgvY2hpbGRDb2Rlcy9ncmFuZENvZGVzIFtjaGlsZENvZGUgLGdyYW5kQ29kZV1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFRvT2JqZWN0Q29kZXMoYmluZGluZ1BhdGg6IHN0cmluZyB8IHN0cmluZ1tdLCBiaW5kaW5nRGF0YTogQmluZGluZ0RhdGEpIHtcbiAgICBjb25zdCBwYXRoQXJyYXkgPSB0aGlzLmNvbnZlcnRUb1BhdGhBcnJheShiaW5kaW5nUGF0aCwgYmluZGluZ0RhdGEpO1xuICAgIGNvbnN0IHBhdGhMZW4gPSBwYXRoQXJyYXkubGVuZ3RoO1xuXG4gICAgY29uc3Qgb2JqZWN0Q29kZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHBhdGhMZW47IGkgPSBpICsgMikge1xuICAgICAgb2JqZWN0Q29kZXMucHVzaChwYXRoQXJyYXlbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiBvYmplY3RDb2RlcztcbiAgfVxuXG4gIC8qKlxuICAgKiDovazmjaLkuLppZOaVsOe7hO+8jOWMheWQq+acgOWQjuS4gOe6p+eahOS4u+mUrlxuICAgKiDkuLvooajvvIgv77yJ77yaWyBwYXJlbnRJZCBdXG4gICAqIOS7juihqO+8iC9jaGlsZENvZGVz77yJ77yaWyBwYXJlbnRJZCwgY2hpbGRJZCBdXG4gICAqIOS7juS7juihqO+8iC9jaGlsZENvZGVzL2dyYW5kQ29kZXPvvInvvJogWyBwYXJlbnRJZCwgY2hpbGRJZCwgZ3JhbmRJZF1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFRvRGF0YUlkc0ZvclVwZGF0ZShiaW5kaW5nUGF0aDogc3RyaW5nIHwgc3RyaW5nW10sIGJpbmRpbmdEYXRhOiBCaW5kaW5nRGF0YSkge1xuICAgIGNvbnN0IHBhdGhBcnJheSA9IHRoaXMuY29udmVydFRvUGF0aEFycmF5KGJpbmRpbmdQYXRoLCBiaW5kaW5nRGF0YSk7XG4gICAgY29uc3QgcGF0aExlbiA9IHBhdGhBcnJheS5sZW5ndGg7XG5cbiAgICBjb25zdCBkYXRhSWRzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoTGVuOyBpID0gaSArIDIpIHtcbiAgICAgIGRhdGFJZHMucHVzaChwYXRoQXJyYXlbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhSWRzO1xuICB9XG5cbiAgLyoqXG4gICAqIOi9rOaNouS4umlk5pWw57uE77yM5LiN5YyF5ZCr5pyA5ZCO5LiA57qn55qE5Li76ZSuXG4gICAqIOS4u+ihqO+8iC/vvInvvJpbIF1cbiAgICog5LuO6KGo77yIL2NoaWxkQ29kZXPvvInvvJpbIHBhcmVudElkIF1cbiAgICog5LuO5LuO6KGo77yIL2NoaWxkQ29kZXMvZ3JhbmRDb2Rlc++8ie+8miBbIHBhcmVudElkLCBjaGlsZElkXVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0VG9EYXRhSWRzRm9yQWRkKGJpbmRpbmdQYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSwgYmluZGluZ0RhdGE6IEJpbmRpbmdEYXRhKSB7XG4gICAgY29uc3QgZGF0YUlkcyA9IHRoaXMuY29udmVydFRvRGF0YUlkc0ZvclVwZGF0ZShiaW5kaW5nUGF0aCwgYmluZGluZ0RhdGEpO1xuICAgIGRhdGFJZHMucG9wKCk7XG4gICAgcmV0dXJuIGRhdGFJZHM7XG4gIH1cblxuICAvKipcbiAgICog5bCGRW50aXR5UGF0aFN0cmluZ+i9rOaNouS4ulVybFxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0UGF0aFRvVXJsKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3ViUGF0aHMgPSBwYXRoLnNwbGl0KCcvJyk7XG4gICAgZm9yIChsZXQgaSA9IHN1YlBhdGhzLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHtcbiAgICAgIGlmIChzdWJQYXRoc1tpXSAmJiBzdWJQYXRoc1tpXS5lbmRzV2l0aCgncycpKSB7XG4gICAgICAgIHN1YlBhdGhzW2ldID0gc3ViUGF0aHNbaV0uc3Vic3RyKDAsIHN1YlBhdGhzW2ldLmxlbmd0aCAtIDEpLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVybOS4jeWGjei9rOWwj+WGme+8jOWFvOWuueS4u+mUruacieWkp+WGmeWtl+avjeeahOaDheWGtVxuICAgIHJldHVybiBzdWJQYXRocy5qb2luKCcvJyk7IC8vIC50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWOu+mZpOacgOWQjueahHNcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHRyaW1UcmFpbGluZ1Moc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyLnN1YnN0cigwLCBzdHIubGVuZ3RoIC0gMSk7XG4gIH1cbiAgLyoqXG4gICAqIOi9rOaNoumAmueUqOi3r+W+hOS4uuS7heacieihqOWQjeeahOaVsOe7hFxuICAgKlxuICAgKiAxLlsnaWQ6eHh4JywnY2hpbGQxcycsJ2lkOnh4JywncHJvcCddID0+IFsnY2hpbGQxcycsJ3Byb3AnXSAgXG4gICAqIDIuWydwcm9wMScsJ3Byb3AyJywncHJvcDMnXSA9PiBbJ3Byb3AxJywncHJvcDInLCdwcm9wMyddICBcbiAgICogMy5bJ3Byb3AxJywnaWQ6eHh4JywncHJvcDInXSA9PiBbJ3Byb3AxJywncHJvcDInXSAgXG4gICAqIEBwYXJhbSBwYXRocyDlhoXnva7ot6/lvoTvvIzmoLzlvI86WydpZDp4eHgnLCdjaGlsZDFzJywnaWQ6eHgnLCdwcm9wJ11cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFBhdGhzVG9Ob2RlQ29kZXMocGF0aHM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgaWYgKCFwYXRocyB8fCBwYXRocy5sZW5ndGggPCAxKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBwYXRocy5maWx0ZXIoaXRlbSA9PiAhIWl0ZW0gJiYgaXRlbS5pbmRleE9mKCc6JykgPT09IC0xKS5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvKipcbiAgICog6L2s5o2i6YCa55So6Lev5b6E5Li65LuF5pyJ5a6e5L2T5Li76ZSu5YC855qE5pWw57uEXG4gICAqIEBwYXJhbSBwYXRocyDpgJrnlKjot6/lvoTvvIzmoLzlvI86WydpZDp4eHgnLCdjaGlsZDFzJywnaWQ6eHgnLCdwcm9wJ10gPT4gWyd4eHgnLCd4eCddXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRQYXRoc1RvSWRzKHBhdGhzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGlmICghcGF0aHMgfHwgcGF0aHMubGVuZ3RoIDwgMSkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcGF0aHMuZmlsdGVyKGl0ZW0gPT4gISFpdGVtICYmIGl0ZW0uaW5kZXhPZignOicpICE9PSAtMSkuZm9yRWFjaChpZCA9PiB7XG4gICAgICByZXN1bHQucHVzaChpZC5zcGxpdCgnOicpWzFdKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmV4cG9ydCB7IEJlZkRhdGFQYXRoVXRpbCB9O1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX2RhdGFfcGF0aF91dGlsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvYmVmX2RhdGFfcGF0aF91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNRLG1CQUFtQixFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFDckUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUt4QixNQUFNLGVBQWU7Ozs7Ozs7Ozs7O0lBU1osTUFBTSxDQUFDLGtCQUFrQixDQUFDLFdBQThCLEVBQUUsV0FBd0I7O2NBQ2pGLGdCQUFnQixHQUFhLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQzs7Y0FDakYsU0FBUyxHQUFhLEVBQUU7O1lBRTFCLG9CQUFvQixHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVztRQUN2RCxTQUFTLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRXJELGdCQUFnQixDQUFDLE9BQU87Ozs7UUFBQyxDQUFDLFFBQWdCLEVBQUUsRUFBRTs7a0JBQ3RDLFFBQVEsR0FBRyxZQUFZLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQztZQUMxRixJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssbUJBQW1CLENBQUMsSUFBSSxFQUFFO2dCQUM5QyxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksV0FBVyxDQUFDLENBQUM7YUFDOUM7O2tCQUNLLGtCQUFrQixHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQztZQUN6RCxvQkFBb0IsR0FBRyxrQkFBa0IsQ0FBQyxXQUFXLENBQUM7WUFDdEQsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDN0MsU0FBUyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FB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QUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDLEVBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRjtBQUVELE9BQU8sRUFBRSxlQUFlLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJpbmRpbmdEYXRhLCBCaW5kaW5nUHJvcGVydHlUeXBlLCBQcm9wZXJ0eVV0aWwsIEJpbmRpbmdQYXRoQ29udmVydGVyXG59IGZyb20gJ0BmYXJyaXMvZGV2a2l0JztcblxuLyoqXG4gKiBCZWbmlbDmja7kuK3lkITnp41QYXRo55qE6L2s5o2iXG4gKi9cbmNsYXNzIEJlZkRhdGFQYXRoVXRpbCB7XG5cbiAgLyoqXG4gICAqIOi9rOaNouaIkOi3r+W+hOaVsOe7hFxuICAgKiDov5Tlm57nu5PmnpzvvJpcbiAgICog5Li76KGo77yIL++8ie+8mlsgcGFyZW50SWQgXVxuICAgKiDku47ooajvvIgvY2hpbGRDb2Rlc++8ie+8mlsgcGFyZW50SWQsIGNoaWxkQ29kZXMsIGNoaWxkSWQgXVxuICAgKiDku47ku47ooajvvIgvY2hpbGRDb2Rlcy9ncmFuZENvZGVz77yJ77yaIFsgcGFyZW50SWQsIGNoaWxkQ29kZSwgY2hpbGRJZCwgZ3JhbmRDb2RlLCBncmFuZElkIF1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFRvUGF0aEFycmF5KGJpbmRpbmdQYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSwgYmluZGluZ0RhdGE6IEJpbmRpbmdEYXRhKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGJpbmRpbmdQYXRoQXJyYXk6IHN0cmluZ1tdID0gQmluZGluZ1BhdGhDb252ZXJ0ZXIudG9CaW5kaW5nUGF0aEFycmF5KGJpbmRpbmdQYXRoKTtcbiAgICBjb25zdCBwYXRoQXJyYXk6IHN0cmluZ1tdID0gW107XG5cbiAgICBsZXQgY3VycmVudEJpbmRpbmdPYmplY3QgPSBiaW5kaW5nRGF0YS5saXN0LmN1cnJlbnRJdGVtO1xuICAgIHBhdGhBcnJheS5wdXNoKGN1cnJlbnRCaW5kaW5nT2JqZWN0LnByaW1hcnlLZXlWYWx1ZSk7XG5cbiAgICBiaW5kaW5nUGF0aEFycmF5LmZvckVhY2goKHByb3BOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHByb3BJbmZvID0gUHJvcGVydHlVdGlsLmdldFByb3BlcnR5QnlOYW1lKGN1cnJlbnRCaW5kaW5nT2JqZWN0LnByb3BlcnRpZXMsIHByb3BOYW1lKTtcbiAgICAgIGlmIChwcm9wSW5mby50eXBlICE9PSBCaW5kaW5nUHJvcGVydHlUeXBlLkxpc3QpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3Byb3BJbmZvLm5hbWV95LiN5piv5a2Q6KGo5a+55bqU55qE5bGe5oCnYCk7XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50QmluZGluZ0xpc3QgPSBjdXJyZW50QmluZGluZ09iamVjdFtwcm9wTmFtZV07XG4gICAgICBjdXJyZW50QmluZGluZ09iamVjdCA9IGN1cnJlbnRCaW5kaW5nTGlzdC5jdXJyZW50SXRlbTtcbiAgICAgIHBhdGhBcnJheS5wdXNoKHRoaXMudHJpbVRyYWlsaW5nUyhwcm9wTmFtZSkpO1xuICAgICAgcGF0aEFycmF5LnB1c2goY3VycmVudEJpbmRpbmdPYmplY3QucHJpbWFyeUtleVZhbHVlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBwYXRoQXJyYXk7XG4gIH1cblxuICAvKipcbiAgICog6L2s5o2i5Li6UmVzdFVybOmHjOeahOi3r+W+hFxuICAgKlxuICAgKiDov5Tlm57nu5PmnpzvvJpcbiAgICog5Li76KGo77yIL++8ie+8mi9cbiAgICog5LuO6KGo77yIL2ppd3RFZHVz77yJ77yaL3h4eC9qaXd0RWR1XG4gICAqIOS7juS7juihqO+8iC9qaXd0RWR1cy9qaXd0R3JhZGVz77yJ77yaIC94eHgvaml3dEVkdS94eHgvaml3dEdyYWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRUb1BhdGhVcmwoYmluZGluZ1BhdGg6IHN0cmluZyB8IHN0cmluZ1tdLCBiaW5kaW5nRGF0YTogQmluZGluZ0RhdGEpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhdGhBcnJheSA9IHRoaXMuY29udmVydFRvUGF0aEFycmF5KGJpbmRpbmdQYXRoLCBiaW5kaW5nRGF0YSk7XG4gICAgcGF0aEFycmF5LnBvcCgpO1xuICAgIHJldHVybiAnLycgKyBwYXRoQXJyYXkuam9pbignLycpO1xuICB9XG5cbiAgLyoqXG4gICAqIOi9rOaNouS4uuihqOWQjeaVsOe7hFxuICAgKiDov5Tlm57nu5PmnpzvvJpcbiAgICog5Li76KGo77yIL++8ie+8mltdXG4gICAqIOS7juihqO+8iC9jaGlsZENvZGVz77yJ77yaWyBjaGlsZENvZGVzIF1cbiAgICog5LuO5LuO6KGo77yIL2NoaWxkQ29kZXMvZ3JhbmRDb2RlcyBbY2hpbGRDb2RlICxncmFuZENvZGVdXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRUb09iamVjdENvZGVzKGJpbmRpbmdQYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSwgYmluZGluZ0RhdGE6IEJpbmRpbmdEYXRhKSB7XG4gICAgY29uc3QgcGF0aEFycmF5ID0gdGhpcy5jb252ZXJ0VG9QYXRoQXJyYXkoYmluZGluZ1BhdGgsIGJpbmRpbmdEYXRhKTtcbiAgICBjb25zdCBwYXRoTGVuID0gcGF0aEFycmF5Lmxlbmd0aDtcblxuICAgIGNvbnN0IG9iamVjdENvZGVzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBwYXRoTGVuOyBpID0gaSArIDIpIHtcbiAgICAgIG9iamVjdENvZGVzLnB1c2gocGF0aEFycmF5W2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2JqZWN0Q29kZXM7XG4gIH1cblxuICAvKipcbiAgICog6L2s5o2i5Li6aWTmlbDnu4TvvIzljIXlkKvmnIDlkI7kuIDnuqfnmoTkuLvplK5cbiAgICog5Li76KGo77yIL++8ie+8mlsgcGFyZW50SWQgXVxuICAgKiDku47ooajvvIgvY2hpbGRDb2Rlc++8ie+8mlsgcGFyZW50SWQsIGNoaWxkSWQgXVxuICAgKiDku47ku47ooajvvIgvY2hpbGRDb2Rlcy9ncmFuZENvZGVz77yJ77yaIFsgcGFyZW50SWQsIGNoaWxkSWQsIGdyYW5kSWRdXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRUb0RhdGFJZHNGb3JVcGRhdGUoYmluZGluZ1BhdGg6IHN0cmluZyB8IHN0cmluZ1tdLCBiaW5kaW5nRGF0YTogQmluZGluZ0RhdGEpIHtcbiAgICBjb25zdCBwYXRoQXJyYXkgPSB0aGlzLmNvbnZlcnRUb1BhdGhBcnJheShiaW5kaW5nUGF0aCwgYmluZGluZ0RhdGEpO1xuICAgIGNvbnN0IHBhdGhMZW4gPSBwYXRoQXJyYXkubGVuZ3RoO1xuXG4gICAgY29uc3QgZGF0YUlkcyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aExlbjsgaSA9IGkgKyAyKSB7XG4gICAgICBkYXRhSWRzLnB1c2gocGF0aEFycmF5W2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YUlkcztcbiAgfVxuXG4gIC8qKlxuICAgKiDovazmjaLkuLppZOaVsOe7hO+8jOS4jeWMheWQq+acgOWQjuS4gOe6p+eahOS4u+mUrlxuICAgKiDkuLvooajvvIgv77yJ77yaWyBdXG4gICAqIOS7juihqO+8iC9jaGlsZENvZGVz77yJ77yaWyBwYXJlbnRJZCBdXG4gICAqIOS7juS7juihqO+8iC9jaGlsZENvZGVzL2dyYW5kQ29kZXPvvInvvJogWyBwYXJlbnRJZCwgY2hpbGRJZF1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFRvRGF0YUlkc0ZvckFkZChiaW5kaW5nUGF0aDogc3RyaW5nIHwgc3RyaW5nW10sIGJpbmRpbmdEYXRhOiBCaW5kaW5nRGF0YSkge1xuICAgIGNvbnN0IGRhdGFJZHMgPSB0aGlzLmNvbnZlcnRUb0RhdGFJZHNGb3JVcGRhdGUoYmluZGluZ1BhdGgsIGJpbmRpbmdEYXRhKTtcbiAgICBkYXRhSWRzLnBvcCgpO1xuICAgIHJldHVybiBkYXRhSWRzO1xuICB9XG5cbiAgLyoqXG4gICAqIOWwhkVudGl0eVBhdGhTdHJpbmfovazmjaLkuLpVcmxcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFBhdGhUb1VybChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN1YlBhdGhzID0gcGF0aC5zcGxpdCgnLycpLmZpbHRlcigocCkgPT4gcCk7XG4gICAgZm9yIChsZXQgaSA9IHN1YlBhdGhzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoaSAlIDIgPT09IDApIHtcbiAgICAgICAgc3ViUGF0aHNbaV0gPSBlbmNvZGVVUklDb21wb25lbnQoc3ViUGF0aHNbaV0pO1xuICAgICAgfVxuICAgICAgaWYgKHN1YlBhdGhzW2ldICYmIHN1YlBhdGhzW2ldLmVuZHNXaXRoKCdzJykgJiYgaSAlIDIgIT09IDApIHtcbiAgICAgICAgc3ViUGF0aHNbaV0gPSBzdWJQYXRoc1tpXS5zdWJzdHIoMCwgc3ViUGF0aHNbaV0ubGVuZ3RoIC0gMSkudG9Mb3dlckNhc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdXJs5LiN5YaN6L2s5bCP5YaZ77yM5YW85a655Li76ZSu5pyJ5aSn5YaZ5a2X5q+N55qE5oOF5Ya1XG4gICAgcmV0dXJuICcvJyArIHN1YlBhdGhzLmpvaW4oJy8nKTsgLy8gLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICAvKipcbiAgICog5Y676Zmk5pyA5ZCO55qEc1xuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgdHJpbVRyYWlsaW5nUyhzdHI6IHN0cmluZykge1xuICAgIHJldHVybiBzdHIuc3Vic3RyKDAsIHN0ci5sZW5ndGggLSAxKTtcbiAgfVxuICAvKipcbiAgICog6L2s5o2i6YCa55So6Lev5b6E5Li65LuF5pyJ6KGo5ZCN55qE5pWw57uEXG4gICAqXG4gICAqIDEuWydpZDp4eHgnLCdjaGlsZDFzJywnaWQ6eHgnLCdwcm9wJ10gPT4gWydjaGlsZDFzJywncHJvcCddXG4gICAqIDIuWydwcm9wMScsJ3Byb3AyJywncHJvcDMnXSA9PiBbJ3Byb3AxJywncHJvcDInLCdwcm9wMyddXG4gICAqIDMuWydwcm9wMScsJ2lkOnh4eCcsJ3Byb3AyJ10gPT4gWydwcm9wMScsJ3Byb3AyJ11cbiAgICogQHBhcmFtIHBhdGhzIOWGhee9rui3r+W+hO+8jOagvOW8jzpbJ2lkOnh4eCcsJ2NoaWxkMXMnLCdpZDp4eCcsJ3Byb3AnXVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0UGF0aHNUb05vZGVDb2RlcyhwYXRoczogc3RyaW5nW10pIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAoIXBhdGhzIHx8IHBhdGhzLmxlbmd0aCA8IDEpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHBhdGhzLmZpbHRlcigoaXRlbSkgPT4gISFpdGVtICYmIGl0ZW0uaW5kZXhPZignOicpID09PSAtMSkuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvKipcbiAgICog6L2s5o2i6YCa55So6Lev5b6E5Li65LuF5pyJ5a6e5L2T5Li76ZSu5YC855qE5pWw57uEXG4gICAqIEBwYXJhbSBwYXRocyDpgJrnlKjot6/lvoTvvIzmoLzlvI86WydpZDp4eHgnLCdjaGlsZDFzJywnaWQ6eHgnLCdwcm9wJ10gPT4gWyd4eHgnLCd4eCddXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRQYXRoc1RvSWRzKHBhdGhzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGlmICghcGF0aHMgfHwgcGF0aHMubGVuZ3RoIDwgMSkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcGF0aHMuZmlsdGVyKChpdGVtKSA9PiAhIWl0ZW0gJiYgaXRlbS5pbmRleE9mKCc6JykgIT09IC0xKS5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgcmVzdWx0LnB1c2goaWQuc3BsaXQoJzonKVsxXSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5leHBvcnQgeyBCZWZEYXRhUGF0aFV0aWwgfTtcbiJdfQ==

@@ -111,3 +111,4 @@ /**

if (ResponseInfoUtil.isReported401Error(error)) {
return throwError(error);
eventBus.post('Exception', '', 'onException', error, formAppContext);
return EMPTY;
}

@@ -239,2 +240,2 @@ if (needThrowException) {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5X2V4dGVuZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9wcm94eV9leHRlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLGNBQWM7Ozs7SUFFekIsWUFBb0IsT0FBOEI7UUFBOUIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7O2NBQzFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtRQUMzQyxJQUFJLFFBQVEsRUFBRTtZQUNaLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDMUQ7SUFDSCxDQUFDOzs7Ozs7OztJQU1NLFVBQVUsQ0FBQyxRQUFzQixFQUFFLGFBQXVCLEVBQUUsT0FBYTtRQUM5RSxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsZUFBZSxJQUFJLGFBQWEsS0FBSyxJQUFJLEVBQUU7WUFDbEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDaEU7UUFDRCxJQUFJLFFBQVEsSUFBSSxRQUFR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QUM1RztJQUNILENBQUM7Q0FDRjs7Ozs7O0lBL0pDLHdDQUF1Qzs7Ozs7SUFDM0IsaUNBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdGhyb3dFcnJvciwgT2JzZXJ2YWJsZSwgb2YsIEVNUFRZIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tICdAZmFycmlzL2RldmtpdCc7XG5pbXBvcnQgeyBJUHJveHlFeHRlbmQsIFJlc3BvbnNlSW5mbyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQmVmUmVwb3NpdG9yeSB9IGZyb20gJy4vYmVmX3JlcG9zaXRvcnknO1xuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHR0cFBhcmFtcywgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBSZXF1ZXN0SW5mb1V0aWwsIFJlc3BvbnNlSW5mb1V0aWwgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEJhY2tFbmRNZXNzYWdlVXRpbCB9IGZyb20gJy4vdXRpbHMvYmFja19lbmRfbWVzc2FnZS51dGlsJztcbmltcG9ydCB7IEJlZlNlc3Npb25NYW5hZ2VyIH0gZnJvbSAnLi9zZXNzaW9uL2JlZl9zZXNzaW9uX21hbmFnZXInO1xuaW1wb3J0IHsgTG9hZGluZ1NlcnZpY2UgfSBmcm9tICdAZmFycmlzL3VpLWxvYWRpbmcnO1xuaW1wb3J0IHsgVGFiVXRpbCB9IGZyb20gJy4vdXRpbHMvdGFiLnV0aWwnO1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZTogbWF4LWxpbmUtbGVuZ3RoIHRzbGludDpkaXNhYmxlOiBuby1zdHJpbmctbGl0ZXJhbFxuZXhwb3J0IGNsYXNzIEJlZlByb3h5RXh0ZW5kIGltcGxlbWVudHMgSVByb3h5RXh0ZW5kIHtcbiAgcHJpdmF0ZSBsb2FkaW5nU2VydmljZTogTG9hZGluZ1NlcnZpY2U7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29udGV4dDogQmVmUmVwb3NpdG9yeTxFbnRpdHk+KSB7XG4gICAgY29uc3QgaW5qZWN0b3IgPSB0aGlzLmNvbnRleHQuZ2V0SW5qZWN0b3IoKTtcbiAgICBpZiAoaW5qZWN0b3IpIHtcbiAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2UgPSBpbmplY3Rvci5nZXQoTG9hZGluZ1NlcnZpY2UsIG51bGwpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICog6K+35rGC57uT5p6c6L+U5ZueXG4gICAqIEBwYXJhbSByZXNwb25zZSByZXNwb25zZVxuICAgKiBAcGFyYW0gaWdub3JlQ2hhbmdlcyDlv73nlaXlj5jmm7RcbiAgICovXG4gIHB1YmxpYyBvblJlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZUluZm8sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuLCBvcHRpb25zPzogYW55KSB7XG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmlubmVyRGF0YUNoYW5nZSAmJiBpZ25vcmVDaGFuZ2VzICE9PSB0cnVlKSB7XG4gICAgICB0aGlzLmNvbnRleHQuaGFuZGxlRGF0YUNoYW5nZURldGFpbHMocmVzcG9uc2UuaW5uZXJEYXRhQ2hhbmdlKTtcbiAgICB9XG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmlubmVyVmFyaWFibGVDaGFuZ2UpIHtcbiAgICAgIHRoaXMuY29udGV4dC5oYW5kbGVWYXJpYWJsZUNoYW5nZURldGFpbChyZXNwb25zZS5pbm5lclZhcmlhYmxlQ2hhbmdlKTtcbiAgICB9XG4gICAgY29uc3QgbWVzc2FnZXMgPSBSZXNwb25zZUluZm9VdGlsLnBhcnNlQmFja0VuZE1lc3NhZ2UocmVzcG9uc2UpO1xuICAgIEJhY2tFbmRNZXNzYWdlVXRpbC5oYW5kbGVNZXNzYWdlKG1lc3NhZ2VzLCB0aGlzLmNvbnRleHQuZ2V0SW5qZWN0b3IoKSk7XG4gICAgdGhpcy5jb250ZXh0LmNsZWFyQWxsRW50aXR5Q2hhbmdlcygpO1xuICAgIGNvbnN0IHJlcXVlc3RJbmZvID0gUmVxdWVzdEluZm9VdGlsLmdldFJlcXVlc3RJbmZvKG9wdGlvbnMpO1xuICAgIGNvbnN0IHZhcmlhYmxlQ2hhbmdlID0gcmVxdWVzdEluZm8gJiYgcmVxdWVzdEluZm8udmFyaWFibGVDaGFuZ2U7XG4gICAgdGhpcy5jb250ZXh0LmNsZWFyQWxsVmFyaWFibGVDaGFuZ2VzKHZhcmlhYmxlQ2hhbmdlKTtcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaGFzT3duUHJvcGVydHkoJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiByZXNwb25zZS5yZXR1cm5WYWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICog5Y+R55Sf6ZSZ6K+vXG4gICAqIEBwYXJhbSBlcnJvciBlcnJvclxuICAgKiBAcGFyYW0gc2VsZkhhbmRFcnJvciDoh6rlrprkuYnplJnor6/lpITnkIZcbiAgICogQHBhcmFtIGlnbm9yZUVycm9yIOW/veeVpemUmeivr1xuICAgKi9cbiAgcHVibGljIG9uRXJyb3IoZXJyb3I6IGFueSwgc2VsZkhhbmRFcnJvcjogYm9vbGVhbiwgaWdub3JlRXJyb3I6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGZvcm1BcHBDb250ZXh0ID0gdGhpcy5jb250ZXh0LmFwcENvbnRleHQuZ2V0Rm9ybUFwcENvbnRleHQoKTtcbiAgICBjb25zdCBhcHBsaWNhdGlvbklkID0gZm9ybUFwcENvbnRleHQuQXBwbGljYXRpb25JZDtcbiAgICBjb25zdCBsb2FkaW5nU2VydmljZXMgPSB3aW5kb3dbJ0RFVktJVF9MT0FESU5HX1NFUlZJQ0UnXTtcbiAgICBjb25zdCBtZXNzYWdlcyA9IFJlc3BvbnNlSW5mb1V0aWwucGFyc2VCYWNrRW5kRXJyb3IoZXJyb3IpO1xuICAgIEJhY2tFbmRNZXNzYWdlVXRpbC5oYW5kbGVNZXNzYWdlKG1lc3NhZ2VzLCB0aGlzLmNvbnRleHQuZ2V0SW5qZWN0b3IoKSk7XG4gICAgaWYgKHRoaXMubG9hZGluZ1NlcnZpY2UpIHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5jbGVhckFsbCgpO1xuICAgICAgfSwgMzUwKTtcbiAgICB9XG4gICAgaWYgKGxvYWRpbmdTZXJ2aWNlcyAmJiBsb2FkaW5nU2VydmljZXMgaW5zdGFuY2VvZiBBcnJheSAmJiBsb2FkaW5nU2VydmljZXMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBsb2FkaW5nU2VydmljZSBvZiBsb2FkaW5nU2VydmljZXMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiAobG9hZGluZ1NlcnZpY2UuZGVzdHJveSkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBsb2FkaW5nU2VydmljZS5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoISFzZWxmSGFuZEVycm9yKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV2ZW50QnVzID0gdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLmV2ZW50QnVzO1xuICAgICAgY29uc3QgYXBwbGljYXRpb25Db250ZXh0OiBhbnkgPSB3aW5kb3dbYXBwbGljYXRpb25JZF0gfHwge307XG4gICAgICBjb25zdCBpc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdCA9ICEhYXBwbGljYXRpb25Db250ZXh0LmlzRXhjZXB0aW9uSGFuZGxlckV4aXN0O1xuICAgICAgY29uc3QgbWVzc2FnZXMgPSBSZXNwb25zZUluZm9VdGlsLnBhcnNlQmFja0VuZEVycm9yKGVycm9yKTtcbiAgICAgIGNvbnN0IGJpek1lc3NhZ2VzID0gQmFja0VuZE1lc3NhZ2VVdGlsLmdldEZvcm1sZXNzTWVzc2FnZXMobWVzc2FnZXMpO1xuICAgICAgY29uc3QgaXNFeGlzdEZvcm1sZXNzTWVzc2FnZSA9IGJpek1lc3NhZ2VzICYmIGJpek1lc3NhZ2VzLmxlbmd0aCA+IDAgfHwgZmFsc2U7XG4gICAgICBjb25zdCBuZWVkVGhyb3dFeGNlcHRpb24gPSAhKGVycm9yICYmIGVycm9yLmVycm9yICYmIGVycm9yLmVycm9yLmV4dGVuc2lvbk1lc3NhZ2UgJiYgQmFja0VuZE1lc3NhZ2VVdGlsLmlzQmFja0VuZE1lc3NhZ2VIYW5kbGVyRXhpc3QodGhpcy5jb250ZXh0LmdldEluamVjdG9yKCkpICYmICFpc0V4aXN0Rm9ybWxlc3NNZXNzYWdlKTtcbiAgICAgIGNvbnN0IHdpbGxUaHJvd0V4Y2VwdGlvbiA9ICEhZXZlbnRCdXMgJiYgaXNFeGNlcHRpb25IYW5kbGVyRXhpc3QgJiYgbmVlZFRocm93RXhjZXB0aW9uO1xuICAgICAgQmFja0VuZE1lc3NhZ2VVdGlsLmhhbmRsZU1lc3NhZ2UobWVzc2FnZXMsIHRoaXMuY29udGV4dC5nZXRJbmplY3RvcigpLCB7IGhhc1Rocm93RXJyb3I6IHdpbGxUaHJvd0V4Y2VwdGlvbiwgaXNFeGNlcHRpb246IHRydWUsIGV2ZW50QnVzOiBldmVudEJ1cywgZXJyb3IsIGZvcm1BcHBDb250ZXh0IH0pO1xuICAgICAgaWYgKCEhZXZlbnRCdXMgJiYgaXNFeGNlcHRpb25IYW5kbGVyRXhpc3QpIHtcbiAgICAgICAgaWYgKFJlc3BvbnNlSW5mb1V0aWwuaXNSZXBvcnRlZDQwMUVycm9yKGVycm9yKSkge1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmVlZFRocm93RXhjZXB0aW9uKSB7XG4gICAgICAgICAgZXZlbnRCdXMucG9zdCgnRXhjZXB0aW9uJywgJycsICdvbkV4Y2VwdGlvbicsIGVycm9yLCBmb3JtQXBwQ29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlnbm9yZUVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiDmianlsZVodHRwIGhlYWRlcnNcbiAgICogQHBhcmFtIGhlYWRlcnMgaGVhZGVyc1xuICAgKi9cbiAgcHVibGljIGV4dGVuZEhlYWRlcnMoaGVhZGVyczogSHR0cEhlYWRlcnMsIHJ1bnRpbWVDb250ZXh0PzogYW55KTogT2JzZXJ2YWJsZTx7IFtwcm9wTmFtZTogc3RyaW5nXTogYW55IH0+IHtcbiAgICBjb25zdCBmb3JtQXBwQ29udGV4dCA9IHRoaXMuY29udGV4dC5hcHBDb250ZXh0LmdldEZvcm1BcHBDb250ZXh0KCk7XG4gICAgbGV0IHRhYklkID0gZm9ybUFwcENvbnRleHQgJiYgZm9ybUFwcENvbnRleHQudGFiSWQ7XG4gICAgaWYgKCF0YWJJZCAmJiAhcnVudGltZUNvbnRleHQpIHtcbiAgICAgIC8vIOihqOWNleacquWIneWni+WMluWujOaIkFxuICAgICAgdGFiSWQgPSBUYWJVdGlsLmdldFRhYklkKCk7XG4gICAgfVxuICAgIGlmICh0YWJJZCAmJiAhcnVudGltZUNvbnRleHQpIHtcbiAgICAgIHJ1bnRpbWVDb250ZXh0ID0geyB0YWJJZCB9O1xuICAgIH1cbiAgICBjb25zdCAkZ2V0U2Vzc2lvbklkID0gQmVmU2Vzc2lvbk1hbmFnZXIuZ2V0U2Vzc2lvbklkKGZvcm1BcHBDb250ZXh0LCB0aGlzLmNvbnRleHQucmVzdFNlcnZpY2Uuc2Vzc2lvblNlcnZpY2UpO1xuICAgIHJldHVybiAkZ2V0U2Vzc2lvbklkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoc2Vzc2lvbklkID0+IHtcbiAgICAgICAgaGVhZGVycyA9IHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5zZXNzaW9uU2VydmljZS5leHRlbmRSZXF1ZXN0SGVhZGVycyhoZWFkZXJzLCBydW50aW1lQ29udGV4dCk7XG4gICAgICAgIHJldHVybiBvZihoZWFkZXJzKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuICAvKipcbiAgICog5omp5bGV6K+35rGC5Y+C5pWwXG4gICAqIEBwYXJhbSBwYXJhbXMg5Y+C5pWwXG4gICAqL1xuICBwdWJsaWMgZXh0ZW5kVXJsKHVybDogc3RyaW5nLCBwYXJhbXM6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSk6IHN0cmluZyB7XG4gICAgaWYgKCFwYXJhbXMpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IGluIHBhcmFtcykge1xuICAgICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gSlNPTi5zdHJpbmdpZnkocGFyYW1zW2tleV0pO1xuICAgICAgICBpZiAodXJsLmluZGV4T2YoJz8nKSA9PT0gLTEpIHtcbiAgICAgICAgICB1cmwgPSBgJHt1cmx9PyR7a2V5fT0ke3ZhbHVlfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXJsID0gYCR7dXJsfSYke2tleX09JHt2YWx1ZX1gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1cmw7XG4gIH1cbiAgLyoqXG4gICAqIOaJqeWxleivt+axguS9k1xuICAgKiBAcGFyYW0gYm9keSBib2R5XG4gICAqL1xuICBwdWJsaWMgZXh0ZW5kQm9keShib2R5KTogeyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICBpZiAoIWJvZHkgfHwgdHlwZW9mIGJvZHkgIT09ICdvYmplY3QnIHx8IE9iamVjdC5rZXlzKGJvZHkpLmxlbmd0aCA8IDEpIHtcbiAgICAgIHJldHVybiBib2R5O1xuICAgIH1cbiAgICBPYmplY3Qua2V5cyhib2R5KS5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgaWYgKG5hbWUgPT09ICdyZXF1ZXN0SW5mbycpIHtcbiAgICAgICAgYm9keVsncmVxdWVzdEluZm8nXSA9IHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5idWlsZFJlcXVlc3RJbmZvKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8g5YW85a65SueJiOWQjuerr2JvZHnlj6rmnInkuIDkuKprZXnml7Zib2R55Y+q5LygdmFsdWXnmoTmg4XlhrVcbiAgICBpZiAoT2JqZWN0LmtleXMoYm9keSkubGVuZ3RoID09PSAxKSB7XG4gICAgICBib2R5ID0gT2JqZWN0LnZhbHVlcyhib2R5KVswXTtcbiAgICB9XG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cbiAgcHVibGljIHBhcnNlSGVhZGVycyhyZXNwb25zZTogYW55KSB7XG4gICAgY29uc3Qgc2Vzc2lvbklkS2V5ID0gJ0JFRlNlc3Npb25JRCc7XG4gICAgY29uc3QgZm9ybUFwcENvbnRleHQgPSB0aGlzLmNvbnRleHQuYXBwQ29udGV4dC5nZXRGb3JtQXBwQ29udGV4dCgpO1xuICAgIGxldCBydW50aW1lQ29udGV4dCA9IG51bGw7XG4gICAgY29uc3QgdGFiSWQgPSBmb3JtQXBwQ29udGV4dCAmJiBmb3JtQXBwQ29udGV4dC50YWJJZCB8fCBUYWJVdGlsLmdldFRhYklkKCk7XG4gICAgaWYgKHRhYklkKSB7XG4gICAgICBydW50aW1lQ29udGV4dCA9IHsgdGFiSWQgfTtcbiAgICB9XG4gICAgaWYgKHJlc3BvbnNlLmhlYWRlcnMgJiYgcmVzcG9uc2UuaGVhZGVycy5oYXMoc2Vzc2lvbklkS2V5KSkge1xuICAgICAgdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLnNlc3Npb25TZXJ2aWNlLnNldEJlU2Vzc2lvbklkKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KHNlc3Npb25JZEtleSksIHJ1bnRpbWVDb250ZXh0KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5X2V4dGVuZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9wcm94eV9leHRlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLGNBQWM7Ozs7SUFFekIsWUFBb0IsT0FBOEI7UUFBOUIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7O2NBQzFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtRQUMzQyxJQUFJLFFBQVEsRUFBRTtZQUNaLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDMUQ7SUFDSCxDQUFDOzs7Ozs7OztJQU1NLFVBQVUsQ0FBQyxRQUFzQixFQUFFLGFBQXVCLEVBQUUsT0FBYTtRQUM5RSxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsZUFBZSxJQUFJLGFBQWEsS0FBSyxJQUFJLEVBQUU7WUFDbEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDaEU7UUFDRCxJQUFJLFFBQVEsSUFBSSxRQUFR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Q0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztTQUM1RztJQUNILENBQUM7Q0FDRjs7Ozs7O0lBL0pDLHdDQUF1Qzs7Ozs7SUFDM0IsaUNBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdGhyb3dFcnJvciwgT2JzZXJ2YWJsZSwgb2YsIEVNUFRZIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tICdAZmFycmlzL2RldmtpdCc7XG5pbXBvcnQgeyBJUHJveHlFeHRlbmQsIFJlc3BvbnNlSW5mbyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQmVmUmVwb3NpdG9yeSB9IGZyb20gJy4vYmVmX3JlcG9zaXRvcnknO1xuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHR0cFBhcmFtcywgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBSZXF1ZXN0SW5mb1V0aWwsIFJlc3BvbnNlSW5mb1V0aWwgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEJhY2tFbmRNZXNzYWdlVXRpbCB9IGZyb20gJy4vdXRpbHMvYmFja19lbmRfbWVzc2FnZS51dGlsJztcbmltcG9ydCB7IEJlZlNlc3Npb25NYW5hZ2VyIH0gZnJvbSAnLi9zZXNzaW9uL2JlZl9zZXNzaW9uX21hbmFnZXInO1xuaW1wb3J0IHsgTG9hZGluZ1NlcnZpY2UgfSBmcm9tICdAZmFycmlzL3VpLWxvYWRpbmcnO1xuaW1wb3J0IHsgVGFiVXRpbCB9IGZyb20gJy4vdXRpbHMvdGFiLnV0aWwnO1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZTogbWF4LWxpbmUtbGVuZ3RoIHRzbGludDpkaXNhYmxlOiBuby1zdHJpbmctbGl0ZXJhbFxuZXhwb3J0IGNsYXNzIEJlZlByb3h5RXh0ZW5kIGltcGxlbWVudHMgSVByb3h5RXh0ZW5kIHtcbiAgcHJpdmF0ZSBsb2FkaW5nU2VydmljZTogTG9hZGluZ1NlcnZpY2U7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29udGV4dDogQmVmUmVwb3NpdG9yeTxFbnRpdHk+KSB7XG4gICAgY29uc3QgaW5qZWN0b3IgPSB0aGlzLmNvbnRleHQuZ2V0SW5qZWN0b3IoKTtcbiAgICBpZiAoaW5qZWN0b3IpIHtcbiAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2UgPSBpbmplY3Rvci5nZXQoTG9hZGluZ1NlcnZpY2UsIG51bGwpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICog6K+35rGC57uT5p6c6L+U5ZueXG4gICAqIEBwYXJhbSByZXNwb25zZSByZXNwb25zZVxuICAgKiBAcGFyYW0gaWdub3JlQ2hhbmdlcyDlv73nlaXlj5jmm7RcbiAgICovXG4gIHB1YmxpYyBvblJlc3BvbnNlKHJlc3BvbnNlOiBSZXNwb25zZUluZm8sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuLCBvcHRpb25zPzogYW55KSB7XG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmlubmVyRGF0YUNoYW5nZSAmJiBpZ25vcmVDaGFuZ2VzICE9PSB0cnVlKSB7XG4gICAgICB0aGlzLmNvbnRleHQuaGFuZGxlRGF0YUNoYW5nZURldGFpbHMocmVzcG9uc2UuaW5uZXJEYXRhQ2hhbmdlKTtcbiAgICB9XG4gICAgaWYgKHJlc3BvbnNlICYmIHJlc3BvbnNlLmlubmVyVmFyaWFibGVDaGFuZ2UpIHtcbiAgICAgIHRoaXMuY29udGV4dC5oYW5kbGVWYXJpYWJsZUNoYW5nZURldGFpbChyZXNwb25zZS5pbm5lclZhcmlhYmxlQ2hhbmdlKTtcbiAgICB9XG4gICAgY29uc3QgbWVzc2FnZXMgPSBSZXNwb25zZUluZm9VdGlsLnBhcnNlQmFja0VuZE1lc3NhZ2UocmVzcG9uc2UpO1xuICAgIEJhY2tFbmRNZXNzYWdlVXRpbC5oYW5kbGVNZXNzYWdlKG1lc3NhZ2VzLCB0aGlzLmNvbnRleHQuZ2V0SW5qZWN0b3IoKSk7XG4gICAgdGhpcy5jb250ZXh0LmNsZWFyQWxsRW50aXR5Q2hhbmdlcygpO1xuICAgIGNvbnN0IHJlcXVlc3RJbmZvID0gUmVxdWVzdEluZm9VdGlsLmdldFJlcXVlc3RJbmZvKG9wdGlvbnMpO1xuICAgIGNvbnN0IHZhcmlhYmxlQ2hhbmdlID0gcmVxdWVzdEluZm8gJiYgcmVxdWVzdEluZm8udmFyaWFibGVDaGFuZ2U7XG4gICAgdGhpcy5jb250ZXh0LmNsZWFyQWxsVmFyaWFibGVDaGFuZ2VzKHZhcmlhYmxlQ2hhbmdlKTtcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaGFzT3duUHJvcGVydHkoJ3JldHVyblZhbHVlJykpIHtcbiAgICAgIHJldHVybiByZXNwb25zZS5yZXR1cm5WYWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICog5Y+R55Sf6ZSZ6K+vXG4gICAqIEBwYXJhbSBlcnJvciBlcnJvclxuICAgKiBAcGFyYW0gc2VsZkhhbmRFcnJvciDoh6rlrprkuYnplJnor6/lpITnkIZcbiAgICogQHBhcmFtIGlnbm9yZUVycm9yIOW/veeVpemUmeivr1xuICAgKi9cbiAgcHVibGljIG9uRXJyb3IoZXJyb3I6IGFueSwgc2VsZkhhbmRFcnJvcjogYm9vbGVhbiwgaWdub3JlRXJyb3I6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGZvcm1BcHBDb250ZXh0ID0gdGhpcy5jb250ZXh0LmFwcENvbnRleHQuZ2V0Rm9ybUFwcENvbnRleHQoKTtcbiAgICBjb25zdCBhcHBsaWNhdGlvbklkID0gZm9ybUFwcENvbnRleHQuQXBwbGljYXRpb25JZDtcbiAgICBjb25zdCBsb2FkaW5nU2VydmljZXMgPSB3aW5kb3dbJ0RFVktJVF9MT0FESU5HX1NFUlZJQ0UnXTtcbiAgICBjb25zdCBtZXNzYWdlcyA9IFJlc3BvbnNlSW5mb1V0aWwucGFyc2VCYWNrRW5kRXJyb3IoZXJyb3IpO1xuICAgIEJhY2tFbmRNZXNzYWdlVXRpbC5oYW5kbGVNZXNzYWdlKG1lc3NhZ2VzLCB0aGlzLmNvbnRleHQuZ2V0SW5qZWN0b3IoKSk7XG4gICAgaWYgKHRoaXMubG9hZGluZ1NlcnZpY2UpIHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5jbGVhckFsbCgpO1xuICAgICAgfSwgMzUwKTtcbiAgICB9XG4gICAgaWYgKGxvYWRpbmdTZXJ2aWNlcyAmJiBsb2FkaW5nU2VydmljZXMgaW5zdGFuY2VvZiBBcnJheSAmJiBsb2FkaW5nU2VydmljZXMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBsb2FkaW5nU2VydmljZSBvZiBsb2FkaW5nU2VydmljZXMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiAobG9hZGluZ1NlcnZpY2UuZGVzdHJveSkgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBsb2FkaW5nU2VydmljZS5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoISFzZWxmSGFuZEVycm9yKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV2ZW50QnVzID0gdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLmV2ZW50QnVzO1xuICAgICAgY29uc3QgYXBwbGljYXRpb25Db250ZXh0OiBhbnkgPSB3aW5kb3dbYXBwbGljYXRpb25JZF0gfHwge307XG4gICAgICBjb25zdCBpc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdCA9ICEhYXBwbGljYXRpb25Db250ZXh0LmlzRXhjZXB0aW9uSGFuZGxlckV4aXN0O1xuICAgICAgY29uc3QgbWVzc2FnZXMgPSBSZXNwb25zZUluZm9VdGlsLnBhcnNlQmFja0VuZEVycm9yKGVycm9yKTtcbiAgICAgIGNvbnN0IGJpek1lc3NhZ2VzID0gQmFja0VuZE1lc3NhZ2VVdGlsLmdldEZvcm1sZXNzTWVzc2FnZXMobWVzc2FnZXMpO1xuICAgICAgY29uc3QgaXNFeGlzdEZvcm1sZXNzTWVzc2FnZSA9IGJpek1lc3NhZ2VzICYmIGJpek1lc3NhZ2VzLmxlbmd0aCA+IDAgfHwgZmFsc2U7XG4gICAgICBjb25zdCBuZWVkVGhyb3dFeGNlcHRpb24gPSAhKGVycm9yICYmIGVycm9yLmVycm9yICYmIGVycm9yLmVycm9yLmV4dGVuc2lvbk1lc3NhZ2UgJiYgQmFja0VuZE1lc3NhZ2VVdGlsLmlzQmFja0VuZE1lc3NhZ2VIYW5kbGVyRXhpc3QodGhpcy5jb250ZXh0LmdldEluamVjdG9yKCkpICYmICFpc0V4aXN0Rm9ybWxlc3NNZXNzYWdlKTtcbiAgICAgIGNvbnN0IHdpbGxUaHJvd0V4Y2VwdGlvbiA9ICEhZXZlbnRCdXMgJiYgaXNFeGNlcHRpb25IYW5kbGVyRXhpc3QgJiYgbmVlZFRocm93RXhjZXB0aW9uO1xuICAgICAgQmFja0VuZE1lc3NhZ2VVdGlsLmhhbmRsZU1lc3NhZ2UobWVzc2FnZXMsIHRoaXMuY29udGV4dC5nZXRJbmplY3RvcigpLCB7IGhhc1Rocm93RXJyb3I6IHdpbGxUaHJvd0V4Y2VwdGlvbiwgaXNFeGNlcHRpb246IHRydWUsIGV2ZW50QnVzOiBldmVudEJ1cywgZXJyb3IsIGZvcm1BcHBDb250ZXh0IH0pO1xuICAgICAgaWYgKCEhZXZlbnRCdXMgJiYgaXNFeGNlcHRpb25IYW5kbGVyRXhpc3QpIHtcbiAgICAgICAgaWYgKFJlc3BvbnNlSW5mb1V0aWwuaXNSZXBvcnRlZDQwMUVycm9yKGVycm9yKSkge1xuICAgICAgICAgIGV2ZW50QnVzLnBvc3QoJ0V4Y2VwdGlvbicsICcnLCAnb25FeGNlcHRpb24nLCBlcnJvciwgZm9ybUFwcENvbnRleHQpO1xuICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobmVlZFRocm93RXhjZXB0aW9uKSB7XG4gICAgICAgICAgZXZlbnRCdXMucG9zdCgnRXhjZXB0aW9uJywgJycsICdvbkV4Y2VwdGlvbicsIGVycm9yLCBmb3JtQXBwQ29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlnbm9yZUVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBFTVBUWTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICog5omp5bGVaHR0cCBoZWFkZXJzXG4gICAqIEBwYXJhbSBoZWFkZXJzIGhlYWRlcnNcbiAgICovXG4gIHB1YmxpYyBleHRlbmRIZWFkZXJzKGhlYWRlcnM6IEh0dHBIZWFkZXJzLCBydW50aW1lQ29udGV4dD86IGFueSk6IE9ic2VydmFibGU8eyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9PiB7XG4gICAgY29uc3QgZm9ybUFwcENvbnRleHQgPSB0aGlzLmNvbnRleHQuYXBwQ29udGV4dC5nZXRGb3JtQXBwQ29udGV4dCgpO1xuICAgIGxldCB0YWJJZCA9IGZvcm1BcHBDb250ZXh0ICYmIGZvcm1BcHBDb250ZXh0LnRhYklkO1xuICAgIGlmICghdGFiSWQgJiYgIXJ1bnRpbWVDb250ZXh0KSB7XG4gICAgICAvLyDooajljZXmnKrliJ3lp4vljJblrozmiJBcbiAgICAgIHRhYklkID0gVGFiVXRpbC5nZXRUYWJJZCgpO1xuICAgIH1cbiAgICBpZiAodGFiSWQgJiYgIXJ1bnRpbWVDb250ZXh0KSB7XG4gICAgICBydW50aW1lQ29udGV4dCA9IHsgdGFiSWQgfTtcbiAgICB9XG4gICAgY29uc3QgJGdldFNlc3Npb25JZCA9IEJlZlNlc3Npb25NYW5hZ2VyLmdldFNlc3Npb25JZChmb3JtQXBwQ29udGV4dCwgdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLnNlc3Npb25TZXJ2aWNlKTtcbiAgICByZXR1cm4gJGdldFNlc3Npb25JZC5waXBlKFxuICAgICAgc3dpdGNoTWFwKHNlc3Npb25JZCA9PiB7XG4gICAgICAgIGhlYWRlcnMgPSB0aGlzLmNvbnRleHQucmVzdFNlcnZpY2Uuc2Vzc2lvblNlcnZpY2UuZXh0ZW5kUmVxdWVzdEhlYWRlcnMoaGVhZGVycywgcnVudGltZUNvbnRleHQpO1xuICAgICAgICByZXR1cm4gb2YoaGVhZGVycyk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbiAgLyoqXG4gICAqIOaJqeWxleivt+axguWPguaVsFxuICAgKiBAcGFyYW0gcGFyYW1zIOWPguaVsFxuICAgKi9cbiAgcHVibGljIGV4dGVuZFVybCh1cmw6IHN0cmluZywgcGFyYW1zOiB7IFtwcm9wTmFtZTogc3RyaW5nXTogYW55IH0pOiBzdHJpbmcge1xuICAgIGlmICghcGFyYW1zKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBwYXJhbXMpIHtcbiAgICAgIGlmIChwYXJhbXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IEpTT04uc3RyaW5naWZ5KHBhcmFtc1trZXldKTtcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKCc/JykgPT09IC0xKSB7XG4gICAgICAgICAgdXJsID0gYCR7dXJsfT8ke2tleX09JHt2YWx1ZX1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVybCA9IGAke3VybH0mJHtrZXl9PSR7dmFsdWV9YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdXJsO1xuICB9XG4gIC8qKlxuICAgKiDmianlsZXor7fmsYLkvZNcbiAgICogQHBhcmFtIGJvZHkgYm9keVxuICAgKi9cbiAgcHVibGljIGV4dGVuZEJvZHkoYm9keSk6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSB7XG4gICAgaWYgKCFib2R5IHx8IHR5cGVvZiBib2R5ICE9PSAnb2JqZWN0JyB8fCBPYmplY3Qua2V5cyhib2R5KS5sZW5ndGggPCAxKSB7XG4gICAgICByZXR1cm4gYm9keTtcbiAgICB9XG4gICAgT2JqZWN0LmtleXMoYm9keSkuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgIGlmIChuYW1lID09PSAncmVxdWVzdEluZm8nKSB7XG4gICAgICAgIGJvZHlbJ3JlcXVlc3RJbmZvJ10gPSB0aGlzLmNvbnRleHQucmVzdFNlcnZpY2UuYnVpbGRSZXF1ZXN0SW5mbygpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vIOWFvOWuuUrniYjlkI7nq69ib2R55Y+q5pyJ5LiA5Liqa2V55pe2Ym9keeWPquS8oHZhbHVl55qE5oOF5Ya1XG4gICAgaWYgKE9iamVjdC5rZXlzKGJvZHkpLmxlbmd0aCA9PT0gMSkge1xuICAgICAgYm9keSA9IE9iamVjdC52YWx1ZXMoYm9keSlbMF07XG4gICAgfVxuICAgIHJldHVybiBib2R5O1xuICB9XG4gIHB1YmxpYyBwYXJzZUhlYWRlcnMocmVzcG9uc2U6IGFueSkge1xuICAgIGNvbnN0IHNlc3Npb25JZEtleSA9ICdCRUZTZXNzaW9uSUQnO1xuICAgIGNvbnN0IGZvcm1BcHBDb250ZXh0ID0gdGhpcy5jb250ZXh0LmFwcENvbnRleHQuZ2V0Rm9ybUFwcENvbnRleHQoKTtcbiAgICBsZXQgcnVudGltZUNvbnRleHQgPSBudWxsO1xuICAgIGNvbnN0IHRhYklkID0gZm9ybUFwcENvbnRleHQgJiYgZm9ybUFwcENvbnRleHQudGFiSWQgfHwgVGFiVXRpbC5nZXRUYWJJZCgpO1xuICAgIGlmICh0YWJJZCkge1xuICAgICAgcnVudGltZUNvbnRleHQgPSB7IHRhYklkIH07XG4gICAgfVxuICAgIGlmIChyZXNwb25zZS5oZWFkZXJzICYmIHJlc3BvbnNlLmhlYWRlcnMuaGFzKHNlc3Npb25JZEtleSkpIHtcbiAgICAgIHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5zZXNzaW9uU2VydmljZS5zZXRCZVNlc3Npb25JZChyZXNwb25zZS5oZWFkZXJzLmdldChzZXNzaW9uSWRLZXkpLCBydW50aW1lQ29udGV4dCk7XG4gICAgfVxuICB9XG59XG4iXX0=

@@ -117,3 +117,3 @@ /**

/** @type {?} */
const url = `${this.baseUri}/${id}`;
const url = `${this.baseUri}/${encodeURIComponent(id)}`;
return this.request(url, GET);

@@ -130,3 +130,3 @@ }

/** @type {?} */
const url = `${this.baseUri}/service/retrieve/${id}`;
const url = `${this.baseUri}/service/retrieve/${encodeURIComponent(id)}`;
/** @type {?} */

@@ -159,3 +159,3 @@ const options = {

/** @type {?} */
const url = `${this.baseUri}/extension/retrieve/${id}`;
const url = `${this.baseUri}/extension/retrieve/${encodeURIComponent(id)}`;
/** @type {?} */

@@ -178,3 +178,3 @@ let body = requestInfo;

/** @type {?} */
const url = `${this.baseUri}/service/edit/${id}`;
const url = `${this.baseUri}/service/edit/${encodeURIComponent(id)}`;
/** @type {?} */

@@ -255,3 +255,3 @@ const body = requestInfo;

/** @type {?} */
const url = `${this.baseUri}/${id}`;
const url = `${this.baseUri}/${encodeURIComponent(id)}`;
return this.request(url, DELETE);

@@ -267,3 +267,3 @@ }

/** @type {?} */
const url = `${this.baseUri}/service/delete/${id}`;
const url = `${this.baseUri}/service/delete/${encodeURIComponent(id)}`;
/** @type {?} */

@@ -283,3 +283,3 @@ const body = requestInfo;

/** @type {?} */
const url = `${this.baseUri}/extension/delete/${id}`;
const url = `${this.baseUri}/extension/delete/${encodeURIComponent(id)}`;
/** @type {?} */

@@ -301,3 +301,3 @@ const body = requestInfo;

/** @type {?} */
const url = `${this.baseUri}${pathUrl}/${id}`;
const url = `${this.baseUri}${pathUrl}/${encodeURIComponent(id)}`;
return this.request(url, DELETE);

@@ -316,3 +316,3 @@ }

/** @type {?} */
const url = `${this.baseUri}/extension${pathUrl}/${id}`;
const url = `${this.baseUri}/extension${pathUrl}/${encodeURIComponent(id)}`;
/** @type {?} */

@@ -368,2 +368,3 @@ const body = requestInfo;

* @param {?} ids 待删除的id数组
* TODO: 验证删除的id带特殊字符场景
* @return {?}

@@ -398,2 +399,3 @@ */

* 批量删除(扩展)
* TODO:验证删除数据中主键有特殊字符的场景
* @param {?} ids

@@ -580,3 +582,3 @@ * @param {?} requestInfo

*/
headers => {
(headers) => {
options.headers = HttpHeaderUtil.toJson(headers);

@@ -601,3 +603,3 @@ options.observe = 'response';

*/
error => this.proxyExtend.onError(error, false, false))));
(error) => this.proxyExtend.onError(error, false, false))));
})));

@@ -676,2 +678,2 @@ }

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvYmVmX3Byb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztNQUd2QyxHQUFHLEdBQUcsS0FBSzs7TUFDWCxNQUFNLEdBQUcsUUFBUTs7TUFDakIsR0FBRyxHQUFHLEtBQUs7O01BQ1gsSUFBSSxHQUFHLE1BQU07O01BQ2IsS0FBSyxHQUFHLE9BQU87Ozs7OztBQVFyQixNQUFNLE9BQU8sUUFBUTs7Ozs7SUFPbkIsWUFBbUIsVUFBc0IsRUFBUyxVQUFzQjtRQUFyRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7Ozs7SUFLTSxVQUFVLENBQUMsT0FBZTtRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDOzs7Ozs7SUFL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LGFBQWEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7Ozs7OztJQUlPLGNBQWMsQ0FBQyxPQUFZO1FBQ2pDLE9BQU8sZUFBZSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxlQUFlLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakcsQ0FBQzs7Ozs7OztJQUlPLGtCQUFrQixDQUFDLE1BQVc7UUFDcEMsT0FBTyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyRCxDQUFDOzs7WUF6Y0YsVUFBVTs7OztZQXBCVSxVQUFVO1lBSXRCLFVBQVU7Ozs7Ozs7SUFrQmpCLCtCQUFvQzs7Ozs7O0lBSXBDLDJCQUEwQjs7Ozs7SUFDMUIsK0JBQWlDOztJQUNyQiw4QkFBNkI7O0lBQUUsOEJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAsIGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEh0dHBQYXJhbXMsIEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBlbmNvZGVVcmwgfSBmcm9tICdAZmFycmlzL2RldmtpdCc7XG5pbXBvcnQgeyBJUHJveHlFeHRlbmQsIFJlcXVlc3RJbmZvLCBSZXNwb25zZUluZm8sIENoYW5nZURldGFpbCwgUmV0cmlldmVQYXJhbSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQmVmRGF0YVBhdGhVdGlsIH0gZnJvbSAnLi9iZWZfZGF0YV9wYXRoX3V0aWwnO1xuaW1wb3J0IHsgVXJpU2VydmljZSB9IGZyb20gJy4vdXJpX3NlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cEhlYWRlclV0aWwsIEh0dHBQYXJhbVV0aWwsIFJlcXVlc3RJbmZvVXRpbCwgUmVzcG9uc2VJbmZvVXRpbCB9IGZyb20gJy4vdXRpbHMvaW5kZXgnO1xuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuL2h0dHBfc2VydmljZSc7XG5cblxuY29uc3QgR0VUID0gJ0dFVCc7XG5jb25zdCBERUxFVEUgPSAnREVMRVRFJztcbmNvbnN0IFBVVCA9ICdQVVQnO1xuY29uc3QgUE9TVCA9ICdQT1NUJztcbmNvbnN0IFBBVENIID0gJ1BBVENIJztcblxuLyoqXG4gKiBCZWbku6PnkIbnsbtcbiAqIOS7o+eQhuexu+eahOiBjOi0o+aYr+WkhOeQhmh0dHDor7fmsYLvvIzlj5HpgIHkuIDkuKpodHRw6K+35rGC5omA6ZyA55qE6LWE5rqQ5pyJ77yadXJp77yMbWV0aG9k77yMaGVhZGVy44CBYm9keeOAgXF1ZXJ5IHBhcmFtZXRlclxuICogdXJpIOeUsXVyaVNlcnZpY2VcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEJlZlByb3h5IHtcbiAgcHJvdGVjdGVkIHByb3h5RXh0ZW5kOiBJUHJveHlFeHRlbmQ7XG4gIC8qKlxuICAgKiByZXN0ZnVs5Z+66Lev5b6EXG4gICAqL1xuICBwcm90ZWN0ZWQgYmFzZVVyaTogc3RyaW5nO1xuICBwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZTtcbiAgY29uc3RydWN0b3IocHVibGljIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIHB1YmxpYyB1cmlTZXJ2aWNlOiBVcmlTZXJ2aWNlKSB7XG4gICAgdGhpcy5odHRwU2VydmljZSA9IG5ldyBIdHRwU2VydmljZSh0aGlzLmh0dHBDbGllbnQpO1xuICB9XG4gIC8qKlxuICAgKiDorr7nva7ln7rot6/lvoRcbiAgICogQHBhcmFtIGJhc2VVcmkg5Z+66Lev5b6EXG4gICAqL1xuICBwdWJsaWMgc2V0QmFzZVVyaShiYXNlVXJpOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmJhc2VVcmkgPSBiYXNlVXJpO1xuICB9XG4gIC8qKlxuICAgKiDorr7nva7nrZbnlaXmqKHlvI9cbiAgICogQHBhcmFtIHN0cmF0ZWd5IOetlueVpVxuICAgKi9cbiAgcHVibGljIHNldFByb3h5RXh0ZW5kKHByb3h5RXh0ZW5kOiBJUHJveHlFeHRlbmQpIHtcbiAgICB0aGlzLnByb3h5RXh0ZW5kID0gcHJveHlFeHRlbmQ7XG4gIH1cbiAgLyoqXG4gICAqIOafpeivolxuICAgKi9cbiAgcHVibGljIHF1ZXJ5KGVudGl0eUZpbHRlcj86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHVybCA9IHRoaXMuYmFzZVVyaTtcbiAgICBpZiAoZW50aXR5RmlsdGVyKSB7XG4gICAgICBjb25zdCBlbnRpdHlGaWx0ZXJKc29uID0gSlNPTi5zdHJpbmdpZnkoZW50aXR5RmlsdGVyKTtcbiAgICAgIHVybCA9IGAke3VybH0/ZW50aXR5RmlsdGVyPSR7ZW50aXR5RmlsdGVySnNvbn1gO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgR0VUKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmianlsZXmn6Xor6JcbiAgICovXG4gIHB1YmxpYyBleHRlbmRRdWVyeShlbnRpdHlGaWx0ZXI6IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcbiAgICBsZXQgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vcXVlcnlgO1xuICAgIGlmIChlbnRpdHlGaWx0ZXIpIHtcbiAgICAgIGxldCBlbnRpdHlGaWx0ZXJKc29uID0gSlNPTi5zdHJpbmdpZnkoZW50aXR5RmlsdGVyKTtcbiAgICAgIGVudGl0eUZpbHRlckpzb24gPSBlbmNvZGVVcmwoZW50aXR5RmlsdGVySnNvbik7XG4gICAgICB1cmwgPSBgJHt1cmx9P2VudGl0eUZpbHRlcj0ke2VudGl0eUZpbHRlckpzb259YDtcbiAgICB9XG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMsIGZhbHNlKTtcbiAgfVxuICAvKipcbiAgICog5p+l6K+i5pWw5o2u77yI5bim6L+H5ruk5p2h5Lu277yJXG4gICAqIEBwYXJhbSBlbnRpdHlGaWx0ZXIg6L+H5ruk44CB5o6S5bqP44CB5YiG6aG15L+h5oGvXG4gICAqIEBwYXJhbSByZXF1ZXN0SW5mbyByZXF1ZXN0SW5mb1xuICAgKiBAZGVzY3JpcHRpb24g5ZKMZXh0ZW5kUXVlcnnkuIDoh7TvvIzku4XlsIbmn6Xor6Llj4LmlbDmlL7liLBib2R55LitXG4gICAqL1xuICBwdWJsaWMgZmlsdGVyKGVudGl0eUZpbHRlcjogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xuICAgIGxldCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9maWx0ZXJgO1xuICAgIGxldCBib2R5OiBhbnkgPSB7IHJlcXVlc3RJbmZvIH07XG4gICAgaWYgKGVudGl0eUZpbHRlcikge1xuICAgICAgYm9keSA9IHsgZW50aXR5RmlsdGVyLCByZXF1ZXN0SW5mbyB9O1xuICAgIH1cbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUE9TVCwgbnVsbCwgb3B0aW9ucywgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIOajgOe0ouaVsOaNrlxuICAgKiBAcGFyYW0gaWQg5Y2V5o2u5YaF56CBXG4gICAqIEByZXR1cm4g5pWw5o2u5a+56LGhXG4gICAqL1xuICBwdWJsaWMgcmV0cmlldmUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS8ke2lkfWA7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIEdFVCk7XG4gIH1cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIOaWueazleW3sue7j+W6n+W8g++8jOivt+WLv+S9v+eUqFxuICAgKi9cbiAgcHVibGljIHNlcnZpY2VSZXRyaWV2ZShpZDogc3RyaW5nLCByZXRyaWV2ZVBhcmFtOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL3JldHJpZXZlLyR7aWR9YDtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgYm9keTogeyByZXRyaWV2ZVBhcmFtLCByZXF1ZXN0SW5mbyB9XG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcbiAgfVxuICAvKipcbiAgICog5YiG6aG15p+l6K+i5LuO6KGoL+S7juS7juihqOaVsOaNrlxuICAgKiBAcGFyYW0gcGFyYW1zIOWPguaVsFxuICAgKi9cbiAgcHVibGljIHF1ZXJ5Q2hpbGQocGFyYW1zOiBhbnkpIHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvcXVlcnljaGlsZGA7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHsgYm9keTogcGFyYW1zIH07XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICog5qOA57Si5pWw5o2u77yI5omp5bGV77yJXG4gICAqL1xuICBwdWJsaWMgZXh0ZW5kUmV0cmlldmUoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvLCByZXRyaWV2ZVBhcmFtPzogUmV0cmlldmVQYXJhbSk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vcmV0cmlldmUvJHtpZH1gO1xuICAgIGxldCBib2R5OiBhbnkgPSByZXF1ZXN0SW5mbztcbiAgICBpZiAocmV0cmlldmVQYXJhbSkge1xuICAgICAgYm9keSA9IHsgcmV0cmlldmVQYXJhbSwgcmVxdWVzdEluZm8gfTtcbiAgICB9XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICog5qOA57Si5pWw5o2uXG4gICAqL1xuICBwdWJsaWMgZWRpdChpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9lZGl0LyR7aWR9YDtcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICog5Yib5bu65LiA5p2h5pWw5o2uXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlKGRlZmF1bHRWYWx1ZT86IGFueSwgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgYm9keSA9IHtcbiAgICAgIGRlZmF1bHRWYWx1ZSxcbiAgICAgIHJlcXVlc3RJbmZvOiByZXF1ZXN0SW5mbyxcbiAgICB9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBQT1NULCBudWxsLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDku47ooajmlrDlop5cbiAgICogQHBhdGgg5paw5aKe6Lev5b6E77yI5LuO6KGo5b2i5aaC77yaLzEvZWR1c++8jOS7juS7juihqOW9ouWmgu+8mi8xL2VkdXMvMTEvZ3JhZGVz77yJXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlQnlQYXRoKGZwYXRoOiBzdHJpbmcsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHBhdGhVcmwgPSBCZWZEYXRhUGF0aFV0aWwuY29udmVydFBhdGhUb1VybChmcGF0aCk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfSR7cGF0aFVybH1gO1xuXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQT1NULCBudWxsLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmj5DkuqTlj5jmm7RcbiAgICovXG4gIHVwZGF0ZShjaGFuZ2VEZXRhaWw6IENoYW5nZURldGFpbCwgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgYm9keSA9IHtcbiAgICAgIGNoYW5nZURldGFpbCxcbiAgICAgIHJlcXVlc3RJbmZvOiByZXF1ZXN0SW5mbyxcbiAgICB9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xuXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh0aGlzLmJhc2VVcmksIFBBVENILCBudWxsLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmiafooYzkv53lrZhcbiAgICovXG4gIHB1YmxpYyBzYXZlKHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgUFVULCBudWxsLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliKDpmaRcbiAgICovXG4gIHB1YmxpYyBkZWxldGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS8ke2lkfWA7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIERFTEVURSk7XG4gIH1cblxuICAvKipcbiAgICog5Yig6Zmk5bm25L+d5a2YXG4gICAqL1xuICBwdWJsaWMgZGVsZXRlQW5kU2F2ZShpZDogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9kZWxldGUvJHtpZH1gO1xuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliKDpmaTvvIjmianlsZXvvIlcbiAgICovXG4gIHB1YmxpYyBleHRlbmREZWxldGUoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9kZWxldGUvJHtpZH1gO1xuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliKDpmaTlkI7ku6NcbiAgICogQHBhcmFtIGZwYXRoIOeItui3r+W+hO+8iOS7juihqOW9ouWmgu+8mi8xL2VkdXPvvIzku47ku47ooajlvaLlpoLvvJovMS9lZHVzLzExL2dyYWRlc++8iVxuICAgKi9cbiAgcHVibGljIGRlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHBhdGhVcmwgPSBCZWZEYXRhUGF0aFV0aWwuY29udmVydFBhdGhUb1VybChmcGF0aCk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfSR7cGF0aFVybH0vJHtpZH1gO1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBERUxFVEUpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWIoOmZpOWQjuS7o++8iOaJqeWxle+8iVxuICAgKiBAcGFyYW0gZnBhdGgg54i26Lev5b6E77yI5LuO6KGo5b2i5aaC77yaLzEvZWR1c++8jOS7juS7juihqOW9ouWmgu+8mi8xL2VkdXMvMTEvZ3JhZGVz77yJXG4gICAqL1xuICBwdWJsaWMgZXh0ZW5kRGVsZXRCeVBhdGgoZnBhdGg6IHN0cmluZywgaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcbiAgICBjb25zdCBwYXRoVXJsID0gQmVmRGF0YVBhdGhVdGlsLmNvbnZlcnRQYXRoVG9VcmwoZnBhdGgpO1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uJHtwYXRoVXJsfS8ke2lkfWA7XG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xuICB9XG4gIC8qKlxuICAgKiDmibnph4/liKDpmaTlkI7ku6NcbiAgICogQHBhcmFtIGZQYXRoICdleHRlbnNpb24ve3Jvb3RJZH0vY2MvYmF0Y2gnXG4gICAqIEBwYXJhbSAgaWRzIOWtkOmbhmlkXG4gICAqIEBwYXJhbSAgcmVxdWVzdEluZm8g6K+35rGC5L+h5oGvXG4gICAqL1xuICBwdWJsaWMgYmF0Y2hEZWxldGVCeVBhdGgoZlBhdGg6IHN0cmluZywgaWRzOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZQYXRoKTtcbiAgICBjb25zdCBwYXRoQXJyYXkgPSBwYXRoVXJsLnNwbGl0KCcvJyk7XG4gICAgaWYgKHBhdGhBcnJheS5sZW5ndGggPCAzKSB7XG4gICAgICB0aHJvdyBFcnJvcihg5qC55o2ucGF0aOWIoOmZpOWunuS9k+aVsOaNruWHuumUmeS6huOAguS8oOWFpeeahHBhdGhbJHtmUGF0aH1d5qC85byP5LiN5a+5YCk7XG4gICAgfVxuICAgIC8qICAgY29uc3Qgcm9vdElkID0gcGF0aEFycmF5WzFdO1xuXG4gICAgY29uc3QgbmFtZUFycmF5ID0gW107XG4gICAgcGF0aEFycmF5LmZvckVhY2goKG5hbWUsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoaW5kZXggPiAxICkge1xuICAgICAgICBpZiAobmFtZS5pbmRleE9mKCdzJykgIT09IC0xKSB7XG4gICAgICAgICAgbmFtZUFycmF5LnB1c2gobmFtZS5zdWJzdHIoMCwgbmFtZS5sZW5ndGggLSAxKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmFtZUFycmF5LnB1c2gobmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBjaGlsZE5hbWUgPSBuYW1lQXJyYXkuam9pbignLycpOyovXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24ke3BhdGhVcmx9L2JhdGNoYDtcbiAgICBjb25zdCBpZHNBcnJheSA9IGlkcy5zcGxpdCgnLCcpO1xuICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICBpZHM6IGlkc0FycmF5LFxuICAgICAgcmVxdWVzdEluZm86IHJlcXVlc3RJbmZvXG4gICAgfTtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcbiAgfVxuICAvKipcbiAgICog5om56YeP5Yig6ZmkXG4gICAqIEBwYXJhbSBpZHMg5b6F5Yig6Zmk55qEaWTmlbDnu4RcbiAgICovXG4gIHB1YmxpYyBiYXRjaERlbGV0ZShpZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBpZHM6IGlkcy5qb2luKCcsJylcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBERUxFVEUsIHBhcmFtcyk7XG4gIH1cbiAgLyoqXG4gICAqIOagueaNrmlkc+aJuemHj+WIoOmZpOWunuS9k1xuICAgKiBAcGFyYW0gaWRzIGlkc1xuICAgKiBAcGFyYW0gaWZTYXZlIOaYr+WQpuS/neWtmFxuICAgKi9cbiAgcHVibGljIGV4dGVuZEJhdGNoRGVsZXRpb24oaWRzOiBzdHJpbmdbXSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9iYXRjaGRlbGV0aW9uYDtcbiAgICBjb25zdCBib2R5ID0ge1xuICAgICAgaWRzOiBpZHMsXG4gICAgICByZXF1ZXN0SW5mbzogcmVxdWVzdEluZm9cbiAgICB9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIOaJuemHj+WIoOmZpO+8iOaJqeWxle+8iVxuICAgKi9cbiAgcHVibGljIGV4dGVuZEJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vYmF0Y2hkZWxldGVgO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGlkczogaWRzLmpvaW4oJywnKVxuICAgIH07XG5cbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgcGFyYW1zLCBvcHRpb25zKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIOWPlua2iFxuICAgKi9cbiAgcHVibGljIGNhbmNlbChjb250ZXh0PzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvY2FuY2VsYDtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUE9TVCwgbnVsbCwgbnVsbCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY29udGV4dCk7XG4gIH1cblxuICAvKipcbiAgICog5om56YeP5paw5aKe5LuO6KGoL+S7juS7juihqOaVsOaNrlxuICAgKiBAcGFyYW0gcGF0aCDlrp7kvZPnu5Hlrprot6/lvoTvvIxsaWtlIDEvY2hpbGRzIG9yIDEvY2hpbGRzLzExL2NoaWxkY2hpbGRzXG4gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWVzIOm7mOiupOWunuS9k+aVsOaNruaVsOe7hFxuICAgKi9cbiAgcHVibGljIGJhdGNoQXBwZW5kQnlQYXRoKHBhdGg6IHN0cmluZywgZGVmYXVsdFZhbHVlczogQXJyYXk8YW55PiwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBwYXRoVXJsID0gQmVmRGF0YVBhdGhVdGlsLmNvbnZlcnRQYXRoVG9VcmwocGF0aCk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfSR7cGF0aFVybH0vYmF0Y2hgO1xuICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICByZXF1ZXN0SW5mbyxcbiAgICAgIHJldHJpZXZlRGVmYXVsdFBhcmFtOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZXNcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQT1NULCBudWxsLCBvcHRpb25zKTtcbiAgfVxuICAvKipcbiAgICog5om56YeP5paw5aKe5Li76KGo5pWw5o2uXG4gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWVzIOm7mOiupOWunuS9k+aVsOaNruaVsOe7hFxuICAgKi9cbiAgcHVibGljIGJhdGNoQXBwZW5kKGRlZmF1bHRWYWx1ZXM6IEFycmF5PGFueT4sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9iYXRjaGA7XG4gICAgY29uc3QgYm9keSA9IHtcbiAgICAgIHJlcXVlc3RJbmZvLFxuICAgICAgcmV0cmlldmVEZWZhdWx0UGFyYW06IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlc1xuICAgICAgfVxuICAgIH07XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG9wdGlvbnMpO1xuICB9XG4gIC8qKlxuICAgKiDmo4Dmn6XlvZPliY3kuJrliqHkuIrkuIvmloflhoXmmK/lkKblrZjlnKjmnKrkv53lrZjnmoTlj5jmm7RcbiAgICogQHBhcmFtIHJlcXVlc3RJbmZvIHJlcXVlc3RJbmZvXG4gICAqIEByZXR1cm5zIFxuICAgKi9cbiAgcHVibGljIGhhc0NoYW5nZXMocmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2hhc2NoYW5nZXNgO1xuICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICAuLi5yZXF1ZXN0SW5mb1xuICAgIH07XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XG4gIH1cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbiAgcHVibGljIHJlcXVlc3QoXG4gICAgdXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBwYXJhbXM/OiBhbnksIG9wdGlvbnM/OiBhbnksXG4gICAgc2VsZkhhbmRFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUVycm9yPzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4sIHJ1bnRpbWVDb250ZXh0PzogYW55XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICAvLyDmmK/lkKboh6rooYzlpITnkIbplJnor69cbiAgICBpZiAodHlwZW9mIChzZWxmSGFuZEVycm9yKSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIChzZWxmSGFuZEVycm9yKSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICBzZWxmSGFuZEVycm9yID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8g5piv5ZCm5b+955Wl5byC5bi457un57ut5omn6KGMXG4gICAgaWYgKHR5cGVvZiAoaWdub3JlRXJyb3IpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKGlnbm9yZUVycm9yKSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICBpZ25vcmVFcnJvciA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8vIHBhcmFtc1xuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIC8vIGNvbnN0IGh0dHBQYXJhbXMgPSB0aGlzLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XG4gICAgICBvcHRpb25zLnBhcmFtcyA9IHBhcmFtcztcbiAgICB9XG5cbiAgICAvLyDlpITnkIZoZWFkZXJzXG4gICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwuY29udmVydFRvSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xuICAgIC8vIDHjgIHliKTmlq3mmK/lkKbluKZyZXF1ZXN0SW5mb++8iOS4jeWMuuWIhummluWtl+avjeWkp+Wwj+WGme+8iTtcbiAgICAvLyAy44CB5aaC5p6c5Lyg6YCS55qE5pivUmVxdWVzdEluZm/vvIzliJnovazmjaLkuLpyZXF1ZXN0SW5mb++8m1xuICAgIGNvbnN0IGhhc1JlcXVlc3RJbmZvID0gdGhpcy5oYXNSZXF1ZXN0SW5mbyhvcHRpb25zKTtcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmJvZHkgJiYgb3B0aW9ucy5ib2R5Lmhhc093blByb3BlcnR5KCdSZXF1ZXN0SW5mbycpKSB7XG4gICAgICBvcHRpb25zLmJvZHkucmVxdWVzdEluZm8gPSBvcHRpb25zLmJvZHkuUmVxdWVzdEluZm87XG4gICAgICBkZWxldGUgb3B0aW9ucy5ib2R5LlJlcXVlc3RJbmZvO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRIZWFkZXJzKG9wdGlvbnMuaGVhZGVycywgcnVudGltZUNvbnRleHQpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoaGVhZGVycyA9PiB7XG4gICAgICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLnRvSnNvbihoZWFkZXJzKTtcbiAgICAgICAgb3B0aW9ucy5vYnNlcnZlID0gJ3Jlc3BvbnNlJztcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UucmVxdWVzdChtZXRob2QsIHVybCwgb3B0aW9ucyk7XG4gICAgICB9KSxcbiAgICAgIHRhcCgocmVzcG9uc2U6IGFueSkgPT4gdGhpcy5wcm94eUV4dGVuZC5wYXJzZUhlYWRlcnMocmVzcG9uc2UpKSxcbiAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHJlc3VsdC5ib2R5KSxcbiAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGhhc1JlcXVlc3RJbmZvKSB7XG4gICAgICAgICAgdGhpcy5wcm94eUV4dGVuZC5vblJlc3BvbnNlKHJlc3VsdCwgaWdub3JlQ2hhbmdlcywgb3B0aW9ucyk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgIC8vIGJvZHnph4zmsqHmnIlyZXF1ZXN0SW5mb+eahOaDheWGte+8jOaooeaLn+iAgeeahOWkhOeQhuaWueW8j++8iOS4jea4heeQhuWPmOabtOOAgeWwhnJldHVyblZhbHVl6Kej5p6Q5Ye65p2l77yJXG4gICAgICAgICAgcmV0dXJuIHRoaXMudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3h5RXh0ZW5kLm9uRXJyb3IoZXJyb3IsIHNlbGZIYW5kRXJyb3IsIGlnbm9yZUVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDosIPnlKhodHRwY2xpZW505Y+W5pWwXG4gICAqIEBwYXJhbSB1cmwgdXJsXG4gICAqIEBwYXJhbSBtZXRob2QgbWV0aG9kc1xuICAgKiBAcGFyYW0gb3B0aW9ucyBvcHRpb25zXG4gICAqL1xuICBwcm90ZWN0ZWQgaW52b2tlKHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgb3B0aW9uczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAob3B0aW9ucy5wYXJhbXMpIHtcbiAgICAgIHVybCA9IHRoaXMucHJveHlFeHRlbmQuZXh0ZW5kVXJsKHVybCwgb3B0aW9ucy5wYXJhbXMpO1xuICAgICAgb3B0aW9ucy5wYXJhbXMgPSBudWxsO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5ib2R5KSB7XG4gICAgICBvcHRpb25zLmJvZHkgPSB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZEJvZHkob3B0aW9ucy5ib2R5KTtcbiAgICB9XG4gICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwuY29udmVydFRvSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xuICAgIGNvbnN0IGhlYWRlcnMkID0gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRIZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XG4gICAgcmV0dXJuIGhlYWRlcnMkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoaGVhZGVycyA9PiB7XG4gICAgICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLnRvSnNvbihoZWFkZXJzKTtcbiAgICAgICAgb3B0aW9ucy5vYnNlcnZlID0gJ3Jlc3BvbnNlJztcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UucmVxdWVzdChtZXRob2QsIHVybCwgb3B0aW9ucylcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRhcCgocmVzcG9uc2U6IGFueSkgPT4gdGhpcy5wcm94eUV4dGVuZC5wYXJzZUhlYWRlcnMocmVzcG9uc2UpKSxcbiAgICAgICAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHJlc3VsdC5ib2R5KSxcbiAgICAgICAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHRoaXMucHJveHlFeHRlbmQub25SZXNwb25zZShyZXN1bHQsIGZhbHNlLCBvcHRpb25zKSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHRoaXMucHJveHlFeHRlbmQub25FcnJvcihlcnJvciwgZmFsc2UsIGZhbHNlKSlcbiAgICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIOWQkUh0dHBPcHRpb25z5a+56LGh5Lit5re75YqgYm9keVxuICAgKiBAcGFyYW0gb3B0aW9ucyDljp/mnaXnmoRvcHRpb25zXG4gICAqIEBwYXJhbSBib2R5IGJvZHnlhoXlrrlcbiAgICovXG4gIHByaXZhdGUgYWRkQm9keVRvT3B0aW9ucyhvcHRpb25zOiBhbnksIGJvZHk6IGFueSkge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHsgYm9keSB9KTtcbiAgICByZXR1cm4gbWVyZ2VkT3B0aW9ucztcbiAgfVxuICAvKipcbiAgICog5p6E6YCgSHR0cFBhcmFtc+WvueixoVxuICAgKiBAcGFyYW0gcGFyYW1zIOivt+axguWPguaVsFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFBhcmFtcyhwYXJhbXM6IG9iamVjdCk6IEh0dHBQYXJhbXMge1xuICAgIHJldHVybiBIdHRwUGFyYW1VdGlsLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XG4gIH1cbiAgLyoqXG4gICAqIOaYr+WQpuW4puaciVJlcXVlc3RJbmZvXG4gICAqL1xuICBwcml2YXRlIGhhc1JlcXVlc3RJbmZvKG9wdGlvbnM6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuaGFzUmVxdWVzdEluZm8ob3B0aW9ucykgfHwgUmVxdWVzdEluZm9VdGlsLmhhc1JlcXVlc3RJbmZvV2l0aFIob3B0aW9ucyk7XG4gIH1cbiAgLyoqXG4gICAqIOWkhOeQhui/lOWbnuWAvO+8jOWFvOWuueiAgeeJiOacrFxuICAgKi9cbiAgcHJpdmF0ZSB1bldyYXBSZXNwb25zZUluZm8ocmVzdWx0OiBhbnkpIHtcbiAgICByZXR1cm4gUmVzcG9uc2VJbmZvVXRpbC51bldyYXBSZXNwb25zZUluZm8ocmVzdWx0KTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvYmVmX3Byb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztNQUd2QyxHQUFHLEdBQUcsS0FBSzs7TUFDWCxNQUFNLEdBQUcsUUFBUTs7TUFDakIsR0FBRyxHQUFHLEtBQUs7O01BQ1gsSUFBSSxHQUFHLE1BQU07O01BQ2IsS0FBSyxHQUFHLE9BQU87Ozs7OztBQVFyQixNQUFNLE9BQU8sUUFBUTs7Ozs7SUFPbkIsWUFBbUIsVUFBc0IsRUFBUyxVQUFzQjtRQUFyRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7Ozs7SUFLTSxVQUFVLENBQUMsT0FBZTtRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDOzs7Ozs7SUFL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T0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7O2NBQ2xCLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3RELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7Ozs7Ozs7SUFLTyxXQUFXLENBQUMsTUFBYztRQUNoQyxPQUFPLGFBQWEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7Ozs7OztJQUlPLGNBQWMsQ0FBQyxPQUFZO1FBQ2pDLE9BQU8sZUFBZSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxlQUFlLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakcsQ0FBQzs7Ozs7OztJQUlPLGtCQUFrQixDQUFDLE1BQVc7UUFDcEMsT0FBTyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyRCxDQUFDOzs7WUEzY0YsVUFBVTs7OztZQXBCVSxVQUFVO1lBSXRCLFVBQVU7Ozs7Ozs7SUFrQmpCLCtCQUFvQzs7Ozs7O0lBSXBDLDJCQUEwQjs7Ozs7SUFDMUIsK0JBQWlDOztJQUNyQiw4QkFBNkI7O0lBQUUsOEJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAsIGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEh0dHBQYXJhbXMsIEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBlbmNvZGVVcmwgfSBmcm9tICdAZmFycmlzL2RldmtpdCc7XG5pbXBvcnQgeyBJUHJveHlFeHRlbmQsIFJlcXVlc3RJbmZvLCBSZXNwb25zZUluZm8sIENoYW5nZURldGFpbCwgUmV0cmlldmVQYXJhbSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQmVmRGF0YVBhdGhVdGlsIH0gZnJvbSAnLi9iZWZfZGF0YV9wYXRoX3V0aWwnO1xuaW1wb3J0IHsgVXJpU2VydmljZSB9IGZyb20gJy4vdXJpX3NlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cEhlYWRlclV0aWwsIEh0dHBQYXJhbVV0aWwsIFJlcXVlc3RJbmZvVXRpbCwgUmVzcG9uc2VJbmZvVXRpbCB9IGZyb20gJy4vdXRpbHMvaW5kZXgnO1xuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuL2h0dHBfc2VydmljZSc7XG5cblxuY29uc3QgR0VUID0gJ0dFVCc7XG5jb25zdCBERUxFVEUgPSAnREVMRVRFJztcbmNvbnN0IFBVVCA9ICdQVVQnO1xuY29uc3QgUE9TVCA9ICdQT1NUJztcbmNvbnN0IFBBVENIID0gJ1BBVENIJztcblxuLyoqXG4gKiBCZWbku6PnkIbnsbtcbiAqIOS7o+eQhuexu+eahOiBjOi0o+aYr+WkhOeQhmh0dHDor7fmsYLvvIzlj5HpgIHkuIDkuKpodHRw6K+35rGC5omA6ZyA55qE6LWE5rqQ5pyJ77yadXJp77yMbWV0aG9k77yMaGVhZGVy44CBYm9keeOAgXF1ZXJ5IHBhcmFtZXRlclxuICogdXJpIOeUsXVyaVNlcnZpY2VcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEJlZlByb3h5IHtcbiAgcHJvdGVjdGVkIHByb3h5RXh0ZW5kOiBJUHJveHlFeHRlbmQ7XG4gIC8qKlxuICAgKiByZXN0ZnVs5Z+66Lev5b6EXG4gICAqL1xuICBwcm90ZWN0ZWQgYmFzZVVyaTogc3RyaW5nO1xuICBwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZTtcbiAgY29uc3RydWN0b3IocHVibGljIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIHB1YmxpYyB1cmlTZXJ2aWNlOiBVcmlTZXJ2aWNlKSB7XG4gICAgdGhpcy5odHRwU2VydmljZSA9IG5ldyBIdHRwU2VydmljZSh0aGlzLmh0dHBDbGllbnQpO1xuICB9XG4gIC8qKlxuICAgKiDorr7nva7ln7rot6/lvoRcbiAgICogQHBhcmFtIGJhc2VVcmkg5Z+66Lev5b6EXG4gICAqL1xuICBwdWJsaWMgc2V0QmFzZVVyaShiYXNlVXJpOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmJhc2VVcmkgPSBiYXNlVXJpO1xuICB9XG4gIC8qKlxuICAgKiDorr7nva7nrZbnlaXmqKHlvI9cbiAgICogQHBhcmFtIHN0cmF0ZWd5IOetlueVpVxuICAgKi9cbiAgcHVibGljIHNldFByb3h5RXh0ZW5kKHByb3h5RXh0ZW5kOiBJUHJveHlFeHRlbmQpIHtcbiAgICB0aGlzLnByb3h5RXh0ZW5kID0gcHJveHlFeHRlbmQ7XG4gIH1cbiAgLyoqXG4gICAqIOafpeivolxuICAgKi9cbiAgcHVibGljIHF1ZXJ5KGVudGl0eUZpbHRlcj86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHVybCA9IHRoaXMuYmFzZVVyaTtcbiAgICBpZiAoZW50aXR5RmlsdGVyKSB7XG4gICAgICBjb25zdCBlbnRpdHlGaWx0ZXJKc29uID0gSlNPTi5zdHJpbmdpZnkoZW50aXR5RmlsdGVyKTtcbiAgICAgIHVybCA9IGAke3VybH0/ZW50aXR5RmlsdGVyPSR7ZW50aXR5RmlsdGVySnNvbn1gO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgR0VUKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmianlsZXmn6Xor6JcbiAgICovXG4gIHB1YmxpYyBleHRlbmRRdWVyeShlbnRpdHlGaWx0ZXI6IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcbiAgICBsZXQgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vcXVlcnlgO1xuICAgIGlmIChlbnRpdHlGaWx0ZXIpIHtcbiAgICAgIGxldCBlbnRpdHlGaWx0ZXJKc29uID0gSlNPTi5zdHJpbmdpZnkoZW50aXR5RmlsdGVyKTtcbiAgICAgIGVudGl0eUZpbHRlckpzb24gPSBlbmNvZGVVcmwoZW50aXR5RmlsdGVySnNvbik7XG4gICAgICB1cmwgPSBgJHt1cmx9P2VudGl0eUZpbHRlcj0ke2VudGl0eUZpbHRlckpzb259YDtcbiAgICB9XG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMsIGZhbHNlKTtcbiAgfVxuICAvKipcbiAgICog5p+l6K+i5pWw5o2u77yI5bim6L+H5ruk5p2h5Lu277yJXG4gICAqIEBwYXJhbSBlbnRpdHlGaWx0ZXIg6L+H5ruk44CB5o6S5bqP44CB5YiG6aG15L+h5oGvXG4gICAqIEBwYXJhbSByZXF1ZXN0SW5mbyByZXF1ZXN0SW5mb1xuICAgKiBAZGVzY3JpcHRpb24g5ZKMZXh0ZW5kUXVlcnnkuIDoh7TvvIzku4XlsIbmn6Xor6Llj4LmlbDmlL7liLBib2R55LitXG4gICAqL1xuICBwdWJsaWMgZmlsdGVyKGVudGl0eUZpbHRlcjogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xuICAgIGxldCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9maWx0ZXJgO1xuICAgIGxldCBib2R5OiBhbnkgPSB7IHJlcXVlc3RJbmZvIH07XG4gICAgaWYgKGVudGl0eUZpbHRlcikge1xuICAgICAgYm9keSA9IHsgZW50aXR5RmlsdGVyLCByZXF1ZXN0SW5mbyB9O1xuICAgIH1cbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUE9TVCwgbnVsbCwgb3B0aW9ucywgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIOajgOe0ouaVsOaNrlxuICAgKiBAcGFyYW0gaWQg5Y2V5o2u5YaF56CBXG4gICAqIEByZXR1cm4g5pWw5o2u5a+56LGhXG4gICAqL1xuICBwdWJsaWMgcmV0cmlldmUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS8ke2VuY29kZVVSSUNvbXBvbmVudChpZCl9YDtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgR0VUKTtcbiAgfVxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQg5pa55rOV5bey57uP5bqf5byD77yM6K+35Yu/5L2/55SoXG4gICAqL1xuICBwdWJsaWMgc2VydmljZVJldHJpZXZlKGlkOiBzdHJpbmcsIHJldHJpZXZlUGFyYW06IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvcmV0cmlldmUvJHtlbmNvZGVVUklDb21wb25lbnQoaWQpfWA7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIGJvZHk6IHsgcmV0cmlldmVQYXJhbSwgcmVxdWVzdEluZm8gfVxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XG4gIH1cbiAgLyoqXG4gICAqIOWIhumhteafpeivouS7juihqC/ku47ku47ooajmlbDmja5cbiAgICogQHBhcmFtIHBhcmFtcyDlj4LmlbBcbiAgICovXG4gIHB1YmxpYyBxdWVyeUNoaWxkKHBhcmFtczogYW55KSB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL3F1ZXJ5Y2hpbGRgO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7IGJvZHk6IHBhcmFtcyB9O1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIOajgOe0ouaVsOaNru+8iOaJqeWxle+8iVxuICAgKi9cbiAgcHVibGljIGV4dGVuZFJldHJpZXZlKGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbywgcmV0cmlldmVQYXJhbT86IFJldHJpZXZlUGFyYW0pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uL3JldHJpZXZlLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGlkKX1gO1xuICAgIGxldCBib2R5OiBhbnkgPSByZXF1ZXN0SW5mbztcbiAgICBpZiAocmV0cmlldmVQYXJhbSkge1xuICAgICAgYm9keSA9IHsgcmV0cmlldmVQYXJhbSwgcmVxdWVzdEluZm8gfTtcbiAgICB9XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICog5qOA57Si5pWw5o2uXG4gICAqL1xuICBwdWJsaWMgZWRpdChpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9lZGl0LyR7ZW5jb2RlVVJJQ29tcG9uZW50KGlkKX1gO1xuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliJvlu7rkuIDmnaHmlbDmja5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGUoZGVmYXVsdFZhbHVlPzogYW55LCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBib2R5ID0ge1xuICAgICAgZGVmYXVsdFZhbHVlLFxuICAgICAgcmVxdWVzdEluZm86IHJlcXVlc3RJbmZvLFxuICAgIH07XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh0aGlzLmJhc2VVcmksIFBPU1QsIG51bGwsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIOS7juihqOaWsOWinlxuICAgKiBAcGF0aCDmlrDlop7ot6/lvoTvvIjku47ooajlvaLlpoLvvJovMS9lZHVz77yM5LuO5LuO6KGo5b2i5aaC77yaLzEvZWR1cy8xMS9ncmFkZXPvvIlcbiAgICovXG4gIHB1YmxpYyBjcmVhdGVCeVBhdGgoZnBhdGg6IHN0cmluZywgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZwYXRoKTtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9JHtwYXRoVXJsfWA7XG5cbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIOaPkOS6pOWPmOabtFxuICAgKi9cbiAgdXBkYXRlKGNoYW5nZURldGFpbDogQ2hhbmdlRGV0YWlsLCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBib2R5ID0ge1xuICAgICAgY2hhbmdlRGV0YWlsLFxuICAgICAgcmVxdWVzdEluZm86IHJlcXVlc3RJbmZvLFxuICAgIH07XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XG5cbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgUEFUQ0gsIG51bGwsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIOaJp+ihjOS/neWtmFxuICAgKi9cbiAgcHVibGljIHNhdmUocmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWIoOmZpFxuICAgKi9cbiAgcHVibGljIGRlbGV0ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9LyR7ZW5jb2RlVVJJQ29tcG9uZW50KGlkKX1gO1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBERUxFVEUpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWIoOmZpOW5tuS/neWtmFxuICAgKi9cbiAgcHVibGljIGRlbGV0ZUFuZFNhdmUoaWQ6IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvZGVsZXRlLyR7ZW5jb2RlVVJJQ29tcG9uZW50KGlkKX1gO1xuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliKDpmaTvvIjmianlsZXvvIlcbiAgICovXG4gIHB1YmxpYyBleHRlbmREZWxldGUoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9kZWxldGUvJHtlbmNvZGVVUklDb21wb25lbnQoaWQpfWA7XG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWIoOmZpOWQjuS7o1xuICAgKiBAcGFyYW0gZnBhdGgg54i26Lev5b6E77yI5LuO6KGo5b2i5aaC77yaLzEvZWR1c++8jOS7juS7juihqOW9ouWmgu+8mi8xL2VkdXMvMTEvZ3JhZGVz77yJXG4gICAqL1xuICBwdWJsaWMgZGVsZXRCeVBhdGgoZnBhdGg6IHN0cmluZywgaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZwYXRoKTtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9JHtwYXRoVXJsfS8ke2VuY29kZVVSSUNvbXBvbmVudChpZCl9YDtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgREVMRVRFKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDliKDpmaTlkI7ku6PvvIjmianlsZXvvIlcbiAgICogQHBhcmFtIGZwYXRoIOeItui3r+W+hO+8iOS7juihqOW9ouWmgu+8mi8xL2VkdXPvvIzku47ku47ooajlvaLlpoLvvJovMS9lZHVzLzExL2dyYWRlc++8iVxuICAgKi9cbiAgcHVibGljIGV4dGVuZERlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZwYXRoKTtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbiR7cGF0aFVybH0vJHtlbmNvZGVVUklDb21wb25lbnQoaWQpfWA7XG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xuICB9XG4gIC8qKlxuICAgKiDmibnph4/liKDpmaTlkI7ku6NcbiAgICogQHBhcmFtIGZQYXRoICdleHRlbnNpb24ve3Jvb3RJZH0vY2MvYmF0Y2gnXG4gICAqIEBwYXJhbSAgaWRzIOWtkOmbhmlkXG4gICAqIEBwYXJhbSAgcmVxdWVzdEluZm8g6K+35rGC5L+h5oGvXG4gICAqL1xuICBwdWJsaWMgYmF0Y2hEZWxldGVCeVBhdGgoZlBhdGg6IHN0cmluZywgaWRzOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKGZQYXRoKTtcbiAgICBjb25zdCBwYXRoQXJyYXkgPSBwYXRoVXJsLnNwbGl0KCcvJyk7XG4gICAgaWYgKHBhdGhBcnJheS5sZW5ndGggPCAzKSB7XG4gICAgICB0aHJvdyBFcnJvcihg5qC55o2ucGF0aOWIoOmZpOWunuS9k+aVsOaNruWHuumUmeS6huOAguS8oOWFpeeahHBhdGhbJHtmUGF0aH1d5qC85byP5LiN5a+5YCk7XG4gICAgfVxuICAgIC8qICAgY29uc3Qgcm9vdElkID0gcGF0aEFycmF5WzFdO1xuXG4gICAgY29uc3QgbmFtZUFycmF5ID0gW107XG4gICAgcGF0aEFycmF5LmZvckVhY2goKG5hbWUsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoaW5kZXggPiAxICkge1xuICAgICAgICBpZiAobmFtZS5pbmRleE9mKCdzJykgIT09IC0xKSB7XG4gICAgICAgICAgbmFtZUFycmF5LnB1c2gobmFtZS5zdWJzdHIoMCwgbmFtZS5sZW5ndGggLSAxKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmFtZUFycmF5LnB1c2gobmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBjaGlsZE5hbWUgPSBuYW1lQXJyYXkuam9pbignLycpOyovXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24ke3BhdGhVcmx9L2JhdGNoYDtcbiAgICBjb25zdCBpZHNBcnJheSA9IGlkcy5zcGxpdCgnLCcpO1xuICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICBpZHM6IGlkc0FycmF5LFxuICAgICAgcmVxdWVzdEluZm86IHJlcXVlc3RJbmZvXG4gICAgfTtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcbiAgfVxuICAvKipcbiAgICog5om56YeP5Yig6ZmkXG4gICAqIEBwYXJhbSBpZHMg5b6F5Yig6Zmk55qEaWTmlbDnu4RcbiAgICogVE9ETzog6aqM6K+B5Yig6Zmk55qEaWTluKbnibnmrorlrZfnrKblnLrmma9cbiAgICovXG4gIHB1YmxpYyBiYXRjaERlbGV0ZShpZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBpZHM6IGlkcy5qb2luKCcsJylcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBERUxFVEUsIHBhcmFtcyk7XG4gIH1cbiAgLyoqXG4gICAqIOagueaNrmlkc+aJuemHj+WIoOmZpOWunuS9k1xuICAgKiBAcGFyYW0gaWRzIGlkc1xuICAgKiBAcGFyYW0gaWZTYXZlIOaYr+WQpuS/neWtmFxuICAgKi9cbiAgcHVibGljIGV4dGVuZEJhdGNoRGVsZXRpb24oaWRzOiBzdHJpbmdbXSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9iYXRjaGRlbGV0aW9uYDtcbiAgICBjb25zdCBib2R5ID0ge1xuICAgICAgaWRzOiBpZHMsXG4gICAgICByZXF1ZXN0SW5mbzogcmVxdWVzdEluZm9cbiAgICB9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIOaJuemHj+WIoOmZpO+8iOaJqeWxle+8iVxuICAgKiBUT0RPOumqjOivgeWIoOmZpOaVsOaNruS4reS4u+mUruacieeJueauiuWtl+espueahOWcuuaZr1xuICAgKi9cbiAgcHVibGljIGV4dGVuZEJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vYmF0Y2hkZWxldGVgO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGlkczogaWRzLmpvaW4oJywnKVxuICAgIH07XG5cbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgcGFyYW1zLCBvcHRpb25zKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIOWPlua2iFxuICAgKi9cbiAgcHVibGljIGNhbmNlbChjb250ZXh0PzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvY2FuY2VsYDtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUE9TVCwgbnVsbCwgbnVsbCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY29udGV4dCk7XG4gIH1cblxuICAvKipcbiAgICog5om56YeP5paw5aKe5LuO6KGoL+S7juS7juihqOaVsOaNrlxuICAgKiBAcGFyYW0gcGF0aCDlrp7kvZPnu5Hlrprot6/lvoTvvIxsaWtlIDEvY2hpbGRzIG9yIDEvY2hpbGRzLzExL2NoaWxkY2hpbGRzXG4gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWVzIOm7mOiupOWunuS9k+aVsOaNruaVsOe7hFxuICAgKi9cbiAgcHVibGljIGJhdGNoQXBwZW5kQnlQYXRoKHBhdGg6IHN0cmluZywgZGVmYXVsdFZhbHVlczogQXJyYXk8YW55PiwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBwYXRoVXJsID0gQmVmRGF0YVBhdGhVdGlsLmNvbnZlcnRQYXRoVG9VcmwocGF0aCk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfSR7cGF0aFVybH0vYmF0Y2hgO1xuICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICByZXF1ZXN0SW5mbyxcbiAgICAgIHJldHJpZXZlRGVmYXVsdFBhcmFtOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZXNcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQT1NULCBudWxsLCBvcHRpb25zKTtcbiAgfVxuICAvKipcbiAgICog5om56YeP5paw5aKe5Li76KGo5pWw5o2uXG4gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWVzIOm7mOiupOWunuS9k+aVsOaNruaVsOe7hFxuICAgKi9cbiAgcHVibGljIGJhdGNoQXBwZW5kKGRlZmF1bHRWYWx1ZXM6IEFycmF5PGFueT4sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9iYXRjaGA7XG4gICAgY29uc3QgYm9keSA9IHtcbiAgICAgIHJlcXVlc3RJbmZvLFxuICAgICAgcmV0cmlldmVEZWZhdWx0UGFyYW06IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlc1xuICAgICAgfVxuICAgIH07XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG9wdGlvbnMpO1xuICB9XG4gIC8qKlxuICAgKiDmo4Dmn6XlvZPliY3kuJrliqHkuIrkuIvmloflhoXmmK/lkKblrZjlnKjmnKrkv53lrZjnmoTlj5jmm7RcbiAgICogQHBhcmFtIHJlcXVlc3RJbmZvIHJlcXVlc3RJbmZvXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBwdWJsaWMgaGFzQ2hhbmdlcyhyZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vaGFzY2hhbmdlc2A7XG4gICAgY29uc3QgYm9keSA9IHtcbiAgICAgIC4uLnJlcXVlc3RJbmZvXG4gICAgfTtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcbiAgfVxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxuICBwdWJsaWMgcmVxdWVzdChcbiAgICB1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgb3B0aW9ucz86IGFueSxcbiAgICBzZWxmSGFuZEVycm9yPzogYm9vbGVhbiwgaWdub3JlRXJyb3I/OiBib29sZWFuLCBpZ25vcmVDaGFuZ2VzPzogYm9vbGVhbiwgcnVudGltZUNvbnRleHQ/OiBhbnlcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgIC8vIOaYr+WQpuiHquihjOWkhOeQhumUmeivr1xuICAgIGlmICh0eXBlb2YgKHNlbGZIYW5kRXJyb3IpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKHNlbGZIYW5kRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHNlbGZIYW5kRXJyb3IgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyDmmK/lkKblv73nlaXlvILluLjnu6fnu63miafooYxcbiAgICBpZiAodHlwZW9mIChpZ25vcmVFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoaWdub3JlRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIGlnbm9yZUVycm9yID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gcGFyYW1zXG4gICAgaWYgKHBhcmFtcykge1xuICAgICAgLy8gY29uc3QgaHR0cFBhcmFtcyA9IHRoaXMuYnVpbGRQYXJhbXMocGFyYW1zKTtcbiAgICAgIG9wdGlvbnMucGFyYW1zID0gcGFyYW1zO1xuICAgIH1cblxuICAgIC8vIOWkhOeQhmhlYWRlcnNcbiAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC5jb252ZXJ0VG9IZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XG4gICAgLy8gMeOAgeWIpOaWreaYr+WQpuW4pnJlcXVlc3RJbmZv77yI5LiN5Yy65YiG6aaW5a2X5q+N5aSn5bCP5YaZ77yJO1xuICAgIC8vIDLjgIHlpoLmnpzkvKDpgJLnmoTmmK9SZXF1ZXN0SW5mb++8jOWImei9rOaNouS4unJlcXVlc3RJbmZv77ybXG4gICAgY29uc3QgaGFzUmVxdWVzdEluZm8gPSB0aGlzLmhhc1JlcXVlc3RJbmZvKG9wdGlvbnMpO1xuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuYm9keSAmJiBvcHRpb25zLmJvZHkuaGFzT3duUHJvcGVydHkoJ1JlcXVlc3RJbmZvJykpIHtcbiAgICAgIG9wdGlvbnMuYm9keS5yZXF1ZXN0SW5mbyA9IG9wdGlvbnMuYm9keS5SZXF1ZXN0SW5mbztcbiAgICAgIGRlbGV0ZSBvcHRpb25zLmJvZHkuUmVxdWVzdEluZm87XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzLCBydW50aW1lQ29udGV4dCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChoZWFkZXJzID0+IHtcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwudG9Kc29uKGhlYWRlcnMpO1xuICAgICAgICBvcHRpb25zLm9ic2VydmUgPSAncmVzcG9uc2UnO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBvcHRpb25zKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB0aGlzLnByb3h5RXh0ZW5kLnBhcnNlSGVhZGVycyhyZXNwb25zZSkpLFxuICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0LmJvZHkpLFxuICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICBpZiAoaGFzUmVxdWVzdEluZm8pIHtcbiAgICAgICAgICB0aGlzLnByb3h5RXh0ZW5kLm9uUmVzcG9uc2UocmVzdWx0LCBpZ25vcmVDaGFuZ2VzLCBvcHRpb25zKTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgLy8gYm9keemHjOayoeaciXJlcXVlc3RJbmZv55qE5oOF5Ya177yM5qih5ouf6ICB55qE5aSE55CG5pa55byP77yI5LiN5riF55CG5Y+Y5pu044CB5bCGcmV0dXJuVmFsdWXop6PmnpDlh7rmnaXvvIlcbiAgICAgICAgICByZXR1cm4gdGhpcy51bldyYXBSZXNwb25zZUluZm8ocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHlFeHRlbmQub25FcnJvcihlcnJvciwgc2VsZkhhbmRFcnJvciwgaWdub3JlRXJyb3IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIOiwg+eUqGh0dHBjbGllbnTlj5bmlbBcbiAgICogQHBhcmFtIHVybCB1cmxcbiAgICogQHBhcmFtIG1ldGhvZCBtZXRob2RzXG4gICAqIEBwYXJhbSBvcHRpb25zIG9wdGlvbnNcbiAgICovXG4gIHByb3RlY3RlZCBpbnZva2UodXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBvcHRpb25zOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmIChvcHRpb25zLnBhcmFtcykge1xuICAgICAgdXJsID0gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRVcmwodXJsLCBvcHRpb25zLnBhcmFtcyk7XG4gICAgICBvcHRpb25zLnBhcmFtcyA9IG51bGw7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmJvZHkpIHtcbiAgICAgIG9wdGlvbnMuYm9keSA9IHRoaXMucHJveHlFeHRlbmQuZXh0ZW5kQm9keShvcHRpb25zLmJvZHkpO1xuICAgIH1cbiAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC5jb252ZXJ0VG9IZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XG4gICAgY29uc3QgaGVhZGVycyQgPSB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcbiAgICByZXR1cm4gaGVhZGVycyQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoaGVhZGVycykgPT4ge1xuICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC50b0pzb24oaGVhZGVycyk7XG4gICAgICAgIG9wdGlvbnMub2JzZXJ2ZSA9ICdyZXNwb25zZSc7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnJlcXVlc3QobWV0aG9kLCB1cmwsIG9wdGlvbnMpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YXAoKHJlc3BvbnNlOiBhbnkpID0+IHRoaXMucHJveHlFeHRlbmQucGFyc2VIZWFkZXJzKHJlc3BvbnNlKSksXG4gICAgICAgICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiByZXN1bHQuYm9keSksXG4gICAgICAgICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiB0aGlzLnByb3h5RXh0ZW5kLm9uUmVzcG9uc2UocmVzdWx0LCBmYWxzZSwgb3B0aW9ucykpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHRoaXMucHJveHlFeHRlbmQub25FcnJvcihlcnJvciwgZmFsc2UsIGZhbHNlKSlcbiAgICAgICAgICApO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIOWQkUh0dHBPcHRpb25z5a+56LGh5Lit5re75YqgYm9keVxuICAgKiBAcGFyYW0gb3B0aW9ucyDljp/mnaXnmoRvcHRpb25zXG4gICAqIEBwYXJhbSBib2R5IGJvZHnlhoXlrrlcbiAgICovXG4gIHByaXZhdGUgYWRkQm9keVRvT3B0aW9ucyhvcHRpb25zOiBhbnksIGJvZHk6IGFueSkge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHsgYm9keSB9KTtcbiAgICByZXR1cm4gbWVyZ2VkT3B0aW9ucztcbiAgfVxuICAvKipcbiAgICog5p6E6YCgSHR0cFBhcmFtc+WvueixoVxuICAgKiBAcGFyYW0gcGFyYW1zIOivt+axguWPguaVsFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFBhcmFtcyhwYXJhbXM6IG9iamVjdCk6IEh0dHBQYXJhbXMge1xuICAgIHJldHVybiBIdHRwUGFyYW1VdGlsLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XG4gIH1cbiAgLyoqXG4gICAqIOaYr+WQpuW4puaciVJlcXVlc3RJbmZvXG4gICAqL1xuICBwcml2YXRlIGhhc1JlcXVlc3RJbmZvKG9wdGlvbnM6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuaGFzUmVxdWVzdEluZm8ob3B0aW9ucykgfHwgUmVxdWVzdEluZm9VdGlsLmhhc1JlcXVlc3RJbmZvV2l0aFIob3B0aW9ucyk7XG4gIH1cbiAgLyoqXG4gICAqIOWkhOeQhui/lOWbnuWAvO+8jOWFvOWuueiAgeeJiOacrFxuICAgKi9cbiAgcHJpdmF0ZSB1bldyYXBSZXNwb25zZUluZm8ocmVzdWx0OiBhbnkpIHtcbiAgICByZXR1cm4gUmVzcG9uc2VJbmZvVXRpbC51bldyYXBSZXNwb25zZUluZm8ocmVzdWx0KTtcbiAgfVxufVxuIl19

@@ -482,3 +482,4 @@ /**

if (ResponseInfoUtil.isReported401Error(error)) {
return throwError(error);
this.eventBus.post('Exception', '', 'onException', error, formAppContext);
return EMPTY;
}

@@ -642,2 +643,2 @@ if (needThrowException) {

export { BefRestService };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Jlc3Rfc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9yZXN0X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFPQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQTJCLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFjLFVBQVUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQVUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1B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QUNuQyxPQUFPLGVBQWUsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQzs7Ozs7OztJQU1PLFdBQVcsQ0FBQyxNQUFXO1FBQzdCLE9BQU8sYUFBYSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDOzs7Ozs7O0lBTU0sd0JBQXdCLENBQUMsSUFBUztRQUN2QyxPQUFPLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Ozs7O0lBS00sZ0JBQWdCO1FBQ3JCLE9BQU8sZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzRCxDQUFDOzs7WUE5ZEYsVUFBVTs7OztZQTVCRixVQUFVOztZQU1WLHVCQUF1QjtZQUR2QixhQUFhO1lBRkwsUUFBUTs7Ozs7OztJQTRCdkIsb0NBQTBDOzs7OztJQUMxQyx3Q0FBdUM7Ozs7OztJQUl2QyxvQ0FBK0I7Ozs7O0lBQy9CLHFDQUFpQzs7Ozs7SUFLakMsd0NBQXlDOzs7OztJQUt6QyxpQ0FBdUI7Ozs7O0lBS3ZCLGtDQUEwQjs7QUE0YzVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBAQXV0aG9yOiBXaXR0XG4gKiBARGF0ZTogMjAxOS0wMi0yMyAxMzo1Nzo0N1xuICogQExhc3QgTW9kaWZpZWQgYnk6IGFhbGl6endlbGxcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTktMDktMjQgMTQ6MTA6NDBcbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IsIG9mLCBFTVBUWSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAsIGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVudGl0eSwgRXZlbnRCdXMgfSBmcm9tICdAZmFycmlzL2RldmtpdCc7XG5pbXBvcnQgeyBIdHRwSGVhZGVyVXRpbCwgSHR0cFBhcmFtVXRpbCwgUmVxdWVzdEluZm9VdGlsLCBSZXNwb25zZUluZm9VdGlsIH0gZnJvbSAnLi91dGlscy9pbmRleCc7XG5pbXBvcnQgeyBCZWZSZXBvc2l0b3J5IH0gZnJvbSAnLi9iZWZfcmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBGcmFtZXdvcmtTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vZnJhbWV3b3JrX3Nlc3Npb25fc2VydmljZSc7XG5pbXBvcnQgeyBCZWZTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vc2Vzc2lvbi9pbmRleCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRhaWwsIFJlcXVlc3RJbmZvLCBSZXNwb25zZUluZm8sIFJldHJpZXZlUGFyYW0gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEJlZlByb3h5IH0gZnJvbSAnLi9iZWZfcHJveHknO1xuaW1wb3J0IHsgVXJpU2VydmljZSB9IGZyb20gJy4vdXJpX3NlcnZpY2UnO1xuaW1wb3J0IHsgQmVmUHJveHlFeHRlbmQgfSBmcm9tICcuL2JlZl9wcm94eV9leHRlbmQnO1xuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuL2h0dHBfc2VydmljZSc7XG5pbXBvcnQgeyBCYWNrRW5kTWVzc2FnZVV0aWwgfSBmcm9tICcuL3V0aWxzL2JhY2tfZW5kX21lc3NhZ2UudXRpbCc7XG5pbXBvcnQgeyBCZWZTZXNzaW9uTWFuYWdlciB9IGZyb20gJy4vc2Vzc2lvbi9iZWZfc2Vzc2lvbl9tYW5hZ2VyJztcbmltcG9ydCB7IExvYWRpbmdTZXJ2aWNlIH0gZnJvbSAnQGZhcnJpcy91aS1sb2FkaW5nJztcbmltcG9ydCB7IFRhYlV0aWwgfSBmcm9tICcuL3V0aWxzL3RhYi51dGlsJztcblxuY29uc3QgR0VUID0gJ0dFVCc7XG5jb25zdCBERUxFVEUgPSAnREVMRVRFJztcbmNvbnN0IFBVVCA9ICdQVVQnO1xuY29uc3QgUE9TVCA9ICdQT1NUJztcbmNvbnN0IFBBVENIID0gJ1BBVENIJztcblxuLyoqXG4gKiBCRUblj5bmlbDmnI3liqFcbiAqIOivpeacjeWKoeeUsUJlZlJlcG9zaXRvcnnlrp7kvovljJbvvIzkuI3lgZrms6jlhaXvvIzmr4/kuKpCZWZSZXBvc2l0b3J55oul5pyJ5LiA5LiqQmVmUmVzdFNlcnZpY2Xlrp7kvovjgIJcbiAqL1xuQEluamVjdGFibGUoKVxuY2xhc3MgQmVmUmVzdFNlcnZpY2Uge1xuXG4gIHByaXZhdGUgcmVwb3NpdG9yeTogQmVmUmVwb3NpdG9yeTxFbnRpdHk+O1xuICBwcml2YXRlIGxvYWRpbmdTZXJ2aWNlOiBMb2FkaW5nU2VydmljZTtcbiAgLyoqXG4gICAqIGh0dHBDbGllbnRcbiAgICovXG4gIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudDtcbiAgcHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2U7XG5cbiAgLyoqXG4gICAqIOS8muivneacjeWKoVxuICAgKi9cbiAgcHVibGljIHNlc3Npb25TZXJ2aWNlOiBCZWZTZXNzaW9uU2VydmljZTtcblxuICAvKipcbiAgICog5o6l5Y+j5qC5VXJpXG4gICAqL1xuICBwdWJsaWMgYmFzZVVyaTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiDkuovku7bmgLvnur9cbiAgICovXG4gIHB1YmxpYyBldmVudEJ1czogRXZlbnRCdXM7XG5cbiAgLyoqXG4gICAqIOaehOmAoOWHveaVsFxuICAgKiBAcGFyYW0gaHR0cENsaWVudCBodHRw5pyN5YqhXG4gICAqIEBwYXJhbSBzZXJ2ZXJVcmkg5bqU55So5pyN5Yqh5Zmo5Zyw5Z2AXG4gICAqIEBwYXJhbSBiZVVyaSBCRSBBUEnlnLDlnYBcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIGJhc2VVcmk6IHN0cmluZyxcbiAgICBmcm1TZXNzaW9uU2VydmljZTogRnJhbWV3b3JrU2Vzc2lvblNlcnZpY2UsXG4gICAgcmVwb3NpdG9yeTogQmVmUmVwb3NpdG9yeTxFbnRpdHk+LFxuICAgIGV2ZW50QnVzPzogRXZlbnRCdXNcbiAgKSB7XG4gICAgdGhpcy5odHRwQ2xpZW50ID0gaHR0cENsaWVudDtcbiAgICB0aGlzLmh0dHBTZXJ2aWNlID0gbmV3IEh0dHBTZXJ2aWNlKHRoaXMuaHR0cENsaWVudCk7XG4gICAgdGhpcy5iYXNlVXJpID0gYmFzZVVyaTtcbiAgICBjb25zdCBpbmplY3RvciA9IHJlcG9zaXRvcnkuZ2V0SW5qZWN0b3IoKTtcbiAgICB0aGlzLnNlc3Npb25TZXJ2aWNlID0gbmV3IEJlZlNlc3Npb25TZXJ2aWNlKGh0dHBDbGllbnQsIGJhc2VVcmksIGZybVNlc3Npb25TZXJ2aWNlLCBpbmplY3Rvcik7XG4gICAgdGhpcy5yZXBvc2l0b3J5ID0gcmVwb3NpdG9yeTtcbiAgICB0aGlzLmV2ZW50QnVzID0gZXZlbnRCdXM7XG4gICAgaWYgKGluamVjdG9yKSB7XG4gICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KExvYWRpbmdTZXJ2aWNlLCBudWxsKTtcbiAgICB9XG4gIH1cblxuXG4gIC8vICNyZWdpb24g5Luj55CG55u45YWzXG5cbiAgLyoqXG4gICAqIOiOt+WPlkJlZuS7o+eQhlxuICAgKi9cbiAgcHVibGljIGdldCBwcm94eSgpOiBCZWZQcm94eSB7XG4gICAgaWYgKCEhdGhpcy5yZXBvc2l0b3J5LnByb3h5KSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3J5LnByb3h5O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVCZWZQcm94eSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDliJvlu7pCZWbku6PnkIZcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlQmVmUHJveHkoKSB7XG4gICAgY29uc3Qgc2VydmVyVXJpID0gdGhpcy5yZXBvc2l0b3J5LnNlcnZlclVyaTtcbiAgICBjb25zdCB1cmlTZXJ2aWNlID0gbmV3IFVyaVNlcnZpY2Uoc2VydmVyVXJpKTtcbiAgICBjb25zdCBkZWZhdWx0UHJveHkgPSBuZXcgQmVmUHJveHkodGhpcy5odHRwQ2xpZW50LCB1cmlTZXJ2aWNlKTtcbiAgICBkZWZhdWx0UHJveHkuc2V0QmFzZVVyaSh0aGlzLmJhc2VVcmkpO1xuICAgIGNvbnN0IGV4dGVuZCA9IG5ldyBCZWZQcm94eUV4dGVuZCh0aGlzLnJlcG9zaXRvcnkpO1xuICAgIGRlZmF1bHRQcm94eS5zZXRQcm94eUV4dGVuZChleHRlbmQpO1xuICAgIHJldHVybiBkZWZhdWx0UHJveHk7XG4gIH1cblxuICAvLyAjZW5kcmVnaW9uXG5cblxuICAvLyAjcmVnaW9uIOWfuuacrENSVUTmlrnms5VcblxuICAvKipcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIHF1ZXJ5KGVudGl0eUZpbHRlcj86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucHJveHkucXVlcnkoZW50aXR5RmlsdGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBwdWJsaWMgZXh0ZW5kUXVlcnkoZW50aXR5RmlsdGVyOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kUXVlcnkoZW50aXR5RmlsdGVyLCByZXF1ZXN0SW5mbyk7XG4gIH1cbiAgLyoqXG4gICAqIOWIhumhteafpeivouWQhOS7juihqOaVsOaNrlxuICAgKiBAcGFyYW0gaWQg5Li76KGoaWRcbiAgICogQHBhcmFtIHJldHJpZXZlUGFyYW0g5Y+C5pWwXG4gICAqL1xuICBwdWJsaWMgc2VydmljZVJldHJpZXZlKGlkOiBzdHJpbmcsIHJldHJpZXZlUGFyYW06IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wcm94eS5zZXJ2aWNlUmV0cmlldmUoaWQsIHJldHJpZXZlUGFyYW0sIHJlcXVlc3RJbmZvKTtcbiAgfVxuICAvKipcbiAgICog5YiG6aG15p+l6K+i5LuO6KGoL+S7juS7juihqOaVsOaNrlxuICAgKiBAcGFyYW0gcGFyYW1zIOafpeivouWPguaVsFxuICAgKi9cbiAgcHVibGljIHF1ZXJ5Q2hpbGQocGFyYW1zOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5wcm94eS5xdWVyeUNoaWxkKHBhcmFtcyk7XG4gIH1cbiAgLyoqXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHB1YmxpYyByZXRyaWV2ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wcm94eS5yZXRyaWV2ZShpZCk7XG4gIH1cblxuICAvKipcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIGV4dGVuZFJldHJpZXZlKGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbywgcmV0cmlldmVQYXJhbT86IFJldHJpZXZlUGFyYW0pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xuICAgIHJldHVybiB0aGlzLnByb3h5LmV4dGVuZFJldHJpZXZlKGlkLCByZXF1ZXN0SW5mbywgcmV0cmlldmVQYXJhbSk7XG4gIH1cblxuICAvKipcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIGNyZWF0ZShkZWZhdWx0VmFsdWU/OiBhbnksIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnByb3h5LmNyZWF0ZShkZWZhdWx0VmFsdWUsIHJlcXVlc3RJbmZvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlQnlQYXRoKGZwYXRoOiBzdHJpbmcsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnByb3h5LmNyZWF0ZUJ5UGF0aChmcGF0aCwgcmVxdWVzdEluZm8pO1xuICB9XG5cbiAgLyoqXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHVwZGF0ZShjaGFuZ2VEZXRhaWw6IENoYW5nZURldGFpbCwgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucHJveHkudXBkYXRlKGNoYW5nZURldGFpbCwgcmVxdWVzdEluZm8pO1xuICB9XG5cbiAgLyoqXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHB1YmxpYyBzYXZlKHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnByb3h5LnNhdmUocmVxdWVzdEluZm8pO1xuICB9XG5cbiAgLyoqXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHB1YmxpYyBkZWxldGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucHJveHkuZGVsZXRlKGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBwdWJsaWMgZXh0ZW5kRGVsZXRlKGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kRGVsZXRlKGlkLCByZXF1ZXN0SW5mbyk7XG4gIH1cblxuICAvKipcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIGRlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnByb3h5LmRlbGV0QnlQYXRoKGZwYXRoLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIGV4dGVuZERlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kRGVsZXRCeVBhdGgoZnBhdGgsIGlkLCByZXF1ZXN0SW5mbyk7XG4gIH1cbiAgcHVibGljIGJhdGNoRGVsZXRlQnlQYXRoKGZQYXRoOiBzdHJpbmcsIGlkczogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xuICAgIHJldHVybiB0aGlzLnByb3h5LmJhdGNoRGVsZXRlQnlQYXRoKGZQYXRoLCBpZHMsIHJlcXVlc3RJbmZvKTtcbiAgfVxuICAvKipcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIGJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnByb3h5LmJhdGNoRGVsZXRlKGlkcyk7XG4gIH1cblxuICAvKipcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIGV4dGVuZEJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kQmF0Y2hEZWxldGUoaWRzLCByZXF1ZXN0SW5mbyk7XG4gIH1cbiAgLyoqXG4gICAqIOagueaNrmlkc+aJuemHj+WIoOmZpOWunuS9k1xuICAgKiBAcGFyYW0gaWRzIGlkc1xuICAgKiBAcGFyYW0gcmVxdWVzdEluZm8gcmVxdWVzdEluZm9cbiAgICovXG4gIHB1YmxpYyBleHRlbmRCYXRjaERlbGV0aW9uKGlkczogc3RyaW5nW10sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kQmF0Y2hEZWxldGlvbihpZHMsIHJlcXVlc3RJbmZvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBwdWJsaWMgY2FuY2VsKG9wdGlvbnM/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnByb3h5LmNhbmNlbChvcHRpb25zKTtcbiAgfVxuICAvKipcbiAgICog5qOA5p+l5b2T5YmN5Lia5Yqh5LiK5LiL5paH5YaF5piv5ZCm5a2Y5Zyo5pyq5L+d5a2Y55qE5Y+Y5pu0XG4gICAqIEBwYXJhbSByZXF1ZXN0SW5mbyByZXF1ZXN0SW5mb1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHVibGljIGhhc0NoYW5nZXMocmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wcm94eS5oYXNDaGFuZ2VzKHJlcXVlc3RJbmZvKTtcbiAgfVxuICAvLyAjZW5kcmVnaW9uXG5cblxuICAvLyAjcmVnaW9uIHJlcXVlc3Tmlrnms5VcblxuICAvKipcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIHJlcXVlc3QoXG4gICAgdXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBwYXJhbXM/OiBhbnksIG9wdGlvbnM/OiBhbnksXG4gICAgc2VsZkhhbmRFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUVycm9yPzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW5cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5pbm5lclJlcXVlc3QodXJsLCBtZXRob2QsIHBhcmFtcywgb3B0aW9ucywgc2VsZkhhbmRFcnJvciwgaWdub3JlRXJyb3IsIGlnbm9yZUNoYW5nZXMsIGZhbHNlKTtcbiAgfVxuICAvLyB0c2xpbnQ6ZGlzYWJsZTogYWxpZ25cblxuICAvKipcbiAgICog6LCD55So5ZCO56uv5pa55rOVXG4gICAqIEBwYXJhbSB1cmwgdXJsXG4gICAqIEBwYXJhbSBtZXRob2QgbWV0aG9kXG4gICAqIEBwYXJhbSBwYXJhbXMgcGFyYW1zXG4gICAqIEBwYXJhbSBvcHRpb25zIG9wdGlvbnNcbiAgICogQHBhcmFtIHNlbGZIYW5kRXJyb3Ig6Ieq5bex5aSE55CG5byC5bi4XG4gICAqIEBwYXJhbSBpZ25vcmVFcnJvciDlv73nlaXplJnor69cbiAgICogQHBhcmFtIGlnbm9yZUNoYW5nZXMg5b+955Wl5Y+Y5pu0XG4gICAqL1xuICBwdWJsaWMgaW52b2tlKHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxuICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuKSB7XG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5ib2R5ICYmIG9wdGlvbnMuYm9keS5SZXF1ZXN0SW5mbykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCfor7fkvb/nlKhyZXF1ZXN0SW5mb+aPkOS6pOWPmOabtCcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbm5lclJlcXVlc3QodXJsLCBtZXRob2QsIHBhcmFtcywgb3B0aW9ucywgc2VsZkhhbmRFcnJvciwgaWdub3JlRXJyb3IsIGlnbm9yZUNoYW5nZXMsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWGhemDqOeahHJlcXVlc3Tmlrnms5VcbiAgICovXG4gIHByaXZhdGUgaW5uZXJSZXF1ZXN0KFxuICAgIHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxuICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuLFxuICAgIHVzZUNvcnJlY3RSZXF1ZXN0SW5mb0NoZWNrTWV0aG9kPzogYm9vbGVhblxuICApIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICBjb25zdCBiZWZTZXNzaW9uSWRLZXkgPSAnQkVGU2Vzc2lvbklEJztcblxuICAgIC8vIOaYr+WQpuiHquW3seWkhOeQhuW8guW4uFxuICAgIGlmICh0eXBlb2YgKHNlbGZIYW5kRXJyb3IpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKHNlbGZIYW5kRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHNlbGZIYW5kRXJyb3IgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyDmmK/lkKblv73nlaXlvILluLjnu6fnu63miafooYxcbiAgICBpZiAodHlwZW9mIChpZ25vcmVFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoaWdub3JlRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIGlnbm9yZUVycm9yID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8g6YCJ5oup5qOA5p+lUmVxdWVzdEluZm/nmoTmlrnms5VcbiAgICBpZiAodHlwZW9mICh1c2VDb3JyZWN0UmVxdWVzdEluZm9DaGVja01ldGhvZCkgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAodXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2QpICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHVzZUNvcnJlY3RSZXF1ZXN0SW5mb0NoZWNrTWV0aG9kID0gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGNoZWNrUmVxdWVzdEluZm9NZXRob2QgPSB1c2VDb3JyZWN0UmVxdWVzdEluZm9DaGVja01ldGhvZCA/IHRoaXMuZXhpc3RSZXF1ZXN0SW5mbyA6IHRoaXMuaGFzUmVxdWVzdEluZm87XG5cbiAgICAvLyBwYXJhbXNcbiAgICBpZiAocGFyYW1zKSB7XG4gICAgICAvLyBjb25zdCBodHRwUGFyYW1zID0gdGhpcy5idWlsZFBhcmFtcyhwYXJhbXMpO1xuICAgICAgb3B0aW9ucy5wYXJhbXMgPSBwYXJhbXM7XG4gICAgfVxuXG4gICAgLy8g5bim5pyJcmVxdWVzdEluZm/nmoTor7fmsYLvvIzor7fmsYLmiJDlip/lkI7muIXnqbrlj5jmm7Tpm4ZcbiAgICBjb25zdCBoYXNSZXF1ZXN0SW5mbyA9IGNoZWNrUmVxdWVzdEluZm9NZXRob2Qob3B0aW9ucyk7XG4gICAgbGV0IGhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC5jb252ZXJ0VG9IZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XG5cbiAgICAvLyDkuLLogZRzZXNzaW9u5rWB5ZKMaHR0cOa1gVxuICAgIGNvbnN0IGZvcm1BcHBDb250ZXh0ID0gdGhpcy5yZXBvc2l0b3J5LmFwcENvbnRleHQuZ2V0Rm9ybUFwcENvbnRleHQoKTtcbiAgICBsZXQgcnVudGltZUNvbnRleHQgPSBudWxsO1xuICAgIGNvbnN0IHRhYklkID0gZm9ybUFwcENvbnRleHQgJiYgZm9ybUFwcENvbnRleHQudGFiSWQgfHwgVGFiVXRpbC5nZXRUYWJJZCgpO1xuICAgIGlmICh0YWJJZCkge1xuICAgICAgcnVudGltZUNvbnRleHQgPSB7IHRhYklkIH07XG4gICAgfVxuICAgIHJldHVybiBCZWZTZXNzaW9uTWFuYWdlci5nZXRTZXNzaW9uSWQoZm9ybUFwcENvbnRleHQsIHRoaXMuc2Vzc2lvblNlcnZpY2UpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHNlc3Npb25JZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGhlYWRlcnMgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmV4dGVuZFJlcXVlc3RIZWFkZXJzKGhlYWRlcnMsIHJ1bnRpbWVDb250ZXh0KTtcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwudG9Kc29uKGhlYWRlcnMpO1xuICAgICAgICBvcHRpb25zLm9ic2VydmUgPSAncmVzcG9uc2UnO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBvcHRpb25zKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZS5oZWFkZXJzICYmIHJlc3BvbnNlLmhlYWRlcnMuaGFzKGJlZlNlc3Npb25JZEtleSkpIHtcbiAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldEJlU2Vzc2lvbklkKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KGJlZlNlc3Npb25JZEtleSksIHJ1bnRpbWVDb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmJvZHkpLFxuICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBtZXNzYWdlcyA9IFJlc3BvbnNlSW5mb1V0aWwucGFyc2VCYWNrRW5kTWVzc2FnZShyZXN1bHQpO1xuICAgICAgICBCYWNrRW5kTWVzc2FnZVV0aWwuaGFuZGxlTWVzc2FnZShtZXNzYWdlcywgdGhpcy5yZXBvc2l0b3J5LmdldEluamVjdG9yKCkpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZVJlcG9uc2VJbmZvKHJlc3VsdCwgaGFzUmVxdWVzdEluZm8sIGlnbm9yZUNoYW5nZXMsIG9wdGlvbnMpO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yLCBzZWxmSGFuZEVycm9yLCBpZ25vcmVFcnJvcik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICog5aSE55CG6L+U5Zue57uT5p6cXG4gICAqL1xuICBwdWJsaWMgaGFuZGxlUmVwb25zZUluZm8ocmVzdWx0OiBhbnksIGhhc1JlcXVlc3RJbmZvOiBib29sZWFuLCBpZ25vcmVDaGFuZ2VzOiBib29sZWFuLCBvcHRpb25zOiBhbnkpOiBhbnkge1xuICAgIGlmIChoYXNSZXF1ZXN0SW5mbykge1xuICAgICAgLy8g5aaC5p6c5pyJ5bim5pyJUmVxdWVzdEluZm/vvIzliJnmjInmlrDnu5PmnoTlpITnkIZcbiAgICAgIC8vIDHjgIHlupTnlKjmnI3liqHlmajnq6/ov5Tlm57nmoTlj5jmm7TvvJtcbiAgICAgIC8vIDLjgIHmuIXnqbrmnKzlnLDlj5jmm7Tpm4bvvJtcbiAgICAgIC8vIDPjgIHov5Tlm57mlrDnu5PmnoRcbiAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmlubmVyRGF0YUNoYW5nZSAmJiBpZ25vcmVDaGFuZ2VzICE9PSB0cnVlKSB7XG4gICAgICAgIHRoaXMucmVwb3NpdG9yeS5oYW5kbGVEYXRhQ2hhbmdlRGV0YWlscyhyZXN1bHQuaW5uZXJEYXRhQ2hhbmdlKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmlubmVyVmFyaWFibGVDaGFuZ2UpIHtcbiAgICAgICAgdGhpcy5yZXBvc2l0b3J5LmhhbmRsZVZhcmlhYmxlQ2hhbmdlRGV0YWlsKHJlc3VsdC5pbm5lclZhcmlhYmxlQ2hhbmdlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVwb3NpdG9yeS5jbGVhckFsbEVudGl0eUNoYW5nZXMoKTtcbiAgICAgIGNvbnN0IHJlcXVlc3RJbmZvID0gUmVxdWVzdEluZm9VdGlsLmdldFJlcXVlc3RJbmZvKG9wdGlvbnMpO1xuICAgICAgY29uc3QgdmFyaWFibGVDaGFuZ2UgPSByZXF1ZXN0SW5mbyAmJiByZXF1ZXN0SW5mby52YXJpYWJsZUNoYW5nZTtcbiAgICAgIHRoaXMucmVwb3NpdG9yeS5jbGVhckFsbFZhcmlhYmxlQ2hhbmdlcyh2YXJpYWJsZUNoYW5nZSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDlpoLmnpzmnInmsqHmnIlSZXF1ZXN0SW5mb++8jOWImeaMieiAgeeahOaWueW8j+WkhOeQhlxuICAgICAgLy8gMeOAgeS4jeWkhOeQhuacjeWKoeWZqOerr+i/lOWbnueahOWPmOabtO+8mui3n+iAgeeahOihjOS4uuS4gOagt++8m1xuICAgICAgLy8gMuOAgeS4jea4heeQhuacrOWcsOWPmOabtO+8muWboOS4uuWPmOabtOayoeacieaPkOS6pO+8m1xuICAgICAgLy8gM+OAgei/lOWbnuiAgeeahOe7k+aehO+8muWFvOWuueiAgeeahOS7o+eggVxuICAgICAgcmV0dXJuIHRoaXMudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOmUmeivr+WkhOeQhlxuICAgKi9cbiAgcHVibGljIGhhbmRsZUVycm9ycyhlcnJvcjogYW55LCBzZWxmSGFuZEVycm9yOiBib29sZWFuLCBpZ25vcmVFcnJvcjogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgdGhpcy5jbGVhckxvYWRpbmcoKTtcblxuICAgIGlmICghIXNlbGZIYW5kRXJyb3IpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZm9ybUFwcENvbnRleHQgPSB0aGlzLnJlcG9zaXRvcnkuYXBwQ29udGV4dC5nZXRGb3JtQXBwQ29udGV4dCgpO1xuICAgICAgY29uc3QgYXBwbGljYXRpb25JZCA9IGZvcm1BcHBDb250ZXh0LkFwcGxpY2F0aW9uSWQ7XG4gICAgICBjb25zdCBhcHBsaWNhdGlvbkNvbnRleHQ6IGFueSA9IHdpbmRvd1thcHBsaWNhdGlvbklkXSB8fCB7fTtcbiAgICAgIGNvbnN0IG1lc3NhZ2VzID0gUmVzcG9uc2VJbmZvVXRpbC5wYXJzZUJhY2tFbmRFcnJvcihlcnJvcik7XG4gICAgICBjb25zdCBiaXpNZXNzYWdlcyA9IEJhY2tFbmRNZXNzYWdlVXRpbC5nZXRGb3JtbGVzc01lc3NhZ2VzKG1lc3NhZ2VzKTtcbiAgICAgIGNvbnN0IGlzRXhjZXB0aW9uSGFuZGxlckV4aXN0ID0gISFhcHBsaWNhdGlvbkNvbnRleHQuaXNFeGNlcHRpb25IYW5kbGVyRXhpc3Q7XG4gICAgICBjb25zdCBpc0V4aXN0Rm9ybWxlc3NNZXNzYWdlID0gYml6TWVzc2FnZXMgJiYgYml6TWVzc2FnZXMubGVuZ3RoID4gMCB8fCBmYWxzZTtcbiAgICAgIGNvbnN0IG5lZWRUaHJvd0V4Y2VwdGlvbiA9ICEoZXJyb3IgJiYgZXJyb3IuZXJyb3IgJiYgZXJyb3IuZXJyb3IuZXh0ZW5zaW9uTWVzc2FnZSAmJiBCYWNrRW5kTWVzc2FnZVV0aWwuaXNCYWNrRW5kTWVzc2FnZUhhbmRsZXJFeGlzdCh0aGlzLnJlcG9zaXRvcnkuZ2V0SW5qZWN0b3IoKSkgJiYgIWlzRXhpc3RGb3JtbGVzc01lc3NhZ2UpO1xuICAgICAgY29uc3Qgd2lsbFRocm93RXhjZXB0aW9uID0gISF0aGlzLmV2ZW50QnVzICYmIGlzRXhjZXB0aW9uSGFuZGxlckV4aXN0ICYmIG5lZWRUaHJvd0V4Y2VwdGlvbjtcbiAgICAgIEJhY2tFbmRNZXNzYWdlVXRpbC5oYW5kbGVNZXNzYWdlKG1lc3NhZ2VzLCB0aGlzLnJlcG9zaXRvcnkuZ2V0SW5qZWN0b3IoKSwgeyBoYXNUaHJvd0Vycm9yOiB3aWxsVGhyb3dFeGNlcHRpb24sIGlzRXhjZXB0aW9uOiB0cnVlLCBldmVudEJ1czogdGhpcy5ldmVudEJ1cywgZXJyb3IsIGZvcm1BcHBDb250ZXh0IH0pO1xuICAgICAgaWYgKCEhdGhpcy5ldmVudEJ1cyAmJiBpc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdCkge1xuICAgICAgICBpZiAoUmVzcG9uc2VJbmZvVXRpbC5pc1JlcG9ydGVkNDAxRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZWVkVGhyb3dFeGNlcHRpb24pIHtcbiAgICAgICAgICB0aGlzLmV2ZW50QnVzLnBvc3QoJ0V4Y2VwdGlvbicsICcnLCAnb25FeGNlcHRpb24nLCBlcnJvciwgZm9ybUFwcENvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpZ25vcmVFcnJvcikge1xuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuICAvLyAjZW5kcmVnaW9uXG5cblxuICAvLyAjcmVnaW9uIOW3peWFt+aWueazlVxuXG4gIC8qKlxuICAgKiDmuIXnqbpMb2FkaW5nXG4gICAqL1xuICBwcml2YXRlIGNsZWFyTG9hZGluZygpOiB2b2lkIHtcbiAgICBjb25zdCBpZkxvYWRpbmdFeGlzdHMgPSB3aW5kb3dbJ0RFVktJVF9MT0FESU5HX1NFUlZJQ0UnXSAmJlxuICAgICAgd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ10gaW5zdGFuY2VvZiBBcnJheSAmJlxuICAgICAgd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ10ubGVuZ3RoID4gMCB8fCBmYWxzZTtcblxuICAgIGlmIChpZkxvYWRpbmdFeGlzdHMgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmNsZWFyQWxsTG9hZGluZygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxvYWRpbmdTZXJ2aWNlczogYW55W10gPSB3aW5kb3dbJ0RFVktJVF9MT0FESU5HX1NFUlZJQ0UnXTtcbiAgICBmb3IgKGNvbnN0IHNlcnZpY2Ugb2YgbG9hZGluZ1NlcnZpY2VzKSB7XG4gICAgICBpZiAodHlwZW9mIChzZXJ2aWNlLmRlc3Ryb3kpID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHNlcnZpY2UuZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNsZWFyQWxsTG9hZGluZygpO1xuICB9XG4gIHByaXZhdGUgY2xlYXJBbGxMb2FkaW5nKCkge1xuICAgIGlmICh0aGlzLmxvYWRpbmdTZXJ2aWNlKSB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2UuY2xlYXJBbGwoKTtcbiAgICAgIH0sIDM1MCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiDlpITnkIbov5Tlm57lgLzvvIzlhbzlrrnogIHniYjmnKxcbiAgICovXG4gIHByaXZhdGUgdW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdDogYW55KTogYW55IHtcbiAgICByZXR1cm4gUmVzcG9uc2VJbmZvVXRpbC51bldyYXBSZXNwb25zZUluZm8ocmVzdWx0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmmK/lkKbluKbmnIlSZXF1ZXN0SW5mb1xuICAgKi9cbiAgcHJpdmF0ZSBoYXNSZXF1ZXN0SW5mbyhvcHRpb25zOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmhhc1JlcXVlc3RJbmZvV2l0aFIob3B0aW9ucyk7XG4gIH1cbiAgLyoqXG4gICAqIOaYr+WQpuW4puaciXJlcXVlc3RJbmZvXG4gICAqL1xuICBwcml2YXRlIGV4aXN0UmVxdWVzdEluZm8ob3B0aW9uczogYW55KSB7XG4gICAgcmV0dXJuIFJlcXVlc3RJbmZvVXRpbC5oYXNSZXF1ZXN0SW5mbyhvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmnoTpgKBIdHRwUGFyYW1z5a+56LGhXG4gICAqIEBwYXJhbSBwYXJhbXMg6K+35rGC5Y+C5pWwXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkUGFyYW1zKHBhcmFtczogYW55KTogSHR0cFBhcmFtcyB7XG4gICAgcmV0dXJuIEh0dHBQYXJhbVV0aWwuYnVpbGRQYXJhbXMocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmnoTpgKDluKZSZXF1ZXN0SW5mb+eahEJvZHnvvIjpgILnlKjkuo7lpJrkuKrlj4LmlbDnmoTmg4XlhrXvvIzlpoLmnpzlj6rmnInkuIDkuKpSZXF1ZXN0SW5mb+WPguaVsO+8jGJvZHk9UmVxdWVzdEluZm/vvIlcbiAgICogQGJvZHkg5pyq5pC65bimUmVxdWVzdEluZm/nmoRib2R577yM5qC85byP5b2i5aaCOiB7a2V5MTogdmFsdWUxLCBrZXkyOiB2YWx1ZTJ9XG4gICAqL1xuICBwdWJsaWMgYnVpbGRCb2R5V2l0aFJlcXVlc3RJbmZvKGJvZHk6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIFJlcXVlc3RJbmZvVXRpbC5idWlsZEJvZHlXaXRoUmVxdWVzdEluZm8oYm9keSwgdGhpcy5yZXBvc2l0b3J5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiDmnoTpgKBSZXF1ZXN0SW5mb1xuICAgKi9cbiAgcHVibGljIGJ1aWxkUmVxdWVzdEluZm8oKTogUmVxdWVzdEluZm8ge1xuICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuYnVpbGRSZXF1ZXN0SW5mbyh0aGlzLnJlcG9zaXRvcnkpO1xuICB9XG5cbiAgLy8gI2VuZHJlZ2lvblxuXG59XG5cbmV4cG9ydCB7IEJlZlJlc3RTZXJ2aWNlIH07XG5cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Jlc3Rfc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9yZXN0X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFPQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RCxPQUFPLEVBQWMsVUFBVSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBVSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDdkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFB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QWUsQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7Ozs7O0lBSU8sZ0JBQWdCLENBQUMsT0FBWTtRQUNuQyxPQUFPLGVBQWUsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQzs7Ozs7OztJQU1PLFdBQVcsQ0FBQyxNQUFXO1FBQzdCLE9BQU8sYUFBYSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDOzs7Ozs7O0lBTU0sd0JBQXdCLENBQUMsSUFBUztRQUN2QyxPQUFPLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Ozs7O0lBS00sZ0JBQWdCO1FBQ3JCLE9BQU8sZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzRCxDQUFDOzs7WUE1ZEYsVUFBVTs7OztZQTVCRixVQUFVOztZQU1WLHVCQUF1QjtZQUR2QixhQUFhO1lBRkwsUUFBUTs7Ozs7OztJQTJCdkIsb0NBQTBDOzs7OztJQUMxQyx3Q0FBdUM7Ozs7OztJQUl2QyxvQ0FBK0I7Ozs7O0lBQy9CLHFDQUFpQzs7Ozs7SUFLakMsd0NBQXlDOzs7OztJQUt6QyxpQ0FBdUI7Ozs7O0lBS3ZCLGtDQUEwQjs7QUEyYzVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBAQXV0aG9yOiBXaXR0XG4gKiBARGF0ZTogMjAxOS0wMi0yMyAxMzo1Nzo0N1xuICogQExhc3QgTW9kaWZpZWQgYnk6IGFhbGl6endlbGxcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTktMDktMjQgMTQ6MTA6NDBcbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciwgb2YsIEVNUFRZIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIG1hcCwgY2F0Y2hFcnJvciwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRW50aXR5LCBFdmVudEJ1cyB9IGZyb20gJ0BmYXJyaXMvZGV2a2l0JztcbmltcG9ydCB7IEh0dHBIZWFkZXJVdGlsLCBIdHRwUGFyYW1VdGlsLCBSZXF1ZXN0SW5mb1V0aWwsIFJlc3BvbnNlSW5mb1V0aWwgfSBmcm9tICcuL3V0aWxzL2luZGV4JztcbmltcG9ydCB7IEJlZlJlcG9zaXRvcnkgfSBmcm9tICcuL2JlZl9yZXBvc2l0b3J5JztcbmltcG9ydCB7IEZyYW1ld29ya1Nlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9mcmFtZXdvcmtfc2Vzc2lvbl9zZXJ2aWNlJztcbmltcG9ydCB7IEJlZlNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXNzaW9uL2luZGV4JztcbmltcG9ydCB7IENoYW5nZURldGFpbCwgUmVxdWVzdEluZm8sIFJlc3BvbnNlSW5mbywgUmV0cmlldmVQYXJhbSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQmVmUHJveHkgfSBmcm9tICcuL2JlZl9wcm94eSc7XG5pbXBvcnQgeyBVcmlTZXJ2aWNlIH0gZnJvbSAnLi91cmlfc2VydmljZSc7XG5pbXBvcnQgeyBCZWZQcm94eUV4dGVuZCB9IGZyb20gJy4vYmVmX3Byb3h5X2V4dGVuZCc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4vaHR0cF9zZXJ2aWNlJztcbmltcG9ydCB7IEJhY2tFbmRNZXNzYWdlVXRpbCB9IGZyb20gJy4vdXRpbHMvYmFja19lbmRfbWVzc2FnZS51dGlsJztcbmltcG9ydCB7IEJlZlNlc3Npb25NYW5hZ2VyIH0gZnJvbSAnLi9zZXNzaW9uL2JlZl9zZXNzaW9uX21hbmFnZXInO1xuaW1wb3J0IHsgTG9hZGluZ1NlcnZpY2UgfSBmcm9tICdAZmFycmlzL3VpLWxvYWRpbmcnO1xuaW1wb3J0IHsgVGFiVXRpbCB9IGZyb20gJy4vdXRpbHMvdGFiLnV0aWwnO1xuXG5jb25zdCBHRVQgPSAnR0VUJztcbmNvbnN0IERFTEVURSA9ICdERUxFVEUnO1xuY29uc3QgUFVUID0gJ1BVVCc7XG5jb25zdCBQT1NUID0gJ1BPU1QnO1xuY29uc3QgUEFUQ0ggPSAnUEFUQ0gnO1xuXG4vKipcbiAqIEJFRuWPluaVsOacjeWKoVxuICog6K+l5pyN5Yqh55SxQmVmUmVwb3NpdG9yeeWunuS+i+WMlu+8jOS4jeWBmuazqOWFpe+8jOavj+S4qkJlZlJlcG9zaXRvcnnmi6XmnInkuIDkuKpCZWZSZXN0U2VydmljZeWunuS+i+OAglxuICovXG5ASW5qZWN0YWJsZSgpXG5jbGFzcyBCZWZSZXN0U2VydmljZSB7XG4gIHByaXZhdGUgcmVwb3NpdG9yeTogQmVmUmVwb3NpdG9yeTxFbnRpdHk+O1xuICBwcml2YXRlIGxvYWRpbmdTZXJ2aWNlOiBMb2FkaW5nU2VydmljZTtcbiAgLyoqXG4gICAqIGh0dHBDbGllbnRcbiAgICovXG4gIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudDtcbiAgcHJpdmF0ZSBodHRwU2VydmljZTogSHR0cFNlcnZpY2U7XG5cbiAgLyoqXG4gICAqIOS8muivneacjeWKoVxuICAgKi9cbiAgcHVibGljIHNlc3Npb25TZXJ2aWNlOiBCZWZTZXNzaW9uU2VydmljZTtcblxuICAvKipcbiAgICog5o6l5Y+j5qC5VXJpXG4gICAqL1xuICBwdWJsaWMgYmFzZVVyaTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiDkuovku7bmgLvnur9cbiAgICovXG4gIHB1YmxpYyBldmVudEJ1czogRXZlbnRCdXM7XG5cbiAgLyoqXG4gICAqIOaehOmAoOWHveaVsFxuICAgKiBAcGFyYW0gaHR0cENsaWVudCBodHRw5pyN5YqhXG4gICAqIEBwYXJhbSBzZXJ2ZXJVcmkg5bqU55So5pyN5Yqh5Zmo5Zyw5Z2AXG4gICAqIEBwYXJhbSBiZVVyaSBCRSBBUEnlnLDlnYBcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsIGJhc2VVcmk6IHN0cmluZyxcbiAgICBmcm1TZXNzaW9uU2VydmljZTogRnJhbWV3b3JrU2Vzc2lvblNlcnZpY2UsXG4gICAgcmVwb3NpdG9yeTogQmVmUmVwb3NpdG9yeTxFbnRpdHk+LFxuICAgIGV2ZW50QnVzPzogRXZlbnRCdXNcbiAgKSB7XG4gICAgdGhpcy5odHRwQ2xpZW50ID0gaHR0cENsaWVudDtcbiAgICB0aGlzLmh0dHBTZXJ2aWNlID0gbmV3IEh0dHBTZXJ2aWNlKHRoaXMuaHR0cENsaWVudCk7XG4gICAgdGhpcy5iYXNlVXJpID0gYmFzZVVyaTtcbiAgICBjb25zdCBpbmplY3RvciA9IHJlcG9zaXRvcnkuZ2V0SW5qZWN0b3IoKTtcbiAgICB0aGlzLnNlc3Npb25TZXJ2aWNlID0gbmV3IEJlZlNlc3Npb25TZXJ2aWNlKGh0dHBDbGllbnQsIGJhc2VVcmksIGZybVNlc3Npb25TZXJ2aWNlLCBpbmplY3Rvcik7XG4gICAgdGhpcy5yZXBvc2l0b3J5ID0gcmVwb3NpdG9yeTtcbiAgICB0aGlzLmV2ZW50QnVzID0gZXZlbnRCdXM7XG4gICAgaWYgKGluamVjdG9yKSB7XG4gICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KExvYWRpbmdTZXJ2aWNlLCBudWxsKTtcbiAgICB9XG4gIH1cblxuXG4gIC8vICNyZWdpb24g5Luj55CG55u45YWzXG5cbiAgLyoqXG4gICAqIOiOt+WPlkJlZuS7o+eQhlxuICAgKi9cbiAgcHVibGljIGdldCBwcm94eSgpOiBCZWZQcm94eSB7XG4gICAgaWYgKCEhdGhpcy5yZXBvc2l0b3J5LnByb3h5KSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3J5LnByb3h5O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGVCZWZQcm94eSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDliJvlu7pCZWbku6PnkIZcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlQmVmUHJveHkoKSB7XG4gICAgY29uc3Qgc2VydmVyVXJpID0gdGhpcy5yZXBvc2l0b3J5LnNlcnZlclVyaTtcbiAgICBjb25zdCB1cmlTZXJ2aWNlID0gbmV3IFVyaVNlcnZpY2Uoc2VydmVyVXJpKTtcbiAgICBjb25zdCBkZWZhdWx0UHJveHkgPSBuZXcgQmVmUHJveHkodGhpcy5odHRwQ2xpZW50LCB1cmlTZXJ2aWNlKTtcbiAgICBkZWZhdWx0UHJveHkuc2V0QmFzZVVyaSh0aGlzLmJhc2VVcmkpO1xuICAgIGNvbnN0IGV4dGVuZCA9IG5ldyBCZWZQcm94eUV4dGVuZCh0aGlzLnJlcG9zaXRvcnkpO1xuICAgIGRlZmF1bHRQcm94eS5zZXRQcm94eUV4dGVuZChleHRlbmQpO1xuICAgIHJldHVybiBkZWZhdWx0UHJveHk7XG4gIH1cblxuICAvLyAjZW5kcmVnaW9uXG5cblxuICAvLyAjcmVnaW9uIOWfuuacrENSVUTmlrnms5VcblxuICAvKipcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIHF1ZXJ5KGVudGl0eUZpbHRlcj86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucHJveHkucXVlcnkoZW50aXR5RmlsdGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBwdWJsaWMgZXh0ZW5kUXVlcnkoZW50aXR5RmlsdGVyOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kUXVlcnkoZW50aXR5RmlsdGVyLCByZXF1ZXN0SW5mbyk7XG4gIH1cbiAgLyoqXG4gICAqIOWIhumhteafpeivouWQhOS7juihqOaVsOaNrlxuICAgKiBAcGFyYW0gaWQg5Li76KGoaWRcbiAgICogQHBhcmFtIHJldHJpZXZlUGFyYW0g5Y+C5pWwXG4gICAqL1xuICBwdWJsaWMgc2VydmljZVJldHJpZXZlKGlkOiBzdHJpbmcsIHJldHJpZXZlUGFyYW06IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wcm94eS5zZXJ2aWNlUmV0cmlldmUoaWQsIHJldHJpZXZlUGFyYW0sIHJlcXVlc3RJbmZvKTtcbiAgfVxuICAvKipcbiAgICog5YiG6aG15p+l6K+i5LuO6KGoL+S7juS7juihqOaVsOaNrlxuICAgKiBAcGFyYW0gcGFyYW1zIOafpeivouWPguaVsFxuICAgKi9cbiAgcHVibGljIHF1ZXJ5Q2hpbGQocGFyYW1zOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5wcm94eS5xdWVyeUNoaWxkKHBhcmFtcyk7XG4gIH1cbiAgLyoqXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHB1YmxpYyByZXRyaWV2ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wcm94eS5yZXRyaWV2ZShpZCk7XG4gIH1cblxuICAvKipcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIGV4dGVuZFJldHJpZXZlKGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbywgcmV0cmlldmVQYXJhbT86IFJldHJpZXZlUGFyYW0pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xuICAgIHJldHVybiB0aGlzLnByb3h5LmV4dGVuZFJldHJpZXZlKGlkLCByZXF1ZXN0SW5mbywgcmV0cmlldmVQYXJhbSk7XG4gIH1cblxuICAvKipcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIGNyZWF0ZShkZWZhdWx0VmFsdWU/OiBhbnksIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnByb3h5LmNyZWF0ZShkZWZhdWx0VmFsdWUsIHJlcXVlc3RJbmZvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlQnlQYXRoKGZwYXRoOiBzdHJpbmcsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnByb3h5LmNyZWF0ZUJ5UGF0aChmcGF0aCwgcmVxdWVzdEluZm8pO1xuICB9XG5cbiAgLyoqXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHVwZGF0ZShjaGFuZ2VEZXRhaWw6IENoYW5nZURldGFpbCwgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucHJveHkudXBkYXRlKGNoYW5nZURldGFpbCwgcmVxdWVzdEluZm8pO1xuICB9XG5cbiAgLyoqXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHB1YmxpYyBzYXZlKHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnByb3h5LnNhdmUocmVxdWVzdEluZm8pO1xuICB9XG5cbiAgLyoqXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHB1YmxpYyBkZWxldGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucHJveHkuZGVsZXRlKGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBwdWJsaWMgZXh0ZW5kRGVsZXRlKGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kRGVsZXRlKGlkLCByZXF1ZXN0SW5mbyk7XG4gIH1cblxuICAvKipcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIGRlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnByb3h5LmRlbGV0QnlQYXRoKGZwYXRoLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIGV4dGVuZERlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kRGVsZXRCeVBhdGgoZnBhdGgsIGlkLCByZXF1ZXN0SW5mbyk7XG4gIH1cbiAgcHVibGljIGJhdGNoRGVsZXRlQnlQYXRoKGZQYXRoOiBzdHJpbmcsIGlkczogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xuICAgIHJldHVybiB0aGlzLnByb3h5LmJhdGNoRGVsZXRlQnlQYXRoKGZQYXRoLCBpZHMsIHJlcXVlc3RJbmZvKTtcbiAgfVxuICAvKipcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIGJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnByb3h5LmJhdGNoRGVsZXRlKGlkcyk7XG4gIH1cblxuICAvKipcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIGV4dGVuZEJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kQmF0Y2hEZWxldGUoaWRzLCByZXF1ZXN0SW5mbyk7XG4gIH1cbiAgLyoqXG4gICAqIOagueaNrmlkc+aJuemHj+WIoOmZpOWunuS9k1xuICAgKiBAcGFyYW0gaWRzIGlkc1xuICAgKiBAcGFyYW0gcmVxdWVzdEluZm8gcmVxdWVzdEluZm9cbiAgICovXG4gIHB1YmxpYyBleHRlbmRCYXRjaERlbGV0aW9uKGlkczogc3RyaW5nW10sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kQmF0Y2hEZWxldGlvbihpZHMsIHJlcXVlc3RJbmZvKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBwdWJsaWMgY2FuY2VsKG9wdGlvbnM/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnByb3h5LmNhbmNlbChvcHRpb25zKTtcbiAgfVxuICAvKipcbiAgICog5qOA5p+l5b2T5YmN5Lia5Yqh5LiK5LiL5paH5YaF5piv5ZCm5a2Y5Zyo5pyq5L+d5a2Y55qE5Y+Y5pu0XG4gICAqIEBwYXJhbSByZXF1ZXN0SW5mbyByZXF1ZXN0SW5mb1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHVibGljIGhhc0NoYW5nZXMocmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5wcm94eS5oYXNDaGFuZ2VzKHJlcXVlc3RJbmZvKTtcbiAgfVxuICAvLyAjZW5kcmVnaW9uXG5cblxuICAvLyAjcmVnaW9uIHJlcXVlc3Tmlrnms5VcblxuICAvKipcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIHJlcXVlc3QoXG4gICAgdXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBwYXJhbXM/OiBhbnksIG9wdGlvbnM/OiBhbnksXG4gICAgc2VsZkhhbmRFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUVycm9yPzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW5cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5pbm5lclJlcXVlc3QodXJsLCBtZXRob2QsIHBhcmFtcywgb3B0aW9ucywgc2VsZkhhbmRFcnJvciwgaWdub3JlRXJyb3IsIGlnbm9yZUNoYW5nZXMsIGZhbHNlKTtcbiAgfVxuICAvLyB0c2xpbnQ6ZGlzYWJsZTogYWxpZ25cblxuICAvKipcbiAgICog6LCD55So5ZCO56uv5pa55rOVXG4gICAqIEBwYXJhbSB1cmwgdXJsXG4gICAqIEBwYXJhbSBtZXRob2QgbWV0aG9kXG4gICAqIEBwYXJhbSBwYXJhbXMgcGFyYW1zXG4gICAqIEBwYXJhbSBvcHRpb25zIG9wdGlvbnNcbiAgICogQHBhcmFtIHNlbGZIYW5kRXJyb3Ig6Ieq5bex5aSE55CG5byC5bi4XG4gICAqIEBwYXJhbSBpZ25vcmVFcnJvciDlv73nlaXplJnor69cbiAgICogQHBhcmFtIGlnbm9yZUNoYW5nZXMg5b+955Wl5Y+Y5pu0XG4gICAqL1xuICBwdWJsaWMgaW52b2tlKHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxuICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuKSB7XG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5ib2R5ICYmIG9wdGlvbnMuYm9keS5SZXF1ZXN0SW5mbykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCfor7fkvb/nlKhyZXF1ZXN0SW5mb+aPkOS6pOWPmOabtCcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5pbm5lclJlcXVlc3QodXJsLCBtZXRob2QsIHBhcmFtcywgb3B0aW9ucywgc2VsZkhhbmRFcnJvciwgaWdub3JlRXJyb3IsIGlnbm9yZUNoYW5nZXMsIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWGhemDqOeahHJlcXVlc3Tmlrnms5VcbiAgICovXG4gIHByaXZhdGUgaW5uZXJSZXF1ZXN0KFxuICAgIHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxuICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuLFxuICAgIHVzZUNvcnJlY3RSZXF1ZXN0SW5mb0NoZWNrTWV0aG9kPzogYm9vbGVhblxuICApIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICBjb25zdCBiZWZTZXNzaW9uSWRLZXkgPSAnQkVGU2Vzc2lvbklEJztcblxuICAgIC8vIOaYr+WQpuiHquW3seWkhOeQhuW8guW4uFxuICAgIGlmICh0eXBlb2YgKHNlbGZIYW5kRXJyb3IpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKHNlbGZIYW5kRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHNlbGZIYW5kRXJyb3IgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyDmmK/lkKblv73nlaXlvILluLjnu6fnu63miafooYxcbiAgICBpZiAodHlwZW9mIChpZ25vcmVFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoaWdub3JlRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIGlnbm9yZUVycm9yID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8g6YCJ5oup5qOA5p+lUmVxdWVzdEluZm/nmoTmlrnms5VcbiAgICBpZiAodHlwZW9mICh1c2VDb3JyZWN0UmVxdWVzdEluZm9DaGVja01ldGhvZCkgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAodXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2QpICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHVzZUNvcnJlY3RSZXF1ZXN0SW5mb0NoZWNrTWV0aG9kID0gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGNoZWNrUmVxdWVzdEluZm9NZXRob2QgPSB1c2VDb3JyZWN0UmVxdWVzdEluZm9DaGVja01ldGhvZCA/IHRoaXMuZXhpc3RSZXF1ZXN0SW5mbyA6IHRoaXMuaGFzUmVxdWVzdEluZm87XG5cbiAgICAvLyBwYXJhbXNcbiAgICBpZiAocGFyYW1zKSB7XG4gICAgICAvLyBjb25zdCBodHRwUGFyYW1zID0gdGhpcy5idWlsZFBhcmFtcyhwYXJhbXMpO1xuICAgICAgb3B0aW9ucy5wYXJhbXMgPSBwYXJhbXM7XG4gICAgfVxuXG4gICAgLy8g5bim5pyJcmVxdWVzdEluZm/nmoTor7fmsYLvvIzor7fmsYLmiJDlip/lkI7muIXnqbrlj5jmm7Tpm4ZcbiAgICBjb25zdCBoYXNSZXF1ZXN0SW5mbyA9IGNoZWNrUmVxdWVzdEluZm9NZXRob2Qob3B0aW9ucyk7XG4gICAgbGV0IGhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC5jb252ZXJ0VG9IZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XG5cbiAgICAvLyDkuLLogZRzZXNzaW9u5rWB5ZKMaHR0cOa1gVxuICAgIGNvbnN0IGZvcm1BcHBDb250ZXh0ID0gdGhpcy5yZXBvc2l0b3J5LmFwcENvbnRleHQuZ2V0Rm9ybUFwcENvbnRleHQoKTtcbiAgICBsZXQgcnVudGltZUNvbnRleHQgPSBudWxsO1xuICAgIGNvbnN0IHRhYklkID0gZm9ybUFwcENvbnRleHQgJiYgZm9ybUFwcENvbnRleHQudGFiSWQgfHwgVGFiVXRpbC5nZXRUYWJJZCgpO1xuICAgIGlmICh0YWJJZCkge1xuICAgICAgcnVudGltZUNvbnRleHQgPSB7IHRhYklkIH07XG4gICAgfVxuICAgIHJldHVybiBCZWZTZXNzaW9uTWFuYWdlci5nZXRTZXNzaW9uSWQoZm9ybUFwcENvbnRleHQsIHRoaXMuc2Vzc2lvblNlcnZpY2UpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHNlc3Npb25JZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGhlYWRlcnMgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmV4dGVuZFJlcXVlc3RIZWFkZXJzKGhlYWRlcnMsIHJ1bnRpbWVDb250ZXh0KTtcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwudG9Kc29uKGhlYWRlcnMpO1xuICAgICAgICBvcHRpb25zLm9ic2VydmUgPSAncmVzcG9uc2UnO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBvcHRpb25zKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXNwb25zZS5oZWFkZXJzICYmIHJlc3BvbnNlLmhlYWRlcnMuaGFzKGJlZlNlc3Npb25JZEtleSkpIHtcbiAgICAgICAgICB0aGlzLnNlc3Npb25TZXJ2aWNlLnNldEJlU2Vzc2lvbklkKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KGJlZlNlc3Npb25JZEtleSksIHJ1bnRpbWVDb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmJvZHkpLFxuICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBtZXNzYWdlcyA9IFJlc3BvbnNlSW5mb1V0aWwucGFyc2VCYWNrRW5kTWVzc2FnZShyZXN1bHQpO1xuICAgICAgICBCYWNrRW5kTWVzc2FnZVV0aWwuaGFuZGxlTWVzc2FnZShtZXNzYWdlcywgdGhpcy5yZXBvc2l0b3J5LmdldEluamVjdG9yKCkpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZVJlcG9uc2VJbmZvKHJlc3VsdCwgaGFzUmVxdWVzdEluZm8sIGlnbm9yZUNoYW5nZXMsIG9wdGlvbnMpO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUVycm9ycyhlcnJvciwgc2VsZkhhbmRFcnJvciwgaWdub3JlRXJyb3IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIOWkhOeQhui/lOWbnue7k+aenFxuICAgKi9cbiAgcHVibGljIGhhbmRsZVJlcG9uc2VJbmZvKHJlc3VsdDogYW55LCBoYXNSZXF1ZXN0SW5mbzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlczogYm9vbGVhbiwgb3B0aW9uczogYW55KTogYW55IHtcbiAgICBpZiAoaGFzUmVxdWVzdEluZm8pIHtcbiAgICAgIC8vIOWmguaenOacieW4puaciVJlcXVlc3RJbmZv77yM5YiZ5oyJ5paw57uT5p6E5aSE55CGXG4gICAgICAvLyAx44CB5bqU55So5pyN5Yqh5Zmo56uv6L+U5Zue55qE5Y+Y5pu077ybXG4gICAgICAvLyAy44CB5riF56m65pys5Zyw5Y+Y5pu06ZuG77ybXG4gICAgICAvLyAz44CB6L+U5Zue5paw57uT5p6EXG4gICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5pbm5lckRhdGFDaGFuZ2UgJiYgaWdub3JlQ2hhbmdlcyAhPT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLnJlcG9zaXRvcnkuaGFuZGxlRGF0YUNoYW5nZURldGFpbHMocmVzdWx0LmlubmVyRGF0YUNoYW5nZSk7XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5pbm5lclZhcmlhYmxlQ2hhbmdlKSB7XG4gICAgICAgIHRoaXMucmVwb3NpdG9yeS5oYW5kbGVWYXJpYWJsZUNoYW5nZURldGFpbChyZXN1bHQuaW5uZXJWYXJpYWJsZUNoYW5nZSk7XG4gICAgICB9XG4gICAgICB0aGlzLnJlcG9zaXRvcnkuY2xlYXJBbGxFbnRpdHlDaGFuZ2VzKCk7XG4gICAgICBjb25zdCByZXF1ZXN0SW5mbyA9IFJlcXVlc3RJbmZvVXRpbC5nZXRSZXF1ZXN0SW5mbyhvcHRpb25zKTtcbiAgICAgIGNvbnN0IHZhcmlhYmxlQ2hhbmdlID0gcmVxdWVzdEluZm8gJiYgcmVxdWVzdEluZm8udmFyaWFibGVDaGFuZ2U7XG4gICAgICB0aGlzLnJlcG9zaXRvcnkuY2xlYXJBbGxWYXJpYWJsZUNoYW5nZXModmFyaWFibGVDaGFuZ2UpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8g5aaC5p6c5pyJ5rKh5pyJUmVxdWVzdEluZm/vvIzliJnmjInogIHnmoTmlrnlvI/lpITnkIZcbiAgICAgIC8vIDHjgIHkuI3lpITnkIbmnI3liqHlmajnq6/ov5Tlm57nmoTlj5jmm7TvvJrot5/ogIHnmoTooYzkuLrkuIDmoLfvvJtcbiAgICAgIC8vIDLjgIHkuI3muIXnkIbmnKzlnLDlj5jmm7TvvJrlm6DkuLrlj5jmm7TmsqHmnInmj5DkuqTvvJtcbiAgICAgIC8vIDPjgIHov5Tlm57ogIHnmoTnu5PmnoTvvJrlhbzlrrnogIHnmoTku6PnoIFcbiAgICAgIHJldHVybiB0aGlzLnVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDplJnor6/lpITnkIZcbiAgICovXG4gIHB1YmxpYyBoYW5kbGVFcnJvcnMoZXJyb3I6IGFueSwgc2VsZkhhbmRFcnJvcjogYm9vbGVhbiwgaWdub3JlRXJyb3I6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHRoaXMuY2xlYXJMb2FkaW5nKCk7XG5cbiAgICBpZiAoISFzZWxmSGFuZEVycm9yKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGZvcm1BcHBDb250ZXh0ID0gdGhpcy5yZXBvc2l0b3J5LmFwcENvbnRleHQuZ2V0Rm9ybUFwcENvbnRleHQoKTtcbiAgICAgIGNvbnN0IGFwcGxpY2F0aW9uSWQgPSBmb3JtQXBwQ29udGV4dC5BcHBsaWNhdGlvbklkO1xuICAgICAgY29uc3QgYXBwbGljYXRpb25Db250ZXh0OiBhbnkgPSB3aW5kb3dbYXBwbGljYXRpb25JZF0gfHwge307XG4gICAgICBjb25zdCBtZXNzYWdlcyA9IFJlc3BvbnNlSW5mb1V0aWwucGFyc2VCYWNrRW5kRXJyb3IoZXJyb3IpO1xuICAgICAgY29uc3QgYml6TWVzc2FnZXMgPSBCYWNrRW5kTWVzc2FnZVV0aWwuZ2V0Rm9ybWxlc3NNZXNzYWdlcyhtZXNzYWdlcyk7XG4gICAgICBjb25zdCBpc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdCA9ICEhYXBwbGljYXRpb25Db250ZXh0LmlzRXhjZXB0aW9uSGFuZGxlckV4aXN0O1xuICAgICAgY29uc3QgaXNFeGlzdEZvcm1sZXNzTWVzc2FnZSA9IGJpek1lc3NhZ2VzICYmIGJpek1lc3NhZ2VzLmxlbmd0aCA+IDAgfHwgZmFsc2U7XG4gICAgICBjb25zdCBuZWVkVGhyb3dFeGNlcHRpb24gPSAhKGVycm9yICYmIGVycm9yLmVycm9yICYmIGVycm9yLmVycm9yLmV4dGVuc2lvbk1lc3NhZ2UgJiYgQmFja0VuZE1lc3NhZ2VVdGlsLmlzQmFja0VuZE1lc3NhZ2VIYW5kbGVyRXhpc3QodGhpcy5yZXBvc2l0b3J5LmdldEluamVjdG9yKCkpICYmICFpc0V4aXN0Rm9ybWxlc3NNZXNzYWdlKTtcbiAgICAgIGNvbnN0IHdpbGxUaHJvd0V4Y2VwdGlvbiA9ICEhdGhpcy5ldmVudEJ1cyAmJiBpc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdCAmJiBuZWVkVGhyb3dFeGNlcHRpb247XG4gICAgICBCYWNrRW5kTWVzc2FnZVV0aWwuaGFuZGxlTWVzc2FnZShtZXNzYWdlcywgdGhpcy5yZXBvc2l0b3J5LmdldEluamVjdG9yKCksIHsgaGFzVGhyb3dFcnJvcjogd2lsbFRocm93RXhjZXB0aW9uLCBpc0V4Y2VwdGlvbjogdHJ1ZSwgZXZlbnRCdXM6IHRoaXMuZXZlbnRCdXMsIGVycm9yLCBmb3JtQXBwQ29udGV4dCB9KTtcbiAgICAgIGlmICghIXRoaXMuZXZlbnRCdXMgJiYgaXNFeGNlcHRpb25IYW5kbGVyRXhpc3QpIHtcbiAgICAgICAgaWYgKFJlc3BvbnNlSW5mb1V0aWwuaXNSZXBvcnRlZDQwMUVycm9yKGVycm9yKSkge1xuICAgICAgICAgIHRoaXMuZXZlbnRCdXMucG9zdCgnRXhjZXB0aW9uJywgJycsICdvbkV4Y2VwdGlvbicsIGVycm9yLCBmb3JtQXBwQ29udGV4dCk7XG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZWVkVGhyb3dFeGNlcHRpb24pIHtcbiAgICAgICAgICB0aGlzLmV2ZW50QnVzLnBvc3QoJ0V4Y2VwdGlvbicsICcnLCAnb25FeGNlcHRpb24nLCBlcnJvciwgZm9ybUFwcENvbnRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpZ25vcmVFcnJvcikge1xuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gI2VuZHJlZ2lvblxuXG5cbiAgLy8gI3JlZ2lvbiDlt6Xlhbfmlrnms5VcblxuICAvKipcbiAgICog5riF56m6TG9hZGluZ1xuICAgKi9cbiAgcHJpdmF0ZSBjbGVhckxvYWRpbmcoKTogdm9pZCB7XG4gICAgY29uc3QgaWZMb2FkaW5nRXhpc3RzID0gd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ10gJiZcbiAgICAgIHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddIGluc3RhbmNlb2YgQXJyYXkgJiZcbiAgICAgIHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddLmxlbmd0aCA+IDAgfHwgZmFsc2U7XG5cbiAgICBpZiAoaWZMb2FkaW5nRXhpc3RzID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5jbGVhckFsbExvYWRpbmcoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsb2FkaW5nU2VydmljZXM6IGFueVtdID0gd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ107XG4gICAgZm9yIChjb25zdCBzZXJ2aWNlIG9mIGxvYWRpbmdTZXJ2aWNlcykge1xuICAgICAgaWYgKHR5cGVvZiAoc2VydmljZS5kZXN0cm95KSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBzZXJ2aWNlLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jbGVhckFsbExvYWRpbmcoKTtcbiAgfVxuICBwcml2YXRlIGNsZWFyQWxsTG9hZGluZygpIHtcbiAgICBpZiAodGhpcy5sb2FkaW5nU2VydmljZSkge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLmNsZWFyQWxsKCk7XG4gICAgICB9LCAzNTApO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICog5aSE55CG6L+U5Zue5YC877yM5YW85a656ICB54mI5pysXG4gICAqL1xuICBwcml2YXRlIHVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQ6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIFJlc3BvbnNlSW5mb1V0aWwudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XG4gIH1cblxuICAvKipcbiAgICog5piv5ZCm5bim5pyJUmVxdWVzdEluZm9cbiAgICovXG4gIHByaXZhdGUgaGFzUmVxdWVzdEluZm8ob3B0aW9uczogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFJlcXVlc3RJbmZvVXRpbC5oYXNSZXF1ZXN0SW5mb1dpdGhSKG9wdGlvbnMpO1xuICB9XG4gIC8qKlxuICAgKiDmmK/lkKbluKbmnIlyZXF1ZXN0SW5mb1xuICAgKi9cbiAgcHJpdmF0ZSBleGlzdFJlcXVlc3RJbmZvKG9wdGlvbnM6IGFueSkge1xuICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuaGFzUmVxdWVzdEluZm8ob3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICog5p6E6YCgSHR0cFBhcmFtc+WvueixoVxuICAgKiBAcGFyYW0gcGFyYW1zIOivt+axguWPguaVsFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZFBhcmFtcyhwYXJhbXM6IGFueSk6IEh0dHBQYXJhbXMge1xuICAgIHJldHVybiBIdHRwUGFyYW1VdGlsLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICog5p6E6YCg5bimUmVxdWVzdEluZm/nmoRCb2R577yI6YCC55So5LqO5aSa5Liq5Y+C5pWw55qE5oOF5Ya177yM5aaC5p6c5Y+q5pyJ5LiA5LiqUmVxdWVzdEluZm/lj4LmlbDvvIxib2R5PVJlcXVlc3RJbmZv77yJXG4gICAqIEBib2R5IOacquaQuuW4plJlcXVlc3RJbmZv55qEYm9kee+8jOagvOW8j+W9ouWmgjoge2tleTE6IHZhbHVlMSwga2V5MjogdmFsdWUyfVxuICAgKi9cbiAgcHVibGljIGJ1aWxkQm9keVdpdGhSZXF1ZXN0SW5mbyhib2R5OiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuYnVpbGRCb2R5V2l0aFJlcXVlc3RJbmZvKGJvZHksIHRoaXMucmVwb3NpdG9yeSk7XG4gIH1cblxuICAvKipcbiAgICog5p6E6YCgUmVxdWVzdEluZm9cbiAgICovXG4gIHB1YmxpYyBidWlsZFJlcXVlc3RJbmZvKCk6IFJlcXVlc3RJbmZvIHtcbiAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmJ1aWxkUmVxdWVzdEluZm8odGhpcy5yZXBvc2l0b3J5KTtcbiAgfVxuXG4gIC8vICNlbmRyZWdpb25cblxufVxuXG5leHBvcnQgeyBCZWZSZXN0U2VydmljZSB9O1xuXG4iXX0=

@@ -229,5 +229,12 @@ /**

/** @type {?} */
var subPaths = path.split('/');
for (var i = subPaths.length - 1; i > 0; i--) {
if (subPaths[i] && subPaths[i].endsWith('s')) {
var subPaths = path.split('/').filter((/**
* @param {?} p
* @return {?}
*/
function (p) { return p; }));
for (var i = subPaths.length - 1; i >= 0; i--) {
if (i % 2 === 0) {
subPaths[i] = encodeURIComponent(subPaths[i]);
}
if (subPaths[i] && subPaths[i].endsWith('s') && i % 2 !== 0) {
subPaths[i] = subPaths[i].substr(0, subPaths[i].length - 1).toLowerCase();

@@ -237,3 +244,3 @@ }

// url不再转小写,兼容主键有大写字母的情况
return subPaths.join('/'); // .toLowerCase();
return '/' + subPaths.join('/'); // .toLowerCase();
};

@@ -339,2 +346,2 @@ /**

export { BefDataPathUtil };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX2RhdGFfcGF0aF91dGlsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvYmVmX2RhdGFfcGF0aF91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNRLG1CQUFtQixFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFDckUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUt4Qjs7OztJQUFBO0lBa0pBLENBQUM7SUFoSkM7Ozs7OztPQU1HOzs7Ozs7Ozs7OztJQUNXLGtDQUFrQjs7Ozs7Ozs7OztJQUFoQyxVQUFpQyxXQUE4QixFQUFFLFdBQXdCO1FBQXpGLGlCQW1CQzs7WUFsQk8sZ0JBQWdCLEdBQWEsb0JBQW9CLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDOztZQUNqRixTQUFTLEdBQWEsRUFBRTs7WUFFMUIsb0JBQW9CLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXO1FBQ3ZELFNBQVMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFckQsZ0JBQWdCLENBQUMsT0FBTzs7OztRQUFDLFVBQUMsUUFBZ0I7O2dCQUNsQyxRQUFRLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUM7WUFDMUYsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLG1CQUFtQixDQUFDLElBQUksRUFBRTtnQkFDOUMsTUFBTSxJQUFJLEtBQUssQ0FBSSxRQUFRLENBQUMsSUFBSSwyREFBVyxDQUFDLENBQUM7YUFDOUM7O2dCQUNLLGtCQUFrQixHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQztZQUN6RCxvQkFBb0IsR0FBRyxrQkFBa0IsQ0FBQyxXQUFXLENBQUM7WUFDdEQsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDN0MsU0FBUyxDQUFDLElBQUks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UUFDaEMsQ0FBQyxFQUFDLENBQUM7UUFDSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQ0gsc0JBQUM7QUFBRCxDQUFDLEFBbEpELElBa0pDO0FBRUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmluZGluZ0RhdGEsIEJpbmRpbmdQcm9wZXJ0eVR5cGUsIFByb3BlcnR5VXRpbCwgQmluZGluZ1BhdGhDb252ZXJ0ZXJcbn0gZnJvbSAnQGZhcnJpcy9kZXZraXQnO1xuXG4vKipcbiAqIEJlZuaVsOaNruS4reWQhOenjVBhdGjnmoTovazmjaJcbiAqL1xuY2xhc3MgQmVmRGF0YVBhdGhVdGlsIHtcblxuICAvKipcbiAgICog6L2s5o2i5oiQ6Lev5b6E5pWw57uEXG4gICAqIOi/lOWbnue7k+aenO+8mlxuICAgKiDkuLvooajvvIgv77yJ77yaWyBwYXJlbnRJZCBdXG4gICAqIOS7juihqO+8iC9jaGlsZENvZGVz77yJ77yaWyBwYXJlbnRJZCwgY2hpbGRDb2RlcywgY2hpbGRJZCBdXG4gICAqIOS7juS7juihqO+8iC9jaGlsZENvZGVzL2dyYW5kQ29kZXPvvInvvJogWyBwYXJlbnRJZCwgY2hpbGRDb2RlLCBjaGlsZElkLCBncmFuZENvZGUsIGdyYW5kSWQgXVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0VG9QYXRoQXJyYXkoYmluZGluZ1BhdGg6IHN0cmluZyB8IHN0cmluZ1tdLCBiaW5kaW5nRGF0YTogQmluZGluZ0RhdGEpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgYmluZGluZ1BhdGhBcnJheTogc3RyaW5nW10gPSBCaW5kaW5nUGF0aENvbnZlcnRlci50b0JpbmRpbmdQYXRoQXJyYXkoYmluZGluZ1BhdGgpO1xuICAgIGNvbnN0IHBhdGhBcnJheTogc3RyaW5nW10gPSBbXTtcblxuICAgIGxldCBjdXJyZW50QmluZGluZ09iamVjdCA9IGJpbmRpbmdEYXRhLmxpc3QuY3VycmVudEl0ZW07XG4gICAgcGF0aEFycmF5LnB1c2goY3VycmVudEJpbmRpbmdPYmplY3QucHJpbWFyeUtleVZhbHVlKTtcblxuICAgIGJpbmRpbmdQYXRoQXJyYXkuZm9yRWFjaCgocHJvcE5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgcHJvcEluZm8gPSBQcm9wZXJ0eVV0aWwuZ2V0UHJvcGVydHlCeU5hbWUoY3VycmVudEJpbmRpbmdPYmplY3QucHJvcGVydGllcywgcHJvcE5hbWUpO1xuICAgICAgaWYgKHByb3BJbmZvLnR5cGUgIT09IEJpbmRpbmdQcm9wZXJ0eVR5cGUuTGlzdCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cHJvcEluZm8ubmFtZX3kuI3mmK/lrZDooajlr7nlupTnmoTlsZ7mgKdgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRCaW5kaW5nTGlzdCA9IGN1cnJlbnRCaW5kaW5nT2JqZWN0W3Byb3BOYW1lXTtcbiAgICAgIGN1cnJlbnRCaW5kaW5nT2JqZWN0ID0gY3VycmVudEJpbmRpbmdMaXN0LmN1cnJlbnRJdGVtO1xuICAgICAgcGF0aEFycmF5LnB1c2godGhpcy50cmltVHJhaWxpbmdTKHByb3BOYW1lKSk7XG4gICAgICBwYXRoQXJyYXkucHVzaChjdXJyZW50QmluZGluZ09iamVjdC5wcmltYXJ5S2V5VmFsdWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBhdGhBcnJheTtcbiAgfVxuXG4gIC8qKlxuICAgKiDovazmjaLkuLpSZXN0VXJs6YeM55qE6Lev5b6EXG4gICAqXG4gICAqIOi/lOWbnue7k+aenO+8mlxuICAgKiDkuLvooajvvIgv77yJ77yaL1xuICAgKiDku47ooajvvIgvaml3dEVkdXPvvInvvJoveHh4L2ppd3RFZHVcbiAgICog5LuO5LuO6KGo77yIL2ppd3RFZHVzL2ppd3RHcmFkZXPvvInvvJogL3h4eC9qaXd0RWR1L3h4eC9qaXd0R3JhZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFRvUGF0aFVybChiaW5kaW5nUGF0aDogc3RyaW5nIHwgc3RyaW5nW10sIGJpbmRpbmdEYXRhOiBCaW5kaW5nRGF0YSk6IHN0cmluZyB7XG4gICAgY29uc3QgcGF0aEFycmF5ID0gdGhpcy5jb252ZXJ0VG9QYXRoQXJyYXkoYmluZGluZ1BhdGgsIGJpbmRpbmdEYXRhKTtcbiAgICBwYXRoQXJyYXkucG9wKCk7XG4gICAgcmV0dXJuICcvJyArIHBhdGhBcnJheS5qb2luKCcvJyk7XG4gIH1cblxuICAvKipcbiAgICog6L2s5o2i5Li66KGo5ZCN5pWw57uEXG4gICAqIOi/lOWbnue7k+aenO+8mlxuICAgKiDkuLvooajvvIgv77yJ77yaW11cbiAgICog5LuO6KGo77yIL2NoaWxkQ29kZXPvvInvvJpbIGNoaWxkQ29kZXMgXVxuICAgKiDku47ku47ooajvvIgvY2hpbGRDb2Rlcy9ncmFuZENvZGVzIFtjaGlsZENvZGUgLGdyYW5kQ29kZV1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFRvT2JqZWN0Q29kZXMoYmluZGluZ1BhdGg6IHN0cmluZyB8IHN0cmluZ1tdLCBiaW5kaW5nRGF0YTogQmluZGluZ0RhdGEpIHtcbiAgICBjb25zdCBwYXRoQXJyYXkgPSB0aGlzLmNvbnZlcnRUb1BhdGhBcnJheShiaW5kaW5nUGF0aCwgYmluZGluZ0RhdGEpO1xuICAgIGNvbnN0IHBhdGhMZW4gPSBwYXRoQXJyYXkubGVuZ3RoO1xuXG4gICAgY29uc3Qgb2JqZWN0Q29kZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHBhdGhMZW47IGkgPSBpICsgMikge1xuICAgICAgb2JqZWN0Q29kZXMucHVzaChwYXRoQXJyYXlbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiBvYmplY3RDb2RlcztcbiAgfVxuXG4gIC8qKlxuICAgKiDovazmjaLkuLppZOaVsOe7hO+8jOWMheWQq+acgOWQjuS4gOe6p+eahOS4u+mUrlxuICAgKiDkuLvooajvvIgv77yJ77yaWyBwYXJlbnRJZCBdXG4gICAqIOS7juihqO+8iC9jaGlsZENvZGVz77yJ77yaWyBwYXJlbnRJZCwgY2hpbGRJZCBdXG4gICAqIOS7juS7juihqO+8iC9jaGlsZENvZGVzL2dyYW5kQ29kZXPvvInvvJogWyBwYXJlbnRJZCwgY2hpbGRJZCwgZ3JhbmRJZF1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFRvRGF0YUlkc0ZvclVwZGF0ZShiaW5kaW5nUGF0aDogc3RyaW5nIHwgc3RyaW5nW10sIGJpbmRpbmdEYXRhOiBCaW5kaW5nRGF0YSkge1xuICAgIGNvbnN0IHBhdGhBcnJheSA9IHRoaXMuY29udmVydFRvUGF0aEFycmF5KGJpbmRpbmdQYXRoLCBiaW5kaW5nRGF0YSk7XG4gICAgY29uc3QgcGF0aExlbiA9IHBhdGhBcnJheS5sZW5ndGg7XG5cbiAgICBjb25zdCBkYXRhSWRzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoTGVuOyBpID0gaSArIDIpIHtcbiAgICAgIGRhdGFJZHMucHVzaChwYXRoQXJyYXlbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhSWRzO1xuICB9XG5cbiAgLyoqXG4gICAqIOi9rOaNouS4umlk5pWw57uE77yM5LiN5YyF5ZCr5pyA5ZCO5LiA57qn55qE5Li76ZSuXG4gICAqIOS4u+ihqO+8iC/vvInvvJpbIF1cbiAgICog5LuO6KGo77yIL2NoaWxkQ29kZXPvvInvvJpbIHBhcmVudElkIF1cbiAgICog5LuO5LuO6KGo77yIL2NoaWxkQ29kZXMvZ3JhbmRDb2Rlc++8ie+8miBbIHBhcmVudElkLCBjaGlsZElkXVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0VG9EYXRhSWRzRm9yQWRkKGJpbmRpbmdQYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSwgYmluZGluZ0RhdGE6IEJpbmRpbmdEYXRhKSB7XG4gICAgY29uc3QgZGF0YUlkcyA9IHRoaXMuY29udmVydFRvRGF0YUlkc0ZvclVwZGF0ZShiaW5kaW5nUGF0aCwgYmluZGluZ0RhdGEpO1xuICAgIGRhdGFJZHMucG9wKCk7XG4gICAgcmV0dXJuIGRhdGFJZHM7XG4gIH1cblxuICAvKipcbiAgICog5bCGRW50aXR5UGF0aFN0cmluZ+i9rOaNouS4ulVybFxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0UGF0aFRvVXJsKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3ViUGF0aHMgPSBwYXRoLnNwbGl0KCcvJyk7XG4gICAgZm9yIChsZXQgaSA9IHN1YlBhdGhzLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHtcbiAgICAgIGlmIChzdWJQYXRoc1tpXSAmJiBzdWJQYXRoc1tpXS5lbmRzV2l0aCgncycpKSB7XG4gICAgICAgIHN1YlBhdGhzW2ldID0gc3ViUGF0aHNbaV0uc3Vic3RyKDAsIHN1YlBhdGhzW2ldLmxlbmd0aCAtIDEpLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVybOS4jeWGjei9rOWwj+WGme+8jOWFvOWuueS4u+mUruacieWkp+WGmeWtl+avjeeahOaDheWGtVxuICAgIHJldHVybiBzdWJQYXRocy5qb2luKCcvJyk7IC8vIC50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIOWOu+mZpOacgOWQjueahHNcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHRyaW1UcmFpbGluZ1Moc3RyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RyLnN1YnN0cigwLCBzdHIubGVuZ3RoIC0gMSk7XG4gIH1cbiAgLyoqXG4gICAqIOi9rOaNoumAmueUqOi3r+W+hOS4uuS7heacieihqOWQjeeahOaVsOe7hFxuICAgKlxuICAgKiAxLlsnaWQ6eHh4JywnY2hpbGQxcycsJ2lkOnh4JywncHJvcCddID0+IFsnY2hpbGQxcycsJ3Byb3AnXSAgXG4gICAqIDIuWydwcm9wMScsJ3Byb3AyJywncHJvcDMnXSA9PiBbJ3Byb3AxJywncHJvcDInLCdwcm9wMyddICBcbiAgICogMy5bJ3Byb3AxJywnaWQ6eHh4JywncHJvcDInXSA9PiBbJ3Byb3AxJywncHJvcDInXSAgXG4gICAqIEBwYXJhbSBwYXRocyDlhoXnva7ot6/lvoTvvIzmoLzlvI86WydpZDp4eHgnLCdjaGlsZDFzJywnaWQ6eHgnLCdwcm9wJ11cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFBhdGhzVG9Ob2RlQ29kZXMocGF0aHM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgaWYgKCFwYXRocyB8fCBwYXRocy5sZW5ndGggPCAxKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBwYXRocy5maWx0ZXIoaXRlbSA9PiAhIWl0ZW0gJiYgaXRlbS5pbmRleE9mKCc6JykgPT09IC0xKS5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvKipcbiAgICog6L2s5o2i6YCa55So6Lev5b6E5Li65LuF5pyJ5a6e5L2T5Li76ZSu5YC855qE5pWw57uEXG4gICAqIEBwYXJhbSBwYXRocyDpgJrnlKjot6/lvoTvvIzmoLzlvI86WydpZDp4eHgnLCdjaGlsZDFzJywnaWQ6eHgnLCdwcm9wJ10gPT4gWyd4eHgnLCd4eCddXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRQYXRoc1RvSWRzKHBhdGhzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGlmICghcGF0aHMgfHwgcGF0aHMubGVuZ3RoIDwgMSkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcGF0aHMuZmlsdGVyKGl0ZW0gPT4gISFpdGVtICYmIGl0ZW0uaW5kZXhPZignOicpICE9PSAtMSkuZm9yRWFjaChpZCA9PiB7XG4gICAgICByZXN1bHQucHVzaChpZC5zcGxpdCgnOicpWzFdKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG5cbmV4cG9ydCB7IEJlZkRhdGFQYXRoVXRpbCB9O1xuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX2RhdGFfcGF0aF91dGlsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvYmVmX2RhdGFfcGF0aF91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNRLG1CQUFtQixFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFDckUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUt4Qjs7OztJQUFBO0lBcUpBLENBQUM7SUFuSkM7Ozs7OztPQU1HOzs7Ozs7Ozs7OztJQUNXLGtDQUFrQjs7Ozs7Ozs7OztJQUFoQyxVQUFpQyxXQUE4QixFQUFFLFdBQXdCO1FBQXpGLGlCQW1CQzs7WUFsQk8sZ0JBQWdCLEdBQWEsb0JBQW9CLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDOztZQUNqRixTQUFTLEdBQWEsRUFBRTs7WUFFMUIsb0JBQW9CLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXO1FBQ3ZELFNBQVMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFckQsZ0JBQWdCLENBQUMsT0FBTzs7OztRQUFDLFVBQUMsUUFBZ0I7O2dCQUNsQyxRQUFRLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUM7WUFDMUYsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLG1CQUFtQixDQUFDLElBQUksRUFBRTtnQkFDOUMsTUFBTSxJQUFJLEtBQUssQ0FBSSxRQUFRLENBQUMsSUFBSSwyREFBVyxDQUFDLENBQUM7YUFDOUM7O2dCQUNLLGtCQUFrQixHQUFHLG9CQUFvQixDQUFDLFFBQVEsQ0FBQztZQUN6RCxvQkFBb0IsR0FBRyxrQkFBa0IsQ0FBQyxXQUFXLENBQUM7WUFDdEQsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDN0MsU0FBUyxDQUFDLElBQUks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O1FBQUMsVUFBQyxJQUFJLElBQUssT0FBQSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQWxDLENBQWtDLEVBQUMsQ0FBQyxPQUFPOzs7O1FBQUMsVUFBQyxFQUFFO1lBQ3BFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsRUFBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUNILHNCQUFDO0FBQUQsQ0FBQyxBQXJKRCxJQXFKQztBQUVELE9BQU8sRUFBRSxlQUFlLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJpbmRpbmdEYXRhLCBCaW5kaW5nUHJvcGVydHlUeXBlLCBQcm9wZXJ0eVV0aWwsIEJpbmRpbmdQYXRoQ29udmVydGVyXG59IGZyb20gJ0BmYXJyaXMvZGV2a2l0JztcblxuLyoqXG4gKiBCZWbmlbDmja7kuK3lkITnp41QYXRo55qE6L2s5o2iXG4gKi9cbmNsYXNzIEJlZkRhdGFQYXRoVXRpbCB7XG5cbiAgLyoqXG4gICAqIOi9rOaNouaIkOi3r+W+hOaVsOe7hFxuICAgKiDov5Tlm57nu5PmnpzvvJpcbiAgICog5Li76KGo77yIL++8ie+8mlsgcGFyZW50SWQgXVxuICAgKiDku47ooajvvIgvY2hpbGRDb2Rlc++8ie+8mlsgcGFyZW50SWQsIGNoaWxkQ29kZXMsIGNoaWxkSWQgXVxuICAgKiDku47ku47ooajvvIgvY2hpbGRDb2Rlcy9ncmFuZENvZGVz77yJ77yaIFsgcGFyZW50SWQsIGNoaWxkQ29kZSwgY2hpbGRJZCwgZ3JhbmRDb2RlLCBncmFuZElkIF1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFRvUGF0aEFycmF5KGJpbmRpbmdQYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSwgYmluZGluZ0RhdGE6IEJpbmRpbmdEYXRhKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGJpbmRpbmdQYXRoQXJyYXk6IHN0cmluZ1tdID0gQmluZGluZ1BhdGhDb252ZXJ0ZXIudG9CaW5kaW5nUGF0aEFycmF5KGJpbmRpbmdQYXRoKTtcbiAgICBjb25zdCBwYXRoQXJyYXk6IHN0cmluZ1tdID0gW107XG5cbiAgICBsZXQgY3VycmVudEJpbmRpbmdPYmplY3QgPSBiaW5kaW5nRGF0YS5saXN0LmN1cnJlbnRJdGVtO1xuICAgIHBhdGhBcnJheS5wdXNoKGN1cnJlbnRCaW5kaW5nT2JqZWN0LnByaW1hcnlLZXlWYWx1ZSk7XG5cbiAgICBiaW5kaW5nUGF0aEFycmF5LmZvckVhY2goKHByb3BOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHByb3BJbmZvID0gUHJvcGVydHlVdGlsLmdldFByb3BlcnR5QnlOYW1lKGN1cnJlbnRCaW5kaW5nT2JqZWN0LnByb3BlcnRpZXMsIHByb3BOYW1lKTtcbiAgICAgIGlmIChwcm9wSW5mby50eXBlICE9PSBCaW5kaW5nUHJvcGVydHlUeXBlLkxpc3QpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3Byb3BJbmZvLm5hbWV95LiN5piv5a2Q6KGo5a+55bqU55qE5bGe5oCnYCk7XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50QmluZGluZ0xpc3QgPSBjdXJyZW50QmluZGluZ09iamVjdFtwcm9wTmFtZV07XG4gICAgICBjdXJyZW50QmluZGluZ09iamVjdCA9IGN1cnJlbnRCaW5kaW5nTGlzdC5jdXJyZW50SXRlbTtcbiAgICAgIHBhdGhBcnJheS5wdXNoKHRoaXMudHJpbVRyYWlsaW5nUyhwcm9wTmFtZSkpO1xuICAgICAgcGF0aEFycmF5LnB1c2goY3VycmVudEJpbmRpbmdPYmplY3QucHJpbWFyeUtleVZhbHVlKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBwYXRoQXJyYXk7XG4gIH1cblxuICAvKipcbiAgICog6L2s5o2i5Li6UmVzdFVybOmHjOeahOi3r+W+hFxuICAgKlxuICAgKiDov5Tlm57nu5PmnpzvvJpcbiAgICog5Li76KGo77yIL++8ie+8mi9cbiAgICog5LuO6KGo77yIL2ppd3RFZHVz77yJ77yaL3h4eC9qaXd0RWR1XG4gICAqIOS7juS7juihqO+8iC9qaXd0RWR1cy9qaXd0R3JhZGVz77yJ77yaIC94eHgvaml3dEVkdS94eHgvaml3dEdyYWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRUb1BhdGhVcmwoYmluZGluZ1BhdGg6IHN0cmluZyB8IHN0cmluZ1tdLCBiaW5kaW5nRGF0YTogQmluZGluZ0RhdGEpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhdGhBcnJheSA9IHRoaXMuY29udmVydFRvUGF0aEFycmF5KGJpbmRpbmdQYXRoLCBiaW5kaW5nRGF0YSk7XG4gICAgcGF0aEFycmF5LnBvcCgpO1xuICAgIHJldHVybiAnLycgKyBwYXRoQXJyYXkuam9pbignLycpO1xuICB9XG5cbiAgLyoqXG4gICAqIOi9rOaNouS4uuihqOWQjeaVsOe7hFxuICAgKiDov5Tlm57nu5PmnpzvvJpcbiAgICog5Li76KGo77yIL++8ie+8mltdXG4gICAqIOS7juihqO+8iC9jaGlsZENvZGVz77yJ77yaWyBjaGlsZENvZGVzIF1cbiAgICog5LuO5LuO6KGo77yIL2NoaWxkQ29kZXMvZ3JhbmRDb2RlcyBbY2hpbGRDb2RlICxncmFuZENvZGVdXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRUb09iamVjdENvZGVzKGJpbmRpbmdQYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSwgYmluZGluZ0RhdGE6IEJpbmRpbmdEYXRhKSB7XG4gICAgY29uc3QgcGF0aEFycmF5ID0gdGhpcy5jb252ZXJ0VG9QYXRoQXJyYXkoYmluZGluZ1BhdGgsIGJpbmRpbmdEYXRhKTtcbiAgICBjb25zdCBwYXRoTGVuID0gcGF0aEFycmF5Lmxlbmd0aDtcblxuICAgIGNvbnN0IG9iamVjdENvZGVzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCBwYXRoTGVuOyBpID0gaSArIDIpIHtcbiAgICAgIG9iamVjdENvZGVzLnB1c2gocGF0aEFycmF5W2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2JqZWN0Q29kZXM7XG4gIH1cblxuICAvKipcbiAgICog6L2s5o2i5Li6aWTmlbDnu4TvvIzljIXlkKvmnIDlkI7kuIDnuqfnmoTkuLvplK5cbiAgICog5Li76KGo77yIL++8ie+8mlsgcGFyZW50SWQgXVxuICAgKiDku47ooajvvIgvY2hpbGRDb2Rlc++8ie+8mlsgcGFyZW50SWQsIGNoaWxkSWQgXVxuICAgKiDku47ku47ooajvvIgvY2hpbGRDb2Rlcy9ncmFuZENvZGVz77yJ77yaIFsgcGFyZW50SWQsIGNoaWxkSWQsIGdyYW5kSWRdXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRUb0RhdGFJZHNGb3JVcGRhdGUoYmluZGluZ1BhdGg6IHN0cmluZyB8IHN0cmluZ1tdLCBiaW5kaW5nRGF0YTogQmluZGluZ0RhdGEpIHtcbiAgICBjb25zdCBwYXRoQXJyYXkgPSB0aGlzLmNvbnZlcnRUb1BhdGhBcnJheShiaW5kaW5nUGF0aCwgYmluZGluZ0RhdGEpO1xuICAgIGNvbnN0IHBhdGhMZW4gPSBwYXRoQXJyYXkubGVuZ3RoO1xuXG4gICAgY29uc3QgZGF0YUlkcyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aExlbjsgaSA9IGkgKyAyKSB7XG4gICAgICBkYXRhSWRzLnB1c2gocGF0aEFycmF5W2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YUlkcztcbiAgfVxuXG4gIC8qKlxuICAgKiDovazmjaLkuLppZOaVsOe7hO+8jOS4jeWMheWQq+acgOWQjuS4gOe6p+eahOS4u+mUrlxuICAgKiDkuLvooajvvIgv77yJ77yaWyBdXG4gICAqIOS7juihqO+8iC9jaGlsZENvZGVz77yJ77yaWyBwYXJlbnRJZCBdXG4gICAqIOS7juS7juihqO+8iC9jaGlsZENvZGVzL2dyYW5kQ29kZXPvvInvvJogWyBwYXJlbnRJZCwgY2hpbGRJZF1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFRvRGF0YUlkc0ZvckFkZChiaW5kaW5nUGF0aDogc3RyaW5nIHwgc3RyaW5nW10sIGJpbmRpbmdEYXRhOiBCaW5kaW5nRGF0YSkge1xuICAgIGNvbnN0IGRhdGFJZHMgPSB0aGlzLmNvbnZlcnRUb0RhdGFJZHNGb3JVcGRhdGUoYmluZGluZ1BhdGgsIGJpbmRpbmdEYXRhKTtcbiAgICBkYXRhSWRzLnBvcCgpO1xuICAgIHJldHVybiBkYXRhSWRzO1xuICB9XG5cbiAgLyoqXG4gICAqIOWwhkVudGl0eVBhdGhTdHJpbmfovazmjaLkuLpVcmxcbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFBhdGhUb1VybChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN1YlBhdGhzID0gcGF0aC5zcGxpdCgnLycpLmZpbHRlcigocCkgPT4gcCk7XG4gICAgZm9yIChsZXQgaSA9IHN1YlBhdGhzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoaSAlIDIgPT09IDApIHtcbiAgICAgICAgc3ViUGF0aHNbaV0gPSBlbmNvZGVVUklDb21wb25lbnQoc3ViUGF0aHNbaV0pO1xuICAgICAgfVxuICAgICAgaWYgKHN1YlBhdGhzW2ldICYmIHN1YlBhdGhzW2ldLmVuZHNXaXRoKCdzJykgJiYgaSAlIDIgIT09IDApIHtcbiAgICAgICAgc3ViUGF0aHNbaV0gPSBzdWJQYXRoc1tpXS5zdWJzdHIoMCwgc3ViUGF0aHNbaV0ubGVuZ3RoIC0gMSkudG9Mb3dlckNhc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdXJs5LiN5YaN6L2s5bCP5YaZ77yM5YW85a655Li76ZSu5pyJ5aSn5YaZ5a2X5q+N55qE5oOF5Ya1XG4gICAgcmV0dXJuICcvJyArIHN1YlBhdGhzLmpvaW4oJy8nKTsgLy8gLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICAvKipcbiAgICog5Y676Zmk5pyA5ZCO55qEc1xuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgdHJpbVRyYWlsaW5nUyhzdHI6IHN0cmluZykge1xuICAgIHJldHVybiBzdHIuc3Vic3RyKDAsIHN0ci5sZW5ndGggLSAxKTtcbiAgfVxuICAvKipcbiAgICog6L2s5o2i6YCa55So6Lev5b6E5Li65LuF5pyJ6KGo5ZCN55qE5pWw57uEXG4gICAqXG4gICAqIDEuWydpZDp4eHgnLCdjaGlsZDFzJywnaWQ6eHgnLCdwcm9wJ10gPT4gWydjaGlsZDFzJywncHJvcCddXG4gICAqIDIuWydwcm9wMScsJ3Byb3AyJywncHJvcDMnXSA9PiBbJ3Byb3AxJywncHJvcDInLCdwcm9wMyddXG4gICAqIDMuWydwcm9wMScsJ2lkOnh4eCcsJ3Byb3AyJ10gPT4gWydwcm9wMScsJ3Byb3AyJ11cbiAgICogQHBhcmFtIHBhdGhzIOWGhee9rui3r+W+hO+8jOagvOW8jzpbJ2lkOnh4eCcsJ2NoaWxkMXMnLCdpZDp4eCcsJ3Byb3AnXVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjb252ZXJ0UGF0aHNUb05vZGVDb2RlcyhwYXRoczogc3RyaW5nW10pIHtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBpZiAoIXBhdGhzIHx8IHBhdGhzLmxlbmd0aCA8IDEpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHBhdGhzLmZpbHRlcigoaXRlbSkgPT4gISFpdGVtICYmIGl0ZW0uaW5kZXhPZignOicpID09PSAtMSkuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvKipcbiAgICog6L2s5o2i6YCa55So6Lev5b6E5Li65LuF5pyJ5a6e5L2T5Li76ZSu5YC855qE5pWw57uEXG4gICAqIEBwYXJhbSBwYXRocyDpgJrnlKjot6/lvoTvvIzmoLzlvI86WydpZDp4eHgnLCdjaGlsZDFzJywnaWQ6eHgnLCdwcm9wJ10gPT4gWyd4eHgnLCd4eCddXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRQYXRoc1RvSWRzKHBhdGhzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIGlmICghcGF0aHMgfHwgcGF0aHMubGVuZ3RoIDwgMSkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcGF0aHMuZmlsdGVyKChpdGVtKSA9PiAhIWl0ZW0gJiYgaXRlbS5pbmRleE9mKCc6JykgIT09IC0xKS5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgcmVzdWx0LnB1c2goaWQuc3BsaXQoJzonKVsxXSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuXG5leHBvcnQgeyBCZWZEYXRhUGF0aFV0aWwgfTtcbiJdfQ==

@@ -148,3 +148,4 @@ /**

if (ResponseInfoUtil.isReported401Error(error)) {
return throwError(error);
eventBus.post('Exception', '', 'onException', error, formAppContext);
return EMPTY;
}

@@ -314,2 +315,2 @@ if (needThrowException) {

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5X2V4dGVuZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9wcm94eV9leHRlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSXpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRzNDOzs7SUFFRSx3QkFBb0IsT0FBOEI7UUFBOUIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7O1lBQzFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtRQUMzQyxJQUFJLFFBQVEsRUFBRTtZQUNaLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDMUQ7SUFDSCxDQUFDO0lBQ0Q7Ozs7T0FJRzs7Ozs7Ozs7SUFDSSxtQ0FBVTs7Ozs7OztJQUFqQixVQUFrQixRQUFzQixFQUFFLGFBQXVCLEVBQUUsT0FBYTtRQUM5RSxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsZUFBZSxJQUFJLGFBQWEsS0FBSyxJQUFJLEVBQUU7WUFDbEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDaEU7UUFDRCxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsbUJBQW1CLEVBQUU7WUFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUN2RTs7WUFDSyxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDO1FBQy9ELGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQzs7WUFDL0IsV0FBVyxHQUFHLGVBQWUsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDOztZQUNyRCxjQUFjLEdBQUcsV0FBVyxJQUFJLFdBQVcsQ0FBQyxjQUFjO1FBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckQsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUN0RCxPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUM7U0FDN0I7YUFBTTtZQUNMLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztJQUNEOzs7OztPQUtHOzs7Ozs7OztJQUNJLGdDQUFPOzs7Ozs7O0lBQWQsVUFBZSxLQUFVLEVBQUUsYUFBc0IsRUFBRSxXQUFvQjtRQUF2RSxpQkFnREM7OztZQS9DTyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUU7O1lBQzVELGFBQWEsR0FBRyxjQUFjLENBQUMsYUFBYTs7WUFDNUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQzs7WUFDbEQsUUFBUSxHQUFHLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQztRQUMxRCxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN2RSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsTUFBTSxDQUFDLFVBQVU7OztZQUFDO2dCQUNoQixLQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pDLENBQUMsR0FBRSxHQUFHLENBQUMsQ0FBQztTQUNUO1FBQ0QsSUFBSSxlQUFlLElBQUksZUFBZSxZQUFZLEtBQUssSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTs7Z0JBQ3JGLEtBQTZCLElBQUEsb0JBQUEsaUJBQUEsZUFBZSxDQUFBLGdEQUFBLDZFQUFFO29CQUF6QyxJQUFNLGNBQWMsNEJBQUE7b0JBQ3ZCLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxVQUFVLEVBQUU7d0JBQ2xELGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztxQkFDMUI7aUJBQ0Y7Ozs7Ozs7OztTQUNGO1FBRUQsSUFBSSxDQUFDLENBQUMsYUFBYSxFQUFFO1lBQ25CLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFCO2FBQU07O2dCQUNDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFROztnQkFDNUMsa0JBQWtCLEdBQVEsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUU7O2dCQUNyRCx1QkFBdUIsR0FBRyxDQUFDLENBQUMsa0JBQWtCLENBQUMsdUJBQXVCOztnQkFDdEUsVUFBUSxHQUFHLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQzs7Z0JBQ3BELFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFRLENBQUM7O2dCQUM5RCxzQkFBc0IsR0FBRyxXQUFXLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSzs7Z0JBQ3ZFLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLGdCQUFnQixJQUFJLGtCQUFrQixDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDOztnQkFDdEwsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsSUFBSSx1QkFBdUIsSUFBSSxrQkFBa0I7WUFDdEYsa0JBQWtCLENBQUMsYUFBYSxDQUFDLFVBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLE9BQUEsRUFBRSxjQUFjLGdCQUFBLEVBQUUsQ0FBQyxDQUFDO1lBQzVLLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSx1QkFBdUIsRUFBRTtnQkFDekMsSUFBSSxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDOUMsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzFCO2dCQUNELElBQUksa0JBQWtCLEVBQUU7b0JBQ3RCLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO2lCQUN0RTtnQkFDRCxJQUFJLFdBQVcsRUFBRTtvQkFDZixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDakI7cUJBQU07b0JBQ0wsT0FBTyxLQUFLLENBQUM7aUJBQ2Q7YUFDRjtpQkFBTTtnQkFDTCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUMxQjtTQUVGO0lBQ0gsQ0FBQztJQUNEOzs7T0FHRzs7Ozs7OztJQUNJLHNDQUFhOzs7Ozs7SUFBcEIsVUFBcUIsT0FBb0IsRUFBRSxjQUFvQjtRQUEvRCxpQkFpQkM7O1lBaEJPLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRTs7WUFDOUQsS0FBSyxHQUFHLGNBQWMsSUFBSSxjQUFjLENBQUMsS0FBSztRQUNsRCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQzdCLFdBQVc7WUFDWCxLQUFLLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxLQUFLLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDNUIsY0FBYyxHQUFHLEVBQUUsS0FBSyxPQUFBLEVBQUUsQ0FBQztTQUM1Qjs7WUFDSyxhQUFhLEdBQUcsaUJBQWlCLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUM7UUFDN0csT0FBTyxhQUFhLENBQUMsSUFBSSxDQUN2QixTQUFTOzs7O1FBQUMsVUFBQSxTQUFTO1lBQ2pCLE9BQU8sR0FBRyxLQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ2hHLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JCLENBQUMsRUFBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBQ0Q7OztPQUdHOzs7Ozs7O0lBQ0ksa0NBQVM7Ozs7OztJQUFoQixVQUFpQixHQUFXLEVBQUUsTUFBbUM7UUFDL0QsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLE9BQU8sR0FBRyxDQUFDO1NBQ1o7UUFDRCxLQUFLLElBQU0sR0FBRyxJQUFJLE1BQU0sRUFBRTtZQUN4QixJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7O29CQUN4QixLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3pDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtvQkFDM0IsR0FBRyxHQUFNLEdBQUcsU0FBSSxHQUFHLFNBQUksS0FBTyxDQUFDO2lCQUNoQztxQkFBTTtvQkFDTCxHQUFHLEdBQU0sR0FBRyxTQUFJLEdBQUcsU0FBSSxLQUFPLENBQUM7aUJBQ2hDO2FBQ0Y7U0FDRjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUNEOzs7T0FHRzs7Ozs7O0lBQ0ksbUNBQVU7Ozs7O0lBQWpCLFVBQWtCLElBQUk7UUFBdEIsaUJBY0M7UUFiQyxJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckUsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTzs7OztRQUFDLFVBQUEsSUFBSTtZQUM1QixJQUFJLElBQUksS0FBSyxhQUFhLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxLQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2FBQ25FO1FBQ0gsQ0FBQyxFQUFDLENBQUM7UUFDSCxtQ0FBbUM7UUFDbkMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDbEMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDL0I7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Ozs7O0lBQ00scUNBQVk7Ozs7SUFBbkIsVUFBb0IsUUFBYTs7WUFDekIsWUFBWSxHQUFHLGNBQWM7O1lBQzdCLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRTs7WUFDOUQsY0FBYyxHQUFHLElBQUk7O1lBQ25CLEtBQUssR0FBRyxjQUFjLElBQUksY0FBYyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO1FBQzFFLElBQUksS0FBSyxFQUFFO1lBQ1QsY0FBYyxHQUFHLEVBQUUsS0FBSyxPQUFBLEVBQUUsQ0FBQztTQUM1QjtRQUNELElBQUksUUFBUSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1NBQzVHO0lBQ0gsQ0FBQztJQUNILHFCQUFDO0FBQUQsQ0FBQyxBQWhLRCxJQWdLQzs7Ozs7Ozs7SUEvSkMsd0NBQXVDOzs7OztJQUMzQixpQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0aHJvd0Vycm9yLCBPYnNlcnZhYmxlLCBvZiwgRU1QVFkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJ0BmYXJyaXMvZGV2a2l0JztcbmltcG9ydCB7IElQcm94eUV4dGVuZCwgUmVzcG9uc2VJbmZvIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBCZWZSZXBvc2l0b3J5IH0gZnJvbSAnLi9iZWZfcmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwUGFyYW1zLCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFJlcXVlc3RJbmZvVXRpbCwgUmVzcG9uc2VJbmZvVXRpbCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQmFja0VuZE1lc3NhZ2VVdGlsIH0gZnJvbSAnLi91dGlscy9iYWNrX2VuZF9tZXNzYWdlLnV0aWwnO1xuaW1wb3J0IHsgQmVmU2Vzc2lvbk1hbmFnZXIgfSBmcm9tICcuL3Nlc3Npb24vYmVmX3Nlc3Npb25fbWFuYWdlcic7XG5pbXBvcnQgeyBMb2FkaW5nU2VydmljZSB9IGZyb20gJ0BmYXJyaXMvdWktbG9hZGluZyc7XG5pbXBvcnQgeyBUYWJVdGlsIH0gZnJvbSAnLi91dGlscy90YWIudXRpbCc7XG5cbi8vIHRzbGludDpkaXNhYmxlOiBtYXgtbGluZS1sZW5ndGggdHNsaW50OmRpc2FibGU6IG5vLXN0cmluZy1saXRlcmFsXG5leHBvcnQgY2xhc3MgQmVmUHJveHlFeHRlbmQgaW1wbGVtZW50cyBJUHJveHlFeHRlbmQge1xuICBwcml2YXRlIGxvYWRpbmdTZXJ2aWNlOiBMb2FkaW5nU2VydmljZTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb250ZXh0OiBCZWZSZXBvc2l0b3J5PEVudGl0eT4pIHtcbiAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuY29udGV4dC5nZXRJbmplY3RvcigpO1xuICAgIGlmIChpbmplY3Rvcikge1xuICAgICAgdGhpcy5sb2FkaW5nU2VydmljZSA9IGluamVjdG9yLmdldChMb2FkaW5nU2VydmljZSwgbnVsbCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiDor7fmsYLnu5Pmnpzov5Tlm55cbiAgICogQHBhcmFtIHJlc3BvbnNlIHJlc3BvbnNlXG4gICAqIEBwYXJhbSBpZ25vcmVDaGFuZ2VzIOW/veeVpeWPmOabtFxuICAgKi9cbiAgcHVibGljIG9uUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlSW5mbywgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4sIG9wdGlvbnM/OiBhbnkpIHtcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaW5uZXJEYXRhQ2hhbmdlICYmIGlnbm9yZUNoYW5nZXMgIT09IHRydWUpIHtcbiAgICAgIHRoaXMuY29udGV4dC5oYW5kbGVEYXRhQ2hhbmdlRGV0YWlscyhyZXNwb25zZS5pbm5lckRhdGFDaGFuZ2UpO1xuICAgIH1cbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaW5uZXJWYXJpYWJsZUNoYW5nZSkge1xuICAgICAgdGhpcy5jb250ZXh0LmhhbmRsZVZhcmlhYmxlQ2hhbmdlRGV0YWlsKHJlc3BvbnNlLmlubmVyVmFyaWFibGVDaGFuZ2UpO1xuICAgIH1cbiAgICBjb25zdCBtZXNzYWdlcyA9IFJlc3BvbnNlSW5mb1V0aWwucGFyc2VCYWNrRW5kTWVzc2FnZShyZXNwb25zZSk7XG4gICAgQmFja0VuZE1lc3NhZ2VVdGlsLmhhbmRsZU1lc3NhZ2UobWVzc2FnZXMsIHRoaXMuY29udGV4dC5nZXRJbmplY3RvcigpKTtcbiAgICB0aGlzLmNvbnRleHQuY2xlYXJBbGxFbnRpdHlDaGFuZ2VzKCk7XG4gICAgY29uc3QgcmVxdWVzdEluZm8gPSBSZXF1ZXN0SW5mb1V0aWwuZ2V0UmVxdWVzdEluZm8ob3B0aW9ucyk7XG4gICAgY29uc3QgdmFyaWFibGVDaGFuZ2UgPSByZXF1ZXN0SW5mbyAmJiByZXF1ZXN0SW5mby52YXJpYWJsZUNoYW5nZTtcbiAgICB0aGlzLmNvbnRleHQuY2xlYXJBbGxWYXJpYWJsZUNoYW5nZXModmFyaWFibGVDaGFuZ2UpO1xuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5oYXNPd25Qcm9wZXJ0eSgncmV0dXJuVmFsdWUnKSkge1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLnJldHVyblZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiDlj5HnlJ/plJnor69cbiAgICogQHBhcmFtIGVycm9yIGVycm9yXG4gICAqIEBwYXJhbSBzZWxmSGFuZEVycm9yIOiHquWumuS5iemUmeivr+WkhOeQhlxuICAgKiBAcGFyYW0gaWdub3JlRXJyb3Ig5b+955Wl6ZSZ6K+vXG4gICAqL1xuICBwdWJsaWMgb25FcnJvcihlcnJvcjogYW55LCBzZWxmSGFuZEVycm9yOiBib29sZWFuLCBpZ25vcmVFcnJvcjogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgZm9ybUFwcENvbnRleHQgPSB0aGlzLmNvbnRleHQuYXBwQ29udGV4dC5nZXRGb3JtQXBwQ29udGV4dCgpO1xuICAgIGNvbnN0IGFwcGxpY2F0aW9uSWQgPSBmb3JtQXBwQ29udGV4dC5BcHBsaWNhdGlvbklkO1xuICAgIGNvbnN0IGxvYWRpbmdTZXJ2aWNlcyA9IHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddO1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gUmVzcG9uc2VJbmZvVXRpbC5wYXJzZUJhY2tFbmRFcnJvcihlcnJvcik7XG4gICAgQmFja0VuZE1lc3NhZ2VVdGlsLmhhbmRsZU1lc3NhZ2UobWVzc2FnZXMsIHRoaXMuY29udGV4dC5nZXRJbmplY3RvcigpKTtcbiAgICBpZiAodGhpcy5sb2FkaW5nU2VydmljZSkge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLmNsZWFyQWxsKCk7XG4gICAgICB9LCAzNTApO1xuICAgIH1cbiAgICBpZiAobG9hZGluZ1NlcnZpY2VzICYmIGxvYWRpbmdTZXJ2aWNlcyBpbnN0YW5jZW9mIEFycmF5ICYmIGxvYWRpbmdTZXJ2aWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGxvYWRpbmdTZXJ2aWNlIG9mIGxvYWRpbmdTZXJ2aWNlcykge1xuICAgICAgICBpZiAodHlwZW9mIChsb2FkaW5nU2VydmljZS5kZXN0cm95KSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGxvYWRpbmdTZXJ2aWNlLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghIXNlbGZIYW5kRXJyb3IpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXZlbnRCdXMgPSB0aGlzLmNvbnRleHQucmVzdFNlcnZpY2UuZXZlbnRCdXM7XG4gICAgICBjb25zdCBhcHBsaWNhdGlvbkNvbnRleHQ6IGFueSA9IHdpbmRvd1thcHBsaWNhdGlvbklkXSB8fCB7fTtcbiAgICAgIGNvbnN0IGlzRXhjZXB0aW9uSGFuZGxlckV4aXN0ID0gISFhcHBsaWNhdGlvbkNvbnRleHQuaXNFeGNlcHRpb25IYW5kbGVyRXhpc3Q7XG4gICAgICBjb25zdCBtZXNzYWdlcyA9IFJlc3BvbnNlSW5mb1V0aWwucGFyc2VCYWNrRW5kRXJyb3IoZXJyb3IpO1xuICAgICAgY29uc3QgYml6TWVzc2FnZXMgPSBCYWNrRW5kTWVzc2FnZVV0aWwuZ2V0Rm9ybWxlc3NNZXNzYWdlcyhtZXNzYWdlcyk7XG4gICAgICBjb25zdCBpc0V4aXN0Rm9ybWxlc3NNZXNzYWdlID0gYml6TWVzc2FnZXMgJiYgYml6TWVzc2FnZXMubGVuZ3RoID4gMCB8fCBmYWxzZTtcbiAgICAgIGNvbnN0IG5lZWRUaHJvd0V4Y2VwdGlvbiA9ICEoZXJyb3IgJiYgZXJyb3IuZXJyb3IgJiYgZXJyb3IuZXJyb3IuZXh0ZW5zaW9uTWVzc2FnZSAmJiBCYWNrRW5kTWVzc2FnZVV0aWwuaXNCYWNrRW5kTWVzc2FnZUhhbmRsZXJFeGlzdCh0aGlzLmNvbnRleHQuZ2V0SW5qZWN0b3IoKSkgJiYgIWlzRXhpc3RGb3JtbGVzc01lc3NhZ2UpO1xuICAgICAgY29uc3Qgd2lsbFRocm93RXhjZXB0aW9uID0gISFldmVudEJ1cyAmJiBpc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdCAmJiBuZWVkVGhyb3dFeGNlcHRpb247XG4gICAgICBCYWNrRW5kTWVzc2FnZVV0aWwuaGFuZGxlTWVzc2FnZShtZXNzYWdlcywgdGhpcy5jb250ZXh0LmdldEluamVjdG9yKCksIHsgaGFzVGhyb3dFcnJvcjogd2lsbFRocm93RXhjZXB0aW9uLCBpc0V4Y2VwdGlvbjogdHJ1ZSwgZXZlbnRCdXM6IGV2ZW50QnVzLCBlcnJvciwgZm9ybUFwcENvbnRleHQgfSk7XG4gICAgICBpZiAoISFldmVudEJ1cyAmJiBpc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdCkge1xuICAgICAgICBpZiAoUmVzcG9uc2VJbmZvVXRpbC5pc1JlcG9ydGVkNDAxRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZWVkVGhyb3dFeGNlcHRpb24pIHtcbiAgICAgICAgICBldmVudEJ1cy5wb3N0KCdFeGNlcHRpb24nLCAnJywgJ29uRXhjZXB0aW9uJywgZXJyb3IsIGZvcm1BcHBDb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaWdub3JlRXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICB9XG5cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIOaJqeWxlWh0dHAgaGVhZGVyc1xuICAgKiBAcGFyYW0gaGVhZGVycyBoZWFkZXJzXG4gICAqL1xuICBwdWJsaWMgZXh0ZW5kSGVhZGVycyhoZWFkZXJzOiBIdHRwSGVhZGVycywgcnVudGltZUNvbnRleHQ/OiBhbnkpOiBPYnNlcnZhYmxlPHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfT4ge1xuICAgIGNvbnN0IGZvcm1BcHBDb250ZXh0ID0gdGhpcy5jb250ZXh0LmFwcENvbnRleHQuZ2V0Rm9ybUFwcENvbnRleHQoKTtcbiAgICBsZXQgdGFiSWQgPSBmb3JtQXBwQ29udGV4dCAmJiBmb3JtQXBwQ29udGV4dC50YWJJZDtcbiAgICBpZiAoIXRhYklkICYmICFydW50aW1lQ29udGV4dCkge1xuICAgICAgLy8g6KGo5Y2V5pyq5Yid5aeL5YyW5a6M5oiQXG4gICAgICB0YWJJZCA9IFRhYlV0aWwuZ2V0VGFiSWQoKTtcbiAgICB9XG4gICAgaWYgKHRhYklkICYmICFydW50aW1lQ29udGV4dCkge1xuICAgICAgcnVudGltZUNvbnRleHQgPSB7IHRhYklkIH07XG4gICAgfVxuICAgIGNvbnN0ICRnZXRTZXNzaW9uSWQgPSBCZWZTZXNzaW9uTWFuYWdlci5nZXRTZXNzaW9uSWQoZm9ybUFwcENvbnRleHQsIHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5zZXNzaW9uU2VydmljZSk7XG4gICAgcmV0dXJuICRnZXRTZXNzaW9uSWQucGlwZShcbiAgICAgIHN3aXRjaE1hcChzZXNzaW9uSWQgPT4ge1xuICAgICAgICBoZWFkZXJzID0gdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLnNlc3Npb25TZXJ2aWNlLmV4dGVuZFJlcXVlc3RIZWFkZXJzKGhlYWRlcnMsIHJ1bnRpbWVDb250ZXh0KTtcbiAgICAgICAgcmV0dXJuIG9mKGhlYWRlcnMpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG4gIC8qKlxuICAgKiDmianlsZXor7fmsYLlj4LmlbBcbiAgICogQHBhcmFtIHBhcmFtcyDlj4LmlbBcbiAgICovXG4gIHB1YmxpYyBleHRlbmRVcmwodXJsOiBzdHJpbmcsIHBhcmFtczogeyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9KTogc3RyaW5nIHtcbiAgICBpZiAoIXBhcmFtcykge1xuICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgaW4gcGFyYW1zKSB7XG4gICAgICBpZiAocGFyYW1zLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBKU09OLnN0cmluZ2lmeShwYXJhbXNba2V5XSk7XG4gICAgICAgIGlmICh1cmwuaW5kZXhPZignPycpID09PSAtMSkge1xuICAgICAgICAgIHVybCA9IGAke3VybH0/JHtrZXl9PSR7dmFsdWV9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cmwgPSBgJHt1cmx9JiR7a2V5fT0ke3ZhbHVlfWA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVybDtcbiAgfVxuICAvKipcbiAgICog5omp5bGV6K+35rGC5L2TXG4gICAqIEBwYXJhbSBib2R5IGJvZHlcbiAgICovXG4gIHB1YmxpYyBleHRlbmRCb2R5KGJvZHkpOiB7IFtwcm9wTmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIGlmICghYm9keSB8fCB0eXBlb2YgYm9keSAhPT0gJ29iamVjdCcgfHwgT2JqZWN0LmtleXMoYm9keSkubGVuZ3RoIDwgMSkge1xuICAgICAgcmV0dXJuIGJvZHk7XG4gICAgfVxuICAgIE9iamVjdC5rZXlzKGJvZHkpLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICBpZiAobmFtZSA9PT0gJ3JlcXVlc3RJbmZvJykge1xuICAgICAgICBib2R5WydyZXF1ZXN0SW5mbyddID0gdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLmJ1aWxkUmVxdWVzdEluZm8oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyDlhbzlrrlK54mI5ZCO56uvYm9keeWPquacieS4gOS4qmtleeaXtmJvZHnlj6rkvKB2YWx1ZeeahOaDheWGtVxuICAgIGlmIChPYmplY3Qua2V5cyhib2R5KS5sZW5ndGggPT09IDEpIHtcbiAgICAgIGJvZHkgPSBPYmplY3QudmFsdWVzKGJvZHkpWzBdO1xuICAgIH1cbiAgICByZXR1cm4gYm9keTtcbiAgfVxuICBwdWJsaWMgcGFyc2VIZWFkZXJzKHJlc3BvbnNlOiBhbnkpIHtcbiAgICBjb25zdCBzZXNzaW9uSWRLZXkgPSAnQkVGU2Vzc2lvbklEJztcbiAgICBjb25zdCBmb3JtQXBwQ29udGV4dCA9IHRoaXMuY29udGV4dC5hcHBDb250ZXh0LmdldEZvcm1BcHBDb250ZXh0KCk7XG4gICAgbGV0IHJ1bnRpbWVDb250ZXh0ID0gbnVsbDtcbiAgICBjb25zdCB0YWJJZCA9IGZvcm1BcHBDb250ZXh0ICYmIGZvcm1BcHBDb250ZXh0LnRhYklkIHx8IFRhYlV0aWwuZ2V0VGFiSWQoKTtcbiAgICBpZiAodGFiSWQpIHtcbiAgICAgIHJ1bnRpbWVDb250ZXh0ID0geyB0YWJJZCB9O1xuICAgIH1cbiAgICBpZiAocmVzcG9uc2UuaGVhZGVycyAmJiByZXNwb25zZS5oZWFkZXJzLmhhcyhzZXNzaW9uSWRLZXkpKSB7XG4gICAgICB0aGlzLmNvbnRleHQucmVzdFNlcnZpY2Uuc2Vzc2lvblNlcnZpY2Uuc2V0QmVTZXNzaW9uSWQocmVzcG9uc2UuaGVhZGVycy5nZXQoc2Vzc2lvbklkS2V5KSwgcnVudGltZUNvbnRleHQpO1xuICAgIH1cbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5X2V4dGVuZC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9wcm94eV9leHRlbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSXpELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRzNDOzs7SUFFRSx3QkFBb0IsT0FBOEI7UUFBOUIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7O1lBQzFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtRQUMzQyxJQUFJLFFBQVEsRUFBRTtZQUNaLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDMUQ7SUFDSCxDQUFDO0lBQ0Q7Ozs7T0FJRzs7Ozs7Ozs7SUFDSSxtQ0FBVTs7Ozs7OztJQUFqQixVQUFrQixRQUFzQixFQUFFLGFBQXVCLEVBQUUsT0FBYTtRQUM5RSxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsZUFBZSxJQUFJLGFBQWEsS0FBSyxJQUFJLEVBQUU7WUFDbEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDaEU7UUFDRCxJQUFJLFFB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QzFFLElBQUksS0FBSyxFQUFFO1lBQ1QsY0FBYyxHQUFHLEVBQUUsS0FBSyxPQUFBLEVBQUUsQ0FBQztTQUM1QjtRQUNELElBQUksUUFBUSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1NBQzVHO0lBQ0gsQ0FBQztJQUNILHFCQUFDO0FBQUQsQ0FBQyxBQWhLRCxJQWdLQzs7Ozs7Ozs7SUEvSkMsd0NBQXVDOzs7OztJQUMzQixpQ0FBc0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0aHJvd0Vycm9yLCBPYnNlcnZhYmxlLCBvZiwgRU1QVFkgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJ0BmYXJyaXMvZGV2a2l0JztcbmltcG9ydCB7IElQcm94eUV4dGVuZCwgUmVzcG9uc2VJbmZvIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBCZWZSZXBvc2l0b3J5IH0gZnJvbSAnLi9iZWZfcmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwUGFyYW1zLCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFJlcXVlc3RJbmZvVXRpbCwgUmVzcG9uc2VJbmZvVXRpbCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQmFja0VuZE1lc3NhZ2VVdGlsIH0gZnJvbSAnLi91dGlscy9iYWNrX2VuZF9tZXNzYWdlLnV0aWwnO1xuaW1wb3J0IHsgQmVmU2Vzc2lvbk1hbmFnZXIgfSBmcm9tICcuL3Nlc3Npb24vYmVmX3Nlc3Npb25fbWFuYWdlcic7XG5pbXBvcnQgeyBMb2FkaW5nU2VydmljZSB9IGZyb20gJ0BmYXJyaXMvdWktbG9hZGluZyc7XG5pbXBvcnQgeyBUYWJVdGlsIH0gZnJvbSAnLi91dGlscy90YWIudXRpbCc7XG5cbi8vIHRzbGludDpkaXNhYmxlOiBtYXgtbGluZS1sZW5ndGggdHNsaW50OmRpc2FibGU6IG5vLXN0cmluZy1saXRlcmFsXG5leHBvcnQgY2xhc3MgQmVmUHJveHlFeHRlbmQgaW1wbGVtZW50cyBJUHJveHlFeHRlbmQge1xuICBwcml2YXRlIGxvYWRpbmdTZXJ2aWNlOiBMb2FkaW5nU2VydmljZTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb250ZXh0OiBCZWZSZXBvc2l0b3J5PEVudGl0eT4pIHtcbiAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuY29udGV4dC5nZXRJbmplY3RvcigpO1xuICAgIGlmIChpbmplY3Rvcikge1xuICAgICAgdGhpcy5sb2FkaW5nU2VydmljZSA9IGluamVjdG9yLmdldChMb2FkaW5nU2VydmljZSwgbnVsbCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiDor7fmsYLnu5Pmnpzov5Tlm55cbiAgICogQHBhcmFtIHJlc3BvbnNlIHJlc3BvbnNlXG4gICAqIEBwYXJhbSBpZ25vcmVDaGFuZ2VzIOW/veeVpeWPmOabtFxuICAgKi9cbiAgcHVibGljIG9uUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlSW5mbywgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4sIG9wdGlvbnM/OiBhbnkpIHtcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaW5uZXJEYXRhQ2hhbmdlICYmIGlnbm9yZUNoYW5nZXMgIT09IHRydWUpIHtcbiAgICAgIHRoaXMuY29udGV4dC5oYW5kbGVEYXRhQ2hhbmdlRGV0YWlscyhyZXNwb25zZS5pbm5lckRhdGFDaGFuZ2UpO1xuICAgIH1cbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UuaW5uZXJWYXJpYWJsZUNoYW5nZSkge1xuICAgICAgdGhpcy5jb250ZXh0LmhhbmRsZVZhcmlhYmxlQ2hhbmdlRGV0YWlsKHJlc3BvbnNlLmlubmVyVmFyaWFibGVDaGFuZ2UpO1xuICAgIH1cbiAgICBjb25zdCBtZXNzYWdlcyA9IFJlc3BvbnNlSW5mb1V0aWwucGFyc2VCYWNrRW5kTWVzc2FnZShyZXNwb25zZSk7XG4gICAgQmFja0VuZE1lc3NhZ2VVdGlsLmhhbmRsZU1lc3NhZ2UobWVzc2FnZXMsIHRoaXMuY29udGV4dC5nZXRJbmplY3RvcigpKTtcbiAgICB0aGlzLmNvbnRleHQuY2xlYXJBbGxFbnRpdHlDaGFuZ2VzKCk7XG4gICAgY29uc3QgcmVxdWVzdEluZm8gPSBSZXF1ZXN0SW5mb1V0aWwuZ2V0UmVxdWVzdEluZm8ob3B0aW9ucyk7XG4gICAgY29uc3QgdmFyaWFibGVDaGFuZ2UgPSByZXF1ZXN0SW5mbyAmJiByZXF1ZXN0SW5mby52YXJpYWJsZUNoYW5nZTtcbiAgICB0aGlzLmNvbnRleHQuY2xlYXJBbGxWYXJpYWJsZUNoYW5nZXModmFyaWFibGVDaGFuZ2UpO1xuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5oYXNPd25Qcm9wZXJ0eSgncmV0dXJuVmFsdWUnKSkge1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLnJldHVyblZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiDlj5HnlJ/plJnor69cbiAgICogQHBhcmFtIGVycm9yIGVycm9yXG4gICAqIEBwYXJhbSBzZWxmSGFuZEVycm9yIOiHquWumuS5iemUmeivr+WkhOeQhlxuICAgKiBAcGFyYW0gaWdub3JlRXJyb3Ig5b+955Wl6ZSZ6K+vXG4gICAqL1xuICBwdWJsaWMgb25FcnJvcihlcnJvcjogYW55LCBzZWxmSGFuZEVycm9yOiBib29sZWFuLCBpZ25vcmVFcnJvcjogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgZm9ybUFwcENvbnRleHQgPSB0aGlzLmNvbnRleHQuYXBwQ29udGV4dC5nZXRGb3JtQXBwQ29udGV4dCgpO1xuICAgIGNvbnN0IGFwcGxpY2F0aW9uSWQgPSBmb3JtQXBwQ29udGV4dC5BcHBsaWNhdGlvbklkO1xuICAgIGNvbnN0IGxvYWRpbmdTZXJ2aWNlcyA9IHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddO1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gUmVzcG9uc2VJbmZvVXRpbC5wYXJzZUJhY2tFbmRFcnJvcihlcnJvcik7XG4gICAgQmFja0VuZE1lc3NhZ2VVdGlsLmhhbmRsZU1lc3NhZ2UobWVzc2FnZXMsIHRoaXMuY29udGV4dC5nZXRJbmplY3RvcigpKTtcbiAgICBpZiAodGhpcy5sb2FkaW5nU2VydmljZSkge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLmNsZWFyQWxsKCk7XG4gICAgICB9LCAzNTApO1xuICAgIH1cbiAgICBpZiAobG9hZGluZ1NlcnZpY2VzICYmIGxvYWRpbmdTZXJ2aWNlcyBpbnN0YW5jZW9mIEFycmF5ICYmIGxvYWRpbmdTZXJ2aWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGxvYWRpbmdTZXJ2aWNlIG9mIGxvYWRpbmdTZXJ2aWNlcykge1xuICAgICAgICBpZiAodHlwZW9mIChsb2FkaW5nU2VydmljZS5kZXN0cm95KSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGxvYWRpbmdTZXJ2aWNlLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghIXNlbGZIYW5kRXJyb3IpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXZlbnRCdXMgPSB0aGlzLmNvbnRleHQucmVzdFNlcnZpY2UuZXZlbnRCdXM7XG4gICAgICBjb25zdCBhcHBsaWNhdGlvbkNvbnRleHQ6IGFueSA9IHdpbmRvd1thcHBsaWNhdGlvbklkXSB8fCB7fTtcbiAgICAgIGNvbnN0IGlzRXhjZXB0aW9uSGFuZGxlckV4aXN0ID0gISFhcHBsaWNhdGlvbkNvbnRleHQuaXNFeGNlcHRpb25IYW5kbGVyRXhpc3Q7XG4gICAgICBjb25zdCBtZXNzYWdlcyA9IFJlc3BvbnNlSW5mb1V0aWwucGFyc2VCYWNrRW5kRXJyb3IoZXJyb3IpO1xuICAgICAgY29uc3QgYml6TWVzc2FnZXMgPSBCYWNrRW5kTWVzc2FnZVV0aWwuZ2V0Rm9ybWxlc3NNZXNzYWdlcyhtZXNzYWdlcyk7XG4gICAgICBjb25zdCBpc0V4aXN0Rm9ybWxlc3NNZXNzYWdlID0gYml6TWVzc2FnZXMgJiYgYml6TWVzc2FnZXMubGVuZ3RoID4gMCB8fCBmYWxzZTtcbiAgICAgIGNvbnN0IG5lZWRUaHJvd0V4Y2VwdGlvbiA9ICEoZXJyb3IgJiYgZXJyb3IuZXJyb3IgJiYgZXJyb3IuZXJyb3IuZXh0ZW5zaW9uTWVzc2FnZSAmJiBCYWNrRW5kTWVzc2FnZVV0aWwuaXNCYWNrRW5kTWVzc2FnZUhhbmRsZXJFeGlzdCh0aGlzLmNvbnRleHQuZ2V0SW5qZWN0b3IoKSkgJiYgIWlzRXhpc3RGb3JtbGVzc01lc3NhZ2UpO1xuICAgICAgY29uc3Qgd2lsbFRocm93RXhjZXB0aW9uID0gISFldmVudEJ1cyAmJiBpc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdCAmJiBuZWVkVGhyb3dFeGNlcHRpb247XG4gICAgICBCYWNrRW5kTWVzc2FnZVV0aWwuaGFuZGxlTWVzc2FnZShtZXNzYWdlcywgdGhpcy5jb250ZXh0LmdldEluamVjdG9yKCksIHsgaGFzVGhyb3dFcnJvcjogd2lsbFRocm93RXhjZXB0aW9uLCBpc0V4Y2VwdGlvbjogdHJ1ZSwgZXZlbnRCdXM6IGV2ZW50QnVzLCBlcnJvciwgZm9ybUFwcENvbnRleHQgfSk7XG4gICAgICBpZiAoISFldmVudEJ1cyAmJiBpc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdCkge1xuICAgICAgICBpZiAoUmVzcG9uc2VJbmZvVXRpbC5pc1JlcG9ydGVkNDAxRXJyb3IoZXJyb3IpKSB7XG4gICAgICAgICAgZXZlbnRCdXMucG9zdCgnRXhjZXB0aW9uJywgJycsICdvbkV4Y2VwdGlvbicsIGVycm9yLCBmb3JtQXBwQ29udGV4dCk7XG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZWVkVGhyb3dFeGNlcHRpb24pIHtcbiAgICAgICAgICBldmVudEJ1cy5wb3N0KCdFeGNlcHRpb24nLCAnJywgJ29uRXhjZXB0aW9uJywgZXJyb3IsIGZvcm1BcHBDb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaWdub3JlRXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiDmianlsZVodHRwIGhlYWRlcnNcbiAgICogQHBhcmFtIGhlYWRlcnMgaGVhZGVyc1xuICAgKi9cbiAgcHVibGljIGV4dGVuZEhlYWRlcnMoaGVhZGVyczogSHR0cEhlYWRlcnMsIHJ1bnRpbWVDb250ZXh0PzogYW55KTogT2JzZXJ2YWJsZTx7IFtwcm9wTmFtZTogc3RyaW5nXTogYW55IH0+IHtcbiAgICBjb25zdCBmb3JtQXBwQ29udGV4dCA9IHRoaXMuY29udGV4dC5hcHBDb250ZXh0LmdldEZvcm1BcHBDb250ZXh0KCk7XG4gICAgbGV0IHRhYklkID0gZm9ybUFwcENvbnRleHQgJiYgZm9ybUFwcENvbnRleHQudGFiSWQ7XG4gICAgaWYgKCF0YWJJZCAmJiAhcnVudGltZUNvbnRleHQpIHtcbiAgICAgIC8vIOihqOWNleacquWIneWni+WMluWujOaIkFxuICAgICAgdGFiSWQgPSBUYWJVdGlsLmdldFRhYklkKCk7XG4gICAgfVxuICAgIGlmICh0YWJJZCAmJiAhcnVudGltZUNvbnRleHQpIHtcbiAgICAgIHJ1bnRpbWVDb250ZXh0ID0geyB0YWJJZCB9O1xuICAgIH1cbiAgICBjb25zdCAkZ2V0U2Vzc2lvbklkID0gQmVmU2Vzc2lvbk1hbmFnZXIuZ2V0U2Vzc2lvbklkKGZvcm1BcHBDb250ZXh0LCB0aGlzLmNvbnRleHQucmVzdFNlcnZpY2Uuc2Vzc2lvblNlcnZpY2UpO1xuICAgIHJldHVybiAkZ2V0U2Vzc2lvbklkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoc2Vzc2lvbklkID0+IHtcbiAgICAgICAgaGVhZGVycyA9IHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5zZXNzaW9uU2VydmljZS5leHRlbmRSZXF1ZXN0SGVhZGVycyhoZWFkZXJzLCBydW50aW1lQ29udGV4dCk7XG4gICAgICAgIHJldHVybiBvZihoZWFkZXJzKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuICAvKipcbiAgICog5omp5bGV6K+35rGC5Y+C5pWwXG4gICAqIEBwYXJhbSBwYXJhbXMg5Y+C5pWwXG4gICAqL1xuICBwdWJsaWMgZXh0ZW5kVXJsKHVybDogc3RyaW5nLCBwYXJhbXM6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSk6IHN0cmluZyB7XG4gICAgaWYgKCFwYXJhbXMpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IGluIHBhcmFtcykge1xuICAgICAgaWYgKHBhcmFtcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gSlNPTi5zdHJpbmdpZnkocGFyYW1zW2tleV0pO1xuICAgICAgICBpZiAodXJsLmluZGV4T2YoJz8nKSA9PT0gLTEpIHtcbiAgICAgICAgICB1cmwgPSBgJHt1cmx9PyR7a2V5fT0ke3ZhbHVlfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXJsID0gYCR7dXJsfSYke2tleX09JHt2YWx1ZX1gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1cmw7XG4gIH1cbiAgLyoqXG4gICAqIOaJqeWxleivt+axguS9k1xuICAgKiBAcGFyYW0gYm9keSBib2R5XG4gICAqL1xuICBwdWJsaWMgZXh0ZW5kQm9keShib2R5KTogeyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICBpZiAoIWJvZHkgfHwgdHlwZW9mIGJvZHkgIT09ICdvYmplY3QnIHx8IE9iamVjdC5rZXlzKGJvZHkpLmxlbmd0aCA8IDEpIHtcbiAgICAgIHJldHVybiBib2R5O1xuICAgIH1cbiAgICBPYmplY3Qua2V5cyhib2R5KS5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgaWYgKG5hbWUgPT09ICdyZXF1ZXN0SW5mbycpIHtcbiAgICAgICAgYm9keVsncmVxdWVzdEluZm8nXSA9IHRoaXMuY29udGV4dC5yZXN0U2VydmljZS5idWlsZFJlcXVlc3RJbmZvKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8g5YW85a65SueJiOWQjuerr2JvZHnlj6rmnInkuIDkuKprZXnml7Zib2R55Y+q5LygdmFsdWXnmoTmg4XlhrVcbiAgICBpZiAoT2JqZWN0LmtleXMoYm9keSkubGVuZ3RoID09PSAxKSB7XG4gICAgICBib2R5ID0gT2JqZWN0LnZhbHVlcyhib2R5KVswXTtcbiAgICB9XG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cbiAgcHVibGljIHBhcnNlSGVhZGVycyhyZXNwb25zZTogYW55KSB7XG4gICAgY29uc3Qgc2Vzc2lvbklkS2V5ID0gJ0JFRlNlc3Npb25JRCc7XG4gICAgY29uc3QgZm9ybUFwcENvbnRleHQgPSB0aGlzLmNvbnRleHQuYXBwQ29udGV4dC5nZXRGb3JtQXBwQ29udGV4dCgpO1xuICAgIGxldCBydW50aW1lQ29udGV4dCA9IG51bGw7XG4gICAgY29uc3QgdGFiSWQgPSBmb3JtQXBwQ29udGV4dCAmJiBmb3JtQXBwQ29udGV4dC50YWJJZCB8fCBUYWJVdGlsLmdldFRhYklkKCk7XG4gICAgaWYgKHRhYklkKSB7XG4gICAgICBydW50aW1lQ29udGV4dCA9IHsgdGFiSWQgfTtcbiAgICB9XG4gICAgaWYgKHJlc3BvbnNlLmhlYWRlcnMgJiYgcmVzcG9uc2UuaGVhZGVycy5oYXMoc2Vzc2lvbklkS2V5KSkge1xuICAgICAgdGhpcy5jb250ZXh0LnJlc3RTZXJ2aWNlLnNlc3Npb25TZXJ2aWNlLnNldEJlU2Vzc2lvbklkKHJlc3BvbnNlLmhlYWRlcnMuZ2V0KHNlc3Npb25JZEtleSksIHJ1bnRpbWVDb250ZXh0KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"VERSION":"ver.","ChangeDetailType":{"__symbolic":"class","members":{},"statics":{"Added":"Added","Modify":"Modify","Deleted":"Deleted"}},"ChangeDetailInfo":{"__symbolic":"interface"},"ChangeDetail":{"__symbolic":"interface"},"RequestInfo":{"__symbolic":"interface"},"Pagination":{"__symbolic":"interface"},"QueryResult":{"__symbolic":"interface"},"ResponseInfo":{"__symbolic":"interface"},"IProxyExtend":{"__symbolic":"interface"},"BodyWithRequestInfo":{"__symbolic":"interface"},"RequestOption":{"__symbolic":"interface"},"RetrieveParam":{"__symbolic":"interface"},"BE_SERVER_URI_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":9,"character":32},"arguments":["@farris/be BE_SERVER_URL"]},"BE_SESSION_HANDLING_STRATEGY_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":47},"arguments":["@farris/be BE_SESSION_HANDLING_STRATEGY_TOKEN"]},"BefChangeBuilder":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Type","module":"@angular/core","arguments":[{"__symbolic":"reference","module":"@farris/devkit","name":"Entity","line":28,"character":29}]},{"__symbolic":"reference","name":"EntityCollection","module":"@farris/devkit","arguments":[{"__symbolic":"reference","module":"@farris/devkit","name":"Entity","line":28,"character":29}]}]}],"build":[{"__symbolic":"method"}],"buildChangeDetail":[{"__symbolic":"method"}],"getChangeInfo":[{"__symbolic":"method"}],"createEmptyChangeDetail":[{"__symbolic":"method"}]}},"BefChangeHandler":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor"}],"handle":[{"__symbolic":"method"}],"handleChangeDetails":[{"__symbolic":"method"}],"handleChangeDetail":[{"__symbolic":"method"}],"getEntityById":[{"__symbolic":"method"}]}},"BefSessionService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":30,"character":16},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"FrameworkSessionService"},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":31,"character":59}]}],"getBeSessionId":[{"__symbolic":"method"}],"setBeSessionId":[{"__symbolic":"method"}],"clearBeSessionId":[{"__symbolic":"method"}],"extendRequestHeaders":[{"__symbolic":"method"}],"handleResponseHeaders":[{"__symbolic":"method"}],"createBeSession":[{"__symbolic":"method"}],"setSessionId":[{"__symbolic":"method"}],"createHandlingStrategy":[{"__symbolic":"method"}]}},"BefRestService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":36,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":69,"character":16},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"FrameworkSessionService"},{"__symbolic":"reference","name":"BefRepository"},{"__symbolic":"reference","module":"@farris/devkit","name":"EventBus","line":72,"character":15}]}],"createBefProxy":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"extendQuery":[{"__symbolic":"method"}],"serviceRetrieve":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"extendRetrieve":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"createByPath":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"extendDelete":[{"__symbolic":"method"}],"deletByPath":[{"__symbolic":"method"}],"extendDeletByPath":[{"__symbolic":"method"}],"batchDeleteByPath":[{"__symbolic":"method"}],"batchDelete":[{"__symbolic":"method"}],"extendBatchDelete":[{"__symbolic":"method"}],"extendBatchDeletion":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"hasChanges":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}],"invoke":[{"__symbolic":"method"}],"innerRequest":[{"__symbolic":"method"}],"handleReponseInfo":[{"__symbolic":"method"}],"handleErrors":[{"__symbolic":"method"}],"clearLoading":[{"__symbolic":"method"}],"clearAllLoading":[{"__symbolic":"method"}],"unWrapResponseInfo":[{"__symbolic":"method"}],"hasRequestInfo":[{"__symbolic":"method"}],"existRequestInfo":[{"__symbolic":"method"}],"buildParams":[{"__symbolic":"method"}],"buildBodyWithRequestInfo":[{"__symbolic":"method"}],"buildRequestInfo":[{"__symbolic":"method"}]}},"BefProxy":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":31,"character":33},{"__symbolic":"reference","name":"UriService"}]}],"setBaseUri":[{"__symbolic":"method"}],"setProxyExtend":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"extendQuery":[{"__symbolic":"method"}],"filter":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"serviceRetrieve":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"extendRetrieve":[{"__symbolic":"method"}],"edit":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"createByPath":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"deleteAndSave":[{"__symbolic":"method"}],"extendDelete":[{"__symbolic":"method"}],"deletByPath":[{"__symbolic":"method"}],"extendDeletByPath":[{"__symbolic":"method"}],"batchDeleteByPath":[{"__symbolic":"method"}],"batchDelete":[{"__symbolic":"method"}],"extendBatchDeletion":[{"__symbolic":"method"}],"extendBatchDelete":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"batchAppendByPath":[{"__symbolic":"method"}],"batchAppend":[{"__symbolic":"method"}],"hasChanges":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}],"invoke":[{"__symbolic":"method"}],"addBodyToOptions":[{"__symbolic":"method"}],"buildParams":[{"__symbolic":"method"}],"hasRequestInfo":[{"__symbolic":"method"}],"unWrapResponseInfo":[{"__symbolic":"method"}]}},"BefLookupRestService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":27,"character":5}}]],"parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","module":"@farris/devkit","name":"FrameContext","line":27,"character":38}]}],"registerDestroyEvent":[{"__symbolic":"method"}],"getData":[{"__symbolic":"method"}],"saveUserSettings":[{"__symbolic":"method"}],"getUserSettings":[{"__symbolic":"method"}],"ifEnableExtendLoadMethod":[{"__symbolic":"method"}],"getHelpData":[{"__symbolic":"method"}],"extendGetHelpData":[{"__symbolic":"method"}],"clearLoading":[{"__symbolic":"method"}],"convert2TreeDataWithPathCode":[{"__symbolic":"method"}],"extendQueryParam":[{"__symbolic":"method"}],"getPath":[{"__symbolic":"method"}]}},"BefLookupDefaultService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":14,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","name":"FrameworkSessionService"}]}],"createSession":[{"__symbolic":"method"}],"getData":[{"__symbolic":"method"}]}},"BefRepository":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"ɵa"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":32,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":70,"character":32}]}],"getEntities":[{"__symbolic":"method"}],"filter":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"getEntityById":[{"__symbolic":"method"}],"updateEntityById":[{"__symbolic":"method"}],"editEntityById":[{"__symbolic":"method"}],"createEntity":[{"__symbolic":"method"}],"appendEntity":[{"__symbolic":"method"}],"insert":[{"__symbolic":"method"}],"insertByPath":[{"__symbolic":"method"}],"appendEntityByPath":[{"__symbolic":"method"}],"removeEntityById":[{"__symbolic":"method"}],"removeEntityAndSaveById":[{"__symbolic":"method"}],"removeEntityByPath":[{"__symbolic":"method"}],"batchRemove":[{"__symbolic":"method"}],"batchRemoveByPath":[{"__symbolic":"method"}],"saveEntityById":[{"__symbolic":"method"}],"saveEntities":[{"__symbolic":"method"}],"cancelEntityChanges":[{"__symbolic":"method"}],"batchAppendByPath":[{"__symbolic":"method"}],"batchAppend":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"getInjector":[{"__symbolic":"method"}],"clearAllVariableChanges":[{"__symbolic":"method"}],"hasChanges":[{"__symbolic":"method"}]}},"FrameworkSessionService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":13,"character":15}}]],"parameters":[{"__symbolic":"reference","module":"@ecp-caf/caf-common","name":"SessionService","line":13,"character":50}]}],"getUserSessionId":[{"__symbolic":"method"}],"getCurrentSessionId":[{"__symbolic":"method"}],"getRuntimeSessionId":[{"__symbolic":"method"}],"parse":[{"__symbolic":"method"}]}},"NG_VARIABLE":"@farris/bef NG_VARIABLE","NgVariable":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@farris/devkit","name":"makePropDecorator","line":49,"character":2},"arguments":["@farris/bef NG_VARIABLE",{"__symbolic":"error","message":"Lambda not supported","line":49,"character":33,"module":"./lib/decorators"}]},"NgVariableDecorator":{"__symbolic":"interface"},"BefRepositoryUtil":{"__symbolic":"class","members":{}},"BefDataPathUtil":{"__symbolic":"class","members":{},"statics":{"trimTrailingS":{"__symbolic":"function","parameters":["str"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"str"},"member":"substr"},"arguments":[0,{"__symbolic":"binop","operator":"-","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"str"},"member":"length"},"right":1}]}}}},"UriService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":6,"character":17},"arguments":[{"__symbolic":"reference","name":"BE_SERVER_URI_TOKEN"}]}]],"parameters":[{"__symbolic":"reference","name":"string"}]}],"extendUri":[{"__symbolic":"method"}]}},"Uri":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Expression form not supported","line":1,"character":52,"module":"./lib/uri"}]}],"toString":[{"__symbolic":"method"}]}},"DefaultComboHttpService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"getData":[{"__symbolic":"method"}]}},"DefaultDynamiControlGroupHttpService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"getData":[{"__symbolic":"method"}]}},"BefEntityManager":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","module":"@farris/devkit","name":"EntityManager","line":20,"character":49},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"EntityCollection","module":"@farris/devkit","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":36,"character":49,"context":{"typeName":"T"},"module":"./lib/bef_entity_manager"}]}]}],"buildAllEntityChangeDetails":[{"__symbolic":"method"}],"buildEntityChangeDetailById":[{"__symbolic":"method"}],"handleDataChangeDetails":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}]}},"DynamicBefRepository":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"BefRepository"},"members":{"batchAppend":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":25,"character":24},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"}]}]}},"PresetBefRepository":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"BefRepository"},"members":{"batchAppend":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":11,"character":24},{"__symbolic":"reference","name":"any"}]}]}},"BefVariableManager":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":32,"character":73}}]],"parameters":[{"__symbolic":"reference","module":"@farris/devkit","name":"AppContext","line":32,"character":34},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":32,"character":102}]}],"handleChangeDetail":[{"__symbolic":"method"}],"buildChangeDetail":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"clearChanges":[{"__symbolic":"method"}],"clearChangeDetail":[{"__symbolic":"method"}],"appendToChangeInfo":[{"__symbolic":"method"}],"getValueFromUIState":[{"__symbolic":"method"}],"getRootUIState":[{"__symbolic":"method"}],"isValueEqual":[{"__symbolic":"method"}],"isUdtVariable":[{"__symbolic":"method"}],"setValueToUIState":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","module":"@farris/devkit","name":"Repository","line":26,"character":65},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":25,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"getList":[{"__symbolic":"method"}],"getById":[{"__symbolic":"method"}],"updateById":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"append":[{"__symbolic":"method"}],"appendByPath":[{"__symbolic":"method"}],"removeById":[{"__symbolic":"method"}],"removeByIds":[{"__symbolic":"method"}],"removeByPath":[{"__symbolic":"method"}],"updateChangesById":[{"__symbolic":"method"}],"updateChangesByPath":[{"__symbolic":"method"}],"updateAllChanges":[{"__symbolic":"method"}],"applyChanges":[{"__symbolic":"method"}],"updateDataAndVariableChanges":[{"__symbolic":"method"}],"applyChangesById":[{"__symbolic":"method"}],"cancelChanges":[{"__symbolic":"method"}],"clearAllEntityChanges":[{"__symbolic":"method"}],"getDataChangeDetails":[{"__symbolic":"method"}],"handleDataChangeDetails":[{"__symbolic":"method"}],"getVariableChangeDetail":[{"__symbolic":"method"}],"handleVariableChangeDetail":[{"__symbolic":"method"}],"isEmptyRequestInfo":[{"__symbolic":"method"}]}}},"origins":{"VERSION":"./public-api","ChangeDetailType":"./lib/types","ChangeDetailInfo":"./lib/types","ChangeDetail":"./lib/types","RequestInfo":"./lib/types","Pagination":"./lib/types","QueryResult":"./lib/types","ResponseInfo":"./lib/types","IProxyExtend":"./lib/types","BodyWithRequestInfo":"./lib/types","RequestOption":"./lib/types","RetrieveParam":"./lib/types","BE_SERVER_URI_TOKEN":"./lib/tokens","BE_SESSION_HANDLING_STRATEGY_TOKEN":"./lib/tokens","BefChangeBuilder":"./lib/bef_change_builder","BefChangeHandler":"./lib/bef_change_handler","BefSessionService":"./lib/session/bef_session_service","BefRestService":"./lib/bef_rest_service","BefProxy":"./lib/bef_proxy","BefLookupRestService":"./lib/bef_lookup.service","BefLookupDefaultService":"./lib/bef_lookup_default.service","BefRepository":"./lib/bef_repository","FrameworkSessionService":"./lib/framework_session_service","NG_VARIABLE":"./lib/decorators","NgVariable":"./lib/decorators","NgVariableDecorator":"./lib/decorators","BefRepositoryUtil":"./lib/bef_repository_util","BefDataPathUtil":"./lib/bef_data_path_util","UriService":"./lib/uri_service","Uri":"./lib/uri","DefaultComboHttpService":"./lib/bef_combo.service","DefaultDynamiControlGroupHttpService":"./lib/bef_dynamic_control_group_default.service","BefEntityManager":"./lib/bef_entity_manager","DynamicBefRepository":"./lib/dynamic_bef_repository","PresetBefRepository":"./lib/preset_bef_repository","BefVariableManager":"./lib/bef_variable_manager","ɵa":"./lib/deprecated/deprecated_bef_repository"},"importAs":"@farris/bef"}
{"__symbolic":"module","version":4,"metadata":{"VERSION":"ver.","ChangeDetailType":{"__symbolic":"class","members":{},"statics":{"Added":"Added","Modify":"Modify","Deleted":"Deleted"}},"ChangeDetailInfo":{"__symbolic":"interface"},"ChangeDetail":{"__symbolic":"interface"},"RequestInfo":{"__symbolic":"interface"},"Pagination":{"__symbolic":"interface"},"QueryResult":{"__symbolic":"interface"},"ResponseInfo":{"__symbolic":"interface"},"IProxyExtend":{"__symbolic":"interface"},"BodyWithRequestInfo":{"__symbolic":"interface"},"RequestOption":{"__symbolic":"interface"},"RetrieveParam":{"__symbolic":"interface"},"BE_SERVER_URI_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":9,"character":32},"arguments":["@farris/be BE_SERVER_URL"]},"BE_SESSION_HANDLING_STRATEGY_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":47},"arguments":["@farris/be BE_SESSION_HANDLING_STRATEGY_TOKEN"]},"BefChangeBuilder":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Type","module":"@angular/core","arguments":[{"__symbolic":"reference","module":"@farris/devkit","name":"Entity","line":28,"character":29}]},{"__symbolic":"reference","name":"EntityCollection","module":"@farris/devkit","arguments":[{"__symbolic":"reference","module":"@farris/devkit","name":"Entity","line":28,"character":29}]}]}],"build":[{"__symbolic":"method"}],"buildChangeDetail":[{"__symbolic":"method"}],"getChangeInfo":[{"__symbolic":"method"}],"createEmptyChangeDetail":[{"__symbolic":"method"}]}},"BefChangeHandler":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor"}],"handle":[{"__symbolic":"method"}],"handleChangeDetails":[{"__symbolic":"method"}],"handleChangeDetail":[{"__symbolic":"method"}],"getEntityById":[{"__symbolic":"method"}]}},"BefSessionService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":30,"character":16},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"FrameworkSessionService"},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":31,"character":59}]}],"getBeSessionId":[{"__symbolic":"method"}],"setBeSessionId":[{"__symbolic":"method"}],"clearBeSessionId":[{"__symbolic":"method"}],"extendRequestHeaders":[{"__symbolic":"method"}],"handleResponseHeaders":[{"__symbolic":"method"}],"createBeSession":[{"__symbolic":"method"}],"setSessionId":[{"__symbolic":"method"}],"createHandlingStrategy":[{"__symbolic":"method"}]}},"BefRestService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":36,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":68,"character":16},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"FrameworkSessionService"},{"__symbolic":"reference","name":"BefRepository"},{"__symbolic":"reference","module":"@farris/devkit","name":"EventBus","line":71,"character":15}]}],"createBefProxy":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"extendQuery":[{"__symbolic":"method"}],"serviceRetrieve":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"extendRetrieve":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"createByPath":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"extendDelete":[{"__symbolic":"method"}],"deletByPath":[{"__symbolic":"method"}],"extendDeletByPath":[{"__symbolic":"method"}],"batchDeleteByPath":[{"__symbolic":"method"}],"batchDelete":[{"__symbolic":"method"}],"extendBatchDelete":[{"__symbolic":"method"}],"extendBatchDeletion":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"hasChanges":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}],"invoke":[{"__symbolic":"method"}],"innerRequest":[{"__symbolic":"method"}],"handleReponseInfo":[{"__symbolic":"method"}],"handleErrors":[{"__symbolic":"method"}],"clearLoading":[{"__symbolic":"method"}],"clearAllLoading":[{"__symbolic":"method"}],"unWrapResponseInfo":[{"__symbolic":"method"}],"hasRequestInfo":[{"__symbolic":"method"}],"existRequestInfo":[{"__symbolic":"method"}],"buildParams":[{"__symbolic":"method"}],"buildBodyWithRequestInfo":[{"__symbolic":"method"}],"buildRequestInfo":[{"__symbolic":"method"}]}},"BefProxy":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":31,"character":33},{"__symbolic":"reference","name":"UriService"}]}],"setBaseUri":[{"__symbolic":"method"}],"setProxyExtend":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"extendQuery":[{"__symbolic":"method"}],"filter":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"serviceRetrieve":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"extendRetrieve":[{"__symbolic":"method"}],"edit":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"createByPath":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"deleteAndSave":[{"__symbolic":"method"}],"extendDelete":[{"__symbolic":"method"}],"deletByPath":[{"__symbolic":"method"}],"extendDeletByPath":[{"__symbolic":"method"}],"batchDeleteByPath":[{"__symbolic":"method"}],"batchDelete":[{"__symbolic":"method"}],"extendBatchDeletion":[{"__symbolic":"method"}],"extendBatchDelete":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"batchAppendByPath":[{"__symbolic":"method"}],"batchAppend":[{"__symbolic":"method"}],"hasChanges":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}],"invoke":[{"__symbolic":"method"}],"addBodyToOptions":[{"__symbolic":"method"}],"buildParams":[{"__symbolic":"method"}],"hasRequestInfo":[{"__symbolic":"method"}],"unWrapResponseInfo":[{"__symbolic":"method"}]}},"BefLookupRestService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":27,"character":5}}]],"parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","module":"@farris/devkit","name":"FrameContext","line":27,"character":38}]}],"registerDestroyEvent":[{"__symbolic":"method"}],"getData":[{"__symbolic":"method"}],"saveUserSettings":[{"__symbolic":"method"}],"getUserSettings":[{"__symbolic":"method"}],"ifEnableExtendLoadMethod":[{"__symbolic":"method"}],"getHelpData":[{"__symbolic":"method"}],"extendGetHelpData":[{"__symbolic":"method"}],"clearLoading":[{"__symbolic":"method"}],"convert2TreeDataWithPathCode":[{"__symbolic":"method"}],"extendQueryParam":[{"__symbolic":"method"}],"getPath":[{"__symbolic":"method"}]}},"BefLookupDefaultService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":14,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","name":"FrameworkSessionService"}]}],"createSession":[{"__symbolic":"method"}],"getData":[{"__symbolic":"method"}]}},"BefRepository":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"ɵa"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":32,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":70,"character":32}]}],"getEntities":[{"__symbolic":"method"}],"filter":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"getEntityById":[{"__symbolic":"method"}],"updateEntityById":[{"__symbolic":"method"}],"editEntityById":[{"__symbolic":"method"}],"createEntity":[{"__symbolic":"method"}],"appendEntity":[{"__symbolic":"method"}],"insert":[{"__symbolic":"method"}],"insertByPath":[{"__symbolic":"method"}],"appendEntityByPath":[{"__symbolic":"method"}],"removeEntityById":[{"__symbolic":"method"}],"removeEntityAndSaveById":[{"__symbolic":"method"}],"removeEntityByPath":[{"__symbolic":"method"}],"batchRemove":[{"__symbolic":"method"}],"batchRemoveByPath":[{"__symbolic":"method"}],"saveEntityById":[{"__symbolic":"method"}],"saveEntities":[{"__symbolic":"method"}],"cancelEntityChanges":[{"__symbolic":"method"}],"batchAppendByPath":[{"__symbolic":"method"}],"batchAppend":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"getInjector":[{"__symbolic":"method"}],"clearAllVariableChanges":[{"__symbolic":"method"}],"hasChanges":[{"__symbolic":"method"}]}},"FrameworkSessionService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":13,"character":15}}]],"parameters":[{"__symbolic":"reference","module":"@ecp-caf/caf-common","name":"SessionService","line":13,"character":50}]}],"getUserSessionId":[{"__symbolic":"method"}],"getCurrentSessionId":[{"__symbolic":"method"}],"getRuntimeSessionId":[{"__symbolic":"method"}],"parse":[{"__symbolic":"method"}]}},"NG_VARIABLE":"@farris/bef NG_VARIABLE","NgVariable":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@farris/devkit","name":"makePropDecorator","line":49,"character":2},"arguments":["@farris/bef NG_VARIABLE",{"__symbolic":"error","message":"Lambda not supported","line":49,"character":33,"module":"./lib/decorators"}]},"NgVariableDecorator":{"__symbolic":"interface"},"BefRepositoryUtil":{"__symbolic":"class","members":{}},"BefDataPathUtil":{"__symbolic":"class","members":{},"statics":{"trimTrailingS":{"__symbolic":"function","parameters":["str"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"str"},"member":"substr"},"arguments":[0,{"__symbolic":"binop","operator":"-","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"str"},"member":"length"},"right":1}]}}}},"UriService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":6,"character":17},"arguments":[{"__symbolic":"reference","name":"BE_SERVER_URI_TOKEN"}]}]],"parameters":[{"__symbolic":"reference","name":"string"}]}],"extendUri":[{"__symbolic":"method"}]}},"Uri":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Expression form not supported","line":1,"character":52,"module":"./lib/uri"}]}],"toString":[{"__symbolic":"method"}]}},"DefaultComboHttpService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"getData":[{"__symbolic":"method"}]}},"DefaultDynamiControlGroupHttpService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"getData":[{"__symbolic":"method"}]}},"BefEntityManager":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","module":"@farris/devkit","name":"EntityManager","line":20,"character":49},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"EntityCollection","module":"@farris/devkit","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":36,"character":49,"context":{"typeName":"T"},"module":"./lib/bef_entity_manager"}]}]}],"buildAllEntityChangeDetails":[{"__symbolic":"method"}],"buildEntityChangeDetailById":[{"__symbolic":"method"}],"handleDataChangeDetails":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}]}},"DynamicBefRepository":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"BefRepository"},"members":{"batchAppend":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":25,"character":24},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"}]}]}},"PresetBefRepository":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"BefRepository"},"members":{"batchAppend":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":11,"character":24},{"__symbolic":"reference","name":"any"}]}]}},"BefVariableManager":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":32,"character":73}}]],"parameters":[{"__symbolic":"reference","module":"@farris/devkit","name":"AppContext","line":32,"character":34},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":32,"character":102}]}],"handleChangeDetail":[{"__symbolic":"method"}],"buildChangeDetail":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"clearChanges":[{"__symbolic":"method"}],"clearChangeDetail":[{"__symbolic":"method"}],"appendToChangeInfo":[{"__symbolic":"method"}],"getValueFromUIState":[{"__symbolic":"method"}],"getRootUIState":[{"__symbolic":"method"}],"isValueEqual":[{"__symbolic":"method"}],"isUdtVariable":[{"__symbolic":"method"}],"setValueToUIState":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","module":"@farris/devkit","name":"Repository","line":26,"character":65},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":25,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"getList":[{"__symbolic":"method"}],"getById":[{"__symbolic":"method"}],"updateById":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"append":[{"__symbolic":"method"}],"appendByPath":[{"__symbolic":"method"}],"removeById":[{"__symbolic":"method"}],"removeByIds":[{"__symbolic":"method"}],"removeByPath":[{"__symbolic":"method"}],"updateChangesById":[{"__symbolic":"method"}],"updateChangesByPath":[{"__symbolic":"method"}],"updateAllChanges":[{"__symbolic":"method"}],"applyChanges":[{"__symbolic":"method"}],"updateDataAndVariableChanges":[{"__symbolic":"method"}],"applyChangesById":[{"__symbolic":"method"}],"cancelChanges":[{"__symbolic":"method"}],"clearAllEntityChanges":[{"__symbolic":"method"}],"getDataChangeDetails":[{"__symbolic":"method"}],"handleDataChangeDetails":[{"__symbolic":"method"}],"getVariableChangeDetail":[{"__symbolic":"method"}],"handleVariableChangeDetail":[{"__symbolic":"method"}],"isEmptyRequestInfo":[{"__symbolic":"method"}]}}},"origins":{"VERSION":"./public-api","ChangeDetailType":"./lib/types","ChangeDetailInfo":"./lib/types","ChangeDetail":"./lib/types","RequestInfo":"./lib/types","Pagination":"./lib/types","QueryResult":"./lib/types","ResponseInfo":"./lib/types","IProxyExtend":"./lib/types","BodyWithRequestInfo":"./lib/types","RequestOption":"./lib/types","RetrieveParam":"./lib/types","BE_SERVER_URI_TOKEN":"./lib/tokens","BE_SESSION_HANDLING_STRATEGY_TOKEN":"./lib/tokens","BefChangeBuilder":"./lib/bef_change_builder","BefChangeHandler":"./lib/bef_change_handler","BefSessionService":"./lib/session/bef_session_service","BefRestService":"./lib/bef_rest_service","BefProxy":"./lib/bef_proxy","BefLookupRestService":"./lib/bef_lookup.service","BefLookupDefaultService":"./lib/bef_lookup_default.service","BefRepository":"./lib/bef_repository","FrameworkSessionService":"./lib/framework_session_service","NG_VARIABLE":"./lib/decorators","NgVariable":"./lib/decorators","NgVariableDecorator":"./lib/decorators","BefRepositoryUtil":"./lib/bef_repository_util","BefDataPathUtil":"./lib/bef_data_path_util","UriService":"./lib/uri_service","Uri":"./lib/uri","DefaultComboHttpService":"./lib/bef_combo.service","DefaultDynamiControlGroupHttpService":"./lib/bef_dynamic_control_group_default.service","BefEntityManager":"./lib/bef_entity_manager","DynamicBefRepository":"./lib/dynamic_bef_repository","PresetBefRepository":"./lib/preset_bef_repository","BefVariableManager":"./lib/bef_variable_manager","ɵa":"./lib/deprecated/deprecated_bef_repository"},"importAs":"@farris/bef"}

@@ -117,2 +117,3 @@ import { Observable } from 'rxjs';

* @param ids 待删除的id数组
* TODO: 验证删除的id带特殊字符场景
*/

@@ -128,2 +129,3 @@ batchDelete(ids: string[]): Observable<any>;

* 批量删除(扩展)
* TODO:验证删除数据中主键有特殊字符的场景
*/

@@ -130,0 +132,0 @@ extendBatchDelete(ids: string[], requestInfo: RequestInfo): Observable<ResponseInfo>;

{
"name": "@farris/bef",
"version":"0.0.12-20230928062855-dev",
"version":"0.0.12-20231120111254-dev",
"peerDependencies": {

@@ -5,0 +5,0 @@ "@angular/common": "^7.2.0",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc