diff --git a/api/creator.js b/api/creator.js
index c5fdcb2..694d8a3 100644
--- a/api/creator.js
+++ b/api/creator.js
@@ -8,7 +8,7 @@ export function getBannerList() {
return request({
url: `${serviceTitle}/img/mini/tiktok/listBanner`,
method: 'get'
-
+
})
}
//获取小程序用户图片列表
@@ -18,3 +18,10 @@ export function getUserImgList() {
method: 'get'
})
}
+//获取图片详情
+export function detailsTiktokImg(data) {
+ return request({
+ url: `${serviceTitle}/img/mini/tiktok/detailsTiktokImg/${data}`,
+ method: 'get'
+ })
+}
diff --git a/api/index.js b/api/index.js
index 47eebc8..96614e5 100644
--- a/api/index.js
+++ b/api/index.js
@@ -26,3 +26,4 @@ export function tiktokUserDetails(data) {
data
})
}
+
diff --git a/pages.json b/pages.json
index 81b14ad..5c3cb7c 100644
--- a/pages.json
+++ b/pages.json
@@ -27,6 +27,13 @@
"enablePullDownRefresh": true
}
},
+ {
+ "path": "pages/creator/imgDetail",
+ "style": {
+ "navigationBarTitleText": "",
+ "enablePullDownRefresh": true
+ }
+ },
{
"path": "pages/userInfo/userInfo",
"style": {
diff --git a/pages/creator/imgDetail.vue b/pages/creator/imgDetail.vue
new file mode 100644
index 0000000..94b631e
--- /dev/null
+++ b/pages/creator/imgDetail.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+ 热门
+
+
+ 下载
+ 下载{{detailMsg.downloadNum}}
+
+
+ 喜欢
+ 喜欢{{detailMsg.greatNum}}
+
+
+ 收藏
+ 收藏{{detailMsg.collectionNum}}
+
+
+ 分享
+
+
+
+
+
+
+
+
diff --git a/pages/creator/userDetail.vue b/pages/creator/userDetail.vue
index 7e3e7c9..ed6ab6e 100644
--- a/pages/creator/userDetail.vue
+++ b/pages/creator/userDetail.vue
@@ -38,7 +38,7 @@
+ :style="'width:'+imgWidth+';height:'+imgHeight" @click="targetDetail(item)">
@@ -76,6 +76,22 @@
methods: {
onClickItem(e) {
console.log('点击', e)
+ },
+ // 前往详情页
+ targetDetail(item) {
+ console.log('跳转', item)
+ if (item.id) {
+ uni.setStorage({
+ key: 'detailId',
+ data: item.id,
+ success() {
+ console.log(111111)
+ uni.redirectTo({
+ url: './imgDetail'
+ })
+ }
+ })
+ }
}
}
}
diff --git a/pages/index/choiceness.vue b/pages/index/choiceness.vue
index a05e9bb..3f8725a 100644
--- a/pages/index/choiceness.vue
+++ b/pages/index/choiceness.vue
@@ -7,12 +7,13 @@
热门作品
-
+
-
+
@@ -36,7 +37,7 @@
success: res => {
console.log(res)
this.imgWidth = res.windowWidth - 60 + 'rpx'
- this.imgHeight = (res.windowWidth - 60) * 2 - 30 +'rpx'
+ this.imgHeight = (res.windowWidth - 60) * 2 - 30 + 'rpx'
this.getImgList()
}
})
@@ -59,6 +60,22 @@
icon: 'error'
})
}
+ },
+ // 前往详情页
+ targetDetail(item) {
+ console.log('跳转', item)
+ if (item.id) {
+ uni.setStorage({
+ key: 'detailId',
+ data: item.id,
+ success() {
+ console.log(111111)
+ uni.redirectTo({
+ url: '../creator/imgDetail'
+ })
+ }
+ })
+ }
}
},
// onUnload() {
@@ -73,6 +90,7 @@
.choiceness {
padding-right: 40rpx;
padding-top: 40rpx;
+
.uni-searchbar {
border: 1px solid #11A8FD;
border-radius: 16rpx;
@@ -86,6 +104,7 @@
.choiceness-list {
display: flex;
+
.first-box {
border-radius: 16rpx;
font-size: 16px;
diff --git a/unpackage/dist/dev/mp-toutiao/app.json b/unpackage/dist/dev/mp-toutiao/app.json
index 8f4264e..958f7d3 100644
--- a/unpackage/dist/dev/mp-toutiao/app.json
+++ b/unpackage/dist/dev/mp-toutiao/app.json
@@ -4,6 +4,7 @@
"pages/index/choiceness",
"pages/creator/creator",
"pages/creator/userDetail",
+ "pages/creator/imgDetail",
"pages/userInfo/userInfo",
"pages/userInfo/myCollection/myCollection",
"pages/userInfo/question/question",
diff --git a/unpackage/dist/dev/mp-toutiao/common/main.js b/unpackage/dist/dev/mp-toutiao/common/main.js
index d7b82c8..c797c34 100644
--- a/unpackage/dist/dev/mp-toutiao/common/main.js
+++ b/unpackage/dist/dev/mp-toutiao/common/main.js
@@ -135,4 +135,4 @@ __webpack_require__.r(__webpack_exports__);
/***/ })
],[[0,"common/runtime","common/vendor"]]]);
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyIsbnVsbCwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL0FwcC52dWU/NzVjNCIsInVuaS1hcHA6Ly8vQXBwLnZ1ZSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9BcHAudnVlP2M1NmIiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svQXBwLnZ1ZT81ZGU4Il0sIm5hbWVzIjpbInd4IiwiX193ZWJwYWNrX3JlcXVpcmVfVU5JX01QX1BMVUdJTl9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsImJhc2VVUkwiLCJWdWUiLCJwcm90b3R5cGUiLCJjb25maWciLCJwcm9kdWN0aW9uVGlwIiwiQXBwIiwibXBUeXBlIiwiYXBwIiwiJG1vdW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7cURBQUEsd0NBQThFO0FBQzlFOzs7Ozs7OztBQVFBLHFFLHduQ0FUbUJBLEVBQUUsQ0FBQ0MsaUNBQUgsR0FBdUNDLG1CQUF2QyxDLENBR25CO0FBQ0EsSUFBTUMsT0FBTyxHQUFHLHlCQUFoQixDQUVBQyxhQUFJQyxTQUFKLENBQWNGLE9BQWQsR0FBd0JBLE9BQXhCLENBSUFDLGFBQUlFLE1BQUosQ0FBV0MsYUFBWCxHQUEyQixLQUEzQjtBQUNBQyxhQUFJQyxNQUFKLEdBQWEsS0FBYjtBQUNBLElBQU1DLEdBQUcsR0FBRyxJQUFJTixZQUFKO0FBQ0xJLFlBREssRUFBWjs7QUFHQSxVQUFBRSxHQUFHLEVBQUNDLE1BQUosRzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNmQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUN1RDtBQUNMO0FBQ2M7OztBQUdoRTtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSx5RUFBTTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ2UsZ0Y7Ozs7Ozs7Ozs7O0FDdkJmO0FBQUE7QUFBQTtBQUFBO0FBQTZsQixDQUFnQix1bkJBQUcsRUFBQyxDOzs7Ozs7Ozs7Ozs7QUNDam5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FKQTtBQUtBO0FBQ0E7QUFDQSxHQVBBO0FBUUE7QUFDQTtBQUNBLEdBVkEsRTs7Ozs7Ozs7Ozs7QUNEQTtBQUFBO0FBQUE7QUFBQTtBQUF3b0MsQ0FBZ0IsOG1DQUFHLEVBQUMsQzs7Ozs7Ozs7OztBQ0E1cEM7QUFDQSxPQUFPLEtBQVUsRUFBRSxrQkFLZCIsImZpbGUiOiJjb21tb24vbWFpbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAndW5pLXBhZ2VzJzt3eC5fX3dlYnBhY2tfcmVxdWlyZV9VTklfTVBfUExVR0lOX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fO2ltcG9ydCBBcHAgZnJvbSAnLi9BcHAnXHJcbmltcG9ydCBzdG9yZSBmcm9tICcuL3N0b3JlLydcclxuXHJcbi8vIGNvbnN0IGJhc2VVUkwgPSAnaHR0cDovL2xvY2FsaG9zdDo3MDEwJ1xyXG5jb25zdCBiYXNlVVJMID0gJ2h0dHA6Ly84MS42OS40Ny4zMTo3MDEwJ1xyXG5cclxuVnVlLnByb3RvdHlwZS5iYXNlVVJMID0gYmFzZVVSTDtcclxuXHJcblxyXG5pbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcclxuVnVlLmNvbmZpZy5wcm9kdWN0aW9uVGlwID0gZmFsc2VcclxuQXBwLm1wVHlwZSA9ICdhcHAnXHJcbmNvbnN0IGFwcCA9IG5ldyBWdWUoe1xyXG4gICAgLi4uQXBwXHJcbn0pXHJcbmFwcC4kbW91bnQoKSIsInZhciByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50c1xudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vQXBwLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxydW50aW1lXFxcXGNvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJBcHAudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMi0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHNjcmlwdC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9BcHAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCI8c2NyaXB0PlxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdG9uTGF1bmNoOiBmdW5jdGlvbigpIHtcclxuXHRcdFx0Y29uc29sZS53YXJuKCflvZPliY3nu4Tku7bku4XmlK/mjIEgdW5pX21vZHVsZXMg55uu5b2V57uT5p6EIO+8jOivt+WNh+e6pyBIQnVpbGRlclgg5YiwIDMuMS4wIOeJiOacrOS7peS4iu+8gScpXHJcblx0XHRcdGNvbnNvbGUubG9nKCdBcHAgTGF1bmNoJylcclxuXHRcdH0sXHJcblx0XHRvblNob3c6IGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRjb25zb2xlLmxvZygnQXBwIFNob3cnKVxyXG5cdFx0fSxcclxuXHRcdG9uSGlkZTogZnVuY3Rpb24oKSB7XHJcblx0XHRcdGNvbnNvbGUubG9nKCdBcHAgSGlkZScpXHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxyXG5cdC8q5q+P5Liq6aG16Z2i5YWs5YWxY3NzICovXHJcblx0QGltcG9ydCAnQC91bmlfbW9kdWxlcy91bmktc2Nzcy9pbmRleC5zY3NzJztcclxuXHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0QGltcG9ydCAnQC9zdGF0aWMvY3VzdG9taWNvbnMuY3NzJztcclxuXHRcclxuXHRAaW1wb3J0ICcuL3N0YXRpYy9jc3MvbWFpbi5zY3NzJztcclxuXHQvLyDorr7nva7mlbTkuKrpobnnm67nmoTog4zmma/oibJcclxuXHRwYWdlIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XHJcblx0fVxyXG5cclxuXHQvKiAjZW5kaWYgKi9cclxuXHQuZXhhbXBsZS1pbmZvIHtcclxuXHRcdGZvbnQtc2l6ZTogMTRweDtcclxuXHRcdGNvbG9yOiAjMzMzO1xyXG5cdFx0cGFkZGluZzogMTBweDtcclxuXHR9XHJcbjwvc3R5bGU+XHJcbiIsImltcG9ydCBtb2QgZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cXFxcZGlzdFxcXFxsb2FkZXIuanM/P3JlZi0tOC1vbmVPZi0xLTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcY3NzLWxvYWRlclxcXFxkaXN0XFxcXGNqcy5qcz8/cmVmLS04LW9uZU9mLTEtMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGxvYWRlcnNcXFxcc3R5bGVQb3N0TG9hZGVyLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxwb3N0Y3NzLWxvYWRlclxcXFxzcmNcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFxzYXNzLWxvYWRlclxcXFxkaXN0XFxcXGNqcy5qcz8/cmVmLS04LW9uZU9mLTEtNCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTUhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vQXBwLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxcXFxkaXN0XFxcXGxvYWRlci5qcz8/cmVmLS04LW9uZU9mLTEtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxjc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFxzdHlsZVBvc3RMb2FkZXIuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXHBvc3Rjc3MtbG9hZGVyXFxcXHNyY1xcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHNhc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS00IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtNSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9BcHAudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG4gICAgaWYobW9kdWxlLmhvdCkge1xuICAgICAgLy8gMTY1MjY5Njk4MzI1MFxuICAgICAgdmFyIGNzc1JlbG9hZCA9IHJlcXVpcmUoXCJEOi9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9taW5pLWNzcy1leHRyYWN0LXBsdWdpbi9kaXN0L2htci9ob3RNb2R1bGVSZXBsYWNlbWVudC5qc1wiKShtb2R1bGUuaWQsIHtcImhtclwiOnRydWUsXCJwdWJsaWNQYXRoXCI6XCIuLi8uLi9cIixcImxvY2Fsc1wiOmZhbHNlfSk7XG4gICAgICBtb2R1bGUuaG90LmRpc3Bvc2UoY3NzUmVsb2FkKTtcbiAgICAgIG1vZHVsZS5ob3QuYWNjZXB0KHVuZGVmaW5lZCwgY3NzUmVsb2FkKTtcbiAgICB9XG4gICJdLCJzb3VyY2VSb290IjoiIn0=
\ No newline at end of file
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyIsbnVsbCwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL0FwcC52dWU/NzVjNCIsInVuaS1hcHA6Ly8vQXBwLnZ1ZSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9BcHAudnVlP2M1NmIiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svQXBwLnZ1ZT81ZGU4Il0sIm5hbWVzIjpbInd4IiwiX193ZWJwYWNrX3JlcXVpcmVfVU5JX01QX1BMVUdJTl9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsImJhc2VVUkwiLCJWdWUiLCJwcm90b3R5cGUiLCJjb25maWciLCJwcm9kdWN0aW9uVGlwIiwiQXBwIiwibXBUeXBlIiwiYXBwIiwiJG1vdW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7cURBQUEsd0NBQThFO0FBQzlFOzs7Ozs7OztBQVFBLHFFLHduQ0FUbUJBLEVBQUUsQ0FBQ0MsaUNBQUgsR0FBdUNDLG1CQUF2QyxDLENBR25CO0FBQ0EsSUFBTUMsT0FBTyxHQUFHLHlCQUFoQixDQUVBQyxhQUFJQyxTQUFKLENBQWNGLE9BQWQsR0FBd0JBLE9BQXhCLENBSUFDLGFBQUlFLE1BQUosQ0FBV0MsYUFBWCxHQUEyQixLQUEzQjtBQUNBQyxhQUFJQyxNQUFKLEdBQWEsS0FBYjtBQUNBLElBQU1DLEdBQUcsR0FBRyxJQUFJTixZQUFKO0FBQ0xJLFlBREssRUFBWjs7QUFHQSxVQUFBRSxHQUFHLEVBQUNDLE1BQUosRzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNmQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUN1RDtBQUNMO0FBQ2M7OztBQUdoRTtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSx5RUFBTTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ2UsZ0Y7Ozs7Ozs7Ozs7O0FDdkJmO0FBQUE7QUFBQTtBQUFBO0FBQTZsQixDQUFnQix1bkJBQUcsRUFBQyxDOzs7Ozs7Ozs7Ozs7QUNDam5CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FKQTtBQUtBO0FBQ0E7QUFDQSxHQVBBO0FBUUE7QUFDQTtBQUNBLEdBVkEsRTs7Ozs7Ozs7Ozs7QUNEQTtBQUFBO0FBQUE7QUFBQTtBQUF3b0MsQ0FBZ0IsOG1DQUFHLEVBQUMsQzs7Ozs7Ozs7OztBQ0E1cEM7QUFDQSxPQUFPLEtBQVUsRUFBRSxrQkFLZCIsImZpbGUiOiJjb21tb24vbWFpbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAndW5pLXBhZ2VzJzt3eC5fX3dlYnBhY2tfcmVxdWlyZV9VTklfTVBfUExVR0lOX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fO2ltcG9ydCBBcHAgZnJvbSAnLi9BcHAnXHJcbmltcG9ydCBzdG9yZSBmcm9tICcuL3N0b3JlLydcclxuXHJcbi8vIGNvbnN0IGJhc2VVUkwgPSAnaHR0cDovL2xvY2FsaG9zdDo3MDEwJ1xyXG5jb25zdCBiYXNlVVJMID0gJ2h0dHA6Ly84MS42OS40Ny4zMTo3MDEwJ1xyXG5cclxuVnVlLnByb3RvdHlwZS5iYXNlVVJMID0gYmFzZVVSTDtcclxuXHJcblxyXG5pbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcclxuVnVlLmNvbmZpZy5wcm9kdWN0aW9uVGlwID0gZmFsc2VcclxuQXBwLm1wVHlwZSA9ICdhcHAnXHJcbmNvbnN0IGFwcCA9IG5ldyBWdWUoe1xyXG4gICAgLi4uQXBwXHJcbn0pXHJcbmFwcC4kbW91bnQoKSIsInZhciByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50c1xudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vQXBwLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxydW50aW1lXFxcXGNvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJBcHAudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMi0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHNjcmlwdC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9BcHAudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCI8c2NyaXB0PlxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdG9uTGF1bmNoOiBmdW5jdGlvbigpIHtcclxuXHRcdFx0Y29uc29sZS53YXJuKCflvZPliY3nu4Tku7bku4XmlK/mjIEgdW5pX21vZHVsZXMg55uu5b2V57uT5p6EIO+8jOivt+WNh+e6pyBIQnVpbGRlclgg5YiwIDMuMS4wIOeJiOacrOS7peS4iu+8gScpXHJcblx0XHRcdGNvbnNvbGUubG9nKCdBcHAgTGF1bmNoJylcclxuXHRcdH0sXHJcblx0XHRvblNob3c6IGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRjb25zb2xlLmxvZygnQXBwIFNob3cnKVxyXG5cdFx0fSxcclxuXHRcdG9uSGlkZTogZnVuY3Rpb24oKSB7XHJcblx0XHRcdGNvbnNvbGUubG9nKCdBcHAgSGlkZScpXHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxyXG5cdC8q5q+P5Liq6aG16Z2i5YWs5YWxY3NzICovXHJcblx0QGltcG9ydCAnQC91bmlfbW9kdWxlcy91bmktc2Nzcy9pbmRleC5zY3NzJztcclxuXHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0QGltcG9ydCAnQC9zdGF0aWMvY3VzdG9taWNvbnMuY3NzJztcclxuXHRcclxuXHRAaW1wb3J0ICcuL3N0YXRpYy9jc3MvbWFpbi5zY3NzJztcclxuXHQvLyDorr7nva7mlbTkuKrpobnnm67nmoTog4zmma/oibJcclxuXHRwYWdlIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XHJcblx0fVxyXG5cclxuXHQvKiAjZW5kaWYgKi9cclxuXHQuZXhhbXBsZS1pbmZvIHtcclxuXHRcdGZvbnQtc2l6ZTogMTRweDtcclxuXHRcdGNvbG9yOiAjMzMzO1xyXG5cdFx0cGFkZGluZzogMTBweDtcclxuXHR9XHJcbjwvc3R5bGU+XHJcbiIsImltcG9ydCBtb2QgZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cXFxcZGlzdFxcXFxsb2FkZXIuanM/P3JlZi0tOC1vbmVPZi0xLTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcY3NzLWxvYWRlclxcXFxkaXN0XFxcXGNqcy5qcz8/cmVmLS04LW9uZU9mLTEtMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGxvYWRlcnNcXFxcc3R5bGVQb3N0TG9hZGVyLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxwb3N0Y3NzLWxvYWRlclxcXFxzcmNcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFxzYXNzLWxvYWRlclxcXFxkaXN0XFxcXGNqcy5qcz8/cmVmLS04LW9uZU9mLTEtNCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTUhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vQXBwLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxcXFxkaXN0XFxcXGxvYWRlci5qcz8/cmVmLS04LW9uZU9mLTEtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxjc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFxzdHlsZVBvc3RMb2FkZXIuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXHBvc3Rjc3MtbG9hZGVyXFxcXHNyY1xcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHNhc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS00IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtNSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9BcHAudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG4gICAgaWYobW9kdWxlLmhvdCkge1xuICAgICAgLy8gMTY1MzMxMjI1NDg0MlxuICAgICAgdmFyIGNzc1JlbG9hZCA9IHJlcXVpcmUoXCJEOi9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9taW5pLWNzcy1leHRyYWN0LXBsdWdpbi9kaXN0L2htci9ob3RNb2R1bGVSZXBsYWNlbWVudC5qc1wiKShtb2R1bGUuaWQsIHtcImhtclwiOnRydWUsXCJwdWJsaWNQYXRoXCI6XCIuLi8uLi9cIixcImxvY2Fsc1wiOmZhbHNlfSk7XG4gICAgICBtb2R1bGUuaG90LmRpc3Bvc2UoY3NzUmVsb2FkKTtcbiAgICAgIG1vZHVsZS5ob3QuYWNjZXB0KHVuZGVmaW5lZCwgY3NzUmVsb2FkKTtcbiAgICB9XG4gICJdLCJzb3VyY2VSb290IjoiIn0=
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-toutiao/common/vendor.js b/unpackage/dist/dev/mp-toutiao/common/vendor.js
index 617c1bd..6f3ec7e 100644
--- a/unpackage/dist/dev/mp-toutiao/common/vendor.js
+++ b/unpackage/dist/dev/mp-toutiao/common/vendor.js
@@ -1312,7 +1312,7 @@ function initData(vueOptions, context) {
try {
data = data.call(context); // 支持 Vue.prototype 上挂的数据
} catch (e) {
- if (Object({"NODE_ENV":"development","VUE_APP_NAME":"app","VUE_APP_PLATFORM":"mp-toutiao","BASE_URL":"/"}).VUE_APP_DEBUG) {
+ if (Object({"VUE_APP_NAME":"app","VUE_APP_PLATFORM":"mp-toutiao","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG) {
console.warn('根据 Vue 的 data 函数初始化小程序 data 失败,请尽量确保 data 函数中不访问 vm 对象,否则可能影响首次数据渲染速度。', data);
}
}
@@ -8136,7 +8136,7 @@ function type(obj) {
function flushCallbacks$1(vm) {
if (vm.__next_tick_callbacks && vm.__next_tick_callbacks.length) {
- if (Object({"NODE_ENV":"development","VUE_APP_NAME":"app","VUE_APP_PLATFORM":"mp-toutiao","BASE_URL":"/"}).VUE_APP_DEBUG) {
+ if (Object({"VUE_APP_NAME":"app","VUE_APP_PLATFORM":"mp-toutiao","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG) {
var mpInstance = vm.$scope;
console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid +
']:flushCallbacks[' + vm.__next_tick_callbacks.length + ']');
@@ -8157,14 +8157,14 @@ function nextTick$1(vm, cb) {
//1.nextTick 之前 已 setData 且 setData 还未回调完成
//2.nextTick 之前存在 render watcher
if (!vm.__next_tick_pending && !hasRenderWatcher(vm)) {
- if(Object({"NODE_ENV":"development","VUE_APP_NAME":"app","VUE_APP_PLATFORM":"mp-toutiao","BASE_URL":"/"}).VUE_APP_DEBUG){
+ if(Object({"VUE_APP_NAME":"app","VUE_APP_PLATFORM":"mp-toutiao","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG){
var mpInstance = vm.$scope;
console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid +
']:nextVueTick');
}
return nextTick(cb, vm)
}else{
- if(Object({"NODE_ENV":"development","VUE_APP_NAME":"app","VUE_APP_PLATFORM":"mp-toutiao","BASE_URL":"/"}).VUE_APP_DEBUG){
+ if(Object({"VUE_APP_NAME":"app","VUE_APP_PLATFORM":"mp-toutiao","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG){
var mpInstance$1 = vm.$scope;
console.log('[' + (+new Date) + '][' + (mpInstance$1.is || mpInstance$1.route) + '][' + vm._uid +
']:nextMPTick');
@@ -8250,7 +8250,7 @@ var patch = function(oldVnode, vnode) {
});
var diffData = this.$shouldDiffData === false ? data : diff(data, mpData);
if (Object.keys(diffData).length) {
- if (Object({"NODE_ENV":"development","VUE_APP_NAME":"app","VUE_APP_PLATFORM":"mp-toutiao","BASE_URL":"/"}).VUE_APP_DEBUG) {
+ if (Object({"VUE_APP_NAME":"app","VUE_APP_PLATFORM":"mp-toutiao","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG) {
console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + this._uid +
']差量更新',
JSON.stringify(diffData));
@@ -14655,7 +14655,7 @@ module.exports = function (str, opts) {
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });exports.getBannerList = getBannerList;exports.getUserImgList = getUserImgList;var _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request */ 24));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}
+Object.defineProperty(exports, "__esModule", { value: true });exports.getBannerList = getBannerList;exports.getUserImgList = getUserImgList;exports.detailsTiktokImg = detailsTiktokImg;var _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request */ 24));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}
var serviceTitle = '/img';
//GET 传参需要用 params
//POST 传参需要用 data
@@ -14674,6 +14674,13 @@ function getUserImgList() {
url: "".concat(serviceTitle, "/img/mini/tiktok/tiktokUserImgs"),
method: 'get' });
+}
+//获取图片详情
+function detailsTiktokImg(data) {
+ return (0, _request.default)({
+ url: "".concat(serviceTitle, "/img/mini/tiktok/detailsTiktokImg/").concat(data),
+ method: 'get' });
+
}
/***/ }),
@@ -14691,7 +14698,15 @@ function getUserImgList() {
/* 90 */,
/* 91 */,
/* 92 */,
-/* 93 */
+/* 93 */,
+/* 94 */,
+/* 95 */,
+/* 96 */,
+/* 97 */,
+/* 98 */,
+/* 99 */,
+/* 100 */,
+/* 101 */
/*!****************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/api/myCollection.js ***!
\****************************************************/
@@ -14714,14 +14729,6 @@ function getCollectionList(data) {
}
/***/ }),
-/* 94 */,
-/* 95 */,
-/* 96 */,
-/* 97 */,
-/* 98 */,
-/* 99 */,
-/* 100 */,
-/* 101 */,
/* 102 */,
/* 103 */,
/* 104 */,
@@ -14737,7 +14744,15 @@ function getCollectionList(data) {
/* 114 */,
/* 115 */,
/* 116 */,
-/* 117 */
+/* 117 */,
+/* 118 */,
+/* 119 */,
+/* 120 */,
+/* 121 */,
+/* 122 */,
+/* 123 */,
+/* 124 */,
+/* 125 */
/*!***************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js ***!
\***************************************************************************************************/
@@ -14745,16 +14760,16 @@ function getCollectionList(data) {
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _en = _interopRequireDefault(__webpack_require__(/*! ./en.json */ 118));
-var _zhHans = _interopRequireDefault(__webpack_require__(/*! ./zh-Hans.json */ 119));
-var _zhHant = _interopRequireDefault(__webpack_require__(/*! ./zh-Hant.json */ 120));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}var _default =
+Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _en = _interopRequireDefault(__webpack_require__(/*! ./en.json */ 126));
+var _zhHans = _interopRequireDefault(__webpack_require__(/*! ./zh-Hans.json */ 127));
+var _zhHant = _interopRequireDefault(__webpack_require__(/*! ./zh-Hant.json */ 128));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}var _default =
{
en: _en.default,
'zh-Hans': _zhHans.default,
'zh-Hant': _zhHant.default };exports.default = _default;
/***/ }),
-/* 118 */
+/* 126 */
/*!**************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json ***!
\**************************************************************************************************/
@@ -14764,7 +14779,7 @@ var _zhHant = _interopRequireDefault(__webpack_require__(/*! ./zh-Hant.json */ 1
module.exports = JSON.parse("{\"uni-search-bar.cancel\":\"cancel\",\"uni-search-bar.placeholder\":\"Search enter content\"}");
/***/ }),
-/* 119 */
+/* 127 */
/*!*******************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json ***!
\*******************************************************************************************************/
@@ -14774,7 +14789,7 @@ module.exports = JSON.parse("{\"uni-search-bar.cancel\":\"cancel\",\"uni-search-
module.exports = JSON.parse("{\"uni-search-bar.cancel\":\"cancel\",\"uni-search-bar.placeholder\":\"请输入搜索内容\"}");
/***/ }),
-/* 120 */
+/* 128 */
/*!*******************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json ***!
\*******************************************************************************************************/
@@ -14784,14 +14799,6 @@ module.exports = JSON.parse("{\"uni-search-bar.cancel\":\"cancel\",\"uni-search-
module.exports = JSON.parse("{\"uni-search-bar.cancel\":\"cancel\",\"uni-search-bar.placeholder\":\"請輸入搜索內容\"}");
/***/ }),
-/* 121 */,
-/* 122 */,
-/* 123 */,
-/* 124 */,
-/* 125 */,
-/* 126 */,
-/* 127 */,
-/* 128 */,
/* 129 */,
/* 130 */,
/* 131 */,
@@ -14805,7 +14812,22 @@ module.exports = JSON.parse("{\"uni-search-bar.cancel\":\"cancel\",\"uni-search-
/* 139 */,
/* 140 */,
/* 141 */,
-/* 142 */
+/* 142 */,
+/* 143 */,
+/* 144 */,
+/* 145 */,
+/* 146 */,
+/* 147 */,
+/* 148 */,
+/* 149 */,
+/* 150 */,
+/* 151 */,
+/* 152 */,
+/* 153 */,
+/* 154 */,
+/* 155 */,
+/* 156 */,
+/* 157 */
/*!************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-icons/components/uni-icons/icons.js ***!
\************************************************************************************/
@@ -15982,4 +16004,4 @@ Object.defineProperty(exports, "__esModule", { value: true });exports.default =
/***/ })
]]);
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vRDovSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3VuaS1tcC10b3V0aWFvL2Rpc3QvaW5kZXguanMiLCJ1bmktYXBwOi8vL0Q6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL3dlYnBhY2svYnVpbGRpbi9nbG9iYWwuanMiLCJ1bmktYXBwOi8vL0Q6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvbXAtdnVlL2Rpc3QvbXAucnVudGltZS5lc20uanMiLCJ1bmktYXBwOi8vL0Q6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby91bmktaTE4bi9kaXN0L3VuaS1pMThuLmVzLmpzIiwidW5pLWFwcDovLy9EOi9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qcyIsInVuaS1hcHA6Ly8vc3RvcmUvaW5kZXguanMiLCJ1bmktYXBwOi8vL0Q6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVleDMvZGlzdC92dWV4LmNvbW1vbi5qcyIsInVuaS1hcHA6Ly8vRDovSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3IvaW5kZXguanMiLCJ1bmktYXBwOi8vL0Q6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS1tb2R1bGUuanMiLCJ1bmktYXBwOi8vL0Q6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcyIsInVuaS1hcHA6Ly8vYXBpL2luZGV4LmpzIiwidW5pLWFwcDovLy91dGlscy9yZXF1ZXN0LmpzIiwidW5pLWFwcDovLy9ub2RlX21vZHVsZXMvYXhpb3MvaW5kZXguanMiLCJ1bmktYXBwOi8vL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYXhpb3MuanMiLCJ1bmktYXBwOi8vL25vZGVfbW9kdWxlcy9heGlvcy9saWIvdXRpbHMuanMiLCJ1bmktYXBwOi8vL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9iaW5kLmpzIiwidW5pLWFwcDovLy9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3MuanMiLCJ1bmktYXBwOi8vL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9idWlsZFVSTC5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL0ludGVyY2VwdG9yTWFuYWdlci5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL2Rpc3BhdGNoUmVxdWVzdC5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL3RyYW5zZm9ybURhdGEuanMiLCJ1bmktYXBwOi8vL25vZGVfbW9kdWxlcy9heGlvcy9saWIvZGVmYXVsdHMvaW5kZXguanMiLCJ1bmktYXBwOi8vL0Q6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL25vZGUtbGlicy1icm93c2VyL21vY2svcHJvY2Vzcy5qcyIsInVuaS1hcHA6Ly8vRDovSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvcGF0aC1icm93c2VyaWZ5L2luZGV4LmpzIiwidW5pLWFwcDovLy9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvbm9ybWFsaXplSGVhZGVyTmFtZS5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL2VuaGFuY2VFcnJvci5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9kZWZhdWx0cy90cmFuc2l0aW9uYWwuanMiLCJ1bmktYXBwOi8vL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYWRhcHRlcnMveGhyLmpzIiwidW5pLWFwcDovLy9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvc2V0dGxlLmpzIiwidW5pLWFwcDovLy9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvY3JlYXRlRXJyb3IuanMiLCJ1bmktYXBwOi8vL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb29raWVzLmpzIiwidW5pLWFwcDovLy9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvYnVpbGRGdWxsUGF0aC5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzQWJzb2x1dGVVUkwuanMiLCJ1bmktYXBwOi8vL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb21iaW5lVVJMcy5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3BhcnNlSGVhZGVycy5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzVVJMU2FtZU9yaWdpbi5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsLmpzIiwidW5pLWFwcDovLy9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9pc0NhbmNlbC5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL21lcmdlQ29uZmlnLmpzIiwidW5pLWFwcDovLy9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvdmFsaWRhdG9yLmpzIiwidW5pLWFwcDovLy9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2Vudi9kYXRhLmpzIiwidW5pLWFwcDovLy9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9DYW5jZWxUb2tlbi5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3NwcmVhZC5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzQXhpb3NFcnJvci5qcyIsInVuaS1hcHA6Ly8vRDovSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvcXMvbGliL2luZGV4LmpzIiwidW5pLWFwcDovLy9EOi9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9xcy9saWIvc3RyaW5naWZ5LmpzIiwidW5pLWFwcDovLy9EOi9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9xcy9saWIvdXRpbHMuanMiLCJ1bmktYXBwOi8vL0Q6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL3FzL2xpYi9mb3JtYXRzLmpzIiwidW5pLWFwcDovLy9EOi9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9xcy9saWIvcGFyc2UuanMiLCJ1bmktYXBwOi8vL2FwaS9jcmVhdG9yLmpzIiwidW5pLWFwcDovLy9hcGkvbXlDb2xsZWN0aW9uLmpzIiwidW5pLWFwcDovLy91bmlfbW9kdWxlcy91bmktc2VhcmNoLWJhci9jb21wb25lbnRzL3VuaS1zZWFyY2gtYmFyL2kxOG4vaW5kZXguanMiLCJ1bmktYXBwOi8vL3VuaV9tb2R1bGVzL3VuaS1pY29ucy9jb21wb25lbnRzL3VuaS1pY29ucy9pY29ucy5qcyJdLCJuYW1lcyI6WyJyZWFsQXRvYiIsImI2NCIsImI2NHJlIiwiYXRvYiIsInN0ciIsIlN0cmluZyIsInJlcGxhY2UiLCJ0ZXN0IiwiRXJyb3IiLCJzbGljZSIsImxlbmd0aCIsImJpdG1hcCIsInJlc3VsdCIsInIxIiwicjIiLCJpIiwiaW5kZXhPZiIsImNoYXJBdCIsImZyb21DaGFyQ29kZSIsImI2NERlY29kZVVuaWNvZGUiLCJkZWNvZGVVUklDb21wb25lbnQiLCJzcGxpdCIsIm1hcCIsImMiLCJjaGFyQ29kZUF0IiwidG9TdHJpbmciLCJqb2luIiwiZ2V0Q3VycmVudFVzZXJJbmZvIiwidG9rZW4iLCJ0dCIsImdldFN0b3JhZ2VTeW5jIiwidG9rZW5BcnIiLCJ1aWQiLCJyb2xlIiwicGVybWlzc2lvbiIsInRva2VuRXhwaXJlZCIsInVzZXJJbmZvIiwiSlNPTiIsInBhcnNlIiwiZXJyb3IiLCJtZXNzYWdlIiwiZXhwIiwiaWF0IiwidW5pSWRNaXhpbiIsIlZ1ZSIsInByb3RvdHlwZSIsInVuaUlESGFzUm9sZSIsInJvbGVJZCIsInVuaUlESGFzUGVybWlzc2lvbiIsInBlcm1pc3Npb25JZCIsInVuaUlEVG9rZW5WYWxpZCIsIkRhdGUiLCJub3ciLCJfdG9TdHJpbmciLCJPYmplY3QiLCJoYXNPd25Qcm9wZXJ0eSIsImlzRm4iLCJmbiIsImlzU3RyIiwiaXNQbGFpbk9iamVjdCIsIm9iaiIsImNhbGwiLCJoYXNPd24iLCJrZXkiLCJub29wIiwiY2FjaGVkIiwiY2FjaGUiLCJjcmVhdGUiLCJjYWNoZWRGbiIsImhpdCIsImNhbWVsaXplUkUiLCJjYW1lbGl6ZSIsIl8iLCJ0b1VwcGVyQ2FzZSIsIkhPT0tTIiwiZ2xvYmFsSW50ZXJjZXB0b3JzIiwic2NvcGVkSW50ZXJjZXB0b3JzIiwibWVyZ2VIb29rIiwicGFyZW50VmFsIiwiY2hpbGRWYWwiLCJyZXMiLCJjb25jYXQiLCJBcnJheSIsImlzQXJyYXkiLCJkZWR1cGVIb29rcyIsImhvb2tzIiwicHVzaCIsInJlbW92ZUhvb2siLCJob29rIiwiaW5kZXgiLCJzcGxpY2UiLCJtZXJnZUludGVyY2VwdG9ySG9vayIsImludGVyY2VwdG9yIiwib3B0aW9uIiwia2V5cyIsImZvckVhY2giLCJyZW1vdmVJbnRlcmNlcHRvckhvb2siLCJhZGRJbnRlcmNlcHRvciIsIm1ldGhvZCIsInJlbW92ZUludGVyY2VwdG9yIiwid3JhcHBlckhvb2siLCJkYXRhIiwiaXNQcm9taXNlIiwidGhlbiIsInF1ZXVlIiwicHJvbWlzZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiY2FsbGJhY2siLCJ3cmFwcGVyT3B0aW9ucyIsIm9wdGlvbnMiLCJuYW1lIiwib2xkQ2FsbGJhY2siLCJjYWxsYmFja0ludGVyY2VwdG9yIiwid3JhcHBlclJldHVyblZhbHVlIiwicmV0dXJuVmFsdWUiLCJyZXR1cm5WYWx1ZUhvb2tzIiwiZ2V0QXBpSW50ZXJjZXB0b3JIb29rcyIsInNjb3BlZEludGVyY2VwdG9yIiwiaW52b2tlQXBpIiwiYXBpIiwicGFyYW1zIiwiaW52b2tlIiwicHJvbWlzZUludGVyY2VwdG9yIiwicmVqZWN0IiwiU1lOQ19BUElfUkUiLCJDT05URVhUX0FQSV9SRSIsIkNPTlRFWFRfQVBJX1JFX0VYQyIsIkFTWU5DX0FQSSIsIkNBTExCQUNLX0FQSV9SRSIsImlzQ29udGV4dEFwaSIsImlzU3luY0FwaSIsImlzQ2FsbGJhY2tBcGkiLCJoYW5kbGVQcm9taXNlIiwiY2F0Y2giLCJlcnIiLCJzaG91bGRQcm9taXNlIiwiZmluYWxseSIsImNvbnN0cnVjdG9yIiwidmFsdWUiLCJyZWFzb24iLCJwcm9taXNpZnkiLCJwcm9taXNlQXBpIiwic3VjY2VzcyIsImZhaWwiLCJjb21wbGV0ZSIsImFzc2lnbiIsIkVQUyIsIkJBU0VfREVWSUNFX1dJRFRIIiwiaXNJT1MiLCJkZXZpY2VXaWR0aCIsImRldmljZURQUiIsImNoZWNrRGV2aWNlV2lkdGgiLCJnZXRTeXN0ZW1JbmZvU3luYyIsInBsYXRmb3JtIiwicGl4ZWxSYXRpbyIsIndpbmRvd1dpZHRoIiwidXB4MnB4IiwibnVtYmVyIiwibmV3RGV2aWNlV2lkdGgiLCJOdW1iZXIiLCJNYXRoIiwiZmxvb3IiLCJnZXRMb2NhbGUiLCJhcHAiLCJnZXRBcHAiLCJhbGxvd0RlZmF1bHQiLCIkdm0iLCIkbG9jYWxlIiwibGFuZ3VhZ2UiLCJzZXRMb2NhbGUiLCJsb2NhbGUiLCJvbGRMb2NhbGUiLCJvbkxvY2FsZUNoYW5nZUNhbGxiYWNrcyIsIm9uTG9jYWxlQ2hhbmdlIiwiZ2xvYmFsIiwiaW50ZXJjZXB0b3JzIiwiYmFzZUFwaSIsImZyZWV6ZSIsIl9fcHJvdG9fXyIsIkV2ZW50Q2hhbm5lbCIsImlkIiwiZXZlbnRzIiwibGlzdGVuZXIiLCJlbWl0Q2FjaGUiLCJvbiIsImV2ZW50TmFtZSIsImFyZ3MiLCJmbnMiLCJvcHQiLCJhcHBseSIsImZpbHRlciIsInR5cGUiLCJfYWRkTGlzdGVuZXIiLCJfY2xlYXJDYWNoZSIsImNhY2hlQXJncyIsImVtaXQiLCJzaGlmdCIsImV2ZW50Q2hhbm5lbHMiLCJldmVudENoYW5uZWxTdGFjayIsImluaXRFdmVudENoYW5uZWwiLCJldmVudENoYW5uZWwiLCJnZXRFdmVudENoYW5uZWwiLCJuYXZpZ2F0ZVRvIiwiZnJvbUFyZ3MiLCJ0b0FyZ3MiLCJ1cmwiLCJmcm9tUmVzIiwidG9SZXMiLCJmaW5kRXhpc3RzUGFnZUluZGV4IiwicGFnZXMiLCJnZXRDdXJyZW50UGFnZXMiLCJsZW4iLCJwYWdlIiwiJHBhZ2UiLCJmdWxsUGF0aCIsInJlZGlyZWN0VG8iLCJleGlzdHMiLCJkZWx0YSIsImV4aXN0c1BhZ2VJbmRleCIsInByZXZpZXdJbWFnZSIsImN1cnJlbnRJbmRleCIsInBhcnNlSW50IiwiY3VycmVudCIsImlzTmFOIiwidXJscyIsIml0ZW0iLCJpbmRpY2F0b3IiLCJsb29wIiwiVVVJRF9LRVkiLCJkZXZpY2VJZCIsImFkZFV1aWQiLCJyYW5kb20iLCJzZXRTdG9yYWdlIiwiYWRkU2FmZUFyZWFJbnNldHMiLCJzYWZlQXJlYSIsInNhZmVBcmVhSW5zZXRzIiwidG9wIiwibGVmdCIsInJpZ2h0IiwiYm90dG9tIiwid2luZG93SGVpZ2h0IiwiZ2V0U3lzdGVtSW5mbyIsIm9OYW1lIiwibk5hbWUiLCJnZXRVc2VyUHJvZmlsZSIsImNhbklVc2UiLCJ0b2RvcyIsImNhbklVc2VzIiwicHJvdG9jb2xzIiwiY2hvb3NlSW1hZ2UiLCJzaXplVHlwZSIsImNvbm5lY3RTb2NrZXQiLCJjaG9vc2VWaWRlbyIsImNhbWVyYSIsInNjYW5Db2RlIiwib25seUZyb21DYW1lcmEiLCJzY2FuVHlwZSIsInN0YXJ0QWNjZWxlcm9tZXRlciIsImludGVydmFsIiwic2hvd1RvYXN0IiwiaW1hZ2UiLCJtYXNrIiwic2hvd0xvYWRpbmciLCJzaG93TW9kYWwiLCJjYW5jZWxDb2xvciIsImNvbmZpcm1Db2xvciIsInNob3dBY3Rpb25TaGVldCIsIml0ZW1Db2xvciIsImxvZ2luIiwic2NvcGVzIiwidGltZW91dCIsImdldFVzZXJJbmZvIiwibGFuZyIsInJlcXVlc3RQYXltZW50IiwicGF5Iiwib3JkZXJJbmZvIiwiZ2V0RmlsZUluZm8iLCJkaWdlc3RBbGdvcml0aG0iLCJDQUxMQkFDS1MiLCJwcm9jZXNzQ2FsbGJhY2siLCJtZXRob2ROYW1lIiwicHJvY2Vzc1JldHVyblZhbHVlIiwicHJvY2Vzc0FyZ3MiLCJhcmdzT3B0aW9uIiwia2VlcEZyb21BcmdzIiwia2V5T3B0aW9uIiwiY29uc29sZSIsIndhcm4iLCJrZWVwUmV0dXJuVmFsdWUiLCJ3cmFwcGVyIiwicHJvdG9jb2wiLCJhcmcxIiwiYXJnMiIsInRvZG9BcGlzIiwiVE9ET1MiLCJjcmVhdGVUb2RvQXBpIiwidG9kb0FwaSIsImVyck1zZyIsInByb3ZpZGVycyIsIm9hdXRoIiwic2hhcmUiLCJwYXltZW50IiwiZ2V0UHJvdmlkZXIiLCJzZXJ2aWNlIiwicHJvdmlkZXIiLCJleHRyYUFwaSIsImdldEVtaXR0ZXIiLCJFbWl0dGVyIiwiZ2V0VW5pRW1pdHRlciIsImN0eCIsIiRvbiIsImFyZ3VtZW50cyIsIiRvZmYiLCIkb25jZSIsIiRlbWl0IiwiZXZlbnRBcGkiLCJjcmVhdGVNZWRpYVF1ZXJ5T2JzZXJ2ZXIiLCJtZWRpYVF1ZXJ5T2JzZXJ2ZXIiLCJvcmllbnRhdGlvbiIsIm9ic2VydmUiLCJtYXRjaGVzIiwiaXRlbVZhbHVlIiwiZGlzY29ubmVjdCIsIk1QUGFnZSIsIlBhZ2UiLCJNUENvbXBvbmVudCIsIkNvbXBvbmVudCIsImN1c3RvbWl6ZVJFIiwiY3VzdG9taXplIiwiaW5pdFRyaWdnZXJFdmVudCIsIm1wSW5zdGFuY2UiLCJvbGRUcmlnZ2VyRXZlbnQiLCJ0cmlnZ2VyRXZlbnQiLCJuZXdUcmlnZ2VyRXZlbnQiLCJldmVudCIsIl90cmlnZ2VyRXZlbnQiLCJpbml0SG9vayIsImlzQ29tcG9uZW50IiwibGlmZXRpbWVzIiwib2xkSG9vayIsIl9fJHdyYXBwZXJlZCIsImFmdGVyIiwiUEFHRV9FVkVOVF9IT09LUyIsImluaXRNb2NrcyIsInZtIiwibW9ja3MiLCIkbXAiLCJtcFR5cGUiLCJtb2NrIiwiaGFzSG9vayIsInZ1ZU9wdGlvbnMiLCJkZWZhdWx0IiwiZXh0ZW5kT3B0aW9ucyIsInN1cGVyIiwibWl4aW5zIiwiZmluZCIsIm1peGluIiwiaW5pdEhvb2tzIiwibXBPcHRpb25zIiwiX19jYWxsX2hvb2siLCJpbml0VnVlQ29tcG9uZW50IiwiVnVlQ29tcG9uZW50IiwiZXh0ZW5kIiwiaW5pdFNsb3RzIiwidnVlU2xvdHMiLCIkc2xvdHMiLCJzbG90TmFtZSIsIiRzY29wZWRTbG90cyIsImluaXRWdWVJZHMiLCJ2dWVJZHMiLCJfJHZ1ZUlkIiwiXyR2dWVQaWQiLCJpbml0RGF0YSIsImNvbnRleHQiLCJtZXRob2RzIiwiZSIsInByb2Nlc3MiLCJWVUVfQVBQX0RFQlVHIiwic3RyaW5naWZ5IiwiX19saWZlY3ljbGVfaG9va3NfXyIsIlBST1BfVFlQRVMiLCJCb29sZWFuIiwiY3JlYXRlT2JzZXJ2ZXIiLCJvYnNlcnZlciIsIm5ld1ZhbCIsIm9sZFZhbCIsImluaXRCZWhhdmlvcnMiLCJpbml0QmVoYXZpb3IiLCJ2dWVCZWhhdmlvcnMiLCJiZWhhdmlvcnMiLCJ2dWVFeHRlbmRzIiwiZXh0ZW5kcyIsInZ1ZU1peGlucyIsInZ1ZVByb3BzIiwicHJvcHMiLCJiZWhhdmlvciIsInByb3BlcnRpZXMiLCJpbml0UHJvcGVydGllcyIsInZ1ZU1peGluIiwicGFyc2VQcm9wVHlwZSIsImRlZmF1bHRWYWx1ZSIsImZpbGUiLCJpc0JlaGF2aW9yIiwidnVlSWQiLCJnZW5lcmljIiwic2NvcGVkU2xvdHNDb21waWxlciIsInNldERhdGEiLCJvcHRzIiwid3JhcHBlciQxIiwibXAiLCJzdG9wUHJvcGFnYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsInRhcmdldCIsImRldGFpbCIsIm1hcmtlcklkIiwiZ2V0RXh0cmFWYWx1ZSIsImRhdGFQYXRoc0FycmF5IiwiZGF0YVBhdGhBcnJheSIsImRhdGFQYXRoIiwicHJvcFBhdGgiLCJ2YWx1ZVBhdGgiLCJ2Rm9yIiwiaXNJbnRlZ2VyIiwic3Vic3RyIiwiX19nZXRfdmFsdWUiLCJ2Rm9ySXRlbSIsInZGb3JLZXkiLCJwcm9jZXNzRXZlbnRFeHRyYSIsImV4dHJhIiwiZXh0cmFPYmoiLCJfX2FyZ3NfXyIsImdldE9iakJ5QXJyYXkiLCJhcnIiLCJlbGVtZW50IiwicHJvY2Vzc0V2ZW50QXJncyIsImlzQ3VzdG9tIiwiaXNDdXN0b21NUEV2ZW50IiwiY3VycmVudFRhcmdldCIsImRhdGFzZXQiLCJjb21UeXBlIiwicmV0IiwiYXJnIiwiT05DRSIsIkNVU1RPTSIsImlzTWF0Y2hFdmVudFR5cGUiLCJldmVudFR5cGUiLCJvcHRUeXBlIiwiZ2V0Q29udGV4dFZtIiwiJHBhcmVudCIsIiRvcHRpb25zIiwiJHNjb3BlIiwiaGFuZGxlRXZlbnQiLCJldmVudE9wdHMiLCJldmVudE9wdCIsImV2ZW50c0FycmF5IiwiaXNPbmNlIiwiZXZlbnRBcnJheSIsImhhbmRsZXJDdHgiLCJoYW5kbGVyIiwib25jZSIsIm1lc3NhZ2VzIiwiaW5pdEkxOG5NZXNzYWdlcyIsImlzRW5hYmxlTG9jYWxlIiwibG9jYWxlS2V5cyIsIl9fdW5pQ29uZmlnIiwibG9jYWxlcyIsImN1ck1lc3NhZ2VzIiwidXNlck1lc3NhZ2VzIiwiaTE4biIsInQiLCJpMThuTWl4aW4iLCJiZWZvcmVDcmVhdGUiLCJ1bndhdGNoIiwid2F0Y2hMb2NhbGUiLCIkZm9yY2VVcGRhdGUiLCIkJHQiLCJ2YWx1ZXMiLCJzZXRMb2NhbGUkMSIsImdldExvY2FsZSQxIiwiaW5pdEFwcExvY2FsZSIsImFwcFZtIiwic3RhdGUiLCJvYnNlcnZhYmxlIiwibG9jYWxlV2F0Y2hlcnMiLCIkd2F0Y2hMb2NhbGUiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsInNldCIsInYiLCJ3YXRjaCIsImluaXRFdmVudENoYW5uZWwkMSIsImdldE9wZW5lckV2ZW50Q2hhbm5lbCIsIl9fZXZlbnRDaGFubmVsX18iLCJjYWxsSG9vayIsIl9faWRfXyIsImluaXRTY29wZWRTbG90c1BhcmFtcyIsImNlbnRlciIsInBhcmVudHMiLCIkaGFzU2NvcGVkU2xvdHNQYXJhbXMiLCJoYXMiLCIkZ2V0U2NvcGVkU2xvdHNQYXJhbXMiLCJvYmplY3QiLCIkc2V0U2NvcGVkU2xvdHNQYXJhbXMiLCJwcm9wc0RhdGEiLCJkZXN0cm95ZWQiLCJwYXJzZUJhc2VBcHAiLCJpbml0UmVmcyIsInN0b3JlIiwiJHN0b3JlIiwibXBIb3N0IiwiJGkxOG4iLCJfaTE4biIsImFwcE9wdGlvbnMiLCJvbkxhdW5jaCIsImdsb2JhbERhdGEiLCJfaXNNb3VudGVkIiwiZmluZFZtQnlWdWVJZCIsInZ1ZVBpZCIsIiRjaGlsZHJlbiIsImNoaWxkVm0iLCJwYXJlbnRWbSIsIkJlaGF2aW9yIiwiaGFuZGxlTGluayIsInBhcmVudCIsImlzUGFnZSIsIl9fbm9kZWlkX18iLCJfX25vZGVJZF9fIiwibWlub3JWZXJzaW9uIiwiU0RLVmVyc2lvbiIsIiRyZWZzIiwiY29tcG9uZW50cyIsInNlbGVjdEFsbENvbXBvbmVudHMiLCJjb21wb25lbnQiLCJyZWYiLCJmb3JDb21wb25lbnRzIiwiaW5zdGFuY2VzIiwiaW5pdFJlbGF0aW9uIiwibm9kZUlkIiwid2Vidmlld0lkIiwiX193ZWJ2aWV3SWRfXyIsImhhbmRsZUxpbmskMSIsIiRyb290IiwicGFyc2VBcHAiLCJfJGZhbGxiYWNrIiwiY3JlYXRlZCIsInJvdXRlIiwiX19yb3V0ZV9fIiwiX19pbml0X2luamVjdGlvbnMiLCJfX2luaXRfcHJvdmlkZSIsImNyZWF0ZUFwcCIsIkFwcCIsImVuY29kZVJlc2VydmVSRSIsImVuY29kZVJlc2VydmVSZXBsYWNlciIsImNvbW1hUkUiLCJlbmNvZGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJzdHJpbmdpZnlRdWVyeSIsImVuY29kZVN0ciIsInZhbCIsInVuZGVmaW5lZCIsInZhbDIiLCJ4IiwicGFyc2VCYXNlQ29tcG9uZW50IiwidnVlQ29tcG9uZW50T3B0aW9ucyIsIm11bHRpcGxlU2xvdHMiLCJhZGRHbG9iYWxDbGFzcyIsImNvbXBvbmVudE9wdGlvbnMiLCJfX2ZpbGUiLCJhdHRhY2hlZCIsIiRtb3VudCIsInJlYWR5IiwiZGV0YWNoZWQiLCIkZGVzdHJveSIsInBhZ2VMaWZldGltZXMiLCJzaG93IiwiaGlkZSIsInJlc2l6ZSIsInNpemUiLCJfX2wiLCJfX2UiLCJleHRlcm5hbENsYXNzZXMiLCJ3eHNDYWxsTWV0aG9kcyIsImNhbGxNZXRob2QiLCJwYXJzZUNvbXBvbmVudCIsIl9fbGlmZXRpbWVzX2F0dGFjaGVkIiwiaG9va3MkMSIsInBhcnNlQmFzZVBhZ2UiLCJ2dWVQYWdlT3B0aW9ucyIsInBhZ2VPcHRpb25zIiwib25Mb2FkIiwicXVlcnkiLCJjb3B5UXVlcnkiLCJpcyIsInBhcnNlUGFnZSIsImNyZWF0ZVBhZ2UiLCJjcmVhdGVDb21wb25lbnQiLCJjcmVhdGVTdWJwYWNrYWdlQXBwIiwib25TaG93Iiwib25BcHBTaG93Iiwib25IaWRlIiwib25BcHBIaWRlIiwiZ2V0TGF1bmNoT3B0aW9uc1N5bmMiLCJjcmVhdGVQbHVnaW4iLCJjYW5JVXNlQXBpIiwiYXBpTmFtZSIsInVuaSIsIlByb3h5IiwidW5pJDEiLCJpc09iamVjdCIsImRlZmF1bHREZWxpbWl0ZXJzIiwiQmFzZUZvcm1hdHRlciIsIl9jYWNoZXMiLCJkZWxpbWl0ZXJzIiwidG9rZW5zIiwiY29tcGlsZSIsIlJFX1RPS0VOX0xJU1RfVkFMVUUiLCJSRV9UT0tFTl9OQU1FRF9WQUxVRSIsImZvcm1hdCIsInN0YXJ0RGVsaW1pdGVyIiwiZW5kRGVsaW1pdGVyIiwicG9zaXRpb24iLCJ0ZXh0IiwiY2hhciIsInN1YiIsImlzQ2xvc2VkIiwiY29tcGlsZWQiLCJtb2RlIiwiTE9DQUxFX1pIX0hBTlMiLCJMT0NBTEVfWkhfSEFOVCIsIkxPQ0FMRV9FTiIsIkxPQ0FMRV9GUiIsIkxPQ0FMRV9FUyIsImRlZmF1bHRGb3JtYXR0ZXIiLCJpbmNsdWRlIiwicGFydHMiLCJwYXJ0Iiwic3RhcnRzV2l0aCIsIm5vcm1hbGl6ZUxvY2FsZSIsInRyaW0iLCJ0b0xvd2VyQ2FzZSIsIkkxOG4iLCJmYWxsYmFja0xvY2FsZSIsIndhdGNoZXIiLCJmb3JtYXRlciIsIndhdGNoZXJzIiwib3ZlcnJpZGUiLCJpbnRlcnBvbGF0ZSIsIndhdGNoQXBwTG9jYWxlIiwibmV3TG9jYWxlIiwiJHdhdGNoIiwiZ2V0RGVmYXVsdExvY2FsZSIsImluaXRWdWVJMThuIiwiaXNXYXRjaGVkQXBwTG9jYWxlIiwiZiIsImFkZCIsImlzU3RyaW5nIiwiaGFzSTE4bkpzb24iLCJqc29uT2JqIiwid2Fsa0pzb25PYmoiLCJpc0kxOG5TdHIiLCJwYXJzZUkxOG5Kc29uIiwiY29tcGlsZVN0ciIsImNvbXBpbGVJMThuSnNvblN0ciIsImpzb25TdHIiLCJsb2NhbGVWYWx1ZXMiLCJ1bnNoaWZ0IiwiY29tcGlsZUpzb25PYmoiLCJjb21waWxlVmFsdWUiLCJ2YWx1ZUxvY2FsZXMiLCJsb2NhbFZhbHVlIiwid2FsayIsInJlc29sdmVMb2NhbGUiLCJyZXNvbHZlTG9jYWxlQ2hhaW4iLCJjaGFpbiIsInBvcCIsInVzZSIsIlZ1ZXgiLCJnZXR0ZXRzIiwibXV0YXRpb25zIiwiYWN0aW9ucyIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXF1aXJlIiwic2VydmljZVRpdGxlIiwidGlrdG9rVXNlckltZ3MiLCJpbWdMaXN0cyIsInRpa3Rva1VzZXJEZXRhaWxzIiwiYXhpb3MiLCJ3aXRoQ3JlZGVudGlhbHMiLCJjcm9zc0RvbWFpbiIsImJhc2VVUkwiLCJyZXF1ZXN0IiwiY29uZmlnIiwiaGVhZGVycyIsImxvZyIsInJlc3BvbnNlIiwiZGVmYXVsdHMiLCJhZGFwdGVyIiwic2V0dGxlIiwiYnVpbGRVUkwiLCJwYXJhbXNTZXJpYWxpemVyIiwiaGVhZGVyIiwiZGF0YVR5cGUiLCJyZXNwb25zZVR5cGUiLCJzc2xWZXJpZnkiLCJzdGF0dXMiLCJzdGF0dXNDb2RlIiwidXRpbHMiLCJiaW5kIiwiQXhpb3MiLCJtZXJnZUNvbmZpZyIsImNyZWF0ZUluc3RhbmNlIiwiZGVmYXVsdENvbmZpZyIsImluc3RhbmNlIiwiaW5zdGFuY2VDb25maWciLCJDYW5jZWwiLCJDYW5jZWxUb2tlbiIsImlzQ2FuY2VsIiwiVkVSU0lPTiIsInZlcnNpb24iLCJhbGwiLCJwcm9taXNlcyIsInNwcmVhZCIsImlzQXhpb3NFcnJvciIsImlzVW5kZWZpbmVkIiwiaXNCdWZmZXIiLCJpc0FycmF5QnVmZmVyIiwiaXNGb3JtRGF0YSIsImlzQXJyYXlCdWZmZXJWaWV3IiwiQXJyYXlCdWZmZXIiLCJpc1ZpZXciLCJidWZmZXIiLCJpc051bWJlciIsImdldFByb3RvdHlwZU9mIiwiaXNEYXRlIiwiaXNGaWxlIiwiaXNCbG9iIiwiaXNGdW5jdGlvbiIsImlzU3RyZWFtIiwicGlwZSIsImlzVVJMU2VhcmNoUGFyYW1zIiwiaXNTdGFuZGFyZEJyb3dzZXJFbnYiLCJuYXZpZ2F0b3IiLCJwcm9kdWN0Iiwid2luZG93IiwiZG9jdW1lbnQiLCJsIiwibWVyZ2UiLCJhc3NpZ25WYWx1ZSIsImEiLCJiIiwidGhpc0FyZyIsInN0cmlwQk9NIiwiY29udGVudCIsIndyYXAiLCJJbnRlcmNlcHRvck1hbmFnZXIiLCJkaXNwYXRjaFJlcXVlc3QiLCJ2YWxpZGF0b3IiLCJ2YWxpZGF0b3JzIiwiY29uZmlnT3JVcmwiLCJ0cmFuc2l0aW9uYWwiLCJhc3NlcnRPcHRpb25zIiwic2lsZW50SlNPTlBhcnNpbmciLCJib29sZWFuIiwiZm9yY2VkSlNPTlBhcnNpbmciLCJjbGFyaWZ5VGltZW91dEVycm9yIiwicmVxdWVzdEludGVyY2VwdG9yQ2hhaW4iLCJzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMiLCJ1bnNoaWZ0UmVxdWVzdEludGVyY2VwdG9ycyIsInJ1bldoZW4iLCJzeW5jaHJvbm91cyIsImZ1bGZpbGxlZCIsInJlamVjdGVkIiwicmVzcG9uc2VJbnRlcmNlcHRvckNoYWluIiwicHVzaFJlc3BvbnNlSW50ZXJjZXB0b3JzIiwibmV3Q29uZmlnIiwib25GdWxmaWxsZWQiLCJvblJlamVjdGVkIiwiZ2V0VXJpIiwiZm9yRWFjaE1ldGhvZE5vRGF0YSIsImZvckVhY2hNZXRob2RXaXRoRGF0YSIsInNlcmlhbGl6ZWRQYXJhbXMiLCJzZXJpYWxpemUiLCJwYXJzZVZhbHVlIiwidG9JU09TdHJpbmciLCJoYXNobWFya0luZGV4IiwiaGFuZGxlcnMiLCJlamVjdCIsImZvckVhY2hIYW5kbGVyIiwiaCIsInRyYW5zZm9ybURhdGEiLCJ0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkIiwiY2FuY2VsVG9rZW4iLCJ0aHJvd0lmUmVxdWVzdGVkIiwic2lnbmFsIiwiYWJvcnRlZCIsInRyYW5zZm9ybVJlcXVlc3QiLCJjb21tb24iLCJjbGVhbkhlYWRlckNvbmZpZyIsIm9uQWRhcHRlclJlc29sdXRpb24iLCJ0cmFuc2Zvcm1SZXNwb25zZSIsIm9uQWRhcHRlclJlamVjdGlvbiIsInRyYW5zZm9ybSIsIm5vcm1hbGl6ZUhlYWRlck5hbWUiLCJlbmhhbmNlRXJyb3IiLCJ0cmFuc2l0aW9uYWxEZWZhdWx0cyIsIkRFRkFVTFRfQ09OVEVOVF9UWVBFIiwic2V0Q29udGVudFR5cGVJZlVuc2V0IiwiZ2V0RGVmYXVsdEFkYXB0ZXIiLCJYTUxIdHRwUmVxdWVzdCIsInN0cmluZ2lmeVNhZmVseSIsInJhd1ZhbHVlIiwicGFyc2VyIiwiZW5jb2RlciIsInN0cmljdEpTT05QYXJzaW5nIiwieHNyZkNvb2tpZU5hbWUiLCJ4c3JmSGVhZGVyTmFtZSIsIm1heENvbnRlbnRMZW5ndGgiLCJtYXhCb2R5TGVuZ3RoIiwidmFsaWRhdGVTdGF0dXMiLCJub3JtYWxpemVkTmFtZSIsInByb2Nlc3NIZWFkZXIiLCJjb2RlIiwidG9KU09OIiwiZGVzY3JpcHRpb24iLCJmaWxlTmFtZSIsImxpbmVOdW1iZXIiLCJjb2x1bW5OdW1iZXIiLCJzdGFjayIsImNvb2tpZXMiLCJidWlsZEZ1bGxQYXRoIiwicGFyc2VIZWFkZXJzIiwiaXNVUkxTYW1lT3JpZ2luIiwiY3JlYXRlRXJyb3IiLCJ4aHJBZGFwdGVyIiwiZGlzcGF0Y2hYaHJSZXF1ZXN0IiwicmVxdWVzdERhdGEiLCJyZXF1ZXN0SGVhZGVycyIsIm9uQ2FuY2VsZWQiLCJkb25lIiwidW5zdWJzY3JpYmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiYXV0aCIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJ1bmVzY2FwZSIsIkF1dGhvcml6YXRpb24iLCJidG9hIiwib3BlbiIsIm9ubG9hZGVuZCIsInJlc3BvbnNlSGVhZGVycyIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInJlc3BvbnNlRGF0YSIsInJlc3BvbnNlVGV4dCIsInN0YXR1c1RleHQiLCJfcmVzb2x2ZSIsIl9yZWplY3QiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJoYW5kbGVMb2FkIiwicmVhZHlTdGF0ZSIsInJlc3BvbnNlVVJMIiwic2V0VGltZW91dCIsIm9uYWJvcnQiLCJoYW5kbGVBYm9ydCIsIm9uZXJyb3IiLCJoYW5kbGVFcnJvciIsIm9udGltZW91dCIsImhhbmRsZVRpbWVvdXQiLCJ0aW1lb3V0RXJyb3JNZXNzYWdlIiwieHNyZlZhbHVlIiwicmVhZCIsInNldFJlcXVlc3RIZWFkZXIiLCJvbkRvd25sb2FkUHJvZ3Jlc3MiLCJhZGRFdmVudExpc3RlbmVyIiwib25VcGxvYWRQcm9ncmVzcyIsInVwbG9hZCIsImNhbmNlbCIsImFib3J0Iiwic3Vic2NyaWJlIiwic2VuZCIsInN0YW5kYXJkQnJvd3NlckVudiIsIndyaXRlIiwiZXhwaXJlcyIsInBhdGgiLCJkb21haW4iLCJzZWN1cmUiLCJjb29raWUiLCJ0b0dNVFN0cmluZyIsIm1hdGNoIiwiUmVnRXhwIiwicmVtb3ZlIiwibm9uU3RhbmRhcmRCcm93c2VyRW52IiwiaXNBYnNvbHV0ZVVSTCIsImNvbWJpbmVVUkxzIiwicmVxdWVzdGVkVVJMIiwicmVsYXRpdmVVUkwiLCJpZ25vcmVEdXBsaWNhdGVPZiIsInBhcnNlZCIsImxpbmUiLCJtc2llIiwidXNlckFnZW50IiwidXJsUGFyc2luZ05vZGUiLCJjcmVhdGVFbGVtZW50Iiwib3JpZ2luVVJMIiwicmVzb2x2ZVVSTCIsImhyZWYiLCJzZXRBdHRyaWJ1dGUiLCJob3N0Iiwic2VhcmNoIiwiaGFzaCIsImhvc3RuYW1lIiwicG9ydCIsInBhdGhuYW1lIiwibG9jYXRpb24iLCJyZXF1ZXN0VVJMIiwiX19DQU5DRUxfXyIsImNvbmZpZzEiLCJjb25maWcyIiwiZ2V0TWVyZ2VkVmFsdWUiLCJzb3VyY2UiLCJtZXJnZURlZXBQcm9wZXJ0aWVzIiwicHJvcCIsInZhbHVlRnJvbUNvbmZpZzIiLCJkZWZhdWx0VG9Db25maWcyIiwibWVyZ2VEaXJlY3RLZXlzIiwibWVyZ2VNYXAiLCJjb21wdXRlQ29uZmlnVmFsdWUiLCJjb25maWdWYWx1ZSIsInRoaW5nIiwiZGVwcmVjYXRlZFdhcm5pbmdzIiwiZm9ybWF0TWVzc2FnZSIsImRlc2MiLCJzY2hlbWEiLCJhbGxvd1Vua25vd24iLCJUeXBlRXJyb3IiLCJleGVjdXRvciIsInJlc29sdmVQcm9taXNlIiwicHJvbWlzZUV4ZWN1dG9yIiwiX2xpc3RlbmVycyIsIm9uZnVsZmlsbGVkIiwicGF5bG9hZCIsImdldEJhbm5lckxpc3QiLCJnZXRVc2VySW1nTGlzdCIsImdldENvbGxlY3Rpb25MaXN0IiwiZW4iLCJ6aEhhbnMiLCJ6aEhhbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7bVVBQUE7QUFDQSxnRTs7QUFFQSxJQUFJQSxRQUFKOztBQUVBLElBQU1DLEdBQUcsR0FBRyxtRUFBWjtBQUNBLElBQU1DLEtBQUssR0FBRyxzRUFBZDs7QUFFQSxJQUFJLE9BQU9DLElBQVAsS0FBZ0IsVUFBcEIsRUFB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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixpQkFBaUI7QUFDbEM7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLCtCQUErQjtBQUNyRCxzQkFBc0IsaUJBQWlCO0FBQ3ZDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtELGlDQUFpQyxFQUFFO0FBQ3JGLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDBCQUEwQixTQUFTLHFCQUFxQjs7QUFFeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwyQkFBMkI7QUFDOUM7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILENBQUM7O0FBRUQ7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixpQkFBaUI7QUFDbEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLE9BQU87QUFDMUM7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsT0FBTztBQUN6QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsS0FBcUM7QUFDL0M7QUFDQTtBQUNBO0FBQ0EsOEJBQThCO0FBQzlCO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEtBQXFDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksS0FBcUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEtBQXFDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxLQUFxQztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQsT0FBTztBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUFxQztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLGlCQUFpQjtBQUNsQztBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sS0FBcUM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCLGtCQUFrQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxLQUFxQztBQUN6QztBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsdUJBQXVCO0FBQ3pELGlDQUFpQyxzQkFBc0I7QUFDdkQ7QUFDQSxrQkFBa0I7QUFDbEIsTUFBTSxJQUFxQztBQUMzQztBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLGFBQW9CO0FBQ3RDO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBLGlCQUFpQix1QkFBdUI7QUFDeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLE9BQU8sVUFBVSxJQUFxQztBQUN0RDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLEdBQUcsVUFBVSxJQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBLG1CQUFtQixtQkFBbUI7QUFDdEMsK0JBQStCO0FBQy9CO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixZQUFZO0FBQzlCLFdBQVc7QUFDWDtBQUNBLEdBQUcsVUFBVSxJQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sSUFBcUM7QUFDM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxPQUFPO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkI7QUFDM0I7QUFDQSxvQ0FBb0M7QUFDcEM7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBLE1BQU0sS0FBcUM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxJQUVRO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sS0FBcUM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQiwyQkFBMkI7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsU0FBUztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSw2Q0FBNkMscUNBQXFDLEVBQUU7QUFDcEY7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG9DQUFvQyx5Q0FBeUMsRUFBRTtBQUMvRTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixrQkFBa0I7QUFDM0M7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsc0RBQXNELEVBQUU7QUFDdEY7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTSxJQUFxQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLG1CQUFtQjtBQUNwQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGtCQUFrQjtBQUNsQztBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUEsSUFBSSxJQUFxQztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLGlDQUFpQztBQUNuRSxjQUFjLDZCQUE2QjtBQUMzQztBQUNBO0FBQ0E7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O0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sS0FBcUM7QUFDM0M7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLGtEQUFrRDtBQUNsRCw0Q0FBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDZDQUE2QztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsaUJBQWlCO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sS0FBcUM7QUFDM0M7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLDRDQUE0QztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLElBQXFDO0FBQzNDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMEJBQTBCOztBQUUxQixrQkFBa0I7QUFDbEI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixxQkFBcUI7QUFDeEM7QUFDQSwwQ0FBMEM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsSUFBcUM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdFQUF3RTtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUssTUFBTSxFQUVOO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxLQUFxQztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLElBQXFDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEtBQXFDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBLDhCQUE4Qjs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLEtBQXFDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLFVBQVUsSUFBcUM7QUFDcEQ7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEtBQXFDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsSUFBcUM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixvQkFBb0I7QUFDekM7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBLDhCQUE4QjtBQUM5QixNQUFNLElBQXFDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUSxLQUFxQztBQUM3QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLElBQXFDO0FBQzdDO0FBQ0EsS0FBSyxNQUFNLEVBRU47QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekM7QUFDQSxzQ0FBc0M7QUFDdEM7O0FBRUE7QUFDQSxRQUFRLEtBQXFDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixlQUFlO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFNLEtBQXFDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNFQUFzRTtBQUN0RTtBQUNBO0FB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsT0FBTztBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0QscURBQXFELEVBQUUsU0FBUztBQUN0SDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLE9BQU87QUFDeEM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxrQ0FBa0MsT0FBTztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLDBC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QUFDQTtBQUNBLDJDQUEyQywwQkFBMEIsRUFBRTtBQUN2RTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CO0FBQ25COztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsMEJBQTBCLGNBQWMscUJBQXFCOztBQUU3RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPLElBQXFDO0FBQzVDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUyxJQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPLElBQXFDO0FBQzVDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEs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M0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQyxjQUFjO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQ0FBaUMsa0JBQWtCO0FBQ25EO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixpQkFBaUI7QUFDekM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLDhDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTs7QUFFQSxXQUFXO0FBQ1g7QUFDQTtBQUNBOztBQUVBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7O0FBRUEsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLDhDQUE4QyxRQUFRO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0EsOENBQThDLFFBQVE7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0EsOENBQThDLFFBQVE7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7Ozs7Ozs7Ozs7O2dMQ2h0QkEsc0Y7QUFDQSxJQUFNQyxZQUFZLEdBQUcsTUFBckI7QUFDQTtBQUNBOztBQUVBO0FBQ08sU0FBU0MsY0FBVCxHQUEwQjtBQUNoQyxTQUFPLHNCQUFRO0FBQ2QvZCxPQUFHLFlBQUs4ZCxZQUFMLG9DQURXO0FBRWQxa0IsVUFBTSxFQUFFLEtBRk0sRUFBUixDQUFQOztBQUlBO0FBQ0Q7QUFDTyxTQUFTNGtCLFFBQVQsQ0FBa0J6a0IsSUFBbEIsRUFBd0I7QUFDOUIsU0FBTyxzQkFBUTtBQUNkeUcsT0FBRyxZQUFLOGQsWUFBTCw4QkFEVztBQUVkMWtCLFVBQU0sRUFBRSxNQUZNO0FBR2RHLFFBQUksRUFBSkEsSUFIYyxFQUFSLENBQVA7O0FBS0E7QUFDRDtBQUNPLFNBQVMwa0IsaUJBQVQsQ0FBMkIxa0IsSUFBM0IsRUFBaUM7QUFDdkMsU0FBTyxzQkFBUTtBQUNkeUcsT0FBRyxZQUFLOGQsWUFBTCwyQ0FEVztBQUVkMWtCLFVBQU0sRUFBRSxNQUZNO0FBR2RHLFFBQUksRUFBSkEsSUFIYyxFQUFSLENBQVA7O0FBS0EsQzs7Ozs7Ozs7Ozs7a0lDM0JEO0FBQ0E7QUFDQSxxRTs7QUFFQSxJQUFNMk0sT0FBTyxHQUFHZ1ksZUFBTTdtQixNQUFOLENBQWE7QUFDNUI4bUIsaUJBQWUsRUFBRSxJQURXO0FBRTVCQyxhQUFXLEVBQUUsSUFGZTtBQUc1QkMsU0FBTyxFQUFFdm9CLGFBQUlDLFNBQUosQ0FBY3NvQixPQUhLLEVBR0k7QUFDaENwYSxTQUFPLEVBQUUsS0FKbUIsRUFBYixDQUFoQjs7OztBQVFBO0FBQ0FpQyxPQUFPLENBQUNoSSxZQUFSLENBQXFCb2dCLE9BQXJCLENBQTZCaEIsR0FBN0I7QUFDQyxVQUFBaUIsTUFBTSxFQUFJO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQUEsUUFBTSxDQUFDQyxPQUFQLENBQWUsY0FBZixJQUFpQyxrQkFBakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0F2WixTQUFPLENBQUN3WixHQUFSLENBQVksUUFBWjtBQUNBeFosU0FBTyxDQUFDd1osR0FBUixDQUFZRixNQUFaO0FBQ0EsU0FBT0EsTUFBUDtBQUNBLENBZkY7QUFnQkMsVUFBQTlvQixLQUFLLEVBQUk7QUFDUndQLFNBQU8sQ0FBQ3daLEdBQVIsQ0FBWWhwQixLQUFaLEVBRFEsQ0FDWTtBQUNwQixTQUFPbUUsT0FBTyxDQUFDa0IsTUFBUixDQUFlckYsS0FBZixDQUFQO0FBQ0EsQ0FuQkY7OztBQXNCQTtBQUNBeVEsT0FBTyxDQUFDaEksWUFBUixDQUFxQndnQixRQUFyQixDQUE4QnBCLEdBQTlCLENBQWtDLFVBQUFwbEIsR0FBRyxFQUFJO0FBQ3hDK00sU0FBTyxDQUFDd1osR0FBUixDQUFZLE1BQVosRUFBbUJ2bUIsR0FBbkI7QUFDQSxTQUFPQSxHQUFQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBUkQsRUFRRyxVQUFBekMsS0FBSyxFQUFJO0FBQ1gsU0FBT21FLE9BQU8sQ0FBQ2tCLE1BQVIsQ0FBZXJGLEtBQWYsQ0FBUDtBQUNBLENBVkQ7O0FBWUF5b0IsZUFBTVMsUUFBTixDQUFlQyxPQUFmLEdBQXlCLFVBQVNMLE1BQVQsRUFBaUIsQ0FBRTtBQUMzQyxTQUFPLElBQUkza0IsT0FBSixDQUFZLFVBQUNDLE9BQUQsRUFBVWlCLE1BQVYsRUFBcUI7QUFDdkM7QUFDQSxRQUFJK2pCLE1BQU0sR0FBR2hCLG1CQUFPLENBQUMsK0JBQUQsQ0FBcEI7QUFDQSxRQUFJaUIsUUFBUSxHQUFHakIsbUJBQU8sQ0FBQyxvQ0FBRCxDQUF0QjtBQUNBN0UsT0FBRyxDQUFDc0YsT0FBSixDQUFZO0FBQ1hsbEIsWUFBTSxFQUFFbWxCLE1BQU0sQ0FBQ25sQixNQUFQLENBQWN6QixXQUFkLEVBREc7QUFFWHFJLFNBQUcsRUFBRXVlLE1BQU0sQ0FBQ0YsT0FBUCxHQUFpQlMsUUFBUSxDQUFDUCxNQUFNLENBQUN2ZSxHQUFSLEVBQWF1ZSxNQUFNLENBQUM1akIsTUFBcEIsRUFBNEI0akIsTUFBTSxDQUFDUSxnQkFBbkMsQ0FGbkI7QUFHWEMsWUFBTSxFQUFFVCxNQUFNLENBQUNDLE9BSEo7QUFJWGpsQixVQUFJLEVBQUVnbEIsTUFBTSxDQUFDaGxCLElBSkY7QUFLWDBsQixjQUFRLEVBQUVWLE1BQU0sQ0FBQ1UsUUFMTjtBQU1YQyxrQkFBWSxFQUFFWCxNQUFNLENBQUNXLFlBTlY7QUFPWEMsZUFBUyxFQUFFWixNQUFNLENBQUNZLFNBUFA7QUFRWGhqQixjQUFRLEVBQUUsU0FBU0EsUUFBVCxDQUFrQnVpQixRQUFsQixFQUE0QjtBQUNyQ3paLGVBQU8sQ0FBQ3daLEdBQVIsQ0FBWSxPQUFaLEVBQXFCQyxRQUFyQjtBQUNBQSxnQkFBUSxHQUFHO0FBQ1ZubEIsY0FBSSxFQUFFbWxCLFFBQVEsQ0FBQ25sQixJQURMO0FBRVY2bEIsZ0JBQU0sRUFBRVYsUUFBUSxDQUFDVyxVQUZQO0FBR1Z6WixnQkFBTSxFQUFFOFksUUFBUSxDQUFDOVksTUFIUDtBQUlWb1osZ0JBQU0sRUFBRU4sUUFBUSxDQUFDTSxNQUpQO0FBS1ZULGdCQUFNLEVBQUVBLE1BTEUsRUFBWDs7QUFPQU0sY0FBTSxDQUFDaGxCLE9BQUQsRUFBVWlCLE1BQVYsRUFBa0I0akIsUUFBbEIsQ0FBTjtBQUNBLE9BbEJVLEVBQVo7O0FBb0JBLEdBeEJNLENBQVA7QUF5QkEsQ0ExQkQsQztBQTJCZXhZLE87Ozs7Ozs7Ozs7O0FDM0VmeVgsTUFBTSxDQUFDQyxPQUFQLEdBQWlCQyxtQkFBTyxDQUFDLHFCQUFELENBQXhCLEM7Ozs7Ozs7Ozs7O0FDQWE7O0FBRWIsSUFBSXlCLEtBQUssR0FBR3pCLG1CQUFPLENBQUMsaUJBQUQsQ0FBbkI7QUFDQSxJQUFJMEIsSUFBSSxHQUFHMUIsbUJBQU8sQ0FBQyx3QkFBRCxDQUFsQjtBQUNBLElBQUkyQixLQUFLLEdBQUczQixtQkFBTyxDQUFDLHNCQUFELENBQW5CO0FBQ0EsSUFBSTRCLFdBQVcsR0FBRzVCLG1CQUFPLENBQUMsNEJBQUQsQ0FBekI7QUFDQSxJQUFJYyxRQUFRLEdBQUdkLG1CQUFPLENBQUMsb0JBQUQsQ0FBdEI7O0FBRUE7Ozs7OztBQU1BLFNBQVM2QixjQUFULENBQXdCQyxhQUF4QixFQUF1QztBQUNyQyxNQUFJblYsT0FBTyxHQUFHLElBQUlnVixLQUFKLENBQVVHLGFBQVYsQ0FBZDtBQUNBLE1BQUlDLFFBQVEsR0FBR0wsSUFBSSxDQUFDQyxLQUFLLENBQUN6cEIsU0FBTixDQUFnQnVvQixPQUFqQixFQUEwQjlULE9BQTFCLENBQW5COztBQUVBO0FBQ0E4VSxPQUFLLENBQUN6VixNQUFOLENBQWErVixRQUFiLEVBQXVCSixLQUFLLENBQUN6cEIsU0FBN0IsRUFBd0N5VSxPQUF4Qzs7QUFFQTtBQUNBOFUsT0FBSyxDQUFDelYsTUFBTixDQUFhK1YsUUFBYixFQUF1QnBWLE9BQXZCOztBQUVBO0FBQ0FvVixVQUFRLENBQUN2b0IsTUFBVCxHQUFrQixTQUFTQSxNQUFULENBQWdCd29CLGNBQWhCLEVBQWdDO0FBQ2hELFdBQU9ILGNBQWMsQ0FBQ0QsV0FBVyxDQUFDRSxhQUFELEVBQWdCRSxjQUFoQixDQUFaLENBQXJCO0FBQ0QsR0FGRDs7QUFJQSxTQUFPRCxRQUFQO0FBQ0Q7O0FBRUQ7QUFDQSxJQUFJMUIsS0FBSyxHQUFHd0IsY0FBYyxDQUFDZixRQUFELENBQTFCOztBQUVBO0FBQ0FULEtBQUssQ0FBQ3NCLEtBQU4sR0FBY0EsS0FBZDs7QUFFQTtBQUNBdEIsS0FBSyxDQUFDNEIsTUFBTixHQUFlakMsbUJBQU8sQ0FBQyx5QkFBRCxDQUF0QjtBQUNBSyxLQUFLLENBQUM2QixXQUFOLEdBQW9CbEMsbUJBQU8sQ0FBQyw4QkFBRCxDQUEzQjtBQUNBSyxLQUFLLENBQUM4QixRQUFOLEdBQWlCbkMsbUJBQU8sQ0FBQywyQkFBRCxDQUF4QjtBQUNBSyxLQUFLLENBQUMrQixPQUFOLEdBQWdCcEMsbUJBQU8sQ0FBQyxvQkFBRCxDQUFQLENBQXNCcUMsT0FBdEM7O0FBRUE7QUFDQWhDLEtBQUssQ0FBQ2lDLEdBQU4sR0FBWSxTQUFTQSxHQUFULENBQWFDLFFBQWIsRUFBdUI7QUFDakMsU0FBT3htQixPQUFPLENBQUN1bUIsR0FBUixDQUFZQyxRQUFaLENBQVA7QUFDRCxDQUZEO0FBR0FsQyxLQUFLLENBQUNtQyxNQUFOLEdBQWV4QyxtQkFBTyxDQUFDLDBCQUFELENBQXRCOztBQUVBO0FBQ0FLLEtBQUssQ0FBQ29DLFlBQU4sR0FBcUJ6QyxtQkFBTyxDQUFDLGdDQUFELENBQTVCOztBQUVBRixNQUFNLENBQUNDLE9BQVAsR0FBaUJNLEtBQWpCOztBQUVBO0FBQ0FQLE1BQU0sQ0FBQ0MsT0FBUCxDQUFlMVUsT0FBZixHQUF5QmdWLEtBQXpCLEM7Ozs7Ozs7Ozs7O0FDeERhOztBQUViLElBQUlxQixJQUFJLEdBQUcxQixtQkFBTyxDQUFDLHdCQUFELENBQWxCOztBQUVBOztBQUVBLElBQUlscEIsUUFBUSxHQUFHNkIsTUFBTSxDQUFDVCxTQUFQLENBQWlCcEIsUUFBaEM7O0FBRUE7Ozs7OztBQU1BLFNBQVMwRCxPQUFULENBQWlCNGQsR0FBakIsRUFBc0I7QUFDcEIsU0FBTzdkLEtBQUssQ0FBQ0MsT0FBTixDQUFjNGQsR0FBZCxDQUFQO0FBQ0Q7O0FBRUQ7Ozs7OztBQU1BLFNBQVNzSyxXQUFULENBQXFCdEssR0FBckIsRUFBMEI7QUFDeEIsU0FBTyxPQUFPQSxHQUFQLEtBQWUsV0FBdEI7QUFDRDs7QUFFRDs7Ozs7O0FBTUEsU0FBU3VLLFFBQVQsQ0FBa0J2SyxHQUFsQixFQUF1QjtBQUNyQixTQUFPQSxHQUFHLEtBQUssSUFBUixJQUFnQixDQUFDc0ssV0FBVyxDQUFDdEssR0FBRCxDQUE1QixJQUFxQ0EsR0FBRyxDQUFDcmEsV0FBSixLQUFvQixJQUF6RCxJQUFpRSxDQUFDMmtCLFdBQVcsQ0FBQ3RLLEdBQUcsQ0FBQ3JhLFdBQUwsQ0FBN0U7QUFDRixTQUFPcWEsR0FBRyxDQUFDcmEsV0FBSixDQUFnQjRrQixRQUF2QixLQUFvQyxVQURsQyxJQUNnRHZLLEdBQUcsQ0FBQ3JhLFdBQUosQ0FBZ0I0a0IsUUFBaEIsQ0FBeUJ2SyxHQUF6QixDQUR2RDtBQUVEOztBQUVEOzs7Ozs7QUFNQSxTQUFTd0ssYUFBVCxDQUF1QnhLLEdBQXZCLEVBQTRCO0FBQzFCLFNBQU90aEIsUUFBUSxDQUFDb0MsSUFBVCxDQUFja2YsR0FBZCxNQUF1QixzQkFBOUI7QUFDRDs7QUFFRDs7Ozs7O0FBTUEsU0FBU3lLLFVBQVQsQ0FBb0J6SyxHQUFwQixFQUF5QjtBQUN2QixTQUFPdGhCLFFBQVEsQ0FBQ29DLElBQVQsQ0FBY2tmLEdBQWQsTUFBdUIsbUJBQTlCO0FBQ0Q7O0FBRUQ7Ozs7OztBQU1BLFNBQVMwSyxpQkFBVCxDQUEyQjFLLEdBQTNCLEVBQWdDO0FBQzlCLE1BQUluaUIsTUFBSjtBQUNBLE1BQUssT0FBTzhzQixXQUFQLEtBQXVCLFdBQXhCLElBQXlDQSxXQUFXLENBQUNDLE1BQXpELEVBQWtFO0FBQ2hFL3NCLFVBQU0sR0FBRzhzQixXQUFXLENBQUNDLE1BQVosQ0FBbUI1SyxHQUFuQixDQUFUO0FBQ0QsR0FGRCxNQUVPO0FBQ0xuaUIsVUFBTSxHQUFJbWlCLEdBQUQsSUFBVUEsR0FBRyxDQUFDNkssTUFBZCxJQUEwQkwsYUFBYSxDQUFDeEssR0FBRyxDQUFDNkssTUFBTCxDQUFoRDtBQUNEO0FBQ0QsU0FBT2h0QixNQUFQO0FBQ0Q7O0FBRUQ7Ozs7OztBQU1BLFNBQVNvb0IsUUFBVCxDQUFrQmpHLEdBQWxCLEVBQXVCO0FBQ3JCLFNBQU8sT0FBT0EsR0FBUCxLQUFlLFFBQXRCO0FBQ0Q7O0FBRUQ7Ozs7OztBQU1BLFNBQVM4SyxRQUFULENBQWtCOUssR0FBbEIsRUFBdUI7QUFDckIsU0FBTyxPQUFPQSxHQUFQLEtBQWUsUUFBdEI7QUFDRDs7QUFFRDs7Ozs7O0FBTUEsU0FBU2tELFFBQVQsQ0FBa0JsRCxHQUFsQixFQUF1QjtBQUNyQixTQUFPQSxHQUFHLEtBQUssSUFBUixJQUFnQixPQUFPQSxHQUFQLEtBQWUsUUFBdEM7QUFDRDs7QUFFRDs7Ozs7O0FBTUEsU0FBU3BmLGFBQVQsQ0FBdUJvZixHQUF2QixFQUE0QjtBQUMxQixNQUFJdGhCLFFBQVEsQ0FBQ29DLElBQVQsQ0FBY2tmLEdBQWQsTUFBdUIsaUJBQTNCLEVBQThDO0FBQzVDLFdBQU8sS0FBUDtBQUNEOztBQUVELE1BQUlsZ0IsU0FBUyxHQUFHUyxNQUFNLENBQUN3cUIsY0FBUCxDQUFzQi9LLEdBQXRCLENBQWhCO0FBQ0EsU0FBT2xnQixTQUFTLEtBQUssSUFBZCxJQUFzQkEsU0FBUyxLQUFLUyxNQUFNLENBQUNULFNBQWxEO0FBQ0Q7O0FBRUQ7Ozs7OztBQU1BLFNBQVNrckIsTUFBVCxDQUFnQmhMLEdBQWhCLEVBQXFCO0FBQ25CLFNBQU90aEIsUUFBUSxDQUFDb0MsSUFBVCxDQUFja2YsR0FBZCxNQUF1QixlQUE5QjtBQUNEOztBQUVEOzs7Ozs7QUFNQSxTQUFTaUwsTUFBVCxDQUFnQmpMLEdBQWhCLEVBQXFCO0FBQ25CLFNBQU90aEIsUUFBUSxDQUFDb0MsSUFBVCxDQUFja2YsR0FBZCxNQUF1QixlQUE5QjtBQUNEOztBQUVEOzs7Ozs7QUFNQSxTQUFTa0wsTUFBVCxDQUFnQmxMLEdBQWhCLEVBQXFCO0FBQ25CLFNBQU90aEIsUUFBUSxDQUFDb0MsSUFBVCxDQUFja2YsR0FBZCxNQUF1QixlQUE5QjtBQUNEOztBQUVEOzs7Ozs7QUFNQSxTQUFTbUwsVUFBVCxDQUFvQm5MLEdBQXBCLEVBQXlCO0FBQ3ZCLFNBQU90aEIsUUFBUSxDQUFDb0MsSUFBVCxDQUFja2YsR0FBZCxNQUF1QixtQkFBOUI7QUFDRDs7QUFFRDs7Ozs7O0FBTUEsU0FBU29MLFFBQVQsQ0FBa0JwTCxHQUFsQixFQUF1QjtBQUNyQixTQUFPa0QsUUFBUSxDQUFDbEQsR0FBRCxDQUFSLElBQWlCbUwsVUFBVSxDQUFDbkwsR0FBRyxDQUFDcUwsSUFBTCxDQUFsQztBQUNEOztBQUVEOzs7Ozs7QUFNQSxTQUFTQyxpQkFBVCxDQUEyQnRMLEdBQTNCLEVBQWdDO0FBQzlCLFNBQU90aEIsUUFBUSxDQUFDb0MsSUFBVCxDQUFja2YsR0FBZCxNQUF1QiwwQkFBOUI7QUFDRDs7QUFFRDs7Ozs7O0FBTUEsU0FBU2dGLElBQVQsQ0FBYzNuQixHQUFkLEVBQW1CO0FBQ2pCLFNBQU9BLEdBQUcsQ0FBQzJuQixJQUFKLEdBQVczbkIsR0FBRyxDQUFDMm5CLElBQUosRUFBWCxHQUF3QjNuQixHQUFHLENBQUNFLE9BQUosQ0FBWSxZQUFaLEVBQTBCLEVBQTFCLENBQS9CO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7OztBQWVBLFNBQVNndUIsb0JBQVQsR0FBZ0M7QUFDOUIsTUFBSSxPQUFPQyxTQUFQLEtBQXFCLFdBQXJCLEtBQXFDQSxTQUFTLENBQUNDLE9BQVYsS0FBc0IsYUFBdEI7QUFDQUQsV0FBUyxDQUFDQyxPQUFWLEtBQXNCLGNBRHRCO0FBRUFELFdBQVMsQ0FBQ0MsT0FBVixLQUFzQixJQUYzRCxDQUFKLEVBRXNFO0FBQ3BFLFdBQU8sS0FBUDtBQUNEO0FBQ0Q7QUFDRSxXQUFPQyxNQUFQLEtBQWtCLFdBQWxCO0FBQ0EsV0FBT0MsUUFBUCxLQUFvQixXQUZ0Qjs7QUFJRDs7QUFFRDs7Ozs7Ozs7Ozs7O0FBWUEsU0FBUzNvQixPQUFULENBQWlCbkMsR0FBakIsRUFBc0JILEVBQXRCLEVBQTBCO0FBQ3hCO0FBQ0EsTUFBSUcsR0FBRyxLQUFLLElBQVIsSUFBZ0IsT0FBT0EsR0FBUCxLQUFlLFdBQW5DLEVBQWdEO0FBQzlDO0FBQ0Q7O0FBRUQ7QUFDQSxNQUFJLE9BQU9BLEdBQVAsS0FBZSxRQUFuQixFQUE2QjtBQUMzQjtBQUNBQSxPQUFHLEdBQUcsQ0FBQ0EsR0FBRCxDQUFOO0FBQ0Q7O0FBRUQsTUFBSXVCLE9BQU8sQ0FBQ3ZCLEdBQUQsQ0FBWCxFQUFrQjtBQUNoQjtBQUNBLFNBQUssSUFBSTdDLENBQUMsR0FBRyxDQUFSLEVBQVc0dEIsQ0FBQyxHQUFHL3FCLEdBQUcsQ0FBQ2xELE1BQXhCLEVBQWdDSyxDQUFDLEdBQUc0dEIsQ0FBcEMsRUFBdUM1dEIsQ0FBQyxFQUF4QyxFQUE0QztBQUMxQzBDLFFBQUUsQ0FBQ0ksSUFBSCxDQUFRLElBQVIsRUFBY0QsR0FBRyxDQUFDN0MsQ0FBRCxDQUFqQixFQUFzQkEsQ0FBdEIsRUFBeUI2QyxHQUF6QjtBQUNEO0FBQ0YsR0FMRCxNQUtPO0FBQ0w7QUFDQSxTQUFLLElBQUlHLEdBQVQsSUFBZ0JILEdBQWhCLEVBQXFCO0FBQ25CLFVBQUlOLE1BQU0sQ0FBQ1QsU0FBUCxDQUFpQlUsY0FBakIsQ0FBZ0NNLElBQWhDLENBQXFDRCxHQUFyQyxFQUEwQ0csR0FBMUMsQ0FBSixFQUFvRDtBQUNsRE4sVUFBRSxDQUFDSSxJQUFILENBQVEsSUFBUixFQUFjRCxHQUFHLENBQUNHLEdBQUQsQ0FBakIsRUFBd0JBLEdBQXhCLEVBQTZCSCxHQUE3QjtBQUNEO0FBQ0Y7QUFDRjtBQUNGOztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7OztBQWlCQSxTQUFTZ3JCLEtBQVQsR0FBZSwyQkFBNkI7QUFDMUMsTUFBSWh1QixNQUFNLEdBQUcsRUFBYjtBQUNBLFdBQVNpdUIsV0FBVCxDQUFxQjlMLEdBQXJCLEVBQTBCaGYsR0FBMUIsRUFBK0I7QUFDN0IsUUFBSUosYUFBYSxDQUFDL0MsTUFBTSxDQUFDbUQsR0FBRCxDQUFQLENBQWIsSUFBOEJKLGFBQWEsQ0FBQ29mLEdBQUQsQ0FBL0MsRUFBc0Q7QUFDcERuaUIsWUFBTSxDQUFDbUQsR0FBRCxDQUFOLEdBQWM2cUIsS0FBSyxDQUFDaHVCLE1BQU0sQ0FBQ21ELEdBQUQsQ0FBUCxFQUFjZ2YsR0FBZCxDQUFuQjtBQUNELEtBRkQsTUFFTyxJQUFJcGYsYUFBYSxDQUFDb2YsR0FBRCxDQUFqQixFQUF3QjtBQUM3Qm5pQixZQUFNLENBQUNtRCxHQUFELENBQU4sR0FBYzZxQixLQUFLLENBQUMsRUFBRCxFQUFLN0wsR0FBTCxDQUFuQjtBQUNELEtBRk0sTUFFQSxJQUFJNWQsT0FBTyxDQUFDNGQsR0FBRCxDQUFYLEVBQWtCO0FBQ3ZCbmlCLFlBQU0sQ0FBQ21ELEdBQUQsQ0FBTixHQUFjZ2YsR0FBRyxDQUFDdGlCLEtBQUosRUFBZDtBQUNELEtBRk0sTUFFQTtBQUNMRyxZQUFNLENBQUNtRCxHQUFELENBQU4sR0FBY2dmLEdBQWQ7QUFDRDtBQUNGOztBQUVELE9BQUssSUFBSWhpQixDQUFDLEdBQUcsQ0FBUixFQUFXNHRCLENBQUMsR0FBR25iLFNBQVMsQ0FBQzlTLE1BQTlCLEVBQXNDSyxDQUFDLEdBQUc0dEIsQ0FBMUMsRUFBNkM1dEIsQ0FBQyxFQUE5QyxFQUFrRDtBQUNoRGdGLFdBQU8sQ0FBQ3lOLFNBQVMsQ0FBQ3pTLENBQUQsQ0FBVixFQUFlOHRCLFdBQWYsQ0FBUDtBQUNEO0FBQ0QsU0FBT2p1QixNQUFQO0FBQ0Q7O0FBRUQ7Ozs7Ozs7O0FBUUEsU0FBUytWLE1BQVQsQ0FBZ0JtWSxDQUFoQixFQUFtQkMsQ0FBbkIsRUFBc0JDLE9BQXRCLEVBQStCO0FBQzdCanBCLFNBQU8sQ0FBQ2dwQixDQUFELEVBQUksU0FBU0YsV0FBVCxDQUFxQjlMLEdBQXJCLEVBQTBCaGYsR0FBMUIsRUFBK0I7QUFDeEMsUUFBSWlyQixPQUFPLElBQUksT0FBT2pNLEdBQVAsS0FBZSxVQUE5QixFQUEwQztBQUN4QytMLE9BQUMsQ0FBQy9xQixHQUFELENBQUQsR0FBU3NvQixJQUFJLENBQUN0SixHQUFELEVBQU1pTSxPQUFOLENBQWI7QUFDRCxLQUZELE1BRU87QUFDTEYsT0FBQyxDQUFDL3FCLEdBQUQsQ0FBRCxHQUFTZ2YsR0FBVDtBQUNEO0FBQ0YsR0FOTSxDQUFQO0FBT0EsU0FBTytMLENBQVA7QUFDRDs7QUFFRDs7Ozs7O0FBTUEsU0FBU0csUUFBVCxDQUFrQkMsT0FBbEIsRUFBMkI7QUFDekIsTUFBSUEsT0FBTyxDQUFDMXRCLFVBQVIsQ0FBbUIsQ0FBbkIsTUFBMEIsTUFBOUIsRUFBc0M7QUFDcEMwdEIsV0FBTyxHQUFHQSxPQUFPLENBQUN6dUIsS0FBUixDQUFjLENBQWQsQ0FBVjtBQUNEO0FBQ0QsU0FBT3l1QixPQUFQO0FBQ0Q7O0FBRUR6RSxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDZnZsQixTQUFPLEVBQUVBLE9BRE07QUFFZm9vQixlQUFhLEVBQUVBLGFBRkE7QUFHZkQsVUFBUSxFQUFFQSxRQUhLO0FBSWZFLFlBQVUsRUFBRUEsVUFKRztBQUtmQyxtQkFBaUIsRUFBRUEsaUJBTEo7QUFNZnpFLFVBQVEsRUFBRUEsUUFOSztBQU9mNkUsVUFBUSxFQUFFQSxRQVBLO0FBUWY1SCxVQUFRLEVBQUVBLFFBUks7QUFTZnRpQixlQUFhLEVBQUVBLGFBVEE7QUFVZjBwQixhQUFXLEVBQUVBLFdBVkU7QUFXZlUsUUFBTSxFQUFFQSxNQVhPO0FBWWZDLFFBQU0sRUFBRUEsTUFaTztBQWFmQyxRQUFNLEVBQUVBLE1BYk87QUFjZkMsWUFBVSxFQUFFQSxVQWRHO0FBZWZDLFVBQVEsRUFBRUEsUUFmSztBQWdCZkUsbUJBQWlCLEVBQUVBLGlCQWhCSjtBQWlCZkMsc0JBQW9CLEVBQUVBLG9CQWpCUDtBQWtCZnZvQixTQUFPLEVBQUVBLE9BbEJNO0FBbUJmNm9CLE9BQUssRUFBRUEsS0FuQlE7QUFvQmZqWSxRQUFNLEVBQUVBLE1BcEJPO0FBcUJmb1IsTUFBSSxFQUFFQSxJQXJCUztBQXNCZmtILFVBQVEsRUFBRUEsUUF0QkssRUFBakIsQzs7Ozs7Ozs7Ozs7QUNyVWE7O0FBRWJ4RSxNQUFNLENBQUNDLE9BQVAsR0FBaUIsU0FBUzJCLElBQVQsQ0FBYzVvQixFQUFkLEVBQWtCdXJCLE9BQWxCLEVBQTJCO0FBQzFDLFNBQU8sU0FBU0csSUFBVCxHQUFnQjtBQUNyQixRQUFJeGpCLElBQUksR0FBRyxJQUFJekcsS0FBSixDQUFVc08sU0FBUyxDQUFDOVMsTUFBcEIsQ0FBWDtBQUNBLFNBQUssSUFBSUssQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRzRLLElBQUksQ0FBQ2pMLE1BQXpCLEVBQWlDSyxDQUFDLEVBQWxDLEVBQXNDO0FBQ3BDNEssVUFBSSxDQUFDNUssQ0FBRCxDQUFKLEdBQVV5UyxTQUFTLENBQUN6UyxDQUFELENBQW5CO0FBQ0Q7QUFDRCxXQUFPMEMsRUFBRSxDQUFDcUksS0FBSCxDQUFTa2pCLE9BQVQsRUFBa0JyakIsSUFBbEIsQ0FBUDtBQUNELEdBTkQ7QUFPRCxDQVJELEM7Ozs7Ozs7Ozs7O0FDRmE7O0FBRWIsSUFBSXlnQixLQUFLLEdBQUd6QixtQkFBTyxDQUFDLG9CQUFELENBQW5CO0FBQ0EsSUFBSWlCLFFBQVEsR0FBR2pCLG1CQUFPLENBQUMsNkJBQUQsQ0FBdEI7QUFDQSxJQUFJeUUsa0JBQWtCLEdBQUd6RSxtQkFBTyxDQUFDLDhCQUFELENBQWhDO0FBQ0EsSUFBSTBFLGVBQWUsR0FBRzFFLG1CQUFPLENBQUMsMkJBQUQsQ0FBN0I7QUFDQSxJQUFJNEIsV0FBVyxHQUFHNUIsbUJBQU8sQ0FBQyx1QkFBRCxDQUF6QjtBQUNBLElBQUkyRSxTQUFTLEdBQUczRSxtQkFBTyxDQUFDLDhCQUFELENBQXZCOztBQUVBLElBQUk0RSxVQUFVLEdBQUdELFNBQVMsQ0FBQ0MsVUFBM0I7QUFDQTs7Ozs7QUFLQSxTQUFTakQsS0FBVCxDQUFlSyxjQUFmLEVBQStCO0FBQzdCLE9BQUtsQixRQUFMLEdBQWdCa0IsY0FBaEI7QUFDQSxPQUFLM2hCLFlBQUwsR0FBb0I7QUFDbEJvZ0IsV0FBTyxFQUFFLElBQUlnRSxrQkFBSixFQURTO0FBRWxCNUQsWUFBUSxFQUFFLElBQUk0RCxrQkFBSixFQUZRLEVBQXBCOztBQUlEOztBQUVEOzs7OztBQUtBOUMsS0FBSyxDQUFDenBCLFNBQU4sQ0FBZ0J1b0IsT0FBaEIsR0FBMEIsU0FBU0EsT0FBVCxDQUFpQm9FLFdBQWpCLEVBQThCbkUsTUFBOUIsRUFBc0M7QUFDOUQ7QUFDQTtBQUNBLE1BQUksT0FBT21FLFdBQVAsS0FBdUIsUUFBM0IsRUFBcUM7QUFDbkNuRSxVQUFNLEdBQUdBLE1BQU0sSUFBSSxFQUFuQjtBQUNBQSxVQUFNLENBQUN2ZSxHQUFQLEdBQWEwaUIsV0FBYjtBQUNELEdBSEQsTUFHTztBQUNMbkUsVUFBTSxHQUFHbUUsV0FBVyxJQUFJLEVBQXhCO0FBQ0Q7O0FBRURuRSxRQUFNLEdBQUdrQixXQUFXLENBQUMsS0FBS2QsUUFBTixFQUFnQkosTUFBaEIsQ0FBcEI7O0FBRUE7QUFDQSxNQUFJQSxNQUFNLENBQUNubEIsTUFBWCxFQUFtQjtBQUNqQm1sQixVQUFNLENBQUNubEIsTUFBUCxHQUFnQm1sQixNQUFNLENBQUNubEIsTUFBUCxDQUFjOGhCLFdBQWQsRUFBaEI7QUFDRCxHQUZELE1BRU8sSUFBSSxLQUFLeUQsUUFBTCxDQUFjdmxCLE1BQWxCLEVBQTBCO0FBQy9CbWxCLFVBQU0sQ0FBQ25sQixNQUFQLEdBQWdCLEtBQUt1bEIsUUFBTCxDQUFjdmxCLE1BQWQsQ0FBcUI4aEIsV0FBckIsRUFBaEI7QUFDRCxHQUZNLE1BRUE7QUFDTHFELFVBQU0sQ0FBQ25sQixNQUFQLEdBQWdCLEtBQWhCO0FBQ0Q7O0FBRUQsTUFBSXVwQixZQUFZLEdBQUdwRSxNQUFNLENBQUNvRSxZQUExQjs7QUFFQSxNQUFJQSxZQUFZLEtBQUt6TSxTQUFyQixFQUFnQztBQUM5QnNNLGFBQVMsQ0FBQ0ksYUFBVixDQUF3QkQsWUFBeEIsRUFBc0M7QUFDcENFLHVCQUFpQixFQUFFSixVQUFVLENBQUNFLFlBQVgsQ0FBd0JGLFVBQVUsQ0FBQ0ssT0FBbkMsQ0FEaUI7QUFFcENDLHVCQUFpQixFQUFFTixVQUFVLENBQUNFLFlBQVgsQ0FBd0JGLFVBQVUsQ0FBQ0ssT0FBbkMsQ0FGaUI7QUFHcENFLHlCQUFtQixFQUFFUCxVQUFVLENBQUNFLFlBQVgsQ0FBd0JGLFVBQVUsQ0FBQ0ssT0FBbkMsQ0FIZSxFQUF0QztBQUlHLFNBSkg7QUFLRDs7QUFFRDtBQUNBLE1BQUlHLHVCQUF1QixHQUFHLEVBQTlCO0FBQ0EsTUFBSUMsOEJBQThCLEdBQUcsSUFBckM7QUFDQSxPQUFLaGxCLFlBQUwsQ0FBa0JvZ0IsT0FBbEIsQ0FBMEJybEIsT0FBMUIsQ0FBa0MsU0FBU2txQiwwQkFBVCxDQUFvQ3JxQixXQUFwQyxFQUFpRDtBQUNqRixRQUFJLE9BQU9BLFdBQVcsQ0FBQ3NxQixPQUFuQixLQUErQixVQUEvQixJQUE2Q3RxQixXQUFXLENBQUNzcUIsT0FBWixDQUFvQjdFLE1BQXBCLE1BQWdDLEtBQWpGLEVBQXdGO0FBQ3RGO0FBQ0Q7O0FBRUQyRSxrQ0FBOEIsR0FBR0EsOEJBQThCLElBQUlwcUIsV0FBVyxDQUFDdXFCLFdBQS9FOztBQUVBSiwyQkFBdUIsQ0FBQ3JHLE9BQXhCLENBQWdDOWpCLFdBQVcsQ0FBQ3dxQixTQUE1QyxFQUF1RHhxQixXQUFXLENBQUN5cUIsUUFBbkU7QUFDRCxHQVJEOztBQVVBLE1BQUlDLHdCQUF3QixHQUFHLEVBQS9CO0FBQ0EsT0FBS3RsQixZQUFMLENBQWtCd2dCLFFBQWxCLENBQTJCemxCLE9BQTNCLENBQW1DLFNBQVN3cUIsd0JBQVQsQ0FBa0MzcUIsV0FBbEMsRUFBK0M7QUFDaEYwcUIsNEJBQXdCLENBQUNockIsSUFBekIsQ0FBOEJNLFdBQVcsQ0FBQ3dxQixTQUExQyxFQUFxRHhxQixXQUFXLENBQUN5cUIsUUFBakU7QUFDRCxHQUZEOztBQUlBLE1BQUk1cEIsT0FBSjs7QUFFQSxNQUFJLENBQUN1cEIsOEJBQUwsRUFBcUM7QUFDbkMsUUFBSTlGLEtBQUssR0FBRyxDQUFDbUYsZUFBRCxFQUFrQnJNLFNBQWxCLENBQVo7O0FBRUE5ZCxTQUFLLENBQUNyQyxTQUFOLENBQWdCNm1CLE9BQWhCLENBQXdCNWQsS0FBeEIsQ0FBOEJvZSxLQUE5QixFQUFxQzZGLHVCQUFyQztBQUNBN0YsU0FBSyxHQUFHQSxLQUFLLENBQUNqbEIsTUFBTixDQUFhcXJCLHdCQUFiLENBQVI7O0FBRUE3cEIsV0FBTyxHQUFHQyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0Iwa0IsTUFBaEIsQ0FBVjtBQUNBLFdBQU9uQixLQUFLLENBQUN4cEIsTUFBYixFQUFxQjtBQUNuQitGLGFBQU8sR0FBR0EsT0FBTyxDQUFDRixJQUFSLENBQWEyakIsS0FBSyxDQUFDN2QsS0FBTixFQUFiLEVBQTRCNmQsS0FBSyxDQUFDN2QsS0FBTixFQUE1QixDQUFWO0FBQ0Q7O0FBRUQsV0FBTzVGLE9BQVA7QUFDRDs7O0FBR0QsTUFBSStwQixTQUFTLEdBQUduRixNQUFoQjtBQUNBLFNBQU8wRSx1QkFBdUIsQ0FBQ3J2QixNQUEvQixFQUF1QztBQUNyQyxRQUFJK3ZCLFdBQVcsR0FBR1YsdUJBQXVCLENBQUMxakIsS0FBeEIsRUFBbEI7QUFDQSxRQUFJcWtCLFVBQVUsR0FBR1gsdUJBQXVCLENBQUMxakIsS0FBeEIsRUFBakI7QUFDQSxRQUFJO0FBQ0Zta0IsZUFBUyxHQUFHQyxXQUFXLENBQUNELFNBQUQsQ0FBdkI7QUFDRCxLQUZELENBRUUsT0FBT2p1QixLQUFQLEVBQWM7QUFDZG11QixnQkFBVSxDQUFDbnVCLEtBQUQsQ0FBVjtBQUNBO0FBQ0Q7QUFDRjs7QUFFRCxNQUFJO0FBQ0ZrRSxXQUFPLEdBQUc0b0IsZUFBZSxDQUFDbUIsU0FBRCxDQUF6QjtBQUNELEdBRkQsQ0FFRSxPQUFPanVCLEtBQVAsRUFBYztBQUNkLFdBQU9tRSxPQUFPLENBQUNrQixNQUFSLENBQWVyRixLQUFmLENBQVA7QUFDRDs7QUFFRCxTQUFPK3RCLHdCQUF3QixDQUFDNXZCLE1BQWhDLEVBQXdDO0FBQ3RDK0YsV0FBTyxHQUFHQSxPQUFPLENBQUNGLElBQVIsQ0FBYStwQix3QkFBd0IsQ0FBQ2prQixLQUF6QixFQUFiLEVBQStDaWtCLHdCQUF3QixDQUFDamtCLEtBQXpCLEVBQS9DLENBQVY7QUFDRDs7QUFFRCxTQUFPNUYsT0FBUDtBQUNELENBekZEOztBQTJGQTZsQixLQUFLLENBQUN6cEIsU0FBTixDQUFnQjh0QixNQUFoQixHQUF5QixTQUFTQSxNQUFULENBQWdCdEYsTUFBaEIsRUFBd0I7QUFDL0NBLFFBQU0sR0FBR2tCLFdBQVcsQ0FBQyxLQUFLZCxRQUFOLEVBQWdCSixNQUFoQixDQUFwQjtBQUNBLFNBQU9PLFFBQVEsQ0FBQ1AsTUFBTSxDQUFDdmUsR0FBUixFQUFhdWUsTUFBTSxDQUFDNWpCLE1BQXBCLEVBQTRCNGpCLE1BQU0sQ0FBQ1EsZ0JBQW5DLENBQVIsQ0FBNkR2ckIsT0FBN0QsQ0FBcUUsS0FBckUsRUFBNEUsRUFBNUUsQ0FBUDtBQUNELENBSEQ7O0FBS0E7QUFDQThyQixLQUFLLENBQUNybUIsT0FBTixDQUFjLENBQUMsUUFBRCxFQUFXLEtBQVgsRUFBa0IsTUFBbEIsRUFBMEIsU0FBMUIsQ0FBZCxFQUFvRCxTQUFTNnFCLG1CQUFULENBQTZCMXFCLE1BQTdCLEVBQXFDO0FBQ3ZGO0FBQ0FvbUIsT0FBSyxDQUFDenBCLFNBQU4sQ0FBZ0JxRCxNQUFoQixJQUEwQixVQUFTNEcsR0FBVCxFQUFjdWUsTUFBZCxFQUFzQjtBQUM5QyxXQUFPLEtBQUtELE9BQUwsQ0FBYW1CLFdBQVcsQ0FBQ2xCLE1BQU0sSUFBSSxFQUFYLEVBQWU7QUFDNUNubEIsWUFBTSxFQUFFQSxNQURvQztBQUU1QzRHLFNBQUcsRUFBRUEsR0FGdUM7QUFHNUN6RyxVQUFJLEVBQUUsQ0FBQ2dsQixNQUFNLElBQUksRUFBWCxFQUFlaGxCLElBSHVCLEVBQWYsQ0FBeEIsQ0FBUDs7QUFLRCxHQU5EO0FBT0QsQ0FURDs7QUFXQStsQixLQUFLLENBQUNybUIsT0FBTixDQUFjLENBQUMsTUFBRCxFQUFTLEtBQVQsRUFBZ0IsT0FBaEIsQ0FBZCxFQUF3QyxTQUFTOHFCLHFCQUFULENBQStCM3FCLE1BQS9CLEVBQXVDO0FBQzdFO0FBQ0FvbUIsT0FBSyxDQUFDenBCLFNBQU4sQ0FBZ0JxRCxNQUFoQixJQUEwQixVQUFTNEcsR0FBVCxFQUFjekcsSUFBZCxFQUFvQmdsQixNQUFwQixFQUE0QjtBQUNwRCxXQUFPLEtBQUtELE9BQUwsQ0FBYW1CLFdBQVcsQ0FBQ2xCLE1BQU0sSUFBSSxFQUFYLEVBQWU7QUFDNUNubEIsWUFBTSxFQUFFQSxNQURvQztBQUU1QzRHLFNBQUcsRUFBRUEsR0FGdUM7QUFHNUN6RyxVQUFJLEVBQUVBLElBSHNDLEVBQWYsQ0FBeEIsQ0FBUDs7QUFLRCxHQU5EO0FBT0QsQ0FURDs7QUFXQW9rQixNQUFNLENBQUNDLE9BQVAsR0FBaUI0QixLQUFqQixDOzs7Ozs7Ozs7OztBQ25KYTs7QUFFYixJQUFJRixLQUFLLEdBQUd6QixtQkFBTyxDQUFDLG9CQUFELENBQW5COztBQUVBLFNBQVNoSSxNQUFULENBQWdCSSxHQUFoQixFQUFxQjtBQUNuQixTQUFPSCxrQkFBa0IsQ0FBQ0csR0FBRCxDQUFsQjtBQUNMemlCLFNBREssQ0FDRyxPQURILEVBQ1ksR0FEWjtBQUVMQSxTQUZLLENBRUcsTUFGSCxFQUVXLEdBRlg7QUFHTEEsU0FISyxDQUdHLE9BSEgsRUFHWSxHQUhaO0FBSUxBLFNBSkssQ0FJRyxNQUpILEVBSVcsR0FKWDtBQUtMQSxTQUxLLENBS0csT0FMSCxFQUtZLEdBTFo7QUFNTEEsU0FOSyxDQU1HLE9BTkgsRUFNWSxHQU5aLENBQVA7QUFPRDs7QUFFRDs7Ozs7OztBQU9BbXFCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixTQUFTa0IsUUFBVCxDQUFrQjllLEdBQWxCLEVBQXVCckYsTUFBdkIsRUFBK0Jva0IsZ0JBQS9CLEVBQWlEO0FBQ2hFO0FBQ0EsTUFBSSxDQUFDcGtCLE1BQUwsRUFBYTtBQUNYLFdBQU9xRixHQUFQO0FBQ0Q7O0FBRUQsTUFBSWdrQixnQkFBSjtBQUNBLE1BQUlqRixnQkFBSixFQUFzQjtBQUNwQmlGLG9CQUFnQixHQUFHakYsZ0JBQWdCLENBQUNwa0IsTUFBRCxDQUFuQztBQUNELEdBRkQsTUFFTyxJQUFJMmtCLEtBQUssQ0FBQ2lDLGlCQUFOLENBQXdCNW1CLE1BQXhCLENBQUosRUFBcUM7QUFDMUNxcEIsb0JBQWdCLEdBQUdycEIsTUFBTSxDQUFDaEcsUUFBUCxFQUFuQjtBQUNELEdBRk0sTUFFQTtBQUNMLFFBQUlrbUIsS0FBSyxHQUFHLEVBQVo7O0FBRUF5RSxTQUFLLENBQUNybUIsT0FBTixDQUFjMEIsTUFBZCxFQUFzQixTQUFTc3BCLFNBQVQsQ0FBbUJoTyxHQUFuQixFQUF3QmhmLEdBQXhCLEVBQTZCO0FBQ2pELFVBQUlnZixHQUFHLEtBQUssSUFBUixJQUFnQixPQUFPQSxHQUFQLEtBQWUsV0FBbkMsRUFBZ0Q7QUFDOUM7QUFDRDs7QUFFRCxVQUFJcUosS0FBSyxDQUFDam5CLE9BQU4sQ0FBYzRkLEdBQWQsQ0FBSixFQUF3QjtBQUN0QmhmLFdBQUcsR0FBR0EsR0FBRyxHQUFHLElBQVo7QUFDRCxPQUZELE1BRU87QUFDTGdmLFdBQUcsR0FBRyxDQUFDQSxHQUFELENBQU47QUFDRDs7QUFFRHFKLFdBQUssQ0FBQ3JtQixPQUFOLENBQWNnZCxHQUFkLEVBQW1CLFNBQVNpTyxVQUFULENBQW9CdlMsQ0FBcEIsRUFBdUI7QUFDeEMsWUFBSTJOLEtBQUssQ0FBQzJCLE1BQU4sQ0FBYXRQLENBQWIsQ0FBSixFQUFxQjtBQUNuQkEsV0FBQyxHQUFHQSxDQUFDLENBQUN3UyxXQUFGLEVBQUo7QUFDRCxTQUZELE1BRU8sSUFBSTdFLEtBQUssQ0FBQ25HLFFBQU4sQ0FBZXhILENBQWYsQ0FBSixFQUF1QjtBQUM1QkEsV0FBQyxHQUFHcGMsSUFBSSxDQUFDc1YsU0FBTCxDQUFlOEcsQ0FBZixDQUFKO0FBQ0Q7QUFDRGtKLGFBQUssQ0FBQ3JpQixJQUFOLENBQVdxZCxNQUFNLENBQUM1ZSxHQUFELENBQU4sR0FBYyxHQUFkLEdBQW9CNGUsTUFBTSxDQUFDbEUsQ0FBRCxDQUFyQztBQUNELE9BUEQ7QUFRRCxLQW5CRDs7QUFxQkFxUyxvQkFBZ0IsR0FBR25KLEtBQUssQ0FBQ2ptQixJQUFOLENBQVcsR0FBWCxDQUFuQjtBQUNEOztBQUVELE1BQUlvdkIsZ0JBQUosRUFBc0I7QUFDcEIsUUFBSUksYUFBYSxHQUFHcGtCLEdBQUcsQ0FBQzlMLE9BQUosQ0FBWSxHQUFaLENBQXBCO0FBQ0EsUUFBSWt3QixhQUFhLEtBQUssQ0FBQyxDQUF2QixFQUEwQjtBQUN4QnBrQixTQUFHLEdBQUdBLEdBQUcsQ0FBQ3JNLEtBQUosQ0FBVSxDQUFWLEVBQWF5d0IsYUFBYixDQUFOO0FBQ0Q7O0FBRURwa0IsT0FBRyxJQUFJLENBQUNBLEdBQUcsQ0FBQzlMLE9BQUosQ0FBWSxHQUFaLE1BQXFCLENBQUMsQ0FBdEIsR0FBMEIsR0FBMUIsR0FBZ0MsR0FBakMsSUFBd0M4dkIsZ0JBQS9DO0FBQ0Q7O0FBRUQsU0FBT2hrQixHQUFQO0FBQ0QsQ0FoREQsQzs7Ozs7Ozs7Ozs7QUNyQmE7O0FBRWIsSUFBSXNmLEtBQUssR0FBR3pCLG1CQUFPLENBQUMsb0JBQUQsQ0FBbkI7O0FBRUEsU0FBU3lFLGtCQUFULEdBQThCO0FBQzVCLE9BQUsrQixRQUFMLEdBQWdCLEVBQWhCO0FBQ0Q7O0FBRUQ7Ozs7Ozs7O0FBUUEvQixrQkFBa0IsQ0FBQ3ZzQixTQUFuQixDQUE2QnVuQixHQUE3QixHQUFtQyxTQUFTQSxHQUFULENBQWFnRyxTQUFiLEVBQXdCQyxRQUF4QixFQUFrQ3ZwQixPQUFsQyxFQUEyQztBQUM1RSxPQUFLcXFCLFFBQUwsQ0FBYzdyQixJQUFkLENBQW1CO0FBQ2pCOHFCLGFBQVMsRUFBRUEsU0FETTtBQUVqQkMsWUFBUSxFQUFFQSxRQUZPO0FBR2pCRixlQUFXLEVBQUVycEIsT0FBTyxHQUFHQSxPQUFPLENBQUNxcEIsV0FBWCxHQUF5QixLQUg1QjtBQUlqQkQsV0FBTyxFQUFFcHBCLE9BQU8sR0FBR0EsT0FBTyxDQUFDb3BCLE9BQVgsR0FBcUIsSUFKcEIsRUFBbkI7O0FBTUEsU0FBTyxLQUFLaUIsUUFBTCxDQUFjendCLE1BQWQsR0FBdUIsQ0FBOUI7QUFDRCxDQVJEOztBQVVBOzs7OztBQUtBMHVCLGtCQUFrQixDQUFDdnNCLFNBQW5CLENBQTZCdXVCLEtBQTdCLEdBQXFDLFNBQVNBLEtBQVQsQ0FBZS9sQixFQUFmLEVBQW1CO0FBQ3RELE1BQUksS0FBSzhsQixRQUFMLENBQWM5bEIsRUFBZCxDQUFKLEVBQXVCO0FBQ3JCLFNBQUs4bEIsUUFBTCxDQUFjOWxCLEVBQWQsSUFBb0IsSUFBcEI7QUFDRDtBQUNGLENBSkQ7O0FBTUE7Ozs7Ozs7O0FBUUErakIsa0JBQWtCLENBQUN2c0IsU0FBbkIsQ0FBNkJrRCxPQUE3QixHQUF1QyxTQUFTQSxPQUFULENBQWlCdEMsRUFBakIsRUFBcUI7QUFDMUQyb0IsT0FBSyxDQUFDcm1CLE9BQU4sQ0FBYyxLQUFLb3JCLFFBQW5CLEVBQTZCLFNBQVNFLGNBQVQsQ0FBd0JDLENBQXhCLEVBQTJCO0FBQ3RELFFBQUlBLENBQUMsS0FBSyxJQUFWLEVBQWdCO0FBQ2Q3dEIsUUFBRSxDQUFDNnRCLENBQUQsQ0FBRjtBQUNEO0FBQ0YsR0FKRDtBQUtELENBTkQ7O0FBUUE3RyxNQUFNLENBQUNDLE9BQVAsR0FBaUIwRSxrQkFBakIsQzs7Ozs7Ozs7Ozs7QUNyRGE7O0FBRWIsSUFBSWhELEtBQUssR0FBR3pCLG1CQUFPLENBQUMsb0JBQUQsQ0FBbkI7QUFDQSxJQUFJNEcsYUFBYSxHQUFHNUcsbUJBQU8sQ0FBQyx5QkFBRCxDQUEzQjtBQUNBLElBQUltQyxRQUFRLEdBQUduQyxtQkFBTyxDQUFDLDRCQUFELENBQXRCO0FBQ0EsSUFBSWMsUUFBUSxHQUFHZCxtQkFBTyxDQUFDLHFCQUFELENBQXRCO0FBQ0EsSUFBSWlDLE1BQU0sR0FBR2pDLG1CQUFPLENBQUMsMEJBQUQsQ0FBcEI7O0FBRUE7OztBQUdBLFNBQVM2Ryw0QkFBVCxDQUFzQ25HLE1BQXRDLEVBQThDO0FBQzVDLE1BQUlBLE1BQU0sQ0FBQ29HLFdBQVgsRUFBd0I7QUFDdEJwRyxVQUFNLENBQUNvRyxXQUFQLENBQW1CQyxnQkFBbkI7QUFDRDs7QUFFRCxNQUFJckcsTUFBTSxDQUFDc0csTUFBUCxJQUFpQnRHLE1BQU0sQ0FBQ3NHLE1BQVAsQ0FBY0MsT0FBbkMsRUFBNEM7QUFDMUMsVUFBTSxJQUFJaEYsTUFBSixDQUFXLFVBQVgsQ0FBTjtBQUNEO0FBQ0Y7O0FBRUQ7Ozs7OztBQU1BbkMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLFNBQVMyRSxlQUFULENBQXlCaEUsTUFBekIsRUFBaUM7QUFDaERtRyw4QkFBNEIsQ0FBQ25HLE1BQUQsQ0FBNUI7O0FBRUE7QUFDQUEsUUFBTSxDQUFDQyxPQUFQLEdBQWlCRCxNQUFNLENBQUNDLE9BQVAsSUFBa0IsRUFBbkM7O0FBRUE7QUFDQUQsUUFBTSxDQUFDaGxCLElBQVAsR0FBY2tyQixhQUFhLENBQUMxdEIsSUFBZDtBQUNad25CLFFBRFk7QUFFWkEsUUFBTSxDQUFDaGxCLElBRks7QUFHWmdsQixRQUFNLENBQUNDLE9BSEs7QUFJWkQsUUFBTSxDQUFDd0csZ0JBSkssQ0FBZDs7O0FBT0E7QUFDQXhHLFFBQU0sQ0FBQ0MsT0FBUCxHQUFpQmMsS0FBSyxDQUFDd0MsS0FBTjtBQUNmdkQsUUFBTSxDQUFDQyxPQUFQLENBQWV3RyxNQUFmLElBQXlCLEVBRFY7QUFFZnpHLFFBQU0sQ0FBQ0MsT0FBUCxDQUFlRCxNQUFNLENBQUNubEIsTUFBdEIsS0FBaUMsRUFGbEI7QUFHZm1sQixRQUFNLENBQUNDLE9BSFEsQ0FBakI7OztBQU1BYyxPQUFLLENBQUNybUIsT0FBTjtBQUNFLEdBQUMsUUFBRCxFQUFXLEtBQVgsRUFBa0IsTUFBbEIsRUFBMEIsTUFBMUIsRUFBa0MsS0FBbEMsRUFBeUMsT0FBekMsRUFBa0QsUUFBbEQsQ0FERjtBQUVFLFdBQVNnc0IsaUJBQVQsQ0FBMkI3ckIsTUFBM0IsRUFBbUM7QUFDakMsV0FBT21sQixNQUFNLENBQUNDLE9BQVAsQ0FBZXBsQixNQUFmLENBQVA7QUFDRCxHQUpIOzs7QUFPQSxNQUFJd2xCLE9BQU8sR0FBR0wsTUFBTSxDQUFDSyxPQUFQLElBQWtCRCxRQUFRLENBQUNDLE9BQXpDOztBQUVBLFNBQU9BLE9BQU8sQ0FBQ0wsTUFBRCxDQUFQLENBQWdCOWtCLElBQWhCLENBQXFCLFNBQVN5ckIsbUJBQVQsQ0FBNkJ4RyxRQUE3QixFQUF1QztBQUNqRWdHLGdDQUE0QixDQUFDbkcsTUFBRCxDQUE1Qjs7QUFFQTtBQUNBRyxZQUFRLENBQUNubEIsSUFBVCxHQUFnQmtyQixhQUFhLENBQUMxdEIsSUFBZDtBQUNkd25CLFVBRGM7QUFFZEcsWUFBUSxDQUFDbmxCLElBRks7QUFHZG1sQixZQUFRLENBQUNGLE9BSEs7QUFJZEQsVUFBTSxDQUFDNEcsaUJBSk8sQ0FBaEI7OztBQU9BLFdBQU96RyxRQUFQO0FBQ0QsR0FaTSxFQVlKLFNBQVMwRyxrQkFBVCxDQUE0QnRwQixNQUE1QixFQUFvQztBQUNyQyxRQUFJLENBQUNra0IsUUFBUSxDQUFDbGtCLE1BQUQsQ0FBYixFQUF1QjtBQUNyQjRvQixrQ0FBNEIsQ0FBQ25HLE1BQUQsQ0FBNUI7O0FBRUE7QUFDQSxVQUFJemlCLE1BQU0sSUFBSUEsTUFBTSxDQUFDNGlCLFFBQXJCLEVBQStCO0FBQzdCNWlCLGNBQU0sQ0FBQzRpQixRQUFQLENBQWdCbmxCLElBQWhCLEdBQXVCa3JCLGFBQWEsQ0FBQzF0QixJQUFkO0FBQ3JCd25CLGNBRHFCO0FBRXJCemlCLGNBQU0sQ0FBQzRpQixRQUFQLENBQWdCbmxCLElBRks7QUFHckJ1QyxjQUFNLENBQUM0aUIsUUFBUCxDQUFnQkYsT0FISztBQUlyQkQsY0FBTSxDQUFDNEcsaUJBSmMsQ0FBdkI7O0FBTUQ7QUFDRjs7QUFFRCxXQUFPdnJCLE9BQU8sQ0FBQ2tCLE1BQVIsQ0FBZWdCLE1BQWYsQ0FBUDtBQUNELEdBNUJNLENBQVA7QUE2QkQsQ0EzREQsQzs7Ozs7Ozs7Ozs7QUMzQmE7O0FBRWIsSUFBSXdqQixLQUFLLEdBQUd6QixtQkFBTyxDQUFDLG9CQUFELENBQW5CO0FBQ0EsSUFBSWMsUUFBUSxHQUFHZCxtQkFBTyxDQUFDLHFCQUFELENBQXRCOztBQUVBOzs7Ozs7OztBQVFBRixNQUFNLENBQUNDLE9BQVAsR0FBaUIsU0FBUzZHLGFBQVQsQ0FBdUJsckIsSUFBdkIsRUFBNkJpbEIsT0FBN0IsRUFBc0MxZixHQUF0QyxFQUEyQztBQUMxRCxNQUFJMEwsT0FBTyxHQUFHLFFBQVFtVSxRQUF0QjtBQUNBO0FBQ0FXLE9BQUssQ0FBQ3JtQixPQUFOLENBQWM2RixHQUFkLEVBQW1CLFNBQVN1bUIsU0FBVCxDQUFtQjF1QixFQUFuQixFQUF1QjtBQUN4QzRDLFFBQUksR0FBRzVDLEVBQUUsQ0FBQ0ksSUFBSCxDQUFReVQsT0FBUixFQUFpQmpSLElBQWpCLEVBQXVCaWxCLE9BQXZCLENBQVA7QUFDRCxHQUZEOztBQUlBLFNBQU9qbEIsSUFBUDtBQUNELENBUkQsQzs7Ozs7Ozs7Ozs7QUNiQSwrQ0FBYTs7QUFFYixJQUFJK2xCLEtBQUssR0FBR3pCLG1CQUFPLENBQUMsa0JBQUQsQ0FBbkI7QUFDQSxJQUFJeUgsbUJBQW1CLEdBQUd6SCxtQkFBTyxDQUFDLHdDQUFELENBQWpDO0FBQ0EsSUFBSTBILFlBQVksR0FBRzFILG1CQUFPLENBQUMsOEJBQUQsQ0FBMUI7QUFDQSxJQUFJMkgsb0JBQW9CLEdBQUczSCxtQkFBTyxDQUFDLHdCQUFELENBQWxDOztBQUVBLElBQUk0SCxvQkFBb0IsR0FBRztBQUN6QixrQkFBZ0IsbUNBRFMsRUFBM0I7OztBQUlBLFNBQVNDLHFCQUFULENBQStCbEgsT0FBL0IsRUFBd0MzaUIsS0FBeEMsRUFBK0M7QUFDN0MsTUFBSSxDQUFDeWpCLEtBQUssQ0FBQ2lCLFdBQU4sQ0FBa0IvQixPQUFsQixDQUFELElBQStCYyxLQUFLLENBQUNpQixXQUFOLENBQWtCL0IsT0FBTyxDQUFDLGNBQUQsQ0FBekIsQ0FBbkMsRUFBK0U7QUFDN0VBLFdBQU8sQ0FBQyxjQUFELENBQVAsR0FBMEIzaUIsS0FBMUI7QUFDRDtBQUNGOztBQUVELFNBQVM4cEIsaUJBQVQsR0FBNkI7QUFDM0IsTUFBSS9HLE9BQUo7QUFDQSxNQUFJLE9BQU9nSCxjQUFQLEtBQTBCLFdBQTlCLEVBQTJDO0FBQ3pDO0FBQ0FoSCxXQUFPLEdBQUdmLG1CQUFPLENBQUMseUJBQUQsQ0FBakI7QUFDRCxHQUhELE1BR08sSUFBSSxPQUFPbFQsT0FBUCxLQUFtQixXQUFuQixJQUFrQ25VLE1BQU0sQ0FBQ1QsU0FBUCxDQUFpQnBCLFFBQWpCLENBQTBCb0MsSUFBMUIsQ0FBK0I0VCxPQUEvQixNQUE0QyxrQkFBbEYsRUFBc0c7QUFDM0c7QUFDQWlVLFdBQU8sR0FBR2YsbUJBQU8sQ0FBQywwQkFBRCxDQUFqQjtBQUNEO0FBQ0QsU0FBT2UsT0FBUDtBQUNEOztBQUVELFNBQVNpSCxlQUFULENBQXlCQyxRQUF6QixFQUFtQ0MsTUFBbkMsRUFBMkNDLE9BQTNDLEVBQW9EO0FBQ2xELE1BQUkxRyxLQUFLLENBQUNwRCxRQUFOLENBQWU0SixRQUFmLENBQUosRUFBOEI7QUFDNUIsUUFBSTtBQUNGLE9BQUNDLE1BQU0sSUFBSXh3QixJQUFJLENBQUNDLEtBQWhCLEVBQXVCc3dCLFFBQXZCO0FBQ0EsYUFBT3hHLEtBQUssQ0FBQ3JFLElBQU4sQ0FBVzZLLFFBQVgsQ0FBUDtBQUNELEtBSEQsQ0FHRSxPQUFPcGIsQ0FBUCxFQUFVO0FBQ1YsVUFBSUEsQ0FBQyxDQUFDelEsSUFBRixLQUFXLGFBQWYsRUFBOEI7QUFDNUIsY0FBTXlRLENBQU47QUFDRDtBQUNGO0FBQ0Y7O0FBRUQsU0FBTyxDQUFDc2IsT0FBTyxJQUFJendCLElBQUksQ0FBQ3NWLFNBQWpCLEVBQTRCaWIsUUFBNUIsQ0FBUDtBQUNEOztBQUVELElBQUluSCxRQUFRLEdBQUc7O0FBRWJnRSxjQUFZLEVBQUU2QyxvQkFGRDs7QUFJYjVHLFNBQU8sRUFBRStHLGlCQUFpQixFQUpiOztBQU1iWixrQkFBZ0IsRUFBRSxDQUFDLFNBQVNBLGdCQUFULENBQTBCeHJCLElBQTFCLEVBQWdDaWxCLE9BQWhDLEVBQXlDO0FBQzFEOEcsdUJBQW1CLENBQUM5RyxPQUFELEVBQVUsUUFBVixDQUFuQjtBQUNBOEcsdUJBQW1CLENBQUM5RyxPQUFELEVBQVUsY0FBVixDQUFuQjs7QUFFQSxRQUFJYyxLQUFLLENBQUNvQixVQUFOLENBQWlCbm5CLElBQWpCO0FBQ0YrbEIsU0FBSyxDQUFDbUIsYUFBTixDQUFvQmxuQixJQUFwQixDQURFO0FBRUYrbEIsU0FBSyxDQUFDa0IsUUFBTixDQUFlam5CLElBQWYsQ0FGRTtBQUdGK2xCLFNBQUssQ0FBQytCLFFBQU4sQ0FBZTluQixJQUFmLENBSEU7QUFJRitsQixTQUFLLENBQUM0QixNQUFOLENBQWEzbkIsSUFBYixDQUpFO0FBS0YrbEIsU0FBSyxDQUFDNkIsTUFBTixDQUFhNW5CLElBQWIsQ0FMRjtBQU1FO0FBQ0EsYUFBT0EsSUFBUDtBQUNEO0FBQ0QsUUFBSStsQixLQUFLLENBQUNxQixpQkFBTixDQUF3QnBuQixJQUF4QixDQUFKLEVBQW1DO0FBQ2pDLGFBQU9BLElBQUksQ0FBQ3VuQixNQUFaO0FBQ0Q7QUFDRCxRQUFJeEIsS0FBSyxDQUFDaUMsaUJBQU4sQ0FBd0Job0IsSUFBeEIsQ0FBSixFQUFtQztBQUNqQ21zQiwyQkFBcUIsQ0FBQ2xILE9BQUQsRUFBVSxpREFBVixDQUFyQjtBQUNBLGFBQU9qbEIsSUFBSSxDQUFDNUUsUUFBTCxFQUFQO0FBQ0Q7QUFDRCxRQUFJMnFCLEtBQUssQ0FBQ25HLFFBQU4sQ0FBZTVmLElBQWYsS0FBeUJpbEIsT0FBTyxJQUFJQSxPQUFPLENBQUMsY0FBRCxDQUFQLEtBQTRCLGtCQUFwRSxFQUF5RjtBQUN2RmtILDJCQUFxQixDQUFDbEgsT0FBRCxFQUFVLGtCQUFWLENBQXJCO0FBQ0EsYUFBT3FILGVBQWUsQ0FBQ3RzQixJQUFELENBQXRCO0FBQ0Q7QUFDRCxXQUFPQSxJQUFQO0FBQ0QsR0F6QmlCLENBTkw7O0FBaUNiNHJCLG1CQUFpQixFQUFFLENBQUMsU0FBU0EsaUJBQVQsQ0FBMkI1ckIsSUFBM0IsRUFBaUM7QUFDbkQsUUFBSW9wQixZQUFZLEdBQUcsS0FBS0EsWUFBTCxJQUFxQmhFLFFBQVEsQ0FBQ2dFLFlBQWpEO0FBQ0EsUUFBSUUsaUJBQWlCLEdBQUdGLFlBQVksSUFBSUEsWUFBWSxDQUFDRSxpQkFBckQ7QUFDQSxRQUFJRSxpQkFBaUIsR0FBR0osWUFBWSxJQUFJQSxZQUFZLENBQUNJLGlCQUFyRDtBQUNBLFFBQUlrRCxpQkFBaUIsR0FBRyxDQUFDcEQsaUJBQUQsSUFBc0IsS0FBSzNELFlBQUwsS0FBc0IsTUFBcEU7O0FBRUEsUUFBSStHLGlCQUFpQixJQUFLbEQsaUJBQWlCLElBQUl6RCxLQUFLLENBQUNwRCxRQUFOLENBQWUzaUIsSUFBZixDQUFyQixJQUE2Q0EsSUFBSSxDQUFDM0YsTUFBNUUsRUFBcUY7QUFDbkYsVUFBSTtBQUNGLGVBQU8yQixJQUFJLENBQUNDLEtBQUwsQ0FBVytELElBQVgsQ0FBUDtBQUNELE9BRkQsQ0FFRSxPQUFPbVIsQ0FBUCxFQUFVO0FBQ1YsWUFBSXViLGlCQUFKLEVBQXVCO0FBQ3JCLGNBQUl2YixDQUFDLENBQUN6USxJQUFGLEtBQVcsYUFBZixFQUE4QjtBQUM1QixrQkFBTXNyQixZQUFZLENBQUM3YSxDQUFELEVBQUksSUFBSixFQUFVLGNBQVYsQ0FBbEI7QUFDRDtBQUNELGdCQUFNQSxDQUFOO0FBQ0Q7QUFDRjtBQUNGOztBQUVELFdBQU9uUixJQUFQO0FBQ0QsR0FwQmtCLENBakNOOztBQXVEYjs7OztBQUlBMEssU0FBTyxFQUFFLENBM0RJOztBQTZEYmlpQixnQkFBYyxFQUFFLFlBN0RIO0FBOERiQyxnQkFBYyxFQUFFLGNBOURIOztBQWdFYkMsa0JBQWdCLEVBQUUsQ0FBQyxDQWhFTjtBQWlFYkMsZUFBYSxFQUFFLENBQUMsQ0FqRUg7O0FBbUViQyxnQkFBYyxFQUFFLFNBQVNBLGNBQVQsQ0FBd0JsSCxNQUF4QixFQUFnQztBQUM5QyxXQUFPQSxNQUFNLElBQUksR0FBVixJQUFpQkEsTUFBTSxHQUFHLEdBQWpDO0FBQ0QsR0FyRVk7O0FBdUViWixTQUFPLEVBQUU7QUFDUHdHLFVBQU0sRUFBRTtBQUNOLGdCQUFVLG1DQURKLEVBREQsRUF2RUksRUFBZjs7Ozs7QUE4RUExRixLQUFLLENBQUNybUIsT0FBTixDQUFjLENBQUMsUUFBRCxFQUFXLEtBQVgsRUFBa0IsTUFBbEIsQ0FBZCxFQUF5QyxTQUFTNnFCLG1CQUFULENBQTZCMXFCLE1BQTdCLEVBQXFDO0FBQzVFdWxCLFVBQVEsQ0FBQ0gsT0FBVCxDQUFpQnBsQixNQUFqQixJQUEyQixFQUEzQjtBQUNELENBRkQ7O0FBSUFrbUIsS0FBSyxDQUFDcm1CLE9BQU4sQ0FBYyxDQUFDLE1BQUQsRUFBUyxLQUFULEVBQWdCLE9BQWhCLENBQWQsRUFBd0MsU0FBUzhxQixxQkFBVCxDQUErQjNxQixNQUEvQixFQUF1QztBQUM3RXVsQixVQUFRLENBQUNILE9BQVQsQ0FBaUJwbEIsTUFBakIsSUFBMkJrbUIsS0FBSyxDQUFDd0MsS0FBTixDQUFZMkQsb0JBQVosQ0FBM0I7QUFDRCxDQUZEOztBQUlBOUgsTUFBTSxDQUFDQyxPQUFQLEdBQWlCZSxRQUFqQixDOzs7Ozs7Ozs7OztBQ2xJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0EsMEJBQTBCLG1CQUFPLENBQUMsY0FBTTtBQUN4QztBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQ2pDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsUUFBUTtBQUN4QztBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVSxNQUFNO0FBQ2hCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0NBQW9DLDhCQUE4QjtBQUNsRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVUsb0JBQW9CO0FBQzlCO0FBQ0E7O0FBRUE7QUFDQSxVQUFVLFVBQVU7QUFDcEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaUJBQWlCLFlBQVk7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtCQUErQixzQkFBc0I7QUFDckQ7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsUUFBUTtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDJCQUEyQixRQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixRQUFRO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixlQUFlO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQzdTYTs7QUFFYixJQUFJVyxLQUFLLEdBQUd6QixtQkFBTyxDQUFDLGtCQUFELENBQW5COztBQUVBRixNQUFNLENBQUNDLE9BQVAsR0FBaUIsU0FBUzBILG1CQUFULENBQTZCOUcsT0FBN0IsRUFBc0MrSCxjQUF0QyxFQUFzRDtBQUNyRWpILE9BQUssQ0FBQ3JtQixPQUFOLENBQWN1bEIsT0FBZCxFQUF1QixTQUFTZ0ksYUFBVCxDQUF1QjNxQixLQUF2QixFQUE4QjVCLElBQTlCLEVBQW9DO0FBQ3pELFFBQUlBLElBQUksS0FBS3NzQixjQUFULElBQTJCdHNCLElBQUksQ0FBQ3RDLFdBQUwsT0FBdUI0dUIsY0FBYyxDQUFDNXVCLFdBQWYsRUFBdEQsRUFBb0Y7QUFDbEY2bUIsYUFBTyxDQUFDK0gsY0FBRCxDQUFQLEdBQTBCMXFCLEtBQTFCO0FBQ0EsYUFBTzJpQixPQUFPLENBQUN2a0IsSUFBRCxDQUFkO0FBQ0Q7QUFDRixHQUxEO0FBTUQsQ0FQRCxDOzs7Ozs7Ozs7OztBQ0phOztBQUViOzs7Ozs7Ozs7O0FBVUEwakIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLFNBQVMySCxZQUFULENBQXNCOXZCLEtBQXRCLEVBQTZCOG9CLE1BQTdCLEVBQXFDa0ksSUFBckMsRUFBMkNuSSxPQUEzQyxFQUFvREksUUFBcEQsRUFBOEQ7QUFDN0VqcEIsT0FBSyxDQUFDOG9CLE1BQU4sR0FBZUEsTUFBZjtBQUNBLE1BQUlrSSxJQUFKLEVBQVU7QUFDUmh4QixTQUFLLENBQUNneEIsSUFBTixHQUFhQSxJQUFiO0FBQ0Q7O0FBRURoeEIsT0FBSyxDQUFDNm9CLE9BQU4sR0FBZ0JBLE9BQWhCO0FBQ0E3b0IsT0FBSyxDQUFDaXBCLFFBQU4sR0FBaUJBLFFBQWpCO0FBQ0FqcEIsT0FBSyxDQUFDNnFCLFlBQU4sR0FBcUIsSUFBckI7O0FBRUE3cUIsT0FBSyxDQUFDaXhCLE1BQU4sR0FBZSxTQUFTQSxNQUFULEdBQWtCO0FBQy9CLFdBQU87QUFDTDtBQUNBaHhCLGFBQU8sRUFBRSxLQUFLQSxPQUZUO0FBR0x1RSxVQUFJLEVBQUUsS0FBS0EsSUFITjtBQUlMO0FBQ0Ewc0IsaUJBQVcsRUFBRSxLQUFLQSxXQUxiO0FBTUwzcEIsWUFBTSxFQUFFLEtBQUtBLE1BTlI7QUFPTDtBQUNBNHBCLGNBQVEsRUFBRSxLQUFLQSxRQVJWO0FBU0xDLGdCQUFVLEVBQUUsS0FBS0EsVUFUWjtBQVVMQyxrQkFBWSxFQUFFLEtBQUtBLFlBVmQ7QUFXTEMsV0FBSyxFQUFFLEtBQUtBLEtBWFA7QUFZTDtBQUNBeEksWUFBTSxFQUFFLEtBQUtBLE1BYlI7QUFjTGtJLFVBQUksRUFBRSxLQUFLQSxJQWROO0FBZUxySCxZQUFNLEVBQUUsS0FBS1YsUUFBTCxJQUFpQixLQUFLQSxRQUFMLENBQWNVLE1BQS9CLEdBQXdDLEtBQUtWLFFBQUwsQ0FBY1UsTUFBdEQsR0FBK0QsSUFmbEUsRUFBUDs7QUFpQkQsR0FsQkQ7QUFtQkEsU0FBTzNwQixLQUFQO0FBQ0QsQ0E5QkQsQzs7Ozs7Ozs7Ozs7QUNaYTs7QUFFYmtvQixNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDZmlGLG1CQUFpQixFQUFFLElBREo7QUFFZkUsbUJBQWlCLEVBQUUsSUFGSjtBQUdmQyxxQkFBbUIsRUFBRSxLQUhOLEVBQWpCLEM7Ozs7Ozs7Ozs7O0FDRmE7O0FBRWIsSUFBSTFELEtBQUssR0FBR3pCLG1CQUFPLENBQUMsb0JBQUQsQ0FBbkI7QUFDQSxJQUFJZ0IsTUFBTSxHQUFHaEIsbUJBQU8sQ0FBQywwQkFBRCxDQUFwQjtBQUNBLElBQUltSixPQUFPLEdBQUduSixtQkFBTyxDQUFDLDhCQUFELENBQXJCO0FBQ0EsSUFBSWlCLFFBQVEsR0FBR2pCLG1CQUFPLENBQUMsK0JBQUQsQ0FBdEI7QUFDQSxJQUFJb0osYUFBYSxHQUFHcEosbUJBQU8sQ0FBQywrQkFBRCxDQUEzQjtBQUNBLElBQUlxSixZQUFZLEdBQUdySixtQkFBTyxDQUFDLG1DQUFELENBQTFCO0FBQ0EsSUFBSXNKLGVBQWUsR0FBR3RKLG1CQUFPLENBQUMsc0NBQUQsQ0FBN0I7QUFDQSxJQUFJdUosV0FBVyxHQUFHdkosbUJBQU8sQ0FBQyw2QkFBRCxDQUF6QjtBQUNBLElBQUkySCxvQkFBb0IsR0FBRzNILG1CQUFPLENBQUMsa0NBQUQsQ0FBbEM7QUFDQSxJQUFJaUMsTUFBTSxHQUFHakMsbUJBQU8sQ0FBQywwQkFBRCxDQUFwQjs7QUFFQUYsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLFNBQVN5SixVQUFULENBQW9COUksTUFBcEIsRUFBNEI7QUFDM0MsU0FBTyxJQUFJM2tCLE9BQUosQ0FBWSxTQUFTMHRCLGtCQUFULENBQTRCenRCLE9BQTVCLEVBQXFDaUIsTUFBckMsRUFBNkM7QUFDOUQsUUFBSXlzQixXQUFXLEdBQUdoSixNQUFNLENBQUNobEIsSUFBekI7QUFDQSxRQUFJaXVCLGNBQWMsR0FBR2pKLE1BQU0sQ0FBQ0MsT0FBNUI7QUFDQSxRQUFJVSxZQUFZLEdBQUdYLE1BQU0sQ0FBQ1csWUFBMUI7QUFDQSxRQUFJdUksVUFBSjtBQUNBLGFBQVNDLElBQVQsR0FBZ0I7QUFDZCxVQUFJbkosTUFBTSxDQUFDb0csV0FBWCxFQUF3QjtBQUN0QnBHLGNBQU0sQ0FBQ29HLFdBQVAsQ0FBbUJnRCxXQUFuQixDQUErQkYsVUFBL0I7QUFDRDs7QUFFRCxVQUFJbEosTUFBTSxDQUFDc0csTUFBWCxFQUFtQjtBQUNqQnRHLGNBQU0sQ0FBQ3NHLE1BQVAsQ0FBYytDLG1CQUFkLENBQWtDLE9BQWxDLEVBQTJDSCxVQUEzQztBQUNEO0FBQ0Y7O0FBRUQsUUFBSW5JLEtBQUssQ0FBQ29CLFVBQU4sQ0FBaUI2RyxXQUFqQixDQUFKLEVBQW1DO0FBQ2pDLGFBQU9DLGNBQWMsQ0FBQyxjQUFELENBQXJCLENBRGlDLENBQ007QUFDeEM7O0FBRUQsUUFBSWxKLE9BQU8sR0FBRyxJQUFJc0gsY0FBSixFQUFkOztBQUVBO0FBQ0EsUUFBSXJILE1BQU0sQ0FBQ3NKLElBQVgsRUFBaUI7QUFDZixVQUFJQyxRQUFRLEdBQUd2SixNQUFNLENBQUNzSixJQUFQLENBQVlDLFFBQVosSUFBd0IsRUFBdkM7QUFDQSxVQUFJQyxRQUFRLEdBQUd4SixNQUFNLENBQUNzSixJQUFQLENBQVlFLFFBQVosR0FBdUJDLFFBQVEsQ0FBQ2xTLGtCQUFrQixDQUFDeUksTUFBTSxDQUFDc0osSUFBUCxDQUFZRSxRQUFiLENBQW5CLENBQS9CLEdBQTRFLEVBQTNGO0FBQ0FQLG9CQUFjLENBQUNTLGFBQWYsR0FBK0IsV0FBV0MsSUFBSSxDQUFDSixRQUFRLEdBQUcsR0FBWCxHQUFpQkMsUUFBbEIsQ0FBOUM7QUFDRDs7QUFFRCxRQUFJdG5CLFFBQVEsR0FBR3dtQixhQUFhLENBQUMxSSxNQUFNLENBQUNGLE9BQVIsRUFBaUJFLE1BQU0sQ0FBQ3ZlLEdBQXhCLENBQTVCO0FBQ0FzZSxXQUFPLENBQUM2SixJQUFSLENBQWE1SixNQUFNLENBQUNubEIsTUFBUCxDQUFjekIsV0FBZCxFQUFiLEVBQTBDbW5CLFFBQVEsQ0FBQ3JlLFFBQUQsRUFBVzhkLE1BQU0sQ0FBQzVqQixNQUFsQixFQUEwQjRqQixNQUFNLENBQUNRLGdCQUFqQyxDQUFsRCxFQUFzRyxJQUF0Rzs7QUFFQTtBQUNBVCxXQUFPLENBQUNyYSxPQUFSLEdBQWtCc2EsTUFBTSxDQUFDdGEsT0FBekI7O0FBRUEsYUFBU21rQixTQUFULEdBQXFCO0FBQ25CLFVBQUksQ0FBQzlKLE9BQUwsRUFBYztBQUNaO0FBQ0Q7QUFDRDtBQUNBLFVBQUkrSixlQUFlLEdBQUcsMkJBQTJCL0osT0FBM0IsR0FBcUM0SSxZQUFZLENBQUM1SSxPQUFPLENBQUNnSyxxQkFBUixFQUFELENBQWpELEdBQXFGLElBQTNHO0FBQ0EsVUFBSUMsWUFBWSxHQUFHLENBQUNySixZQUFELElBQWlCQSxZQUFZLEtBQUssTUFBbEMsSUFBNkNBLFlBQVksS0FBSyxNQUE5RDtBQUNqQlosYUFBTyxDQUFDa0ssWUFEUyxHQUNNbEssT0FBTyxDQUFDSSxRQURqQztBQUVBLFVBQUlBLFFBQVEsR0FBRztBQUNibmxCLFlBQUksRUFBRWd2QixZQURPO0FBRWJuSixjQUFNLEVBQUVkLE9BQU8sQ0FBQ2MsTUFGSDtBQUdicUosa0JBQVUsRUFBRW5LLE9BQU8sQ0FBQ21LLFVBSFA7QUFJYmpLLGVBQU8sRUFBRTZKLGVBSkk7QUFLYjlKLGNBQU0sRUFBRUEsTUFMSztBQU1iRCxlQUFPLEVBQUVBLE9BTkksRUFBZjs7O0FBU0FPLFlBQU0sQ0FBQyxTQUFTNkosUUFBVCxDQUFrQjdzQixLQUFsQixFQUF5QjtBQUM5QmhDLGVBQU8sQ0FBQ2dDLEtBQUQsQ0FBUDtBQUNBNnJCLFlBQUk7QUFDTCxPQUhLLEVBR0gsU0FBU2lCLE9BQVQsQ0FBaUJsdEIsR0FBakIsRUFBc0I7QUFDdkJYLGNBQU0sQ0FBQ1csR0FBRCxDQUFOO0FBQ0Fpc0IsWUFBSTtBQUNMLE9BTkssRUFNSGhKLFFBTkcsQ0FBTjs7QUFRQTtBQUNBSixhQUFPLEdBQUcsSUFBVjtBQUNEOztBQUVELFFBQUksZUFBZUEsT0FBbkIsRUFBNEI7QUFDMUI7QUFDQUEsYUFBTyxDQUFDOEosU0FBUixHQUFvQkEsU0FBcEI7QUFDRCxLQUhELE1BR087QUFDTDtBQUNBOUosYUFBTyxDQUFDc0ssa0JBQVIsR0FBNkIsU0FBU0MsVUFBVCxHQUFzQjtBQUNqRCxZQUFJLENBQUN2SyxPQUFELElBQVlBLE9BQU8sQ0FBQ3dLLFVBQVIsS0FBdUIsQ0FBdkMsRUFBMEM7QUFDeEM7QUFDRDs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQUl4SyxPQUFPLENBQUNjLE1BQVIsS0FBbUIsQ0FBbkIsSUFBd0IsRUFBRWQsT0FBTyxDQUFDeUssV0FBUixJQUF1QnpLLE9BQU8sQ0FBQ3lLLFdBQVIsQ0FBb0I3MEIsT0FBcEIsQ0FBNEIsT0FBNUIsTUFBeUMsQ0FBbEUsQ0FBNUIsRUFBa0c7QUFDaEc7QUFDRDtBQUNEO0FBQ0E7QUFDQTgwQixrQkFBVSxDQUFDWixTQUFELENBQVY7QUFDRCxPQWZEO0FBZ0JEOztBQUVEO0FBQ0E5SixXQUFPLENBQUMySyxPQUFSLEdBQWtCLFNBQVNDLFdBQVQsR0FBdUI7QUFDdkMsVUFBSSxDQUFDNUssT0FBTCxFQUFjO0FBQ1o7QUFDRDs7QUFFRHhqQixZQUFNLENBQUNzc0IsV0FBVyxDQUFDLGlCQUFELEVBQW9CN0ksTUFBcEIsRUFBNEIsY0FBNUIsRUFBNENELE9BQTVDLENBQVosQ0FBTjs7QUFFQTtBQUNBQSxhQUFPLEdBQUcsSUFBVjtBQUNELEtBVEQ7O0FBV0E7QUFDQUEsV0FBTyxDQUFDNkssT0FBUixHQUFrQixTQUFTQyxXQUFULEdBQXVCO0FBQ3ZDO0FBQ0E7QUFDQXR1QixZQUFNLENBQUNzc0IsV0FBVyxDQUFDLGVBQUQsRUFBa0I3SSxNQUFsQixFQUEwQixJQUExQixFQUFnQ0QsT0FBaEMsQ0FBWixDQUFOOztBQUVBO0FBQ0FBLGFBQU8sR0FBRyxJQUFWO0FBQ0QsS0FQRDs7QUFTQTtBQUNBQSxXQUFPLENBQUMrSyxTQUFSLEdBQW9CLFNBQVNDLGFBQVQsR0FBeUI7QUFDM0MsVUFBSUMsbUJBQW1CLEdBQUdoTCxNQUFNLENBQUN0YSxPQUFQLEdBQWlCLGdCQUFnQnNhLE1BQU0sQ0FBQ3RhLE9BQXZCLEdBQWlDLGFBQWxELEdBQWtFLGtCQUE1RjtBQUNBLFVBQUkwZSxZQUFZLEdBQUdwRSxNQUFNLENBQUNvRSxZQUFQLElBQXVCNkMsb0JBQTFDO0FBQ0EsVUFBSWpILE1BQU0sQ0FBQ2dMLG1CQUFYLEVBQWdDO0FBQzlCQSwyQkFBbUIsR0FBR2hMLE1BQU0sQ0FBQ2dMLG1CQUE3QjtBQUNEO0FBQ0R6dUIsWUFBTSxDQUFDc3NCLFdBQVc7QUFDaEJtQyx5QkFEZ0I7QUFFaEJoTCxZQUZnQjtBQUdoQm9FLGtCQUFZLENBQUNLLG1CQUFiLEdBQW1DLFdBQW5DLEdBQWlELGNBSGpDO0FBSWhCMUUsYUFKZ0IsQ0FBWixDQUFOOztBQU1BO0FBQ0FBLGFBQU8sR0FBRyxJQUFWO0FBQ0QsS0FkRDs7QUFnQkE7QUFDQTtBQUNBO0FBQ0EsUUFBSWdCLEtBQUssQ0FBQ2tDLG9CQUFOLEVBQUosRUFBa0M7QUFDaEM7QUFDQSxVQUFJZ0ksU0FBUyxHQUFHLENBQUNqTCxNQUFNLENBQUNKLGVBQVAsSUFBMEJnSixlQUFlLENBQUMxbUIsUUFBRCxDQUExQyxLQUF5RDhkLE1BQU0sQ0FBQzJILGNBQWhFO0FBQ2RjLGFBQU8sQ0FBQ3lDLElBQVIsQ0FBYWxMLE1BQU0sQ0FBQzJILGNBQXBCLENBRGM7QUFFZGhRLGVBRkY7O0FBSUEsVUFBSXNULFNBQUosRUFBZTtBQUNiaEMsc0JBQWMsQ0FBQ2pKLE1BQU0sQ0FBQzRILGNBQVIsQ0FBZCxHQUF3Q3FELFNBQXhDO0FBQ0Q7QUFDRjs7QUFFRDtBQUNBLFFBQUksc0JBQXNCbEwsT0FBMUIsRUFBbUM7QUFDakNnQixXQUFLLENBQUNybUIsT0FBTixDQUFjdXVCLGNBQWQsRUFBOEIsU0FBU2tDLGdCQUFULENBQTBCelQsR0FBMUIsRUFBK0JoZixHQUEvQixFQUFvQztBQUNoRSxZQUFJLE9BQU9zd0IsV0FBUCxLQUF1QixXQUF2QixJQUFzQ3R3QixHQUFHLENBQUNpa0IsV0FBSixPQUFzQixjQUFoRSxFQUFnRjtBQUM5RTtBQUNBLGlCQUFPc00sY0FBYyxDQUFDdndCLEdBQUQsQ0FBckI7QUFDRCxTQUhELE1BR087QUFDTDtBQUNBcW5CLGlCQUFPLENBQUNvTCxnQkFBUixDQUF5Qnp5QixHQUF6QixFQUE4QmdmLEdBQTlCO0FBQ0Q7QUFDRixPQVJEO0FBU0Q7O0FBRUQ7QUFDQSxRQUFJLENBQUNxSixLQUFLLENBQUNpQixXQUFOLENBQWtCaEMsTUFBTSxDQUFDSixlQUF6QixDQUFMLEVBQWdEO0FBQzlDRyxhQUFPLENBQUNILGVBQVIsR0FBMEIsQ0FBQyxDQUFDSSxNQUFNLENBQUNKLGVBQW5DO0FBQ0Q7O0FBRUQ7QUFDQSxRQUFJZSxZQUFZLElBQUlBLFlBQVksS0FBSyxNQUFyQyxFQUE2QztBQUMzQ1osYUFBTyxDQUFDWSxZQUFSLEdBQXVCWCxNQUFNLENBQUNXLFlBQTlCO0FBQ0Q7O0FBRUQ7QUFDQSxRQUFJLE9BQU9YLE1BQU0sQ0FBQ29MLGtCQUFkLEtBQXFDLFVBQXpDLEVBQXFEO0FBQ25EckwsYUFBTyxDQUFDc0wsZ0JBQVIsQ0FBeUIsVUFBekIsRUFBcUNyTCxNQUFNLENBQUNvTCxrQkFBNUM7QUFDRDs7QUFFRDtBQUNBLFFBQUksT0FBT3BMLE1BQU0sQ0FBQ3NMLGdCQUFkLEtBQW1DLFVBQW5DLElBQWlEdkwsT0FBTyxDQUFDd0wsTUFBN0QsRUFBcUU7QUFDbkV4TCxhQUFPLENBQUN3TCxNQUFSLENBQWVGLGdCQUFmLENBQWdDLFVBQWhDLEVBQTRDckwsTUFBTSxDQUFDc0wsZ0JBQW5EO0FBQ0Q7O0FBRUQsUUFBSXRMLE1BQU0sQ0FBQ29HLFdBQVAsSUFBc0JwRyxNQUFNLENBQUNzRyxNQUFqQyxFQUF5QztBQUN2QztBQUNBO0FBQ0E0QyxnQkFBVSxHQUFHLG9CQUFTc0MsTUFBVCxFQUFpQjtBQUM1QixZQUFJLENBQUN6TCxPQUFMLEVBQWM7QUFDWjtBQUNEO0FBQ0R4akIsY0FBTSxDQUFDLENBQUNpdkIsTUFBRCxJQUFZQSxNQUFNLElBQUlBLE1BQU0sQ0FBQzdxQixJQUE3QixHQUFxQyxJQUFJNGdCLE1BQUosQ0FBVyxVQUFYLENBQXJDLEdBQThEaUssTUFBL0QsQ0FBTjtBQUNBekwsZUFBTyxDQUFDMEwsS0FBUjtBQUNBMUwsZUFBTyxHQUFHLElBQVY7QUFDRCxPQVBEOztBQVNBQyxZQUFNLENBQUNvRyxXQUFQLElBQXNCcEcsTUFBTSxDQUFDb0csV0FBUCxDQUFtQnNGLFNBQW5CLENBQTZCeEMsVUFBN0IsQ0FBdEI7QUFDQSxVQUFJbEosTUFBTSxDQUFDc0csTUFBWCxFQUFtQjtBQUNqQnRHLGNBQU0sQ0FBQ3NHLE1BQVAsQ0FBY0MsT0FBZCxHQUF3QjJDLFVBQVUsRUFBbEMsR0FBdUNsSixNQUFNLENBQUNzRyxNQUFQLENBQWMrRSxnQkFBZCxDQUErQixPQUEvQixFQUF3Q25DLFVBQXhDLENBQXZDO0FBQ0Q7QUFDRjs7QUFFRCxRQUFJLENBQUNGLFdBQUwsRUFBa0I7QUFDaEJBLGlCQUFXLEdBQUcsSUFBZDtBQUNEOztBQUVEO0FBQ0FqSixXQUFPLENBQUM0TCxJQUFSLENBQWEzQyxXQUFiO0FBQ0QsR0FwTU0sQ0FBUDtBQXFNRCxDQXRNRCxDOzs7Ozs7Ozs7OztBQ2JhOztBQUViLElBQUlILFdBQVcsR0FBR3ZKLG1CQUFPLENBQUMsdUJBQUQsQ0FBekI7O0FBRUE7Ozs7Ozs7QUFPQUYsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLFNBQVNpQixNQUFULENBQWdCaGxCLE9BQWhCLEVBQXlCaUIsTUFBekIsRUFBaUM0akIsUUFBakMsRUFBMkM7QUFDMUQsTUFBSTRILGNBQWMsR0FBRzVILFFBQVEsQ0FBQ0gsTUFBVCxDQUFnQitILGNBQXJDO0FBQ0EsTUFBSSxDQUFDNUgsUUFBUSxDQUFDVSxNQUFWLElBQW9CLENBQUNrSCxjQUFyQixJQUF1Q0EsY0FBYyxDQUFDNUgsUUFBUSxDQUFDVSxNQUFWLENBQXpELEVBQTRFO0FBQzFFdmxCLFdBQU8sQ0FBQzZrQixRQUFELENBQVA7QUFDRCxHQUZELE1BRU87QUFDTDVqQixVQUFNLENBQUNzc0IsV0FBVztBQUNoQix5Q0FBcUMxSSxRQUFRLENBQUNVLE1BRDlCO0FBRWhCVixZQUFRLENBQUNILE1BRk87QUFHaEIsUUFIZ0I7QUFJaEJHLFlBQVEsQ0FBQ0osT0FKTztBQUtoQkksWUFMZ0IsQ0FBWixDQUFOOztBQU9EO0FBQ0YsQ0FiRCxDOzs7Ozs7Ozs7OztBQ1hhOztBQUViLElBQUk2RyxZQUFZLEdBQUcxSCxtQkFBTyxDQUFDLHdCQUFELENBQTFCOztBQUVBOzs7Ozs7Ozs7O0FBVUFGLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixTQUFTd0osV0FBVCxDQUFxQjF4QixPQUFyQixFQUE4QjZvQixNQUE5QixFQUFzQ2tJLElBQXRDLEVBQTRDbkksT0FBNUMsRUFBcURJLFFBQXJELEVBQStEO0FBQzlFLE1BQUlqcEIsS0FBSyxHQUFHLElBQUkvQixLQUFKLENBQVVnQyxPQUFWLENBQVo7QUFDQSxTQUFPNnZCLFlBQVksQ0FBQzl2QixLQUFELEVBQVE4b0IsTUFBUixFQUFnQmtJLElBQWhCLEVBQXNCbkksT0FBdEIsRUFBK0JJLFFBQS9CLENBQW5CO0FBQ0QsQ0FIRCxDOzs7Ozs7Ozs7OztBQ2RhOztBQUViLElBQUlZLEtBQUssR0FBR3pCLG1CQUFPLENBQUMsb0JBQUQsQ0FBbkI7O0FBRUFGLE1BQU0sQ0FBQ0MsT0FBUDtBQUNFMEIsS0FBSyxDQUFDa0Msb0JBQU47O0FBRUE7QUFDRyxTQUFTMkksa0JBQVQsR0FBOEI7QUFDN0IsU0FBTztBQUNMQyxTQUFLLEVBQUUsU0FBU0EsS0FBVCxDQUFlbndCLElBQWYsRUFBcUI0QixLQUFyQixFQUE0Qnd1QixPQUE1QixFQUFxQ0MsSUFBckMsRUFBMkNDLE1BQTNDLEVBQW1EQyxNQUFuRCxFQUEyRDtBQUNoRSxVQUFJQyxNQUFNLEdBQUcsRUFBYjtBQUNBQSxZQUFNLENBQUNqeUIsSUFBUCxDQUFZeUIsSUFBSSxHQUFHLEdBQVAsR0FBYTZiLGtCQUFrQixDQUFDamEsS0FBRCxDQUEzQzs7QUFFQSxVQUFJeWpCLEtBQUssQ0FBQ3lCLFFBQU4sQ0FBZXNKLE9BQWYsQ0FBSixFQUE2QjtBQUMzQkksY0FBTSxDQUFDanlCLElBQVAsQ0FBWSxhQUFhLElBQUluQyxJQUFKLENBQVNnMEIsT0FBVCxFQUFrQkssV0FBbEIsRUFBekI7QUFDRDs7QUFFRCxVQUFJcEwsS0FBSyxDQUFDcEQsUUFBTixDQUFlb08sSUFBZixDQUFKLEVBQTBCO0FBQ3hCRyxjQUFNLENBQUNqeUIsSUFBUCxDQUFZLFVBQVU4eEIsSUFBdEI7QUFDRDs7QUFFRCxVQUFJaEwsS0FBSyxDQUFDcEQsUUFBTixDQUFlcU8sTUFBZixDQUFKLEVBQTRCO0FBQzFCRSxjQUFNLENBQUNqeUIsSUFBUCxDQUFZLFlBQVkreEIsTUFBeEI7QUFDRDs7QUFFRCxVQUFJQyxNQUFNLEtBQUssSUFBZixFQUFxQjtBQUNuQkMsY0FBTSxDQUFDanlCLElBQVAsQ0FBWSxRQUFaO0FBQ0Q7O0FBRURvcEIsY0FBUSxDQUFDNkksTUFBVCxHQUFrQkEsTUFBTSxDQUFDNzFCLElBQVAsQ0FBWSxJQUFaLENBQWxCO0FBQ0QsS0F0Qkk7O0FBd0JMNjBCLFFBQUksRUFBRSxTQUFTQSxJQUFULENBQWN4dkIsSUFBZCxFQUFvQjtBQUN4QixVQUFJMHdCLEtBQUssR0FBRy9JLFFBQVEsQ0FBQzZJLE1BQVQsQ0FBZ0JFLEtBQWhCLENBQXNCLElBQUlDLE1BQUosQ0FBVyxlQUFlM3dCLElBQWYsR0FBc0IsV0FBakMsQ0FBdEIsQ0FBWjtBQUNBLGFBQVEwd0IsS0FBSyxHQUFHcjJCLGtCQUFrQixDQUFDcTJCLEtBQUssQ0FBQyxDQUFELENBQU4sQ0FBckIsR0FBa0MsSUFBL0M7QUFDRCxLQTNCSTs7QUE2QkxFLFVBQU0sRUFBRSxTQUFTQSxNQUFULENBQWdCNXdCLElBQWhCLEVBQXNCO0FBQzVCLFdBQUttd0IsS0FBTCxDQUFXbndCLElBQVgsRUFBaUIsRUFBakIsRUFBcUI1RCxJQUFJLENBQUNDLEdBQUwsS0FBYSxRQUFsQztBQUNELEtBL0JJLEVBQVA7O0FBaUNELENBbENELEVBSEY7O0FBdUNBO0FBQ0csU0FBU3cwQixxQkFBVCxHQUFpQztBQUNoQyxTQUFPO0FBQ0xWLFNBQUssRUFBRSxTQUFTQSxLQUFULEdBQWlCLENBQUUsQ0FEckI7QUFFTFgsUUFBSSxFQUFFLFNBQVNBLElBQVQsR0FBZ0IsQ0FBRSxPQUFPLElBQVAsQ0FBYyxDQUZqQztBQUdMb0IsVUFBTSxFQUFFLFNBQVNBLE1BQVQsR0FBa0IsQ0FBRSxDQUh2QixFQUFQOztBQUtELENBTkQsRUF6Q0osQzs7Ozs7Ozs7Ozs7QUNKYTs7QUFFYixJQUFJRSxhQUFhLEdBQUdsTixtQkFBTyxDQUFDLGtDQUFELENBQTNCO0FBQ0EsSUFBSW1OLFdBQVcsR0FBR25OLG1CQUFPLENBQUMsZ0NBQUQsQ0FBekI7O0FBRUE7Ozs7Ozs7OztBQVNBRixNQUFNLENBQUNDLE9BQVAsR0FBaUIsU0FBU3FKLGFBQVQsQ0FBdUI1SSxPQUF2QixFQUFnQzRNLFlBQWhDLEVBQThDO0FBQzdELE1BQUk1TSxPQUFPLElBQUksQ0FBQzBNLGFBQWEsQ0FBQ0UsWUFBRCxDQUE3QixFQUE2QztBQUMzQyxXQUFPRCxXQUFXLENBQUMzTSxPQUFELEVBQVU0TSxZQUFWLENBQWxCO0FBQ0Q7QUFDRCxTQUFPQSxZQUFQO0FBQ0QsQ0FMRCxDOzs7Ozs7Ozs7OztBQ2RhOztBQUViOzs7Ozs7QUFNQXROLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixTQUFTbU4sYUFBVCxDQUF1Qi9xQixHQUF2QixFQUE0QjtBQUMzQztBQUNBO0FBQ0E7QUFDQSxTQUFPLDhCQUE4QnZNLElBQTlCLENBQW1DdU0sR0FBbkMsQ0FBUDtBQUNELENBTEQsQzs7Ozs7Ozs7Ozs7QUNSYTs7QUFFYjs7Ozs7OztBQU9BMmQsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLFNBQVNvTixXQUFULENBQXFCM00sT0FBckIsRUFBOEI2TSxXQUE5QixFQUEyQztBQUMxRCxTQUFPQSxXQUFXO0FBQ2Q3TSxTQUFPLENBQUM3cUIsT0FBUixDQUFnQixNQUFoQixFQUF3QixFQUF4QixJQUE4QixHQUE5QixHQUFvQzAzQixXQUFXLENBQUMxM0IsT0FBWixDQUFvQixNQUFwQixFQUE0QixFQUE1QixDQUR0QjtBQUVkNnFCLFNBRko7QUFHRCxDQUpELEM7Ozs7Ozs7Ozs7O0FDVGE7O0FBRWIsSUFBSWlCLEtBQUssR0FBR3pCLG1CQUFPLENBQUMsb0JBQUQsQ0FBbkI7O0FBRUE7QUFDQTtBQUNBLElBQUlzTixpQkFBaUIsR0FBRztBQUN0QixLQURzQixFQUNmLGVBRGUsRUFDRSxnQkFERixFQUNvQixjQURwQixFQUNvQyxNQURwQztBQUV0QixTQUZzQixFQUVYLE1BRlcsRUFFSCxNQUZHLEVBRUssbUJBRkwsRUFFMEIscUJBRjFCO0FBR3RCLGVBSHNCLEVBR0wsVUFISyxFQUdPLGNBSFAsRUFHdUIscUJBSHZCO0FBSXRCLFNBSnNCLEVBSVgsYUFKVyxFQUlJLFlBSkosQ0FBeEI7OztBQU9BOzs7Ozs7Ozs7Ozs7O0FBYUF4TixNQUFNLENBQUNDLE9BQVAsR0FBaUIsU0FBU3NKLFlBQVQsQ0FBc0IxSSxPQUF0QixFQUErQjtBQUM5QyxNQUFJNE0sTUFBTSxHQUFHLEVBQWI7QUFDQSxNQUFJbjBCLEdBQUo7QUFDQSxNQUFJZ2YsR0FBSjtBQUNBLE1BQUloaUIsQ0FBSjs7QUFFQSxNQUFJLENBQUN1cUIsT0FBTCxFQUFjLENBQUUsT0FBTzRNLE1BQVAsQ0FBZ0I7O0FBRWhDOUwsT0FBSyxDQUFDcm1CLE9BQU4sQ0FBY3VsQixPQUFPLENBQUNqcUIsS0FBUixDQUFjLElBQWQsQ0FBZCxFQUFtQyxTQUFTd3hCLE1BQVQsQ0FBZ0JzRixJQUFoQixFQUFzQjtBQUN2RHAzQixLQUFDLEdBQUdvM0IsSUFBSSxDQUFDbjNCLE9BQUwsQ0FBYSxHQUFiLENBQUo7QUFDQStDLE9BQUcsR0FBR3FvQixLQUFLLENBQUNyRSxJQUFOLENBQVdvUSxJQUFJLENBQUMzZCxNQUFMLENBQVksQ0FBWixFQUFlelosQ0FBZixDQUFYLEVBQThCaW5CLFdBQTlCLEVBQU47QUFDQWpGLE9BQUcsR0FBR3FKLEtBQUssQ0FBQ3JFLElBQU4sQ0FBV29RLElBQUksQ0FBQzNkLE1BQUwsQ0FBWXpaLENBQUMsR0FBRyxDQUFoQixDQUFYLENBQU47O0FBRUEsUUFBSWdELEdBQUosRUFBUztBQUNQLFVBQUltMEIsTUFBTSxDQUFDbjBCLEdBQUQsQ0FBTixJQUFlazBCLGlCQUFpQixDQUFDajNCLE9BQWxCLENBQTBCK0MsR0FBMUIsS0FBa0MsQ0FBckQsRUFBd0Q7QUFDdEQ7QUFDRDtBQUNELFVBQUlBLEdBQUcsS0FBSyxZQUFaLEVBQTBCO0FBQ3hCbTBCLGNBQU0sQ0FBQ24wQixHQUFELENBQU4sR0FBYyxDQUFDbTBCLE1BQU0sQ0FBQ24wQixHQUFELENBQU4sR0FBY20wQixNQUFNLENBQUNuMEIsR0FBRCxDQUFwQixHQUE0QixFQUE3QixFQUFpQ2tCLE1BQWpDLENBQXdDLENBQUM4ZCxHQUFELENBQXhDLENBQWQ7QUFDRCxPQUZELE1BRU87QUFDTG1WLGNBQU0sQ0FBQ24wQixHQUFELENBQU4sR0FBY20wQixNQUFNLENBQUNuMEIsR0FBRCxDQUFOLEdBQWNtMEIsTUFBTSxDQUFDbjBCLEdBQUQsQ0FBTixHQUFjLElBQWQsR0FBcUJnZixHQUFuQyxHQUF5Q0EsR0FBdkQ7QUFDRDtBQUNGO0FBQ0YsR0FmRDs7QUFpQkEsU0FBT21WLE1BQVA7QUFDRCxDQTFCRCxDOzs7Ozs7Ozs7OztBQzFCYTs7QUFFYixJQUFJOUwsS0FBSyxHQUFHekIsbUJBQU8sQ0FBQyxvQkFBRCxDQUFuQjs7QUFFQUYsTUFBTSxDQUFDQyxPQUFQO0FBQ0UwQixLQUFLLENBQUNrQyxvQkFBTjs7QUFFQTtBQUNBO0FBQ0csU0FBUzJJLGtCQUFULEdBQThCO0FBQzdCLE1BQUltQixJQUFJLEdBQUcsa0JBQWtCNzNCLElBQWxCLENBQXVCZ3VCLFNBQVMsQ0FBQzhKLFNBQWpDLENBQVg7QUFDQSxNQUFJQyxjQUFjLEdBQUc1SixRQUFRLENBQUM2SixhQUFULENBQXVCLEdBQXZCLENBQXJCO0FBQ0EsTUFBSUMsU0FBSjs7QUFFQTs7Ozs7O0FBTUEsV0FBU0MsVUFBVCxDQUFvQjNyQixHQUFwQixFQUF5QjtBQUN2QixRQUFJNHJCLElBQUksR0FBRzVyQixHQUFYOztBQUVBLFFBQUlzckIsSUFBSixFQUFVO0FBQ1Y7QUFDRUUsb0JBQWMsQ0FBQ0ssWUFBZixDQUE0QixNQUE1QixFQUFvQ0QsSUFBcEM7QUFDQUEsVUFBSSxHQUFHSixjQUFjLENBQUNJLElBQXRCO0FBQ0Q7O0FBRURKLGtCQUFjLENBQUNLLFlBQWYsQ0FBNEIsTUFBNUIsRUFBb0NELElBQXBDOztBQUVBO0FBQ0EsV0FBTztBQUNMQSxVQUFJLEVBQUVKLGNBQWMsQ0FBQ0ksSUFEaEI7QUFFTHZtQixjQUFRLEVBQUVtbUIsY0FBYyxDQUFDbm1CLFFBQWYsR0FBMEJtbUIsY0FBYyxDQUFDbm1CLFFBQWYsQ0FBd0I3UixPQUF4QixDQUFnQyxJQUFoQyxFQUFzQyxFQUF0QyxDQUExQixHQUFzRSxFQUYzRTtBQUdMczRCLFVBQUksRUFBRU4sY0FBYyxDQUFDTSxJQUhoQjtBQUlMQyxZQUFNLEVBQUVQLGNBQWMsQ0FBQ08sTUFBZixHQUF3QlAsY0FBYyxDQUFDTyxNQUFmLENBQXNCdjRCLE9BQXRCLENBQThCLEtBQTlCLEVBQXFDLEVBQXJDLENBQXhCLEdBQW1FLEVBSnRFO0FBS0x3NEIsVUFBSSxFQUFFUixjQUFjLENBQUNRLElBQWYsR0FBc0JSLGNBQWMsQ0FBQ1EsSUFBZixDQUFvQng0QixPQUFwQixDQUE0QixJQUE1QixFQUFrQyxFQUFsQyxDQUF0QixHQUE4RCxFQUwvRDtBQU1MeTRCLGNBQVEsRUFBRVQsY0FBYyxDQUFDUyxRQU5wQjtBQU9MQyxVQUFJLEVBQUVWLGNBQWMsQ0FBQ1UsSUFQaEI7QUFRTEMsY0FBUSxFQUFHWCxjQUFjLENBQUNXLFFBQWYsQ0FBd0JoNEIsTUFBeEIsQ0FBK0IsQ0FBL0IsTUFBc0MsR0FBdkM7QUFDUnEzQixvQkFBYyxDQUFDVyxRQURQO0FBRVIsWUFBTVgsY0FBYyxDQUFDVyxRQVZsQixFQUFQOztBQVlEOztBQUVEVCxXQUFTLEdBQUdDLFVBQVUsQ0FBQ2hLLE1BQU0sQ0FBQ3lLLFFBQVAsQ0FBZ0JSLElBQWpCLENBQXRCOztBQUVBOzs7Ozs7QUFNQSxTQUFPLFNBQVN6RSxlQUFULENBQXlCa0YsVUFBekIsRUFBcUM7QUFDMUMsUUFBSWpCLE1BQU0sR0FBSTlMLEtBQUssQ0FBQ3BELFFBQU4sQ0FBZW1RLFVBQWYsQ0FBRCxHQUErQlYsVUFBVSxDQUFDVSxVQUFELENBQXpDLEdBQXdEQSxVQUFyRTtBQUNBLFdBQVFqQixNQUFNLENBQUMvbEIsUUFBUCxLQUFvQnFtQixTQUFTLENBQUNybUIsUUFBOUI7QUFDSitsQixVQUFNLENBQUNVLElBQVAsS0FBZ0JKLFNBQVMsQ0FBQ0ksSUFEOUI7QUFFRCxHQUpEO0FBS0QsQ0FsREQsRUFKRjs7QUF3REE7QUFDRyxTQUFTaEIscUJBQVQsR0FBaUM7QUFDaEMsU0FBTyxTQUFTM0QsZUFBVCxHQUEyQjtBQUNoQyxXQUFPLElBQVA7QUFDRCxHQUZEO0FBR0QsQ0FKRCxFQTFESixDOzs7Ozs7Ozs7OztBQ0phOztBQUViOzs7Ozs7QUFNQSxTQUFTckgsTUFBVCxDQUFnQnBxQixPQUFoQixFQUF5QjtBQUN2QixPQUFLQSxPQUFMLEdBQWVBLE9BQWY7QUFDRDs7QUFFRG9xQixNQUFNLENBQUMvcEIsU0FBUCxDQUFpQnBCLFFBQWpCLEdBQTRCLFNBQVNBLFFBQVQsR0FBb0I7QUFDOUMsU0FBTyxZQUFZLEtBQUtlLE9BQUwsR0FBZSxPQUFPLEtBQUtBLE9BQTNCLEdBQXFDLEVBQWpELENBQVA7QUFDRCxDQUZEOztBQUlBb3FCLE1BQU0sQ0FBQy9wQixTQUFQLENBQWlCdTJCLFVBQWpCLEdBQThCLElBQTlCOztBQUVBM08sTUFBTSxDQUFDQyxPQUFQLEdBQWlCa0MsTUFBakIsQzs7Ozs7Ozs7Ozs7QUNsQmE7O0FBRWJuQyxNQUFNLENBQUNDLE9BQVAsR0FBaUIsU0FBU29DLFFBQVQsQ0FBa0Jua0IsS0FBbEIsRUFBeUI7QUFDeEMsU0FBTyxDQUFDLEVBQUVBLEtBQUssSUFBSUEsS0FBSyxDQUFDeXdCLFVBQWpCLENBQVI7QUFDRCxDQUZELEM7Ozs7Ozs7Ozs7O0FDRmE7O0FBRWIsSUFBSWhOLEtBQUssR0FBR3pCLG1CQUFPLENBQUMsa0JBQUQsQ0FBbkI7O0FBRUE7Ozs7Ozs7O0FBUUFGLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixTQUFTNkIsV0FBVCxDQUFxQjhNLE9BQXJCLEVBQThCQyxPQUE5QixFQUF1QztBQUN0RDtBQUNBQSxTQUFPLEdBQUdBLE9BQU8sSUFBSSxFQUFyQjtBQUNBLE1BQUlqTyxNQUFNLEdBQUcsRUFBYjs7QUFFQSxXQUFTa08sY0FBVCxDQUF3QjFmLE1BQXhCLEVBQWdDMmYsTUFBaEMsRUFBd0M7QUFDdEMsUUFBSXBOLEtBQUssQ0FBQ3pvQixhQUFOLENBQW9Ca1csTUFBcEIsS0FBK0J1UyxLQUFLLENBQUN6b0IsYUFBTixDQUFvQjYxQixNQUFwQixDQUFuQyxFQUFnRTtBQUM5RCxhQUFPcE4sS0FBSyxDQUFDd0MsS0FBTixDQUFZL1UsTUFBWixFQUFvQjJmLE1BQXBCLENBQVA7QUFDRCxLQUZELE1BRU8sSUFBSXBOLEtBQUssQ0FBQ3pvQixhQUFOLENBQW9CNjFCLE1BQXBCLENBQUosRUFBaUM7QUFDdEMsYUFBT3BOLEtBQUssQ0FBQ3dDLEtBQU4sQ0FBWSxFQUFaLEVBQWdCNEssTUFBaEIsQ0FBUDtBQUNELEtBRk0sTUFFQSxJQUFJcE4sS0FBSyxDQUFDam5CLE9BQU4sQ0FBY3EwQixNQUFkLENBQUosRUFBMkI7QUFDaEMsYUFBT0EsTUFBTSxDQUFDLzRCLEtBQVAsRUFBUDtBQUNEO0FBQ0QsV0FBTys0QixNQUFQO0FBQ0Q7O0FBRUQ7QUFDQSxXQUFTQyxtQkFBVCxDQUE2QkMsSUFBN0IsRUFBbUM7QUFDakMsUUFBSSxDQUFDdE4sS0FBSyxDQUFDaUIsV0FBTixDQUFrQmlNLE9BQU8sQ0FBQ0ksSUFBRCxDQUF6QixDQUFMLEVBQXVDO0FBQ3JDLGFBQU9ILGNBQWMsQ0FBQ0YsT0FBTyxDQUFDSyxJQUFELENBQVIsRUFBZ0JKLE9BQU8sQ0FBQ0ksSUFBRCxDQUF2QixDQUFyQjtBQUNELEtBRkQsTUFFTyxJQUFJLENBQUN0TixLQUFLLENBQUNpQixXQUFOLENBQWtCZ00sT0FBTyxDQUFDSyxJQUFELENBQXpCLENBQUwsRUFBdUM7QUFDNUMsYUFBT0gsY0FBYyxDQUFDdlcsU0FBRCxFQUFZcVcsT0FBTyxDQUFDSyxJQUFELENBQW5CLENBQXJCO0FBQ0Q7QUFDRjs7QUFFRDtBQUNBLFdBQVNDLGdCQUFULENBQTBCRCxJQUExQixFQUFnQztBQUM5QixRQUFJLENBQUN0TixLQUFLLENBQUNpQixXQUFOLENBQWtCaU0sT0FBTyxDQUFDSSxJQUFELENBQXpCLENBQUwsRUFBdUM7QUFDckMsYUFBT0gsY0FBYyxDQUFDdlcsU0FBRCxFQUFZc1csT0FBTyxDQUFDSSxJQUFELENBQW5CLENBQXJCO0FBQ0Q7QUFDRjs7QUFFRDtBQUNBLFdBQVNFLGdCQUFULENBQTBCRixJQUExQixFQUFnQztBQUM5QixRQUFJLENBQUN0TixLQUFLLENBQUNpQixXQUFOLENBQWtCaU0sT0FBTyxDQUFDSSxJQUFELENBQXpCLENBQUwsRUFBdUM7QUFDckMsYUFBT0gsY0FBYyxDQUFDdlcsU0FBRCxFQUFZc1csT0FBTyxDQUFDSSxJQUFELENBQW5CLENBQXJCO0FBQ0QsS0FGRCxNQUVPLElBQUksQ0FBQ3ROLEtBQUssQ0FBQ2lCLFdBQU4sQ0FBa0JnTSxPQUFPLENBQUNLLElBQUQsQ0FBekIsQ0FBTCxFQUF1QztBQUM1QyxhQUFPSCxjQUFjLENBQUN2VyxTQUFELEVBQVlxVyxPQUFPLENBQUNLLElBQUQsQ0FBbkIsQ0FBckI7QUFDRDtBQUNGOztBQUVEO0FBQ0EsV0FBU0csZUFBVCxDQUF5QkgsSUFBekIsRUFBK0I7QUFDN0IsUUFBSUEsSUFBSSxJQUFJSixPQUFaLEVBQXFCO0FBQ25CLGFBQU9DLGNBQWMsQ0FBQ0YsT0FBTyxDQUFDSyxJQUFELENBQVIsRUFBZ0JKLE9BQU8sQ0FBQ0ksSUFBRCxDQUF2QixDQUFyQjtBQUNELEtBRkQsTUFFTyxJQUFJQSxJQUFJLElBQUlMLE9BQVosRUFBcUI7QUFDMUIsYUFBT0UsY0FBYyxDQUFDdlcsU0FBRCxFQUFZcVcsT0FBTyxDQUFDSyxJQUFELENBQW5CLENBQXJCO0FBQ0Q7QUFDRjs7QUFFRCxNQUFJSSxRQUFRLEdBQUc7QUFDYixXQUFPSCxnQkFETTtBQUViLGNBQVVBLGdCQUZHO0FBR2IsWUFBUUEsZ0JBSEs7QUFJYixlQUFXQyxnQkFKRTtBQUtiLHdCQUFvQkEsZ0JBTFA7QUFNYix5QkFBcUJBLGdCQU5SO0FBT2Isd0JBQW9CQSxnQkFQUDtBQVFiLGVBQVdBLGdCQVJFO0FBU2Isc0JBQWtCQSxnQkFUTDtBQVViLHVCQUFtQkEsZ0JBVk47QUFXYixlQUFXQSxnQkFYRTtBQVliLG9CQUFnQkEsZ0JBWkg7QUFhYixzQkFBa0JBLGdCQWJMO0FBY2Isc0JBQWtCQSxnQkFkTDtBQWViLHdCQUFvQkEsZ0JBZlA7QUFnQmIsMEJBQXNCQSxnQkFoQlQ7QUFpQmIsa0JBQWNBLGdCQWpCRDtBQWtCYix3QkFBb0JBLGdCQWxCUDtBQW1CYixxQkFBaUJBLGdCQW5CSjtBQW9CYixpQkFBYUEsZ0JBcEJBO0FBcUJiLGlCQUFhQSxnQkFyQkE7QUFzQmIsa0JBQWNBLGdCQXRCRDtBQXVCYixtQkFBZUEsZ0JBdkJGO0FBd0JiLGtCQUFjQSxnQkF4QkQ7QUF5QmIsd0JBQW9CQSxnQkF6QlA7QUEwQmIsc0JBQWtCQyxlQTFCTCxFQUFmOzs7QUE2QkF6TixPQUFLLENBQUNybUIsT0FBTixDQUFjekMsTUFBTSxDQUFDd0MsSUFBUCxDQUFZdXpCLE9BQVosRUFBcUJwMEIsTUFBckIsQ0FBNEIzQixNQUFNLENBQUN3QyxJQUFQLENBQVl3ekIsT0FBWixDQUE1QixDQUFkLEVBQWlFLFNBQVNTLGtCQUFULENBQTRCTCxJQUE1QixFQUFrQztBQUNqRyxRQUFJOUssS0FBSyxHQUFHa0wsUUFBUSxDQUFDSixJQUFELENBQVIsSUFBa0JELG1CQUE5QjtBQUNBLFFBQUlPLFdBQVcsR0FBR3BMLEtBQUssQ0FBQzhLLElBQUQsQ0FBdkI7QUFDQ3ROLFNBQUssQ0FBQ2lCLFdBQU4sQ0FBa0IyTSxXQUFsQixLQUFrQ3BMLEtBQUssS0FBS2lMLGVBQTdDLEtBQWtFeE8sTUFBTSxDQUFDcU8sSUFBRCxDQUFOLEdBQWVNLFdBQWpGO0FBQ0QsR0FKRDs7QUFNQSxTQUFPM08sTUFBUDtBQUNELENBdEZELEM7Ozs7Ozs7Ozs7O0FDWmE7O0FBRWIsSUFBSTBCLE9BQU8sR0FBR3BDLG1CQUFPLENBQUMscUJBQUQsQ0FBUCxDQUF1QnFDLE9BQXJDOztBQUVBLElBQUl1QyxVQUFVLEdBQUcsRUFBakI7O0FBRUE7QUFDQSxDQUFDLFFBQUQsRUFBVyxTQUFYLEVBQXNCLFFBQXRCLEVBQWdDLFVBQWhDLEVBQTRDLFFBQTVDLEVBQXNELFFBQXRELEVBQWdFeHBCLE9BQWhFLENBQXdFLFVBQVNpRyxJQUFULEVBQWVqTCxDQUFmLEVBQWtCO0FBQ3hGd3VCLFlBQVUsQ0FBQ3ZqQixJQUFELENBQVYsR0FBbUIsU0FBU3NqQixTQUFULENBQW1CMkssS0FBbkIsRUFBMEI7QUFDM0MsV0FBTyxPQUFPQSxLQUFQLEtBQWlCanVCLElBQWpCLElBQXlCLE9BQU9qTCxDQUFDLEdBQUcsQ0FBSixHQUFRLElBQVIsR0FBZSxHQUF0QixJQUE2QmlMLElBQTdEO0FBQ0QsR0FGRDtBQUdELENBSkQ7O0FBTUEsSUFBSWt1QixrQkFBa0IsR0FBRyxFQUF6Qjs7QUFFQTs7Ozs7OztBQU9BM0ssVUFBVSxDQUFDRSxZQUFYLEdBQTBCLFNBQVNBLFlBQVQsQ0FBc0JILFNBQXRCLEVBQWlDdEMsT0FBakMsRUFBMEN4cUIsT0FBMUMsRUFBbUQ7QUFDM0UsV0FBUzIzQixhQUFULENBQXVCdHVCLEdBQXZCLEVBQTRCdXVCLElBQTVCLEVBQWtDO0FBQ2hDLFdBQU8sYUFBYXJOLE9BQWIsR0FBdUIsMEJBQXZCLEdBQW9EbGhCLEdBQXBELEdBQTBELElBQTFELEdBQWlFdXVCLElBQWpFLElBQXlFNTNCLE9BQU8sR0FBRyxPQUFPQSxPQUFWLEdBQW9CLEVBQXBHLENBQVA7QUFDRDs7QUFFRDtBQUNBLFNBQU8sVUFBU21HLEtBQVQsRUFBZ0JrRCxHQUFoQixFQUFxQjJOLElBQXJCLEVBQTJCO0FBQ2hDLFFBQUk4VixTQUFTLEtBQUssS0FBbEIsRUFBeUI7QUFDdkIsWUFBTSxJQUFJOXVCLEtBQUosQ0FBVTI1QixhQUFhLENBQUN0dUIsR0FBRCxFQUFNLHVCQUF1Qm1oQixPQUFPLEdBQUcsU0FBU0EsT0FBWixHQUFzQixFQUFwRCxDQUFOLENBQXZCLENBQU47QUFDRDs7QUFFRCxRQUFJQSxPQUFPLElBQUksQ0FBQ2tOLGtCQUFrQixDQUFDcnVCLEdBQUQsQ0FBbEMsRUFBeUM7QUFDdkNxdUIsd0JBQWtCLENBQUNydUIsR0FBRCxDQUFsQixHQUEwQixJQUExQjtBQUNBO0FBQ0FrRyxhQUFPLENBQUNDLElBQVI7QUFDRW1vQixtQkFBYTtBQUNYdHVCLFNBRFc7QUFFWCx1Q0FBaUNtaEIsT0FBakMsR0FBMkMseUNBRmhDLENBRGY7OztBQU1EOztBQUVELFdBQU9zQyxTQUFTLEdBQUdBLFNBQVMsQ0FBQzNtQixLQUFELEVBQVFrRCxHQUFSLEVBQWEyTixJQUFiLENBQVosR0FBaUMsSUFBakQ7QUFDRCxHQWpCRDtBQWtCRCxDQXhCRDs7QUEwQkE7Ozs7Ozs7QUFPQSxTQUFTa1csYUFBVCxDQUF1QjVvQixPQUF2QixFQUFnQ3V6QixNQUFoQyxFQUF3Q0MsWUFBeEMsRUFBc0Q7QUFDcEQsTUFBSSxPQUFPeHpCLE9BQVAsS0FBbUIsUUFBdkIsRUFBaUM7QUFDL0IsVUFBTSxJQUFJeXpCLFNBQUosQ0FBYywyQkFBZCxDQUFOO0FBQ0Q7QUFDRCxNQUFJejBCLElBQUksR0FBR3hDLE1BQU0sQ0FBQ3dDLElBQVAsQ0FBWWdCLE9BQVosQ0FBWDtBQUNBLE1BQUkvRixDQUFDLEdBQUcrRSxJQUFJLENBQUNwRixNQUFiO0FBQ0EsU0FBT0ssQ0FBQyxLQUFLLENBQWIsRUFBZ0I7QUFDZCxRQUFJOEssR0FBRyxHQUFHL0YsSUFBSSxDQUFDL0UsQ0FBRCxDQUFkO0FBQ0EsUUFBSXV1QixTQUFTLEdBQUcrSyxNQUFNLENBQUN4dUIsR0FBRCxDQUF0QjtBQUNBLFFBQUl5akIsU0FBSixFQUFlO0FBQ2IsVUFBSTNtQixLQUFLLEdBQUc3QixPQUFPLENBQUMrRSxHQUFELENBQW5CO0FBQ0EsVUFBSWpMLE1BQU0sR0FBRytILEtBQUssS0FBS3FhLFNBQVYsSUFBdUJzTSxTQUFTLENBQUMzbUIsS0FBRCxFQUFRa0QsR0FBUixFQUFhL0UsT0FBYixDQUE3QztBQUNBLFVBQUlsRyxNQUFNLEtBQUssSUFBZixFQUFxQjtBQUNuQixjQUFNLElBQUkyNUIsU0FBSixDQUFjLFlBQVkxdUIsR0FBWixHQUFrQixXQUFsQixHQUFnQ2pMLE1BQTlDLENBQU47QUFDRDtBQUNEO0FBQ0Q7QUFDRCxRQUFJMDVCLFlBQVksS0FBSyxJQUFyQixFQUEyQjtBQUN6QixZQUFNOTVCLEtBQUssQ0FBQyxvQkFBb0JxTCxHQUFyQixDQUFYO0FBQ0Q7QUFDRjtBQUNGOztBQUVENGUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2ZnRixlQUFhLEVBQUVBLGFBREE7QUFFZkgsWUFBVSxFQUFFQSxVQUZHLEVBQWpCLEM7Ozs7Ozs7Ozs7QUM5RUE5RSxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDZixhQUFXLFFBREksRUFBakIsQzs7Ozs7Ozs7Ozs7QUNBYTs7QUFFYixJQUFJa0MsTUFBTSxHQUFHakMsbUJBQU8sQ0FBQyxrQkFBRCxDQUFwQjs7QUFFQTs7Ozs7O0FBTUEsU0FBU2tDLFdBQVQsQ0FBcUIyTixRQUFyQixFQUErQjtBQUM3QixNQUFJLE9BQU9BLFFBQVAsS0FBb0IsVUFBeEIsRUFBb0M7QUFDbEMsVUFBTSxJQUFJRCxTQUFKLENBQWMsOEJBQWQsQ0FBTjtBQUNEOztBQUVELE1BQUlFLGNBQUo7O0FBRUEsT0FBS2gwQixPQUFMLEdBQWUsSUFBSUMsT0FBSixDQUFZLFNBQVNnMEIsZUFBVCxDQUF5Qi96QixPQUF6QixFQUFrQztBQUMzRDh6QixrQkFBYyxHQUFHOXpCLE9BQWpCO0FBQ0QsR0FGYyxDQUFmOztBQUlBLE1BQUkvRSxLQUFLLEdBQUcsSUFBWjs7QUFFQTtBQUNBLE9BQUs2RSxPQUFMLENBQWFGLElBQWIsQ0FBa0IsVUFBU3N3QixNQUFULEVBQWlCO0FBQ2pDLFFBQUksQ0FBQ2oxQixLQUFLLENBQUMrNEIsVUFBWCxFQUF1Qjs7QUFFdkIsUUFBSTU1QixDQUFKO0FBQ0EsUUFBSTR0QixDQUFDLEdBQUcvc0IsS0FBSyxDQUFDKzRCLFVBQU4sQ0FBaUJqNkIsTUFBekI7O0FBRUEsU0FBS0ssQ0FBQyxHQUFHLENBQVQsRUFBWUEsQ0FBQyxHQUFHNHRCLENBQWhCLEVBQW1CNXRCLENBQUMsRUFBcEIsRUFBd0I7QUFDdEJhLFdBQUssQ0FBQys0QixVQUFOLENBQWlCNTVCLENBQWpCLEVBQW9CODFCLE1BQXBCO0FBQ0Q7QUFDRGoxQixTQUFLLENBQUMrNEIsVUFBTixHQUFtQixJQUFuQjtBQUNELEdBVkQ7O0FBWUE7QUFDQSxPQUFLbDBCLE9BQUwsQ0FBYUYsSUFBYixHQUFvQixVQUFTcTBCLFdBQVQsRUFBc0I7QUFDeEMsUUFBSXBGLFFBQUo7QUFDQTtBQUNBLFFBQUkvdUIsT0FBTyxHQUFHLElBQUlDLE9BQUosQ0FBWSxVQUFTQyxPQUFULEVBQWtCO0FBQzFDL0UsV0FBSyxDQUFDbTFCLFNBQU4sQ0FBZ0Jwd0IsT0FBaEI7QUFDQTZ1QixjQUFRLEdBQUc3dUIsT0FBWDtBQUNELEtBSGEsRUFHWEosSUFIVyxDQUdOcTBCLFdBSE0sQ0FBZDs7QUFLQW4wQixXQUFPLENBQUNvd0IsTUFBUixHQUFpQixTQUFTanZCLE1BQVQsR0FBa0I7QUFDakNoRyxXQUFLLENBQUM2eUIsV0FBTixDQUFrQmUsUUFBbEI7QUFDRCxLQUZEOztBQUlBLFdBQU8vdUIsT0FBUDtBQUNELEdBYkQ7O0FBZUErekIsVUFBUSxDQUFDLFNBQVMzRCxNQUFULENBQWdCcjBCLE9BQWhCLEVBQXlCO0FBQ2hDLFFBQUlaLEtBQUssQ0FBQ2dILE1BQVYsRUFBa0I7QUFDaEI7QUFDQTtBQUNEOztBQUVEaEgsU0FBSyxDQUFDZ0gsTUFBTixHQUFlLElBQUlna0IsTUFBSixDQUFXcHFCLE9BQVgsQ0FBZjtBQUNBaTRCLGtCQUFjLENBQUM3NEIsS0FBSyxDQUFDZ0gsTUFBUCxDQUFkO0FBQ0QsR0FSTyxDQUFSO0FBU0Q7O0FBRUQ7OztBQUdBaWtCLFdBQVcsQ0FBQ2hxQixTQUFaLENBQXNCNnVCLGdCQUF0QixHQUF5QyxTQUFTQSxnQkFBVCxHQUE0QjtBQUNuRSxNQUFJLEtBQUs5b0IsTUFBVCxFQUFpQjtBQUNmLFVBQU0sS0FBS0EsTUFBWDtBQUNEO0FBQ0YsQ0FKRDs7QUFNQTs7OztBQUlBaWtCLFdBQVcsQ0FBQ2hxQixTQUFaLENBQXNCazBCLFNBQXRCLEdBQWtDLFNBQVNBLFNBQVQsQ0FBbUJ4ckIsUUFBbkIsRUFBNkI7QUFDN0QsTUFBSSxLQUFLM0MsTUFBVCxFQUFpQjtBQUNmMkMsWUFBUSxDQUFDLEtBQUszQyxNQUFOLENBQVI7QUFDQTtBQUNEOztBQUVELE1BQUksS0FBSyt4QixVQUFULEVBQXFCO0FBQ25CLFNBQUtBLFVBQUwsQ0FBZ0JyMUIsSUFBaEIsQ0FBcUJpRyxRQUFyQjtBQUNELEdBRkQsTUFFTztBQUNMLFNBQUtvdkIsVUFBTCxHQUFrQixDQUFDcHZCLFFBQUQsQ0FBbEI7QUFDRDtBQUNGLENBWEQ7O0FBYUE7Ozs7QUFJQXNoQixXQUFXLENBQUNocUIsU0FBWixDQUFzQjR4QixXQUF0QixHQUFvQyxTQUFTQSxXQUFULENBQXFCbHBCLFFBQXJCLEVBQStCO0FBQ2pFLE1BQUksQ0FBQyxLQUFLb3ZCLFVBQVYsRUFBc0I7QUFDcEI7QUFDRDtBQUNELE1BQUlsMUIsS0FBSyxHQUFHLEtBQUtrMUIsVUFBTCxDQUFnQjM1QixPQUFoQixDQUF3QnVLLFFBQXhCLENBQVo7QUFDQSxNQUFJOUYsS0FBSyxLQUFLLENBQUMsQ0FBZixFQUFrQjtBQUNoQixTQUFLazFCLFVBQUwsQ0FBZ0JqMUIsTUFBaEIsQ0FBdUJELEtBQXZCLEVBQThCLENBQTlCO0FBQ0Q7QUFDRixDQVJEOztBQVVBOzs7O0FBSUFvbkIsV0FBVyxDQUFDMk0sTUFBWixHQUFxQixTQUFTQSxNQUFULEdBQWtCO0FBQ3JDLE1BQUkzQyxNQUFKO0FBQ0EsTUFBSWoxQixLQUFLLEdBQUcsSUFBSWlyQixXQUFKLENBQWdCLFNBQVMyTixRQUFULENBQWtCajVCLENBQWxCLEVBQXFCO0FBQy9DczFCLFVBQU0sR0FBR3QxQixDQUFUO0FBQ0QsR0FGVyxDQUFaO0FBR0EsU0FBTztBQUNMSyxTQUFLLEVBQUVBLEtBREY7QUFFTGkxQixVQUFNLEVBQUVBLE1BRkgsRUFBUDs7QUFJRCxDQVREOztBQVdBcE0sTUFBTSxDQUFDQyxPQUFQLEdBQWlCbUMsV0FBakIsQzs7Ozs7Ozs7Ozs7QUN0SGE7O0FBRWI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBcEMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLFNBQVN5QyxNQUFULENBQWdCdm1CLFFBQWhCLEVBQTBCO0FBQ3pDLFNBQU8sU0FBU3VvQixJQUFULENBQWNsVSxHQUFkLEVBQW1CO0FBQ3hCLFdBQU9yVSxRQUFRLENBQUNrRixLQUFULENBQWUsSUFBZixFQUFxQm1QLEdBQXJCLENBQVA7QUFDRCxHQUZEO0FBR0QsQ0FKRCxDOzs7Ozs7Ozs7OztBQ3RCYTs7QUFFYixJQUFJbVIsS0FBSyxHQUFHekIsbUJBQU8sQ0FBQyxvQkFBRCxDQUFuQjs7QUFFQTs7Ozs7O0FBTUFGLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixTQUFTMEMsWUFBVCxDQUFzQnlOLE9BQXRCLEVBQStCO0FBQzlDLFNBQU96TyxLQUFLLENBQUNuRyxRQUFOLENBQWU0VSxPQUFmLEtBQTRCQSxPQUFPLENBQUN6TixZQUFSLEtBQXlCLElBQTVEO0FBQ0QsQ0FGRCxDOzs7Ozs7Ozs7OztBQ1ZhOztBQUViLGdCQUFnQixtQkFBTyxDQUFDLHFCQUFhO0FBQ3JDLFlBQVksbUJBQU8sQ0FBQyxpQkFBUztBQUM3QixjQUFjLG1CQUFPLENBQUMsbUJBQVc7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ1ZhOztBQUViLFlBQVksbUJBQU8sQ0FBQyxpQkFBUztBQUM3QixjQUFjLG1CQUFPLENBQUMsbUJBQVc7O0FBRWpDO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0EsS0FBSztBQUNMLDRDQUE0QztBQUM1QztBQUNBLEtBQUs7QUFDTCxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBaUQ7QUFDakQ7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CLG9CQUFvQjtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdDQUF3Qzs7QUFFeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixvQkFBb0I7QUFDdkM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ2pOYTs7QUFFYjs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLFNBQVM7QUFDNUI7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSwyQkFBMkIsZ0JBQWdCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLG1CQUFtQixtQkFBbUI7QUFDdEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IsT0FBTyxXQUFXLGFBQWE7QUFDakQ7O0FBRUEsbUJBQW1CLGtCQUFrQjtBQUNyQztBQUNBOztBQUVBO0FBQ0EsdUJBQXVCLGlCQUFpQjtBQUN4QztBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsc0JBQXNCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3BOYTs7QUFFYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDakJhOztBQUViLFlBQVksbUJBQU8sQ0FBQyxpQkFBUzs7QUFFN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG1CQUFtQixrQkFBa0I7QUFDckM7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsa0NBQWtDLFFBQVE7QUFDMUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSx3Q0FBd0M7O0FBRXhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzRJQzdLQSxzRjtBQUNBLElBQU14QyxZQUFZLEdBQUcsTUFBckI7QUFDQTtBQUNBOztBQUVBO0FBQ08sU0FBU2tRLGFBQVQsR0FBeUI7QUFDL0IsU0FBTyxzQkFBUTtBQUNkaHVCLE9BQUcsWUFBSzhkLFlBQUwsZ0NBRFc7QUFFZDFrQixVQUFNLEVBQUUsS0FGTSxFQUFSLENBQVA7OztBQUtBO0FBQ0Q7QUFDTyxTQUFTNjBCLGNBQVQsR0FBMEI7QUFDaEMsU0FBTyxzQkFBUTtBQUNkanVCLE9BQUcsWUFBSzhkLFlBQUwsb0NBRFc7QUFFZDFrQixVQUFNLEVBQUUsS0FGTSxFQUFSLENBQVA7O0FBSUEsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0R0NuQkQsc0Y7QUFDQSxJQUFNMGtCLFlBQVksR0FBRyxNQUFyQjtBQUNBO0FBQ0E7O0FBRUE7QUFDTyxTQUFTb1EsaUJBQVQsQ0FBMkIzMEIsSUFBM0IsRUFBaUM7QUFDdkMsU0FBTyxzQkFBUTtBQUNkeUcsT0FBRyxZQUFLOGQsWUFBTCwwQ0FEVztBQUVkMWtCLFVBQU0sRUFBRSxNQUZNO0FBR2RHLFFBQUksRUFBRUEsSUFIUSxFQUFSLENBQVA7O0FBS0EsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1RkNaRDtBQUNBO0FBQ0EscUY7QUFDZTtBQUNkNDBCLElBQUUsRUFBRkEsV0FEYztBQUVkLGFBQVdDLGVBRkc7QUFHZCxhQUFXQyxlQUhHLEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NHQ0hBO0FBQ2IsUUFBTSxTQURPO0FBRWIsVUFBUSxVQUZLO0FBR2IsaUJBQWUsVUFIRjtBQUliLHFCQUFtQixRQUpOO0FBS2IsaUJBQWUsRUFMRjtBQU1iLFlBQVU7QUFDUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsT0FGVjtBQUdFLGtCQUFjLE9BSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBRFE7O0FBUVI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLFFBRlY7QUFHRSxrQkFBYyxRQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQVJROztBQWVSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxpQkFGVjtBQUdFLGtCQUFjLGlCQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQWZROztBQXNCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsd0JBRlY7QUFHRSxrQkFBYyxhQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXRCUTs7QUE2QlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGFBRlY7QUFHRSxrQkFBYyxhQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQTdCUTs7QUFvQ1I7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGlCQUZWO0FBR0Usa0JBQWMsY0FIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFwQ1E7O0FBMkNSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxZQUZWO0FBR0Usa0JBQWMsWUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUEzQ1E7O0FBa0RSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxrQkFGVjtBQUdFLGtCQUFjLGFBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBbERROztBQXlEUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsbUJBRlY7QUFHRSxrQkFBYyxtQkFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUF6RFE7O0FBZ0VSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxjQUZWO0FBR0Usa0JBQWMsY0FIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFoRVE7O0FBdUVSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxhQUZWO0FBR0Usa0JBQWMsYUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUF2RVE7O0FBOEVSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxtQkFGVjtBQUdFLGtCQUFjLGlCQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQTlFUTs7QUFxRlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLHFCQUZWO0FBR0Usa0JBQWMscUJBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBckZROztBQTRGUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsZUFGVjtBQUdFLGtCQUFjLGVBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBNUZROztBQW1HUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsb0JBRlY7QUFHRSxrQkFBYyxjQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQW5HUTs7QUEwR1I7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGFBRlY7QUFHRSxrQkFBYyxhQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQTFHUTs7QUFpSFI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGFBRlY7QUFHRSxrQkFBYyxhQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQWpIUTs7QUF3SFI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGNBRlY7QUFHRSxrQkFBYyxjQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXhIUTs7QUErSFI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGtCQUZWO0FBR0Usa0JBQWMsaUJBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBL0hROztBQXNJUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsZUFGVjtBQUdFLGtCQUFjLGVBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBdElROztBQTZJUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsa0JBRlY7QUFHRSxrQkFBYyxrQkFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUE3SVE7O0FBb0pSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxNQUZWO0FBR0Usa0JBQWMsTUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFwSlE7O0FBMkpSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxTQUZWO0FBR0Usa0JBQWMsU0FIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUEzSlE7O0FBa0tSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxnQkFGVjtBQUdFLGtCQUFjLGFBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBbEtROztBQXlLVjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsZ0JBRlY7QUFHRSxrQkFBYyxnQkFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUF6S1U7O0FBZ0xSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxlQUZWO0FBR0Usa0JBQWMsWUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFoTFE7O0FBdUxWO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxlQUZWO0FBR0Usa0JBQWMsZUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUF2TFU7O0FBOExSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxhQUZWO0FBR0Usa0JBQWMsVUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUE5TFE7O0FBcU1WO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxhQUZWO0FBR0Usa0JBQWMsYUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFyTVU7O0FBNE1SO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxlQUZWO0FBR0Usa0JBQWMsWUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUE1TVE7QUFrTk47QUFDQSxlQUFXLFVBRFg7QUFFQSxZQUFRLGVBRlI7QUFHQSxrQkFBYyxlQUhkO0FBSUEsZUFBVyxNQUpYO0FBS0EsdUJBQW1CLEtBTG5CLEVBbE5NOztBQXlOUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsV0FGVjtBQUdFLGtCQUFjLFFBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBek5RO0FBK05OO0FBQ0EsZUFBVyxVQURYO0FBRUEsWUFBUSxXQUZSO0FBR0Esa0JBQWMsV0FIZDtBQUlBLGVBQVcsTUFKWDtBQUtBLHVCQUFtQixLQUxuQixFQS9OTTs7QUFzT1I7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLFlBRlY7QUFHRSxrQkFBYyxPQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXRPUTs7QUE2T1Y7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLFlBRlY7QUFHRSxrQkFBYyxZQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQTdPVTs7QUFvUFI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLFNBRlY7QUFHRSxrQkFBYyxLQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXBQUTs7QUEyUFY7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLFNBRlY7QUFHRSxrQkFBYyxTQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQTNQVTs7QUFrUVI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLFdBRlY7QUFHRSxrQkFBYyxNQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQWxRUTs7QUF5UVY7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLFdBRlY7QUFHRSxrQkFBYyxXQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXpRVTs7QUFnUlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLEtBRlY7QUFHRSxrQkFBYyxLQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQWhSUTs7QUF1UlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLFlBRlY7QUFHRSxrQkFBYyxZQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXZSUTs7QUE4UlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLFdBRlY7QUFHRSxrQkFBYyxXQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQTlSUTs7QUFxU1I7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGtCQUZWO0FBR0Usa0JBQWMsa0JBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBclNROztBQTRTUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsYUFGVjtBQUdFLGtCQUFjLGFBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBNVNROztBQW1UUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsV0FGVjtBQUdFLGtCQUFjLFFBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBblRROztBQTBUUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsZ0JBRlY7QUFHRSxrQkFBYyxlQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQTFUUTs7QUFpVVI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGlCQUZWO0FBR0Usa0JBQWMsaUJBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBalVROztBQXdVUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsU0FGVjtBQUdFLGtCQUFjLFNBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBeFVROztBQStVUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsVUFGVjtBQUdFLGtCQUFjLFVBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBL1VROztBQXNWUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsVUFGVjtBQUdFLGtCQUFjLFVBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBdFZROztBQTZWUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsTUFGVjtBQUdFLGtCQUFjLE1BSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBN1ZROztBQW9XUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsYUFGVjtBQUdFLGtCQUFjLGFBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBcFdROztBQTJXUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsWUFGVjtBQUdFLGtCQUFjLFVBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBM1dROztBQWtYUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsTUFGVjtBQUdFLGtCQUFjLE1BSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBbFhROztBQXlYUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsYUFGVjtBQUdFLGtCQUFjLE9BSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBelhROztBQWdZUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsTUFGVjtBQUdFLGtCQUFjLE1BSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBaFlROztBQXVZUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsTUFGVjtBQUdFLGtCQUFjLE1BSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBdllROztBQThZUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsTUFGVjtBQUdFLGtCQUFjLE1BSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBOVlROztBQXFaUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsY0FGVjtBQUdFLGtCQUFjLGNBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBclpROztBQTRaUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsT0FGVjtBQUdFLGtCQUFjLE9BSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBNVpROztBQW1hUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsS0FGVjtBQUdFLGtCQUFjLEtBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBbmFROztBQTBhUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsWUFGVjtBQUdFLGtCQUFjLFlBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBMWFROztBQWliUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsTUFGVjtBQUdFLGtCQUFjLE1BSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBamJROztBQXdiUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsaUJBRlY7QUFHRSxrQkFBYyxNQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXhiUTs7QUErYlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLFFBRlY7QUFHRSxrQkFBYyxRQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQS9iUTs7QUFzY1I7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGNBRlY7QUFHRSxrQkFBYyxjQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXRjUTs7QUE2Y1I7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGNBRlY7QUFHRSxrQkFBYyxjQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQTdjUTs7QUFvZFI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLE9BRlY7QUFHRSxrQkFBYyxPQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXBkUTs7QUEyZFI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLE9BRlY7QUFHRSxrQkFBYyxPQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQTNkUTs7QUFrZVI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLFdBRlY7QUFHRSxrQkFBYyxXQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQWxlUTs7QUF5ZVI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGtCQUZWO0FBR0Usa0JBQWMsa0JBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBemVROztBQWdmUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsU0FGVjtBQUdFLGtCQUFjLFNBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBaGZROztBQXVmUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsbUJBRlY7QUFHRSxrQkFBYyxtQkFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUF2ZlE7O0FBOGZSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxnQkFGVjtBQUdFLGtCQUFjLGdCQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQTlmUTs7QUFxZ0JSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxXQUZWO0FBR0Usa0JBQWMsV0FIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFyZ0JROztBQTRnQlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLFlBRlY7QUFHRSxrQkFBYyxZQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQTVnQlE7O0FBbWhCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsZUFGVjtBQUdFLGtCQUFjLGVBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBbmhCUTs7QUEwaEJSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxRQUZWO0FBR0Usa0JBQWMsUUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUExaEJROztBQWlpQlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLFFBRlY7QUFHRSxrQkFBYyxRQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQWppQlE7O0FBd2lCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsU0FGVjtBQUdFLGtCQUFjLFNBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBeGlCUTs7QUEraUJSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxJQUZWO0FBR0Usa0JBQWMsSUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUEvaUJROztBQXNqQlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGlCQUZWO0FBR0Usa0JBQWMsaUJBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBdGpCUTs7QUE2akJSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxhQUZWO0FBR0Usa0JBQWMsS0FIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUE3akJROztBQW9rQlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLE9BRlY7QUFHRSxrQkFBYyxPQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXBrQlE7O0FBMmtCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsY0FGVjtBQUdFLGtCQUFjLGNBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBM2tCUTs7QUFrbEJSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxjQUZWO0FBR0Usa0JBQWMsY0FIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFsbEJROztBQXlsQlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLE9BRlY7QUFHRSxrQkFBYyxPQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXpsQlE7O0FBZ21CUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsaUJBRlY7QUFHRSxrQkFBYyxpQkFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFobUJROztBQXVtQlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGVBRlY7QUFHRSxrQkFBYyxlQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXZtQlE7O0FBOG1CUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsT0FGVjtBQUdFLGtCQUFjLE9BSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBOW1CUTs7QUFxbkJSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxVQUZWO0FBR0Usa0JBQWMsVUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFybkJROztBQTRuQlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLFVBRlY7QUFHRSxrQkFBYyxVQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQTVuQlE7O0FBbW9CUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsTUFGVjtBQUdFLGtCQUFjLE1BSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBbm9CUTs7QUEwb0JSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxpQkFGVjtBQUdFLGtCQUFjLGlCQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQTFvQlE7O0FBaXBCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsV0FGVjtBQUdFLGtCQUFjLFdBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBanBCUTs7QUF3cEJSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxhQUZWO0FBR0Usa0JBQWMsYUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUF4cEJROztBQStwQlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGNBRlY7QUFHRSxrQkFBYyxjQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQS9wQlE7O0FBc3FCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsUUFGVjtBQUdFLGtCQUFjLFFBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBdHFCUTs7QUE2cUJSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxZQUZWO0FBR0Usa0JBQWMsWUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUE3cUJROztBQW9yQlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLE9BRlY7QUFHRSxrQkFBYyxPQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXByQlE7O0FBMnJCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsVUFGVjtBQUdFLGtCQUFjLFVBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBM3JCUTs7QUFrc0JSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxPQUZWO0FBR0Usa0JBQWMsT0FIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFsc0JROztBQXlzQlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLE9BRlY7QUFHRSxrQkFBYyxPQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXpzQlE7O0FBZ3RCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsS0FGVjtBQUdFLGtCQUFjLEtBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBaHRCUTs7QUF1dEJSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxZQUZWO0FBR0Usa0JBQWMsWUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUF2dEJROztBQTh0QlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLE9BRlY7QUFHRSxrQkFBYyxPQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQTl0QlE7O0FBcXVCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsYUFGVjtBQUdFLGtCQUFjLGFBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBcnVCUTs7QUE0dUJSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxhQUZWO0FBR0Usa0JBQWMsbUJBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBNXVCUTs7QUFtdkJSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxNQUZWO0FBR0Usa0JBQWMsTUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFudkJROztBQTB2QlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLFlBRlY7QUFHRSxrQkFBYyxZQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQTF2QlE7O0FBaXdCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsY0FGVjtBQUdFLGtCQUFjLGNBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBandCUTs7QUF3d0JSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxlQUZWO0FBR0Usa0JBQWMsZUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUF4d0JROztBQSt3QlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLE1BRlY7QUFHRSxrQkFBYyxNQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQS93QlE7O0FBc3hCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsUUFGVjtBQUdFLGtCQUFjLFFBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBdHhCUTs7QUE2eEJSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxlQUZWO0FBR0Usa0JBQWMsZUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUE3eEJROztBQW95QlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGFBRlY7QUFHRSxrQkFBYyxhQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXB5QlE7O0FBMnlCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsUUFGVjtBQUdFLGtCQUFjLFFBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBM3lCUTs7QUFrekJSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxRQUZWO0FBR0Usa0JBQWMsUUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFsekJROztBQXl6QlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGdCQUZWO0FBR0Usa0JBQWMsZ0JBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBenpCUTs7QUFnMEJSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxNQUZWO0FBR0Usa0JBQWMsTUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFoMEJROztBQXUwQlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGVBRlY7QUFHRSxrQkFBYyxlQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXYwQlE7O0FBODBCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsTUFGVjtBQUdFLGtCQUFjLE1BSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBOTBCUTs7QUFxMUJSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxhQUZWO0FBR0Usa0JBQWMsYUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFyMUJROztBQTQxQlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGFBRlY7QUFHRSxrQkFBYyxhQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQTUxQlE7O0FBbTJCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsTUFGVjtBQUdFLGtCQUFjLE1BSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBbjJCUTs7QUEwMkJSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxhQUZWO0FBR0Usa0JBQWMsYUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUExMkJROztBQWkzQlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLE1BRlY7QUFHRSxrQkFBYyxNQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQWozQlE7O0FBdzNCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsb0JBRlY7QUFHRSxrQkFBYyxvQkFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUF4M0JROztBQSszQlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLFlBRlY7QUFHRSxrQkFBYyxZQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQS8zQlE7O0FBczRCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsS0FGVjtBQUdFLGtCQUFjLEtBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBdDRCUTs7QUE2NEJSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxnQkFGVjtBQUdFLGtCQUFjLGdCQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQTc0QlE7O0FBbzVCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsU0FGVjtBQUdFLGtCQUFjLFNBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBcDVCUTs7QUEyNUJSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxjQUZWO0FBR0Usa0JBQWMsY0FIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUEzNUJROztBQWs2QlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLHVCQUZWO0FBR0Usa0JBQWMsdUJBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBbDZCUTs7QUF5NkJSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxnQkFGVjtBQUdFLGtCQUFjLGdCQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXo2QlE7O0FBZzdCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEscUJBRlY7QUFHRSxrQkFBYyxxQkFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFoN0JROztBQXU3QlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLE1BRlY7QUFHRSxrQkFBYyxNQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXY3QlE7O0FBODdCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsZUFGVjtBQUdFLGtCQUFjLGVBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBOTdCUTs7QUFxOEJSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxhQUZWO0FBR0Usa0JBQWMsYUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFyOEJROztBQTQ4QlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLE1BRlY7QUFHRSxrQkFBYyxNQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQTU4QlE7O0FBbTlCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsYUFGVjtBQUdFLGtCQUFjLGFBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBbjlCUTs7QUEwOUJSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxNQUZWO0FBR0Usa0JBQWMsTUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUExOUJROztBQWkrQlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLFFBRlY7QUFHRSxrQkFBYyxRQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQWorQlE7O0FBdytCUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsV0FGVjtBQUdFLGtCQUFjLFdBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBeCtCUTs7QUErK0JSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxVQUZWO0FBR0Usa0JBQWMsVUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUEvK0JROztBQXMvQlI7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLFFBRlY7QUFHRSxrQkFBYyxRQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXQvQlE7O0FBNi9CUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsYUFGVjtBQUdFLGtCQUFjLGFBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBNy9CUTs7QUFvZ0NSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxNQUZWO0FBR0Usa0JBQWMsTUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFwZ0NROztBQTJnQ1I7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGtCQUZWO0FBR0Usa0JBQWMsa0JBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBM2dDUTs7QUFraENSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSx3QkFGVjtBQUdFLGtCQUFjLGtCQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQWxoQ1E7O0FBeWhDUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsaUJBRlY7QUFHRSxrQkFBYyxXQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXpoQ1E7O0FBZ2lDUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsc0JBRlY7QUFHRSxrQkFBYyxnQkFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFoaUNROztBQXVpQ1I7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGVBRlY7QUFHRSxrQkFBYyxTQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXZpQ1E7O0FBOGlDUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsY0FGVjtBQUdFLGtCQUFjLGNBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBOWlDUTs7QUFxakNSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxXQUZWO0FBR0Usa0JBQWMsV0FIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFyakNROztBQTRqQ1I7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLE9BRlY7QUFHRSxrQkFBYyxPQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQTVqQ1E7O0FBbWtDUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsTUFGVjtBQUdFLGtCQUFjLE1BSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBbmtDUTs7QUEwa0NSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxVQUZWO0FBR0Usa0JBQWMsVUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUExa0NROztBQWlsQ1I7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLE1BRlY7QUFHRSxrQkFBYyxNQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQWpsQ1E7O0FBd2xDUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsTUFGVjtBQUdFLGtCQUFjLE1BSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBeGxDUTs7QUErbENSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxhQUZWO0FBR0Usa0JBQWMsYUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUEvbENROztBQXNtQ1I7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLFVBRlY7QUFHRSxrQkFBYyxVQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXRtQ1E7O0FBNm1DUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsaUJBRlY7QUFHRSxrQkFBYyxpQkFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUE3bUNROztBQW9uQ1I7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLE1BRlY7QUFHRSxrQkFBYyxNQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQXBuQ1E7O0FBMm5DUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsWUFGVjtBQUdFLGtCQUFjLFlBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBM25DUTs7QUFrb0NSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxNQUZWO0FBR0Usa0JBQWMsTUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFsb0NRLENBTkcsRSIsImZpbGUiOiJjb21tb24vdmVuZG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICd2dWUnO1xyXG5pbXBvcnQgeyBpbml0VnVlSTE4biB9IGZyb20gJ0BkY2xvdWRpby91bmktaTE4bic7XHJcblxyXG5sZXQgcmVhbEF0b2I7XHJcblxyXG5jb25zdCBiNjQgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0nO1xyXG5jb25zdCBiNjRyZSA9IC9eKD86W0EtWmEtelxcZCsvXXs0fSkqPyg/OltBLVphLXpcXGQrL117Mn0oPzo9PSk/fFtBLVphLXpcXGQrL117M309Pyk/JC87XHJcblxyXG5pZiAodHlwZW9mIGF0b2IgIT09ICdmdW5jdGlvbicpIHtcclxuICByZWFsQXRvYiA9IGZ1bmN0aW9uIChzdHIpIHtcclxuICAgIHN0ciA9IFN0cmluZyhzdHIpLnJlcGxhY2UoL1tcXHRcXG5cXGZcXHIgXSsvZywgJycpO1xyXG4gICAgaWYgKCFiNjRyZS50ZXN0KHN0cikpIHsgdGhyb3cgbmV3IEVycm9yKFwiRmFpbGVkIHRvIGV4ZWN1dGUgJ2F0b2InIG9uICdXaW5kb3cnOiBUaGUgc3RyaW5nIHRvIGJlIGRlY29kZWQgaXMgbm90IGNvcnJlY3RseSBlbmNvZGVkLlwiKSB9XHJcblxyXG4gICAgLy8gQWRkaW5nIHRoZSBwYWRkaW5nIGlmIG1pc3NpbmcsIGZvciBzZW1wbGljaXR5XHJcbiAgICBzdHIgKz0gJz09Jy5zbGljZSgyIC0gKHN0ci5sZW5ndGggJiAzKSk7XHJcbiAgICB2YXIgYml0bWFwOyB2YXIgcmVzdWx0ID0gJyc7IHZhciByMTsgdmFyIHIyOyB2YXIgaSA9IDA7XHJcbiAgICBmb3IgKDsgaSA8IHN0ci5sZW5ndGg7KSB7XHJcbiAgICAgIGJpdG1hcCA9IGI2NC5pbmRleE9mKHN0ci5jaGFyQXQoaSsrKSkgPDwgMTggfCBiNjQuaW5kZXhPZihzdHIuY2hhckF0KGkrKykpIDw8IDEyIHxcclxuICAgICAgICAgICAgICAgICAgICAocjEgPSBiNjQuaW5kZXhPZihzdHIuY2hhckF0KGkrKykpKSA8PCA2IHwgKHIyID0gYjY0LmluZGV4T2Yoc3RyLmNoYXJBdChpKyspKSk7XHJcblxyXG4gICAgICByZXN1bHQgKz0gcjEgPT09IDY0ID8gU3RyaW5nLmZyb21DaGFyQ29kZShiaXRtYXAgPj4gMTYgJiAyNTUpXHJcbiAgICAgICAgOiByMiA9PT0gNjQgPyBTdHJpbmcuZnJvbUNoYXJDb2RlKGJpdG1hcCA+PiAxNiAmIDI1NSwgYml0bWFwID4+IDggJiAyNTUpXHJcbiAgICAgICAgICA6IFN0cmluZy5mcm9tQ2hhckNvZGUoYml0bWFwID4+IDE2ICYgMjU1LCBiaXRtYXAgPj4gOCAmIDI1NSwgYml0bWFwICYgMjU1KTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHRcclxuICB9O1xyXG59IGVsc2Uge1xyXG4gIC8vIOazqOaEj2F0b2Llj6rog73lnKjlhajlsYDlr7nosaHkuIrosIPnlKjvvIzkvovlpoLvvJpgY29uc3QgQmFzZTY0ID0ge2F0b2J9O0Jhc2U2NC5hdG9iKCd4eHh4Jylg5piv6ZSZ6K+v55qE55So5rOVXHJcbiAgcmVhbEF0b2IgPSBhdG9iO1xyXG59XHJcblxyXG5mdW5jdGlvbiBiNjREZWNvZGVVbmljb2RlIChzdHIpIHtcclxuICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHJlYWxBdG9iKHN0cikuc3BsaXQoJycpLm1hcChmdW5jdGlvbiAoYykge1xyXG4gICAgcmV0dXJuICclJyArICgnMDAnICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpXHJcbiAgfSkuam9pbignJykpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEN1cnJlbnRVc2VySW5mbyAoKSB7XHJcbiAgY29uc3QgdG9rZW4gPSAoIHR0KS5nZXRTdG9yYWdlU3luYygndW5pX2lkX3Rva2VuJykgfHwgJyc7XHJcbiAgY29uc3QgdG9rZW5BcnIgPSB0b2tlbi5zcGxpdCgnLicpO1xyXG4gIGlmICghdG9rZW4gfHwgdG9rZW5BcnIubGVuZ3RoICE9PSAzKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB1aWQ6IG51bGwsXHJcbiAgICAgIHJvbGU6IFtdLFxyXG4gICAgICBwZXJtaXNzaW9uOiBbXSxcclxuICAgICAgdG9rZW5FeHBpcmVkOiAwXHJcbiAgICB9XHJcbiAgfVxyXG4gIGxldCB1c2VySW5mbztcclxuICB0cnkge1xyXG4gICAgdXNlckluZm8gPSBKU09OLnBhcnNlKGI2NERlY29kZVVuaWNvZGUodG9rZW5BcnJbMV0pKTtcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCfojrflj5blvZPliY3nlKjmiLfkv6Hmga/lh7rplJnvvIzor6bnu4bplJnor6/kv6Hmga/kuLrvvJonICsgZXJyb3IubWVzc2FnZSlcclxuICB9XHJcbiAgdXNlckluZm8udG9rZW5FeHBpcmVkID0gdXNlckluZm8uZXhwICogMTAwMDtcclxuICBkZWxldGUgdXNlckluZm8uZXhwO1xyXG4gIGRlbGV0ZSB1c2VySW5mby5pYXQ7XHJcbiAgcmV0dXJuIHVzZXJJbmZvXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHVuaUlkTWl4aW4gKFZ1ZSkge1xyXG4gIFZ1ZS5wcm90b3R5cGUudW5pSURIYXNSb2xlID0gZnVuY3Rpb24gKHJvbGVJZCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICByb2xlXHJcbiAgICB9ID0gZ2V0Q3VycmVudFVzZXJJbmZvKCk7XHJcbiAgICByZXR1cm4gcm9sZS5pbmRleE9mKHJvbGVJZCkgPiAtMVxyXG4gIH07XHJcbiAgVnVlLnByb3RvdHlwZS51bmlJREhhc1Blcm1pc3Npb24gPSBmdW5jdGlvbiAocGVybWlzc2lvbklkKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHBlcm1pc3Npb25cclxuICAgIH0gPSBnZXRDdXJyZW50VXNlckluZm8oKTtcclxuICAgIHJldHVybiB0aGlzLnVuaUlESGFzUm9sZSgnYWRtaW4nKSB8fCBwZXJtaXNzaW9uLmluZGV4T2YocGVybWlzc2lvbklkKSA+IC0xXHJcbiAgfTtcclxuICBWdWUucHJvdG90eXBlLnVuaUlEVG9rZW5WYWxpZCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgdG9rZW5FeHBpcmVkXHJcbiAgICB9ID0gZ2V0Q3VycmVudFVzZXJJbmZvKCk7XHJcbiAgICByZXR1cm4gdG9rZW5FeHBpcmVkID4gRGF0ZS5ub3coKVxyXG4gIH07XHJcbn1cclxuXHJcbmNvbnN0IF90b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XHJcbmNvbnN0IGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcclxuXHJcbmZ1bmN0aW9uIGlzRm4gKGZuKSB7XHJcbiAgcmV0dXJuIHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJ1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc1N0ciAoc3RyKSB7XHJcbiAgcmV0dXJuIHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QgKG9iaikge1xyXG4gIHJldHVybiBfdG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBPYmplY3RdJ1xyXG59XHJcblxyXG5mdW5jdGlvbiBoYXNPd24gKG9iaiwga2V5KSB7XHJcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpXHJcbn1cclxuXHJcbmZ1bmN0aW9uIG5vb3AgKCkge31cclxuXHJcbi8qKlxyXG4gKiBDcmVhdGUgYSBjYWNoZWQgdmVyc2lvbiBvZiBhIHB1cmUgZnVuY3Rpb24uXHJcbiAqL1xyXG5mdW5jdGlvbiBjYWNoZWQgKGZuKSB7XHJcbiAgY29uc3QgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gIHJldHVybiBmdW5jdGlvbiBjYWNoZWRGbiAoc3RyKSB7XHJcbiAgICBjb25zdCBoaXQgPSBjYWNoZVtzdHJdO1xyXG4gICAgcmV0dXJuIGhpdCB8fCAoY2FjaGVbc3RyXSA9IGZuKHN0cikpXHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQ2FtZWxpemUgYSBoeXBoZW4tZGVsaW1pdGVkIHN0cmluZy5cclxuICovXHJcbmNvbnN0IGNhbWVsaXplUkUgPSAvLShcXHcpL2c7XHJcbmNvbnN0IGNhbWVsaXplID0gY2FjaGVkKChzdHIpID0+IHtcclxuICByZXR1cm4gc3RyLnJlcGxhY2UoY2FtZWxpemVSRSwgKF8sIGMpID0+IGMgPyBjLnRvVXBwZXJDYXNlKCkgOiAnJylcclxufSk7XHJcblxyXG5jb25zdCBIT09LUyA9IFtcclxuICAnaW52b2tlJyxcclxuICAnc3VjY2VzcycsXHJcbiAgJ2ZhaWwnLFxyXG4gICdjb21wbGV0ZScsXHJcbiAgJ3JldHVyblZhbHVlJ1xyXG5dO1xyXG5cclxuY29uc3QgZ2xvYmFsSW50ZXJjZXB0b3JzID0ge307XHJcbmNvbnN0IHNjb3BlZEludGVyY2VwdG9ycyA9IHt9O1xyXG5cclxuZnVuY3Rpb24gbWVyZ2VIb29rIChwYXJlbnRWYWwsIGNoaWxkVmFsKSB7XHJcbiAgY29uc3QgcmVzID0gY2hpbGRWYWxcclxuICAgID8gcGFyZW50VmFsXHJcbiAgICAgID8gcGFyZW50VmFsLmNvbmNhdChjaGlsZFZhbClcclxuICAgICAgOiBBcnJheS5pc0FycmF5KGNoaWxkVmFsKVxyXG4gICAgICAgID8gY2hpbGRWYWwgOiBbY2hpbGRWYWxdXHJcbiAgICA6IHBhcmVudFZhbDtcclxuICByZXR1cm4gcmVzXHJcbiAgICA/IGRlZHVwZUhvb2tzKHJlcylcclxuICAgIDogcmVzXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRlZHVwZUhvb2tzIChob29rcykge1xyXG4gIGNvbnN0IHJlcyA9IFtdO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaG9va3MubGVuZ3RoOyBpKyspIHtcclxuICAgIGlmIChyZXMuaW5kZXhPZihob29rc1tpXSkgPT09IC0xKSB7XHJcbiAgICAgIHJlcy5wdXNoKGhvb2tzW2ldKTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHJlc1xyXG59XHJcblxyXG5mdW5jdGlvbiByZW1vdmVIb29rIChob29rcywgaG9vaykge1xyXG4gIGNvbnN0IGluZGV4ID0gaG9va3MuaW5kZXhPZihob29rKTtcclxuICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICBob29rcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gbWVyZ2VJbnRlcmNlcHRvckhvb2sgKGludGVyY2VwdG9yLCBvcHRpb24pIHtcclxuICBPYmplY3Qua2V5cyhvcHRpb24pLmZvckVhY2goaG9vayA9PiB7XHJcbiAgICBpZiAoSE9PS1MuaW5kZXhPZihob29rKSAhPT0gLTEgJiYgaXNGbihvcHRpb25baG9va10pKSB7XHJcbiAgICAgIGludGVyY2VwdG9yW2hvb2tdID0gbWVyZ2VIb29rKGludGVyY2VwdG9yW2hvb2tdLCBvcHRpb25baG9va10pO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiByZW1vdmVJbnRlcmNlcHRvckhvb2sgKGludGVyY2VwdG9yLCBvcHRpb24pIHtcclxuICBpZiAoIWludGVyY2VwdG9yIHx8ICFvcHRpb24pIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBPYmplY3Qua2V5cyhvcHRpb24pLmZvckVhY2goaG9vayA9PiB7XHJcbiAgICBpZiAoSE9PS1MuaW5kZXhPZihob29rKSAhPT0gLTEgJiYgaXNGbihvcHRpb25baG9va10pKSB7XHJcbiAgICAgIHJlbW92ZUhvb2soaW50ZXJjZXB0b3JbaG9va10sIG9wdGlvbltob29rXSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFkZEludGVyY2VwdG9yIChtZXRob2QsIG9wdGlvbikge1xyXG4gIGlmICh0eXBlb2YgbWV0aG9kID09PSAnc3RyaW5nJyAmJiBpc1BsYWluT2JqZWN0KG9wdGlvbikpIHtcclxuICAgIG1lcmdlSW50ZXJjZXB0b3JIb29rKHNjb3BlZEludGVyY2VwdG9yc1ttZXRob2RdIHx8IChzY29wZWRJbnRlcmNlcHRvcnNbbWV0aG9kXSA9IHt9KSwgb3B0aW9uKTtcclxuICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QobWV0aG9kKSkge1xyXG4gICAgbWVyZ2VJbnRlcmNlcHRvckhvb2soZ2xvYmFsSW50ZXJjZXB0b3JzLCBtZXRob2QpO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gcmVtb3ZlSW50ZXJjZXB0b3IgKG1ldGhvZCwgb3B0aW9uKSB7XHJcbiAgaWYgKHR5cGVvZiBtZXRob2QgPT09ICdzdHJpbmcnKSB7XHJcbiAgICBpZiAoaXNQbGFpbk9iamVjdChvcHRpb24pKSB7XHJcbiAgICAgIHJlbW92ZUludGVyY2VwdG9ySG9vayhzY29wZWRJbnRlcmNlcHRvcnNbbWV0aG9kXSwgb3B0aW9uKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRlbGV0ZSBzY29wZWRJbnRlcmNlcHRvcnNbbWV0aG9kXTtcclxuICAgIH1cclxuICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QobWV0aG9kKSkge1xyXG4gICAgcmVtb3ZlSW50ZXJjZXB0b3JIb29rKGdsb2JhbEludGVyY2VwdG9ycywgbWV0aG9kKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHdyYXBwZXJIb29rIChob29rKSB7XHJcbiAgcmV0dXJuIGZ1bmN0aW9uIChkYXRhKSB7XHJcbiAgICByZXR1cm4gaG9vayhkYXRhKSB8fCBkYXRhXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBpc1Byb21pc2UgKG9iaikge1xyXG4gIHJldHVybiAhIW9iaiAmJiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJykgJiYgdHlwZW9mIG9iai50aGVuID09PSAnZnVuY3Rpb24nXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHF1ZXVlIChob29rcywgZGF0YSkge1xyXG4gIGxldCBwcm9taXNlID0gZmFsc2U7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBob29rcy5sZW5ndGg7IGkrKykge1xyXG4gICAgY29uc3QgaG9vayA9IGhvb2tzW2ldO1xyXG4gICAgaWYgKHByb21pc2UpIHtcclxuICAgICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh3cmFwcGVySG9vayhob29rKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCByZXMgPSBob29rKGRhdGEpO1xyXG4gICAgICBpZiAoaXNQcm9taXNlKHJlcykpIHtcclxuICAgICAgICBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHJlcyk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJlcyA9PT0gZmFsc2UpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgdGhlbiAoKSB7IH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHByb21pc2UgfHwge1xyXG4gICAgdGhlbiAoY2FsbGJhY2spIHtcclxuICAgICAgcmV0dXJuIGNhbGxiYWNrKGRhdGEpXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB3cmFwcGVyT3B0aW9ucyAoaW50ZXJjZXB0b3IsIG9wdGlvbnMgPSB7fSkge1xyXG4gIFsnc3VjY2VzcycsICdmYWlsJywgJ2NvbXBsZXRlJ10uZm9yRWFjaChuYW1lID0+IHtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGludGVyY2VwdG9yW25hbWVdKSkge1xyXG4gICAgICBjb25zdCBvbGRDYWxsYmFjayA9IG9wdGlvbnNbbmFtZV07XHJcbiAgICAgIG9wdGlvbnNbbmFtZV0gPSBmdW5jdGlvbiBjYWxsYmFja0ludGVyY2VwdG9yIChyZXMpIHtcclxuICAgICAgICBxdWV1ZShpbnRlcmNlcHRvcltuYW1lXSwgcmVzKS50aGVuKChyZXMpID0+IHtcclxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLW1peGVkLW9wZXJhdG9ycyAqL1xyXG4gICAgICAgICAgcmV0dXJuIGlzRm4ob2xkQ2FsbGJhY2spICYmIG9sZENhbGxiYWNrKHJlcykgfHwgcmVzXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIG9wdGlvbnNcclxufVxyXG5cclxuZnVuY3Rpb24gd3JhcHBlclJldHVyblZhbHVlIChtZXRob2QsIHJldHVyblZhbHVlKSB7XHJcbiAgY29uc3QgcmV0dXJuVmFsdWVIb29rcyA9IFtdO1xyXG4gIGlmIChBcnJheS5pc0FycmF5KGdsb2JhbEludGVyY2VwdG9ycy5yZXR1cm5WYWx1ZSkpIHtcclxuICAgIHJldHVyblZhbHVlSG9va3MucHVzaCguLi5nbG9iYWxJbnRlcmNlcHRvcnMucmV0dXJuVmFsdWUpO1xyXG4gIH1cclxuICBjb25zdCBpbnRlcmNlcHRvciA9IHNjb3BlZEludGVyY2VwdG9yc1ttZXRob2RdO1xyXG4gIGlmIChpbnRlcmNlcHRvciAmJiBBcnJheS5pc0FycmF5KGludGVyY2VwdG9yLnJldHVyblZhbHVlKSkge1xyXG4gICAgcmV0dXJuVmFsdWVIb29rcy5wdXNoKC4uLmludGVyY2VwdG9yLnJldHVyblZhbHVlKTtcclxuICB9XHJcbiAgcmV0dXJuVmFsdWVIb29rcy5mb3JFYWNoKGhvb2sgPT4ge1xyXG4gICAgcmV0dXJuVmFsdWUgPSBob29rKHJldHVyblZhbHVlKSB8fCByZXR1cm5WYWx1ZTtcclxuICB9KTtcclxuICByZXR1cm4gcmV0dXJuVmFsdWVcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0QXBpSW50ZXJjZXB0b3JIb29rcyAobWV0aG9kKSB7XHJcbiAgY29uc3QgaW50ZXJjZXB0b3IgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gIE9iamVjdC5rZXlzKGdsb2JhbEludGVyY2VwdG9ycykuZm9yRWFjaChob29rID0+IHtcclxuICAgIGlmIChob29rICE9PSAncmV0dXJuVmFsdWUnKSB7XHJcbiAgICAgIGludGVyY2VwdG9yW2hvb2tdID0gZ2xvYmFsSW50ZXJjZXB0b3JzW2hvb2tdLnNsaWNlKCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgY29uc3Qgc2NvcGVkSW50ZXJjZXB0b3IgPSBzY29wZWRJbnRlcmNlcHRvcnNbbWV0aG9kXTtcclxuICBpZiAoc2NvcGVkSW50ZXJjZXB0b3IpIHtcclxuICAgIE9iamVjdC5rZXlzKHNjb3BlZEludGVyY2VwdG9yKS5mb3JFYWNoKGhvb2sgPT4ge1xyXG4gICAgICBpZiAoaG9vayAhPT0gJ3JldHVyblZhbHVlJykge1xyXG4gICAgICAgIGludGVyY2VwdG9yW2hvb2tdID0gKGludGVyY2VwdG9yW2hvb2tdIHx8IFtdKS5jb25jYXQoc2NvcGVkSW50ZXJjZXB0b3JbaG9va10pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmV0dXJuIGludGVyY2VwdG9yXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGludm9rZUFwaSAobWV0aG9kLCBhcGksIG9wdGlvbnMsIC4uLnBhcmFtcykge1xyXG4gIGNvbnN0IGludGVyY2VwdG9yID0gZ2V0QXBpSW50ZXJjZXB0b3JIb29rcyhtZXRob2QpO1xyXG4gIGlmIChpbnRlcmNlcHRvciAmJiBPYmplY3Qua2V5cyhpbnRlcmNlcHRvcikubGVuZ3RoKSB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShpbnRlcmNlcHRvci5pbnZva2UpKSB7XHJcbiAgICAgIGNvbnN0IHJlcyA9IHF1ZXVlKGludGVyY2VwdG9yLmludm9rZSwgb3B0aW9ucyk7XHJcbiAgICAgIHJldHVybiByZXMudGhlbigob3B0aW9ucykgPT4ge1xyXG4gICAgICAgIHJldHVybiBhcGkod3JhcHBlck9wdGlvbnMoaW50ZXJjZXB0b3IsIG9wdGlvbnMpLCAuLi5wYXJhbXMpXHJcbiAgICAgIH0pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gYXBpKHdyYXBwZXJPcHRpb25zKGludGVyY2VwdG9yLCBvcHRpb25zKSwgLi4ucGFyYW1zKVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gYXBpKG9wdGlvbnMsIC4uLnBhcmFtcylcclxufVxyXG5cclxuY29uc3QgcHJvbWlzZUludGVyY2VwdG9yID0ge1xyXG4gIHJldHVyblZhbHVlIChyZXMpIHtcclxuICAgIGlmICghaXNQcm9taXNlKHJlcykpIHtcclxuICAgICAgcmV0dXJuIHJlc1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgcmVzLnRoZW4ocmVzID0+IHtcclxuICAgICAgICBpZiAocmVzWzBdKSB7XHJcbiAgICAgICAgICByZWplY3QocmVzWzBdKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzb2x2ZShyZXNbMV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KVxyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IFNZTkNfQVBJX1JFID1cclxuICAvXlxcJHxXaW5kb3ckfFdpbmRvd1N0eWxlJHxzZW5kSG9zdEV2ZW50fHNlbmROYXRpdmVFdmVudHxyZXN0b3JlR2xvYmFsfGdldEN1cnJlbnRTdWJOVnVlfGdldE1lbnVCdXR0b25Cb3VuZGluZ0NsaWVudFJlY3R8XnJlcG9ydHxpbnRlcmNlcHRvcnN8SW50ZXJjZXB0b3IkfGdldFN1Yk5WdWVCeUlkfHJlcXVpcmVOYXRpdmVQbHVnaW58dXB4MnB4fGhpZGVLZXlib2FyZHxjYW5JVXNlfF5jcmVhdGV8U3luYyR8TWFuYWdlciR8YmFzZTY0VG9BcnJheUJ1ZmZlcnxhcnJheUJ1ZmZlclRvQmFzZTY0fGdldExvY2FsZXxzZXRMb2NhbGUvO1xyXG5cclxuY29uc3QgQ09OVEVYVF9BUElfUkUgPSAvXmNyZWF0ZXxNYW5hZ2VyJC87XHJcblxyXG4vLyBDb250ZXh05L6L5aSW5oOF5Ya1XHJcbmNvbnN0IENPTlRFWFRfQVBJX1JFX0VYQyA9IFsnY3JlYXRlQkxFQ29ubmVjdGlvbiddO1xyXG5cclxuLy8g5ZCM5q2l5L6L5aSW5oOF5Ya1XHJcbmNvbnN0IEFTWU5DX0FQSSA9IFsnY3JlYXRlQkxFQ29ubmVjdGlvbiddO1xyXG5cclxuY29uc3QgQ0FMTEJBQ0tfQVBJX1JFID0gL15vbnxeb2ZmLztcclxuXHJcbmZ1bmN0aW9uIGlzQ29udGV4dEFwaSAobmFtZSkge1xyXG4gIHJldHVybiBDT05URVhUX0FQSV9SRS50ZXN0KG5hbWUpICYmIENPTlRFWFRfQVBJX1JFX0VYQy5pbmRleE9mKG5hbWUpID09PSAtMVxyXG59XHJcbmZ1bmN0aW9uIGlzU3luY0FwaSAobmFtZSkge1xyXG4gIHJldHVybiBTWU5DX0FQSV9SRS50ZXN0KG5hbWUpICYmIEFTWU5DX0FQSS5pbmRleE9mKG5hbWUpID09PSAtMVxyXG59XHJcblxyXG5mdW5jdGlvbiBpc0NhbGxiYWNrQXBpIChuYW1lKSB7XHJcbiAgcmV0dXJuIENBTExCQUNLX0FQSV9SRS50ZXN0KG5hbWUpICYmIG5hbWUgIT09ICdvblB1c2gnXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhbmRsZVByb21pc2UgKHByb21pc2UpIHtcclxuICByZXR1cm4gcHJvbWlzZS50aGVuKGRhdGEgPT4ge1xyXG4gICAgcmV0dXJuIFtudWxsLCBkYXRhXVxyXG4gIH0pXHJcbiAgICAuY2F0Y2goZXJyID0+IFtlcnJdKVxyXG59XHJcblxyXG5mdW5jdGlvbiBzaG91bGRQcm9taXNlIChuYW1lKSB7XHJcbiAgaWYgKFxyXG4gICAgaXNDb250ZXh0QXBpKG5hbWUpIHx8XHJcbiAgICBpc1N5bmNBcGkobmFtZSkgfHxcclxuICAgIGlzQ2FsbGJhY2tBcGkobmFtZSlcclxuICApIHtcclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuICByZXR1cm4gdHJ1ZVxyXG59XHJcblxyXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1leHRlbmQtbmF0aXZlICovXHJcbmlmICghUHJvbWlzZS5wcm90b3R5cGUuZmluYWxseSkge1xyXG4gIFByb21pc2UucHJvdG90eXBlLmZpbmFsbHkgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcclxuICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLmNvbnN0cnVjdG9yO1xyXG4gICAgcmV0dXJuIHRoaXMudGhlbihcclxuICAgICAgdmFsdWUgPT4gcHJvbWlzZS5yZXNvbHZlKGNhbGxiYWNrKCkpLnRoZW4oKCkgPT4gdmFsdWUpLFxyXG4gICAgICByZWFzb24gPT4gcHJvbWlzZS5yZXNvbHZlKGNhbGxiYWNrKCkpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRocm93IHJlYXNvblxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHByb21pc2lmeSAobmFtZSwgYXBpKSB7XHJcbiAgaWYgKCFzaG91bGRQcm9taXNlKG5hbWUpKSB7XHJcbiAgICByZXR1cm4gYXBpXHJcbiAgfVxyXG4gIHJldHVybiBmdW5jdGlvbiBwcm9taXNlQXBpIChvcHRpb25zID0ge30sIC4uLnBhcmFtcykge1xyXG4gICAgaWYgKGlzRm4ob3B0aW9ucy5zdWNjZXNzKSB8fCBpc0ZuKG9wdGlvbnMuZmFpbCkgfHwgaXNGbihvcHRpb25zLmNvbXBsZXRlKSkge1xyXG4gICAgICByZXR1cm4gd3JhcHBlclJldHVyblZhbHVlKG5hbWUsIGludm9rZUFwaShuYW1lLCBhcGksIG9wdGlvbnMsIC4uLnBhcmFtcykpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gd3JhcHBlclJldHVyblZhbHVlKG5hbWUsIGhhbmRsZVByb21pc2UobmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpbnZva2VBcGkobmFtZSwgYXBpLCBPYmplY3QuYXNzaWduKHt9LCBvcHRpb25zLCB7XHJcbiAgICAgICAgc3VjY2VzczogcmVzb2x2ZSxcclxuICAgICAgICBmYWlsOiByZWplY3RcclxuICAgICAgfSksIC4uLnBhcmFtcyk7XHJcbiAgICB9KSkpXHJcbiAgfVxyXG59XHJcblxyXG5jb25zdCBFUFMgPSAxZS00O1xyXG5jb25zdCBCQVNFX0RFVklDRV9XSURUSCA9IDc1MDtcclxubGV0IGlzSU9TID0gZmFsc2U7XHJcbmxldCBkZXZpY2VXaWR0aCA9IDA7XHJcbmxldCBkZXZpY2VEUFIgPSAwO1xyXG5cclxuZnVuY3Rpb24gY2hlY2tEZXZpY2VXaWR0aCAoKSB7XHJcbiAgY29uc3Qge1xyXG4gICAgcGxhdGZvcm0sXHJcbiAgICBwaXhlbFJhdGlvLFxyXG4gICAgd2luZG93V2lkdGhcclxuICB9ID0gdHQuZ2V0U3lzdGVtSW5mb1N5bmMoKTsgLy8gdW5pPT50dCBydW50aW1lIOe8luivkeebruagh+aYryB1bmkg5a+56LGh77yM5YaF6YOo5LiN5YWB6K6455u05o6l5L2/55SoIHVuaVxyXG5cclxuICBkZXZpY2VXaWR0aCA9IHdpbmRvd1dpZHRoO1xyXG4gIGRldmljZURQUiA9IHBpeGVsUmF0aW87XHJcbiAgaXNJT1MgPSBwbGF0Zm9ybSA9PT0gJ2lvcyc7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHVweDJweCAobnVtYmVyLCBuZXdEZXZpY2VXaWR0aCkge1xyXG4gIGlmIChkZXZpY2VXaWR0aCA9PT0gMCkge1xyXG4gICAgY2hlY2tEZXZpY2VXaWR0aCgpO1xyXG4gIH1cclxuXHJcbiAgbnVtYmVyID0gTnVtYmVyKG51bWJlcik7XHJcbiAgaWYgKG51bWJlciA9PT0gMCkge1xyXG4gICAgcmV0dXJuIDBcclxuICB9XHJcbiAgbGV0IHJlc3VsdCA9IChudW1iZXIgLyBCQVNFX0RFVklDRV9XSURUSCkgKiAobmV3RGV2aWNlV2lkdGggfHwgZGV2aWNlV2lkdGgpO1xyXG4gIGlmIChyZXN1bHQgPCAwKSB7XHJcbiAgICByZXN1bHQgPSAtcmVzdWx0O1xyXG4gIH1cclxuICByZXN1bHQgPSBNYXRoLmZsb29yKHJlc3VsdCArIEVQUyk7XHJcbiAgaWYgKHJlc3VsdCA9PT0gMCkge1xyXG4gICAgaWYgKGRldmljZURQUiA9PT0gMSB8fCAhaXNJT1MpIHtcclxuICAgICAgcmVzdWx0ID0gMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc3VsdCA9IDAuNTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIG51bWJlciA8IDAgPyAtcmVzdWx0IDogcmVzdWx0XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldExvY2FsZSAoKSB7XHJcbiAgLy8g5LyY5YWI5L2/55SoICRsb2NhbGVcclxuICBjb25zdCBhcHAgPSBnZXRBcHAoe1xyXG4gICAgYWxsb3dEZWZhdWx0OiB0cnVlXHJcbiAgfSk7XHJcbiAgaWYgKGFwcCAmJiBhcHAuJHZtKSB7XHJcbiAgICByZXR1cm4gYXBwLiR2bS4kbG9jYWxlXHJcbiAgfVxyXG4gIHJldHVybiB0dC5nZXRTeXN0ZW1JbmZvU3luYygpLmxhbmd1YWdlIHx8ICd6aC1IYW5zJ1xyXG59XHJcblxyXG5mdW5jdGlvbiBzZXRMb2NhbGUgKGxvY2FsZSkge1xyXG4gIGNvbnN0IGFwcCA9IGdldEFwcCgpO1xyXG4gIGlmICghYXBwKSB7XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbiAgY29uc3Qgb2xkTG9jYWxlID0gYXBwLiR2bS4kbG9jYWxlO1xyXG4gIGlmIChvbGRMb2NhbGUgIT09IGxvY2FsZSkge1xyXG4gICAgYXBwLiR2bS4kbG9jYWxlID0gbG9jYWxlO1xyXG4gICAgb25Mb2NhbGVDaGFuZ2VDYWxsYmFja3MuZm9yRWFjaCgoZm4pID0+IGZuKHtcclxuICAgICAgbG9jYWxlXHJcbiAgICB9KSk7XHJcbiAgICByZXR1cm4gdHJ1ZVxyXG4gIH1cclxuICByZXR1cm4gZmFsc2VcclxufVxyXG5cclxuY29uc3Qgb25Mb2NhbGVDaGFuZ2VDYWxsYmFja3MgPSBbXTtcclxuZnVuY3Rpb24gb25Mb2NhbGVDaGFuZ2UgKGZuKSB7XHJcbiAgaWYgKG9uTG9jYWxlQ2hhbmdlQ2FsbGJhY2tzLmluZGV4T2YoZm4pID09PSAtMSkge1xyXG4gICAgb25Mb2NhbGVDaGFuZ2VDYWxsYmFja3MucHVzaChmbik7XHJcbiAgfVxyXG59XHJcblxyXG5pZiAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICBnbG9iYWwuZ2V0TG9jYWxlID0gZ2V0TG9jYWxlO1xyXG59XHJcblxyXG5jb25zdCBpbnRlcmNlcHRvcnMgPSB7XHJcbiAgcHJvbWlzZUludGVyY2VwdG9yXHJcbn07XHJcblxyXG52YXIgYmFzZUFwaSA9IC8qI19fUFVSRV9fKi9PYmplY3QuZnJlZXplKHtcclxuICBfX3Byb3RvX186IG51bGwsXHJcbiAgdXB4MnB4OiB1cHgycHgsXHJcbiAgZ2V0TG9jYWxlOiBnZXRMb2NhbGUsXHJcbiAgc2V0TG9jYWxlOiBzZXRMb2NhbGUsXHJcbiAgb25Mb2NhbGVDaGFuZ2U6IG9uTG9jYWxlQ2hhbmdlLFxyXG4gIGFkZEludGVyY2VwdG9yOiBhZGRJbnRlcmNlcHRvcixcclxuICByZW1vdmVJbnRlcmNlcHRvcjogcmVtb3ZlSW50ZXJjZXB0b3IsXHJcbiAgaW50ZXJjZXB0b3JzOiBpbnRlcmNlcHRvcnNcclxufSk7XHJcblxyXG5jbGFzcyBFdmVudENoYW5uZWwge1xyXG4gIGNvbnN0cnVjdG9yIChpZCwgZXZlbnRzKSB7XHJcbiAgICB0aGlzLmlkID0gaWQ7XHJcbiAgICB0aGlzLmxpc3RlbmVyID0ge307XHJcbiAgICB0aGlzLmVtaXRDYWNoZSA9IHt9O1xyXG4gICAgaWYgKGV2ZW50cykge1xyXG4gICAgICBPYmplY3Qua2V5cyhldmVudHMpLmZvckVhY2gobmFtZSA9PiB7XHJcbiAgICAgICAgdGhpcy5vbihuYW1lLCBldmVudHNbbmFtZV0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVtaXQgKGV2ZW50TmFtZSwgLi4uYXJncykge1xyXG4gICAgY29uc3QgZm5zID0gdGhpcy5saXN0ZW5lcltldmVudE5hbWVdO1xyXG4gICAgaWYgKCFmbnMpIHtcclxuICAgICAgcmV0dXJuICh0aGlzLmVtaXRDYWNoZVtldmVudE5hbWVdIHx8ICh0aGlzLmVtaXRDYWNoZVtldmVudE5hbWVdID0gW10pKS5wdXNoKGFyZ3MpXHJcbiAgICB9XHJcbiAgICBmbnMuZm9yRWFjaChvcHQgPT4ge1xyXG4gICAgICBvcHQuZm4uYXBwbHkob3B0LmZuLCBhcmdzKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5saXN0ZW5lcltldmVudE5hbWVdID0gZm5zLmZpbHRlcihvcHQgPT4gb3B0LnR5cGUgIT09ICdvbmNlJyk7XHJcbiAgfVxyXG5cclxuICBvbiAoZXZlbnROYW1lLCBmbikge1xyXG4gICAgdGhpcy5fYWRkTGlzdGVuZXIoZXZlbnROYW1lLCAnb24nLCBmbik7XHJcbiAgICB0aGlzLl9jbGVhckNhY2hlKGV2ZW50TmFtZSk7XHJcbiAgfVxyXG5cclxuICBvbmNlIChldmVudE5hbWUsIGZuKSB7XHJcbiAgICB0aGlzLl9hZGRMaXN0ZW5lcihldmVudE5hbWUsICdvbmNlJywgZm4pO1xyXG4gICAgdGhpcy5fY2xlYXJDYWNoZShldmVudE5hbWUpO1xyXG4gIH1cclxuXHJcbiAgb2ZmIChldmVudE5hbWUsIGZuKSB7XHJcbiAgICBjb25zdCBmbnMgPSB0aGlzLmxpc3RlbmVyW2V2ZW50TmFtZV07XHJcbiAgICBpZiAoIWZucykge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGlmIChmbikge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZucy5sZW5ndGg7KSB7XHJcbiAgICAgICAgaWYgKGZuc1tpXS5mbiA9PT0gZm4pIHtcclxuICAgICAgICAgIGZucy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgICBpLS07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGkrKztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGVsZXRlIHRoaXMubGlzdGVuZXJbZXZlbnROYW1lXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIF9jbGVhckNhY2hlIChldmVudE5hbWUpIHtcclxuICAgIGNvbnN0IGNhY2hlQXJncyA9IHRoaXMuZW1pdENhY2hlW2V2ZW50TmFtZV07XHJcbiAgICBpZiAoY2FjaGVBcmdzKSB7XHJcbiAgICAgIGZvciAoOyBjYWNoZUFyZ3MubGVuZ3RoID4gMDspIHtcclxuICAgICAgICB0aGlzLmVtaXQuYXBwbHkodGhpcywgW2V2ZW50TmFtZV0uY29uY2F0KGNhY2hlQXJncy5zaGlmdCgpKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIF9hZGRMaXN0ZW5lciAoZXZlbnROYW1lLCB0eXBlLCBmbikge1xyXG4gICAgKHRoaXMubGlzdGVuZXJbZXZlbnROYW1lXSB8fCAodGhpcy5saXN0ZW5lcltldmVudE5hbWVdID0gW10pKS5wdXNoKHtcclxuICAgICAgZm4sXHJcbiAgICAgIHR5cGVcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuY29uc3QgZXZlbnRDaGFubmVscyA9IHt9O1xyXG5cclxuY29uc3QgZXZlbnRDaGFubmVsU3RhY2sgPSBbXTtcclxuXHJcbmxldCBpZCA9IDA7XHJcblxyXG5mdW5jdGlvbiBpbml0RXZlbnRDaGFubmVsIChldmVudHMsIGNhY2hlID0gdHJ1ZSkge1xyXG4gIGlkKys7XHJcbiAgY29uc3QgZXZlbnRDaGFubmVsID0gbmV3IEV2ZW50Q2hhbm5lbChpZCwgZXZlbnRzKTtcclxuICBpZiAoY2FjaGUpIHtcclxuICAgIGV2ZW50Q2hhbm5lbHNbaWRdID0gZXZlbnRDaGFubmVsO1xyXG4gICAgZXZlbnRDaGFubmVsU3RhY2sucHVzaChldmVudENoYW5uZWwpO1xyXG4gIH1cclxuICByZXR1cm4gZXZlbnRDaGFubmVsXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEV2ZW50Q2hhbm5lbCAoaWQpIHtcclxuICBpZiAoaWQpIHtcclxuICAgIGNvbnN0IGV2ZW50Q2hhbm5lbCA9IGV2ZW50Q2hhbm5lbHNbaWRdO1xyXG4gICAgZGVsZXRlIGV2ZW50Q2hhbm5lbHNbaWRdO1xyXG4gICAgcmV0dXJuIGV2ZW50Q2hhbm5lbFxyXG4gIH1cclxuICByZXR1cm4gZXZlbnRDaGFubmVsU3RhY2suc2hpZnQoKVxyXG59XHJcblxyXG52YXIgbmF2aWdhdGVUbyA9IHtcclxuICBhcmdzIChmcm9tQXJncywgdG9BcmdzKSB7XHJcbiAgICBjb25zdCBpZCA9IGluaXRFdmVudENoYW5uZWwoZnJvbUFyZ3MuZXZlbnRzKS5pZDtcclxuICAgIGlmIChmcm9tQXJncy51cmwpIHtcclxuICAgICAgZnJvbUFyZ3MudXJsID0gZnJvbUFyZ3MudXJsICsgKGZyb21BcmdzLnVybC5pbmRleE9mKCc/JykgPT09IC0xID8gJz8nIDogJyYnKSArICdfX2lkX189JyArIGlkO1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgcmV0dXJuVmFsdWUgKGZyb21SZXMsIHRvUmVzKSB7XHJcbiAgICBmcm9tUmVzLmV2ZW50Q2hhbm5lbCA9IGdldEV2ZW50Q2hhbm5lbCgpO1xyXG4gIH1cclxufTtcclxuXHJcbmZ1bmN0aW9uIGZpbmRFeGlzdHNQYWdlSW5kZXggKHVybCkge1xyXG4gIGNvbnN0IHBhZ2VzID0gZ2V0Q3VycmVudFBhZ2VzKCk7XHJcbiAgbGV0IGxlbiA9IHBhZ2VzLmxlbmd0aDtcclxuICB3aGlsZSAobGVuLS0pIHtcclxuICAgIGNvbnN0IHBhZ2UgPSBwYWdlc1tsZW5dO1xyXG4gICAgaWYgKHBhZ2UuJHBhZ2UgJiYgcGFnZS4kcGFnZS5mdWxsUGF0aCA9PT0gdXJsKSB7XHJcbiAgICAgIHJldHVybiBsZW5cclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIC0xXHJcbn1cclxuXHJcbnZhciByZWRpcmVjdFRvID0ge1xyXG4gIG5hbWUgKGZyb21BcmdzKSB7XHJcbiAgICBpZiAoZnJvbUFyZ3MuZXhpc3RzID09PSAnYmFjaycgJiYgZnJvbUFyZ3MuZGVsdGEpIHtcclxuICAgICAgcmV0dXJuICduYXZpZ2F0ZUJhY2snXHJcbiAgICB9XHJcbiAgICByZXR1cm4gJ3JlZGlyZWN0VG8nXHJcbiAgfSxcclxuICBhcmdzIChmcm9tQXJncykge1xyXG4gICAgaWYgKGZyb21BcmdzLmV4aXN0cyA9PT0gJ2JhY2snICYmIGZyb21BcmdzLnVybCkge1xyXG4gICAgICBjb25zdCBleGlzdHNQYWdlSW5kZXggPSBmaW5kRXhpc3RzUGFnZUluZGV4KGZyb21BcmdzLnVybCk7XHJcbiAgICAgIGlmIChleGlzdHNQYWdlSW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgY29uc3QgZGVsdGEgPSBnZXRDdXJyZW50UGFnZXMoKS5sZW5ndGggLSAxIC0gZXhpc3RzUGFnZUluZGV4O1xyXG4gICAgICAgIGlmIChkZWx0YSA+IDApIHtcclxuICAgICAgICAgIGZyb21BcmdzLmRlbHRhID0gZGVsdGE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59O1xyXG5cclxudmFyIHByZXZpZXdJbWFnZSA9IHtcclxuICBhcmdzIChmcm9tQXJncykge1xyXG4gICAgbGV0IGN1cnJlbnRJbmRleCA9IHBhcnNlSW50KGZyb21BcmdzLmN1cnJlbnQpO1xyXG4gICAgaWYgKGlzTmFOKGN1cnJlbnRJbmRleCkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBjb25zdCB1cmxzID0gZnJvbUFyZ3MudXJscztcclxuICAgIGlmICghQXJyYXkuaXNBcnJheSh1cmxzKSkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGNvbnN0IGxlbiA9IHVybHMubGVuZ3RoO1xyXG4gICAgaWYgKCFsZW4pIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBpZiAoY3VycmVudEluZGV4IDwgMCkge1xyXG4gICAgICBjdXJyZW50SW5kZXggPSAwO1xyXG4gICAgfSBlbHNlIGlmIChjdXJyZW50SW5kZXggPj0gbGVuKSB7XHJcbiAgICAgIGN1cnJlbnRJbmRleCA9IGxlbiAtIDE7XHJcbiAgICB9XHJcbiAgICBpZiAoY3VycmVudEluZGV4ID4gMCkge1xyXG4gICAgICBmcm9tQXJncy5jdXJyZW50ID0gdXJsc1tjdXJyZW50SW5kZXhdO1xyXG4gICAgICBmcm9tQXJncy51cmxzID0gdXJscy5maWx0ZXIoXHJcbiAgICAgICAgKGl0ZW0sIGluZGV4KSA9PiBpbmRleCA8IGN1cnJlbnRJbmRleCA/IGl0ZW0gIT09IHVybHNbY3VycmVudEluZGV4XSA6IHRydWVcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZyb21BcmdzLmN1cnJlbnQgPSB1cmxzWzBdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaW5kaWNhdG9yOiBmYWxzZSxcclxuICAgICAgbG9vcDogZmFsc2VcclxuICAgIH1cclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBVVUlEX0tFWSA9ICdfX0RDX1NUQVRfVVVJRCc7XHJcbmxldCBkZXZpY2VJZDtcclxuZnVuY3Rpb24gYWRkVXVpZCAocmVzdWx0KSB7XHJcbiAgZGV2aWNlSWQgPSBkZXZpY2VJZCB8fCB0dC5nZXRTdG9yYWdlU3luYyhVVUlEX0tFWSk7XHJcbiAgaWYgKCFkZXZpY2VJZCkge1xyXG4gICAgZGV2aWNlSWQgPSBEYXRlLm5vdygpICsgJycgKyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxZTcpO1xyXG4gICAgdHQuc2V0U3RvcmFnZSh7XHJcbiAgICAgIGtleTogVVVJRF9LRVksXHJcbiAgICAgIGRhdGE6IGRldmljZUlkXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmVzdWx0LmRldmljZUlkID0gZGV2aWNlSWQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFkZFNhZmVBcmVhSW5zZXRzIChyZXN1bHQpIHtcclxuICBpZiAocmVzdWx0LnNhZmVBcmVhKSB7XHJcbiAgICBjb25zdCBzYWZlQXJlYSA9IHJlc3VsdC5zYWZlQXJlYTtcclxuICAgIHJlc3VsdC5zYWZlQXJlYUluc2V0cyA9IHtcclxuICAgICAgdG9wOiBzYWZlQXJlYS50b3AsXHJcbiAgICAgIGxlZnQ6IHNhZmVBcmVhLmxlZnQsXHJcbiAgICAgIHJpZ2h0OiByZXN1bHQud2luZG93V2lkdGggLSBzYWZlQXJlYS5yaWdodCxcclxuICAgICAgYm90dG9tOiByZXN1bHQud2luZG93SGVpZ2h0IC0gc2FmZUFyZWEuYm90dG9tXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG5cclxudmFyIGdldFN5c3RlbUluZm8gPSB7XHJcbiAgcmV0dXJuVmFsdWU6IGZ1bmN0aW9uIChyZXN1bHQpIHtcclxuICAgIGFkZFV1aWQocmVzdWx0KTtcclxuICAgIGFkZFNhZmVBcmVhSW5zZXRzKHJlc3VsdCk7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3Qgb05hbWUgPSAnZ2V0VXNlckluZm8nO1xyXG5jb25zdCBuTmFtZSA9ICdnZXRVc2VyUHJvZmlsZSc7XHJcblxyXG52YXIgZ2V0VXNlclByb2ZpbGUgPSB7XHJcbiAgbmFtZTogdHQuY2FuSVVzZShuTmFtZSkgPyBuTmFtZSA6IG9OYW1lXHJcbn07XHJcblxyXG4vLyDkuI3mlK/mjIHnmoQgQVBJIOWIl+ihqFxyXG5jb25zdCB0b2RvcyA9IFtcclxuICAncHJlbG9hZFBhZ2UnLFxyXG4gICd1blByZWxvYWRQYWdlJyxcclxuICAnbG9hZFN1YlBhY2thZ2UnXHJcbiAgLy8gJ2NyZWF0ZUNhbWVyYUNvbnRleHQnLFxyXG4gIC8vICdjcmVhdGVMaXZlUGxheWVyQ29udGV4dCcsXHJcbiAgLy8gJ2dldFNhdmVkRmlsZUluZm8nLFxyXG4gIC8vICdjcmVhdGVNYXBDb250ZXh0JyxcclxuICAvLyAnb25NZW1vcnlXYXJuaW5nJyxcclxuICAvLyAnb25HeXJvc2NvcGVDaGFuZ2UnLFxyXG4gIC8vICdzdGFydEd5cm9zY29wZScsXHJcbiAgLy8gJ3N0b3BHeXJvc2NvcGUnLFxyXG4gIC8vICdzZXRTY3JlZW5CcmlnaHRuZXNzJyxcclxuICAvLyAnZ2V0U2NyZWVuQnJpZ2h0bmVzcycsXHJcbiAgLy8gJ2FkZFBob25lQ29udGFjdCcsXHJcbiAgLy8gJ29wZW5CbHVldG9vdGhBZGFwdGVyJyxcclxuICAvLyAnc3RhcnRCbHVldG9vdGhEZXZpY2VzRGlzY292ZXJ5JyxcclxuICAvLyAnb25CbHVldG9vdGhEZXZpY2VGb3VuZCcsXHJcbiAgLy8gJ3N0b3BCbHVldG9vdGhEZXZpY2VzRGlzY292ZXJ5JyxcclxuICAvLyAnb25CbHVldG9vdGhBZGFwdGVyU3RhdGVDaGFuZ2UnLFxyXG4gIC8vICdnZXRDb25uZWN0ZWRCbHVldG9vdGhEZXZpY2VzJyxcclxuICAvLyAnZ2V0Qmx1ZXRvb3RoRGV2aWNlcycsXHJcbiAgLy8gJ2dldEJsdWV0b290aEFkYXB0ZXJTdGF0ZScsXHJcbiAgLy8gJ2Nsb3NlQmx1ZXRvb3RoQWRhcHRlcicsXHJcbiAgLy8gJ3dyaXRlQkxFQ2hhcmFjdGVyaXN0aWNWYWx1ZScsXHJcbiAgLy8gJ3JlYWRCTEVDaGFyYWN0ZXJpc3RpY1ZhbHVlJyxcclxuICAvLyAnb25CTEVDb25uZWN0aW9uU3RhdGVDaGFuZ2UnLFxyXG4gIC8vICdvbkJMRUNoYXJhY3RlcmlzdGljVmFsdWVDaGFuZ2UnLFxyXG4gIC8vICdub3RpZnlCTEVDaGFyYWN0ZXJpc3RpY1ZhbHVlQ2hhbmdlJyxcclxuICAvLyAnZ2V0QkxFRGV2aWNlU2VydmljZXMnLFxyXG4gIC8vICdnZXRCTEVEZXZpY2VDaGFyYWN0ZXJpc3RpY3MnLFxyXG4gIC8vICdjcmVhdGVCTEVDb25uZWN0aW9uJyxcclxuICAvLyAnY2xvc2VCTEVDb25uZWN0aW9uJyxcclxuICAvLyAnb25CZWFjb25TZXJ2aWNlQ2hhbmdlJyxcclxuICAvLyAnb25CZWFjb25VcGRhdGUnLFxyXG4gIC8vICdnZXRCZWFjb25zJyxcclxuICAvLyAnc3RhcnRCZWFjb25EaXNjb3ZlcnknLFxyXG4gIC8vICdzdG9wQmVhY29uRGlzY292ZXJ5JyxcclxuICAvLyAnc2hvd05hdmlnYXRpb25CYXJMb2FkaW5nJyxcclxuICAvLyAnaGlkZU5hdmlnYXRpb25CYXJMb2FkaW5nJyxcclxuICAvLyAnc2V0VGFiQmFySXRlbScsXHJcbiAgLy8gJ3NldFRhYkJhclN0eWxlJyxcclxuICAvLyAnaGlkZVRhYkJhcicsXHJcbiAgLy8gJ3Nob3dUYWJCYXInLFxyXG4gIC8vICdzZXRUYWJCYXJCYWRnZScsXHJcbiAgLy8gJ3JlbW92ZVRhYkJhckJhZGdlJyxcclxuICAvLyAnc2hvd1RhYkJhclJlZERvdCcsXHJcbiAgLy8gJ2hpZGVUYWJCYXJSZWREb3QnLFxyXG4gIC8vICdzZXRCYWNrZ3JvdW5kQ29sb3InLFxyXG4gIC8vICdzZXRCYWNrZ3JvdW5kVGV4dFN0eWxlJyxcclxuICAvLyAnY2hvb3NlSW52b2ljZVRpdGxlJyxcclxuICAvLyAnYWRkVGVtcGxhdGUnLFxyXG4gIC8vICdkZWxldGVUZW1wbGF0ZScsXHJcbiAgLy8gJ2dldFRlbXBsYXRlTGlicmFyeUJ5SWQnLFxyXG4gIC8vICdnZXRUZW1wbGF0ZUxpYnJhcnlMaXN0JyxcclxuICAvLyAnZ2V0VGVtcGxhdGVMaXN0JyxcclxuICAvLyAnc2VuZFRlbXBsYXRlTWVzc2FnZScsXHJcbiAgLy8gJ3NldEVuYWJsZURlYnVnJyxcclxuICAvLyAnb25XaW5kb3dSZXNpemUnLFxyXG4gIC8vICdvZmZXaW5kb3dSZXNpemUnLFxyXG4gIC8vICdjcmVhdGVPZmZzY3JlZW5DYW52YXMnLFxyXG4gIC8vICd2aWJyYXRlJ1xyXG5dO1xyXG5cclxuLy8g5a2Y5Zyo5YW85a655oCn55qEIEFQSSDliJfooahcclxuLy8g5aS05p2h5bCP56iL5bqP6IeqMS4zNS4wK+aUr+aMgWNhbklVc2VzXHJcbmNvbnN0IGNhbklVc2VzID0gW1xyXG4gIC8vICdjcmVhdGVJbnRlcnNlY3Rpb25PYnNlcnZlcicsXHJcbiAgLy8gJ2dldFNhdmVkRmlsZUxpc3QnLFxyXG4gIC8vICdyZW1vdmVTYXZlZEZpbGUnLFxyXG4gIC8vICdoaWRlS2V5Ym9hcmQnLFxyXG4gIC8vICdnZXRJbWFnZUluZm8nLFxyXG4gIC8vICdjcmVhdGVWaWRlb0NvbnRleHQnLFxyXG4gIC8vICdvblNvY2tldE9wZW4nLFxyXG4gIC8vICdvblNvY2tldEVycm9yJyxcclxuICAvLyAnc2VuZFNvY2tldE1lc3NhZ2UnLFxyXG4gIC8vICdvblNvY2tldE1lc3NhZ2UnLFxyXG4gIC8vICdjbG9zZVNvY2tldCcsXHJcbiAgLy8gJ29uU29ja2V0Q2xvc2UnLFxyXG4gIC8vICdnZXRFeHRDb25maWcnLFxyXG4gIC8vICdnZXRFeHRDb25maWdTeW5jJyxcclxuICAvLyAnbmF2aWdhdGVUb01pbmlQcm9ncmFtJyxcclxuICAvLyAnbmF2aWdhdGVCYWNrTWluaVByb2dyYW0nLFxyXG4gIC8vICdjb21wcmVzc0ltYWdlJyxcclxuICAvLyAnY2hvb3NlTG9jYXRpb24nLFxyXG4gIC8vICdvcGVuRG9jdW1lbnQnLFxyXG4gIC8vICdvblVzZXJDYXB0dXJlU2NyZWVuJyxcclxuICAvLyAnZ2V0QmFja2dyb3VuZEF1ZGlvTWFuYWdlcicsXHJcbiAgLy8gJ3NldE5hdmlnYXRpb25CYXJDb2xvcicsXHJcbl07XHJcblxyXG4vLyDpnIDopoHlgZrovazmjaLnmoQgQVBJIOWIl+ihqFxyXG5jb25zdCBwcm90b2NvbHMgPSB7XHJcbiAgY2hvb3NlSW1hZ2U6IHtcclxuICAgIGFyZ3M6IHtcclxuICAgICAgc2l6ZVR5cGU6IGZhbHNlXHJcbiAgICB9XHJcbiAgfSxcclxuICBuYXZpZ2F0ZVRvLFxyXG4gIHJlZGlyZWN0VG8sXHJcbiAgcHJldmlld0ltYWdlLFxyXG4gIGdldFN5c3RlbUluZm8sXHJcbiAgZ2V0U3lzdGVtSW5mb1N5bmM6IGdldFN5c3RlbUluZm8sXHJcbiAgZ2V0VXNlclByb2ZpbGUsXHJcbiAgY29ubmVjdFNvY2tldDoge1xyXG4gICAgYXJnczoge1xyXG4gICAgICBtZXRob2Q6IGZhbHNlXHJcbiAgICB9XHJcbiAgfSxcclxuICBjaG9vc2VWaWRlbzoge1xyXG4gICAgYXJnczoge1xyXG4gICAgICBjYW1lcmE6IGZhbHNlXHJcbiAgICB9XHJcbiAgfSxcclxuICBzY2FuQ29kZToge1xyXG4gICAgYXJnczoge1xyXG4gICAgICBvbmx5RnJvbUNhbWVyYTogZmFsc2UsXHJcbiAgICAgIHNjYW5UeXBlOiBmYWxzZVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgc3RhcnRBY2NlbGVyb21ldGVyOiB7XHJcbiAgICBhcmdzOiB7XHJcbiAgICAgIGludGVydmFsOiBmYWxzZVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgc2hvd1RvYXN0OiB7XHJcbiAgICBhcmdzOiB7XHJcbiAgICAgIGltYWdlOiBmYWxzZSxcclxuICAgICAgbWFzazogZmFsc2VcclxuICAgIH1cclxuICB9LFxyXG4gIHNob3dMb2FkaW5nOiB7XHJcbiAgICBhcmdzOiB7XHJcbiAgICAgIG1hc2s6IGZhbHNlXHJcbiAgICB9XHJcbiAgfSxcclxuICBzaG93TW9kYWw6IHtcclxuICAgIGFyZ3M6IHtcclxuICAgICAgY2FuY2VsQ29sb3I6IGZhbHNlLFxyXG4gICAgICBjb25maXJtQ29sb3I6IGZhbHNlXHJcbiAgICB9XHJcbiAgfSxcclxuICBzaG93QWN0aW9uU2hlZXQ6IHtcclxuICAgIGFyZ3M6IHtcclxuICAgICAgaXRlbUNvbG9yOiBmYWxzZVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgbG9naW46IHtcclxuICAgIGFyZ3M6IHtcclxuICAgICAgc2NvcGVzOiBmYWxzZSxcclxuICAgICAgdGltZW91dDogZmFsc2VcclxuICAgIH1cclxuICB9LFxyXG4gIGdldFVzZXJJbmZvOiB7XHJcbiAgICBhcmdzOiB7XHJcbiAgICAgIGxhbmc6IGZhbHNlLFxyXG4gICAgICB0aW1lb3V0OiBmYWxzZVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgcmVxdWVzdFBheW1lbnQ6IHtcclxuICAgIG5hbWU6IHR0LnBheSA/ICdwYXknIDogJ3JlcXVlc3RQYXltZW50JyxcclxuICAgIGFyZ3M6IHtcclxuICAgICAgb3JkZXJJbmZvOiB0dC5wYXkgPyAnb3JkZXJJbmZvJyA6ICdkYXRhJ1xyXG4gICAgfVxyXG4gIH0sXHJcbiAgZ2V0RmlsZUluZm86IHtcclxuICAgIGFyZ3M6IHtcclxuICAgICAgZGlnZXN0QWxnb3JpdGhtOiBmYWxzZVxyXG4gICAgfVxyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IENBTExCQUNLUyA9IFsnc3VjY2VzcycsICdmYWlsJywgJ2NhbmNlbCcsICdjb21wbGV0ZSddO1xyXG5cclxuZnVuY3Rpb24gcHJvY2Vzc0NhbGxiYWNrIChtZXRob2ROYW1lLCBtZXRob2QsIHJldHVyblZhbHVlKSB7XHJcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXMpIHtcclxuICAgIHJldHVybiBtZXRob2QocHJvY2Vzc1JldHVyblZhbHVlKG1ldGhvZE5hbWUsIHJlcywgcmV0dXJuVmFsdWUpKVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gcHJvY2Vzc0FyZ3MgKG1ldGhvZE5hbWUsIGZyb21BcmdzLCBhcmdzT3B0aW9uID0ge30sIHJldHVyblZhbHVlID0ge30sIGtlZXBGcm9tQXJncyA9IGZhbHNlKSB7XHJcbiAgaWYgKGlzUGxhaW5PYmplY3QoZnJvbUFyZ3MpKSB7IC8vIOS4gOiIrCBhcGkg55qE5Y+C5pWw6Kej5p6QXHJcbiAgICBjb25zdCB0b0FyZ3MgPSBrZWVwRnJvbUFyZ3MgPT09IHRydWUgPyBmcm9tQXJncyA6IHt9OyAvLyByZXR1cm5WYWx1ZSDkuLogZmFsc2Ug5pe277yM6K+05piO5piv5qC85byP5YyW6L+U5Zue5YC877yM55u05o6l5Zyo6L+U5Zue5YC85a+56LGh5LiK5L+u5pS56LWL5YC8XHJcbiAgICBpZiAoaXNGbihhcmdzT3B0aW9uKSkge1xyXG4gICAgICBhcmdzT3B0aW9uID0gYXJnc09wdGlvbihmcm9tQXJncywgdG9BcmdzKSB8fCB7fTtcclxuICAgIH1cclxuICAgIGZvciAoY29uc3Qga2V5IGluIGZyb21BcmdzKSB7XHJcbiAgICAgIGlmIChoYXNPd24oYXJnc09wdGlvbiwga2V5KSkge1xyXG4gICAgICAgIGxldCBrZXlPcHRpb24gPSBhcmdzT3B0aW9uW2tleV07XHJcbiAgICAgICAgaWYgKGlzRm4oa2V5T3B0aW9uKSkge1xyXG4gICAgICAgICAga2V5T3B0aW9uID0ga2V5T3B0aW9uKGZyb21BcmdzW2tleV0sIGZyb21BcmdzLCB0b0FyZ3MpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWtleU9wdGlvbikgeyAvLyDkuI3mlK/mjIHnmoTlj4LmlbBcclxuICAgICAgICAgIGNvbnNvbGUud2FybihgVGhlICcke21ldGhvZE5hbWV9JyBtZXRob2Qgb2YgcGxhdGZvcm0gJ+WktOadoeWwj+eoi+W6jycgZG9lcyBub3Qgc3VwcG9ydCBvcHRpb24gJyR7a2V5fSdgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlzU3RyKGtleU9wdGlvbikpIHsgLy8g6YeN5YaZ5Y+C5pWwIGtleVxyXG4gICAgICAgICAgdG9BcmdzW2tleU9wdGlvbl0gPSBmcm9tQXJnc1trZXldO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChrZXlPcHRpb24pKSB7IC8vIHtuYW1lOm5ld05hbWUsdmFsdWU6dmFsdWV95Y+v6YeN5paw5oyH5a6a5Y+C5pWwIGtleTp2YWx1ZVxyXG4gICAgICAgICAgdG9BcmdzW2tleU9wdGlvbi5uYW1lID8ga2V5T3B0aW9uLm5hbWUgOiBrZXldID0ga2V5T3B0aW9uLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChDQUxMQkFDS1MuaW5kZXhPZihrZXkpICE9PSAtMSkge1xyXG4gICAgICAgIGlmIChpc0ZuKGZyb21BcmdzW2tleV0pKSB7XHJcbiAgICAgICAgICB0b0FyZ3Nba2V5XSA9IHByb2Nlc3NDYWxsYmFjayhtZXRob2ROYW1lLCBmcm9tQXJnc1trZXldLCByZXR1cm5WYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICgha2VlcEZyb21BcmdzKSB7XHJcbiAgICAgICAgICB0b0FyZ3Nba2V5XSA9IGZyb21BcmdzW2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG9BcmdzXHJcbiAgfSBlbHNlIGlmIChpc0ZuKGZyb21BcmdzKSkge1xyXG4gICAgZnJvbUFyZ3MgPSBwcm9jZXNzQ2FsbGJhY2sobWV0aG9kTmFtZSwgZnJvbUFyZ3MsIHJldHVyblZhbHVlKTtcclxuICB9XHJcbiAgcmV0dXJuIGZyb21BcmdzXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHByb2Nlc3NSZXR1cm5WYWx1ZSAobWV0aG9kTmFtZSwgcmVzLCByZXR1cm5WYWx1ZSwga2VlcFJldHVyblZhbHVlID0gZmFsc2UpIHtcclxuICBpZiAoaXNGbihwcm90b2NvbHMucmV0dXJuVmFsdWUpKSB7IC8vIOWkhOeQhumAmueUqCByZXR1cm5WYWx1ZVxyXG4gICAgcmVzID0gcHJvdG9jb2xzLnJldHVyblZhbHVlKG1ldGhvZE5hbWUsIHJlcyk7XHJcbiAgfVxyXG4gIHJldHVybiBwcm9jZXNzQXJncyhtZXRob2ROYW1lLCByZXMsIHJldHVyblZhbHVlLCB7fSwga2VlcFJldHVyblZhbHVlKVxyXG59XHJcblxyXG5mdW5jdGlvbiB3cmFwcGVyIChtZXRob2ROYW1lLCBtZXRob2QpIHtcclxuICBpZiAoaGFzT3duKHByb3RvY29scywgbWV0aG9kTmFtZSkpIHtcclxuICAgIGNvbnN0IHByb3RvY29sID0gcHJvdG9jb2xzW21ldGhvZE5hbWVdO1xyXG4gICAgaWYgKCFwcm90b2NvbCkgeyAvLyDmmoLkuI3mlK/mjIHnmoQgYXBpXHJcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihgUGxhdGZvcm0gJ+WktOadoeWwj+eoi+W6jycgZG9lcyBub3Qgc3VwcG9ydCAnJHttZXRob2ROYW1lfScuYCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmdW5jdGlvbiAoYXJnMSwgYXJnMikgeyAvLyDnm67liY0gYXBpIOacgOWkmuS4pOS4quWPguaVsFxyXG4gICAgICBsZXQgb3B0aW9ucyA9IHByb3RvY29sO1xyXG4gICAgICBpZiAoaXNGbihwcm90b2NvbCkpIHtcclxuICAgICAgICBvcHRpb25zID0gcHJvdG9jb2woYXJnMSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGFyZzEgPSBwcm9jZXNzQXJncyhtZXRob2ROYW1lLCBhcmcxLCBvcHRpb25zLmFyZ3MsIG9wdGlvbnMucmV0dXJuVmFsdWUpO1xyXG5cclxuICAgICAgY29uc3QgYXJncyA9IFthcmcxXTtcclxuICAgICAgaWYgKHR5cGVvZiBhcmcyICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgIGFyZ3MucHVzaChhcmcyKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXNGbihvcHRpb25zLm5hbWUpKSB7XHJcbiAgICAgICAgbWV0aG9kTmFtZSA9IG9wdGlvbnMubmFtZShhcmcxKTtcclxuICAgICAgfSBlbHNlIGlmIChpc1N0cihvcHRpb25zLm5hbWUpKSB7XHJcbiAgICAgICAgbWV0aG9kTmFtZSA9IG9wdGlvbnMubmFtZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCByZXR1cm5WYWx1ZSA9IHR0W21ldGhvZE5hbWVdLmFwcGx5KHR0LCBhcmdzKTtcclxuICAgICAgaWYgKGlzU3luY0FwaShtZXRob2ROYW1lKSkgeyAvLyDlkIzmraUgYXBpXHJcbiAgICAgICAgcmV0dXJuIHByb2Nlc3NSZXR1cm5WYWx1ZShtZXRob2ROYW1lLCByZXR1cm5WYWx1ZSwgb3B0aW9ucy5yZXR1cm5WYWx1ZSwgaXNDb250ZXh0QXBpKG1ldGhvZE5hbWUpKVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByZXR1cm5WYWx1ZVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gbWV0aG9kXHJcbn1cclxuXHJcbmNvbnN0IHRvZG9BcGlzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuXHJcbmNvbnN0IFRPRE9TID0gW1xyXG4gICdvblRhYkJhck1pZEJ1dHRvblRhcCcsXHJcbiAgJ3N1YnNjcmliZVB1c2gnLFxyXG4gICd1bnN1YnNjcmliZVB1c2gnLFxyXG4gICdvblB1c2gnLFxyXG4gICdvZmZQdXNoJyxcclxuICAnc2hhcmUnXHJcbl07XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVUb2RvQXBpIChuYW1lKSB7XHJcbiAgcmV0dXJuIGZ1bmN0aW9uIHRvZG9BcGkgKHtcclxuICAgIGZhaWwsXHJcbiAgICBjb21wbGV0ZVxyXG4gIH0pIHtcclxuICAgIGNvbnN0IHJlcyA9IHtcclxuICAgICAgZXJyTXNnOiBgJHtuYW1lfTpmYWlsIG1ldGhvZCAnJHtuYW1lfScgbm90IHN1cHBvcnRlZGBcclxuICAgIH07XHJcbiAgICBpc0ZuKGZhaWwpICYmIGZhaWwocmVzKTtcclxuICAgIGlzRm4oY29tcGxldGUpICYmIGNvbXBsZXRlKHJlcyk7XHJcbiAgfVxyXG59XHJcblxyXG5UT0RPUy5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XHJcbiAgdG9kb0FwaXNbbmFtZV0gPSBjcmVhdGVUb2RvQXBpKG5hbWUpO1xyXG59KTtcclxuXHJcbnZhciBwcm92aWRlcnMgPSB7XHJcbiAgb2F1dGg6IFsndG91dGlhbyddLFxyXG4gIHNoYXJlOiBbJ3RvdXRpYW8nXSxcclxuICBwYXltZW50OiBbJ3RvdXRpYW8nXSxcclxuICBwdXNoOiBbJ3RvdXRpYW8nXVxyXG59O1xyXG5cclxuZnVuY3Rpb24gZ2V0UHJvdmlkZXIgKHtcclxuICBzZXJ2aWNlLFxyXG4gIHN1Y2Nlc3MsXHJcbiAgZmFpbCxcclxuICBjb21wbGV0ZVxyXG59KSB7XHJcbiAgbGV0IHJlcyA9IGZhbHNlO1xyXG4gIGlmIChwcm92aWRlcnNbc2VydmljZV0pIHtcclxuICAgIHJlcyA9IHtcclxuICAgICAgZXJyTXNnOiAnZ2V0UHJvdmlkZXI6b2snLFxyXG4gICAgICBzZXJ2aWNlLFxyXG4gICAgICBwcm92aWRlcjogcHJvdmlkZXJzW3NlcnZpY2VdXHJcbiAgICB9O1xyXG4gICAgaXNGbihzdWNjZXNzKSAmJiBzdWNjZXNzKHJlcyk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJlcyA9IHtcclxuICAgICAgZXJyTXNnOiAnZ2V0UHJvdmlkZXI6ZmFpbCBzZXJ2aWNlIG5vdCBmb3VuZCdcclxuICAgIH07XHJcbiAgICBpc0ZuKGZhaWwpICYmIGZhaWwocmVzKTtcclxuICB9XHJcbiAgaXNGbihjb21wbGV0ZSkgJiYgY29tcGxldGUocmVzKTtcclxufVxyXG5cclxudmFyIGV4dHJhQXBpID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xyXG4gIF9fcHJvdG9fXzogbnVsbCxcclxuICBnZXRQcm92aWRlcjogZ2V0UHJvdmlkZXJcclxufSk7XHJcblxyXG5jb25zdCBnZXRFbWl0dGVyID0gKGZ1bmN0aW9uICgpIHtcclxuICBsZXQgRW1pdHRlcjtcclxuICByZXR1cm4gZnVuY3Rpb24gZ2V0VW5pRW1pdHRlciAoKSB7XHJcbiAgICBpZiAoIUVtaXR0ZXIpIHtcclxuICAgICAgRW1pdHRlciA9IG5ldyBWdWUoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBFbWl0dGVyXHJcbiAgfVxyXG59KSgpO1xyXG5cclxuZnVuY3Rpb24gYXBwbHkgKGN0eCwgbWV0aG9kLCBhcmdzKSB7XHJcbiAgcmV0dXJuIGN0eFttZXRob2RdLmFwcGx5KGN0eCwgYXJncylcclxufVxyXG5cclxuZnVuY3Rpb24gJG9uICgpIHtcclxuICByZXR1cm4gYXBwbHkoZ2V0RW1pdHRlcigpLCAnJG9uJywgWy4uLmFyZ3VtZW50c10pXHJcbn1cclxuZnVuY3Rpb24gJG9mZiAoKSB7XHJcbiAgcmV0dXJuIGFwcGx5KGdldEVtaXR0ZXIoKSwgJyRvZmYnLCBbLi4uYXJndW1lbnRzXSlcclxufVxyXG5mdW5jdGlvbiAkb25jZSAoKSB7XHJcbiAgcmV0dXJuIGFwcGx5KGdldEVtaXR0ZXIoKSwgJyRvbmNlJywgWy4uLmFyZ3VtZW50c10pXHJcbn1cclxuZnVuY3Rpb24gJGVtaXQgKCkge1xyXG4gIHJldHVybiBhcHBseShnZXRFbWl0dGVyKCksICckZW1pdCcsIFsuLi5hcmd1bWVudHNdKVxyXG59XHJcblxyXG52YXIgZXZlbnRBcGkgPSAvKiNfX1BVUkVfXyovT2JqZWN0LmZyZWV6ZSh7XHJcbiAgX19wcm90b19fOiBudWxsLFxyXG4gICRvbjogJG9uLFxyXG4gICRvZmY6ICRvZmYsXHJcbiAgJG9uY2U6ICRvbmNlLFxyXG4gICRlbWl0OiAkZW1pdFxyXG59KTtcclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZU1lZGlhUXVlcnlPYnNlcnZlciAoKSB7XHJcbiAgY29uc3QgbWVkaWFRdWVyeU9ic2VydmVyID0ge307XHJcbiAgY29uc3Qge1xyXG4gICAgd2luZG93V2lkdGgsXHJcbiAgICB3aW5kb3dIZWlnaHRcclxuICB9ID0gdHQuZ2V0U3lzdGVtSW5mb1N5bmMoKTtcclxuXHJcbiAgY29uc3Qgb3JpZW50YXRpb24gPSB3aW5kb3dXaWR0aCA8IHdpbmRvd0hlaWdodCA/ICdwb3J0cmFpdCcgOiAnbGFuZHNjYXBlJztcclxuXHJcbiAgbWVkaWFRdWVyeU9ic2VydmVyLm9ic2VydmUgPSAob3B0aW9ucywgY2FsbGJhY2spID0+IHtcclxuICAgIGxldCBtYXRjaGVzID0gdHJ1ZTtcclxuICAgIGZvciAoY29uc3QgaXRlbSBpbiBvcHRpb25zKSB7XHJcbiAgICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IGl0ZW0gPT09ICdvcmllbnRhdGlvbicgPyBvcHRpb25zW2l0ZW1dIDogTnVtYmVyKG9wdGlvbnNbaXRlbV0pO1xyXG4gICAgICBpZiAob3B0aW9uc1tpdGVtXSAhPT0gJycpIHtcclxuICAgICAgICBpZiAoaXRlbSA9PT0gJ3dpZHRoJykge1xyXG4gICAgICAgICAgaWYgKGl0ZW1WYWx1ZSA9PT0gd2luZG93V2lkdGgpIHtcclxuICAgICAgICAgICAgbWF0Y2hlcyA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtYXRjaGVzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKG1hdGNoZXMpO1xyXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlc1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbSA9PT0gJ21pbldpZHRoJykge1xyXG4gICAgICAgICAgaWYgKHdpbmRvd1dpZHRoID49IGl0ZW1WYWx1ZSkge1xyXG4gICAgICAgICAgICBtYXRjaGVzID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1hdGNoZXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgY2FsbGJhY2sobWF0Y2hlcyk7XHJcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVzXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtID09PSAnbWF4V2lkdGgnKSB7XHJcbiAgICAgICAgICBpZiAod2luZG93V2lkdGggPD0gaXRlbVZhbHVlKSB7XHJcbiAgICAgICAgICAgIG1hdGNoZXMgPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWF0Y2hlcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYWxsYmFjayhtYXRjaGVzKTtcclxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXNcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpdGVtID09PSAnaGVpZ2h0Jykge1xyXG4gICAgICAgICAgaWYgKGl0ZW1WYWx1ZSA9PT0gd2luZG93SGVpZ2h0KSB7XHJcbiAgICAgICAgICAgIG1hdGNoZXMgPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWF0Y2hlcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYWxsYmFjayhtYXRjaGVzKTtcclxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXNcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0gPT09ICdtaW5IZWlnaHQnKSB7XHJcbiAgICAgICAgICBpZiAod2luZG93SGVpZ2h0ID49IGl0ZW1WYWx1ZSkge1xyXG4gICAgICAgICAgICBtYXRjaGVzID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1hdGNoZXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgY2FsbGJhY2sobWF0Y2hlcyk7XHJcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVzXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtID09PSAnbWF4SGVpZ2h0Jykge1xyXG4gICAgICAgICAgaWYgKHdpbmRvd0hlaWdodCA8PSBpdGVtVmFsdWUpIHtcclxuICAgICAgICAgICAgbWF0Y2hlcyA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtYXRjaGVzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKG1hdGNoZXMpO1xyXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlc1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGl0ZW0gPT09ICdvcmllbnRhdGlvbicpIHtcclxuICAgICAgICAgIGlmIChvcHRpb25zW2l0ZW1dID09PSBvcmllbnRhdGlvbikge1xyXG4gICAgICAgICAgICBtYXRjaGVzID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1hdGNoZXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgY2FsbGJhY2sobWF0Y2hlcyk7XHJcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVzXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjYWxsYmFjayhtYXRjaGVzKTtcclxuXHJcbiAgICByZXR1cm4gbWF0Y2hlc1xyXG4gIH07XHJcblxyXG4gIG1lZGlhUXVlcnlPYnNlcnZlci5kaXNjb25uZWN0ID0gKCkgPT4ge1xyXG4gIH07XHJcblxyXG4gIHJldHVybiBtZWRpYVF1ZXJ5T2JzZXJ2ZXJcclxufVxyXG5cclxudmFyIGFwaSA9IC8qI19fUFVSRV9fKi9PYmplY3QuZnJlZXplKHtcclxuICBfX3Byb3RvX186IG51bGwsXHJcbiAgY3JlYXRlTWVkaWFRdWVyeU9ic2VydmVyOiBjcmVhdGVNZWRpYVF1ZXJ5T2JzZXJ2ZXJcclxufSk7XHJcblxyXG5jb25zdCBNUFBhZ2UgPSBQYWdlO1xyXG5jb25zdCBNUENvbXBvbmVudCA9IENvbXBvbmVudDtcclxuXHJcbmNvbnN0IGN1c3RvbWl6ZVJFID0gLzovZztcclxuXHJcbmNvbnN0IGN1c3RvbWl6ZSA9IGNhY2hlZCgoc3RyKSA9PiB7XHJcbiAgcmV0dXJuIGNhbWVsaXplKHN0ci5yZXBsYWNlKGN1c3RvbWl6ZVJFLCAnLScpKVxyXG59KTtcclxuXHJcbmZ1bmN0aW9uIGluaXRUcmlnZ2VyRXZlbnQgKG1wSW5zdGFuY2UpIHtcclxuICBjb25zdCBvbGRUcmlnZ2VyRXZlbnQgPSBtcEluc3RhbmNlLnRyaWdnZXJFdmVudDtcclxuICBjb25zdCBuZXdUcmlnZ2VyRXZlbnQgPSBmdW5jdGlvbiAoZXZlbnQsIC4uLmFyZ3MpIHtcclxuICAgIHJldHVybiBvbGRUcmlnZ2VyRXZlbnQuYXBwbHkobXBJbnN0YW5jZSwgW2N1c3RvbWl6ZShldmVudCksIC4uLmFyZ3NdKVxyXG4gIH07XHJcbiAgdHJ5IHtcclxuICAgIC8vIOS6rOS4nOWwj+eoi+W6jyB0cmlnZ2VyRXZlbnQg5Li65Y+q6K+7XHJcbiAgICBtcEluc3RhbmNlLnRyaWdnZXJFdmVudCA9IG5ld1RyaWdnZXJFdmVudDtcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgbXBJbnN0YW5jZS5fdHJpZ2dlckV2ZW50ID0gbmV3VHJpZ2dlckV2ZW50O1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaW5pdEhvb2sgKG5hbWUsIG9wdGlvbnMsIGlzQ29tcG9uZW50KSB7XHJcbiAge1xyXG4gICAgLy8gZml4IGJ5IEx4aCDlrZfoioLoh6rlrprkuYnnu4Tku7ZDb21wb25lbnTmnoTpgKDlmajmlofmoaPkuIrlhpnmnIljcmVhdGVk77yM5L2G5piv5a6e5rWL5Y+q6Kem5Y+R5LqGbGlmZXRpbWVz5LiK55qEY3JlYXRlZFxyXG4gICAgaXNDb21wb25lbnQgJiYgKG9wdGlvbnMgPSBvcHRpb25zLmxpZmV0aW1lcyk7XHJcbiAgfVxyXG4gIGNvbnN0IG9sZEhvb2sgPSBvcHRpb25zW25hbWVdO1xyXG4gIGlmICghb2xkSG9vaykge1xyXG4gICAgb3B0aW9uc1tuYW1lXSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgaW5pdFRyaWdnZXJFdmVudCh0aGlzKTtcclxuICAgIH07XHJcbiAgfSBlbHNlIHtcclxuICAgIG9wdGlvbnNbbmFtZV0gPSBmdW5jdGlvbiAoLi4uYXJncykge1xyXG4gICAgICBpbml0VHJpZ2dlckV2ZW50KHRoaXMpO1xyXG4gICAgICByZXR1cm4gb2xkSG9vay5hcHBseSh0aGlzLCBhcmdzKVxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuaWYgKCFNUFBhZ2UuX18kd3JhcHBlcmVkKSB7XHJcbiAgTVBQYWdlLl9fJHdyYXBwZXJlZCA9IHRydWU7XHJcbiAgUGFnZSA9IGZ1bmN0aW9uIChvcHRpb25zID0ge30pIHtcclxuICAgIGluaXRIb29rKCdvbkxvYWQnLCBvcHRpb25zKTtcclxuICAgIHJldHVybiBNUFBhZ2Uob3B0aW9ucylcclxuICB9O1xyXG4gIFBhZ2UuYWZ0ZXIgPSBNUFBhZ2UuYWZ0ZXI7XHJcblxyXG4gIENvbXBvbmVudCA9IGZ1bmN0aW9uIChvcHRpb25zID0ge30pIHtcclxuICAgIGluaXRIb29rKCdjcmVhdGVkJywgb3B0aW9ucywgdHJ1ZSk7XHJcbiAgICByZXR1cm4gTVBDb21wb25lbnQob3B0aW9ucylcclxuICB9O1xyXG59XHJcblxyXG5jb25zdCBQQUdFX0VWRU5UX0hPT0tTID0gW1xyXG4gICdvblB1bGxEb3duUmVmcmVzaCcsXHJcbiAgJ29uUmVhY2hCb3R0b20nLFxyXG4gICdvbkFkZFRvRmF2b3JpdGVzJyxcclxuICAnb25TaGFyZVRpbWVsaW5lJyxcclxuICAnb25TaGFyZUFwcE1lc3NhZ2UnLFxyXG4gICdvblBhZ2VTY3JvbGwnLFxyXG4gICdvblJlc2l6ZScsXHJcbiAgJ29uVGFiSXRlbVRhcCdcclxuXTtcclxuXHJcbmZ1bmN0aW9uIGluaXRNb2NrcyAodm0sIG1vY2tzKSB7XHJcbiAgY29uc3QgbXBJbnN0YW5jZSA9IHZtLiRtcFt2bS5tcFR5cGVdO1xyXG4gIG1vY2tzLmZvckVhY2gobW9jayA9PiB7XHJcbiAgICBpZiAoaGFzT3duKG1wSW5zdGFuY2UsIG1vY2spKSB7XHJcbiAgICAgIHZtW21vY2tdID0gbXBJbnN0YW5jZVttb2NrXTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gaGFzSG9vayAoaG9vaywgdnVlT3B0aW9ucykge1xyXG4gIGlmICghdnVlT3B0aW9ucykge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcblxyXG4gIGlmIChWdWUub3B0aW9ucyAmJiBBcnJheS5pc0FycmF5KFZ1ZS5vcHRpb25zW2hvb2tdKSkge1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcblxyXG4gIHZ1ZU9wdGlvbnMgPSB2dWVPcHRpb25zLmRlZmF1bHQgfHwgdnVlT3B0aW9ucztcclxuXHJcbiAgaWYgKGlzRm4odnVlT3B0aW9ucykpIHtcclxuICAgIGlmIChpc0ZuKHZ1ZU9wdGlvbnMuZXh0ZW5kT3B0aW9uc1tob29rXSkpIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIGlmICh2dWVPcHRpb25zLnN1cGVyICYmXHJcbiAgICAgIHZ1ZU9wdGlvbnMuc3VwZXIub3B0aW9ucyAmJlxyXG4gICAgICBBcnJheS5pc0FycmF5KHZ1ZU9wdGlvbnMuc3VwZXIub3B0aW9uc1tob29rXSkpIHtcclxuICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgaWYgKGlzRm4odnVlT3B0aW9uc1tob29rXSkpIHtcclxuICAgIHJldHVybiB0cnVlXHJcbiAgfVxyXG4gIGNvbnN0IG1peGlucyA9IHZ1ZU9wdGlvbnMubWl4aW5zO1xyXG4gIGlmIChBcnJheS5pc0FycmF5KG1peGlucykpIHtcclxuICAgIHJldHVybiAhIW1peGlucy5maW5kKG1peGluID0+IGhhc0hvb2soaG9vaywgbWl4aW4pKVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaW5pdEhvb2tzIChtcE9wdGlvbnMsIGhvb2tzLCB2dWVPcHRpb25zKSB7XHJcbiAgaG9va3MuZm9yRWFjaChob29rID0+IHtcclxuICAgIGlmIChoYXNIb29rKGhvb2ssIHZ1ZU9wdGlvbnMpKSB7XHJcbiAgICAgIG1wT3B0aW9uc1tob29rXSA9IGZ1bmN0aW9uIChhcmdzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJHZtICYmIHRoaXMuJHZtLl9fY2FsbF9ob29rKGhvb2ssIGFyZ3MpXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGluaXRWdWVDb21wb25lbnQgKFZ1ZSwgdnVlT3B0aW9ucykge1xyXG4gIHZ1ZU9wdGlvbnMgPSB2dWVPcHRpb25zLmRlZmF1bHQgfHwgdnVlT3B0aW9ucztcclxuICBsZXQgVnVlQ29tcG9uZW50O1xyXG4gIGlmIChpc0ZuKHZ1ZU9wdGlvbnMpKSB7XHJcbiAgICBWdWVDb21wb25lbnQgPSB2dWVPcHRpb25zO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBWdWVDb21wb25lbnQgPSBWdWUuZXh0ZW5kKHZ1ZU9wdGlvbnMpO1xyXG4gIH1cclxuICB2dWVPcHRpb25zID0gVnVlQ29tcG9uZW50Lm9wdGlvbnM7XHJcbiAgcmV0dXJuIFtWdWVDb21wb25lbnQsIHZ1ZU9wdGlvbnNdXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGluaXRTbG90cyAodm0sIHZ1ZVNsb3RzKSB7XHJcbiAgaWYgKEFycmF5LmlzQXJyYXkodnVlU2xvdHMpICYmIHZ1ZVNsb3RzLmxlbmd0aCkge1xyXG4gICAgY29uc3QgJHNsb3RzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgIHZ1ZVNsb3RzLmZvckVhY2goc2xvdE5hbWUgPT4ge1xyXG4gICAgICAkc2xvdHNbc2xvdE5hbWVdID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gICAgdm0uJHNjb3BlZFNsb3RzID0gdm0uJHNsb3RzID0gJHNsb3RzO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaW5pdFZ1ZUlkcyAodnVlSWRzLCBtcEluc3RhbmNlKSB7XHJcbiAgdnVlSWRzID0gKHZ1ZUlkcyB8fCAnJykuc3BsaXQoJywnKTtcclxuICBjb25zdCBsZW4gPSB2dWVJZHMubGVuZ3RoO1xyXG5cclxuICBpZiAobGVuID09PSAxKSB7XHJcbiAgICBtcEluc3RhbmNlLl8kdnVlSWQgPSB2dWVJZHNbMF07XHJcbiAgfSBlbHNlIGlmIChsZW4gPT09IDIpIHtcclxuICAgIG1wSW5zdGFuY2UuXyR2dWVJZCA9IHZ1ZUlkc1swXTtcclxuICAgIG1wSW5zdGFuY2UuXyR2dWVQaWQgPSB2dWVJZHNbMV07XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBpbml0RGF0YSAodnVlT3B0aW9ucywgY29udGV4dCkge1xyXG4gIGxldCBkYXRhID0gdnVlT3B0aW9ucy5kYXRhIHx8IHt9O1xyXG4gIGNvbnN0IG1ldGhvZHMgPSB2dWVPcHRpb25zLm1ldGhvZHMgfHwge307XHJcblxyXG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgZGF0YSA9IGRhdGEuY2FsbChjb250ZXh0KTsgLy8g5pSv5oyBIFZ1ZS5wcm90b3R5cGUg5LiK5oyC55qE5pWw5o2uXHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGlmIChwcm9jZXNzLmVudi5WVUVfQVBQX0RFQlVHKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKCfmoLnmja4gVnVlIOeahCBkYXRhIOWHveaVsOWIneWni+WMluWwj+eoi+W6jyBkYXRhIOWksei0pe+8jOivt+WwvemHj+ehruS/nSBkYXRhIOWHveaVsOS4reS4jeiuv+mXriB2bSDlr7nosaHvvIzlkKbliJnlj6/og73lvbHlk43pppbmrKHmlbDmja7muLLmn5PpgJ/luqbjgIInLCBkYXRhKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICB0cnkge1xyXG4gICAgICAvLyDlr7kgZGF0YSDmoLzlvI/ljJZcclxuICAgICAgZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgfSBjYXRjaCAoZSkge31cclxuICB9XHJcblxyXG4gIGlmICghaXNQbGFpbk9iamVjdChkYXRhKSkge1xyXG4gICAgZGF0YSA9IHt9O1xyXG4gIH1cclxuXHJcbiAgT2JqZWN0LmtleXMobWV0aG9kcykuZm9yRWFjaChtZXRob2ROYW1lID0+IHtcclxuICAgIGlmIChjb250ZXh0Ll9fbGlmZWN5Y2xlX2hvb2tzX18uaW5kZXhPZihtZXRob2ROYW1lKSA9PT0gLTEgJiYgIWhhc093bihkYXRhLCBtZXRob2ROYW1lKSkge1xyXG4gICAgICBkYXRhW21ldGhvZE5hbWVdID0gbWV0aG9kc1ttZXRob2ROYW1lXTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIGRhdGFcclxufVxyXG5cclxuY29uc3QgUFJPUF9UWVBFUyA9IFtTdHJpbmcsIE51bWJlciwgQm9vbGVhbiwgT2JqZWN0LCBBcnJheSwgbnVsbF07XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVPYnNlcnZlciAobmFtZSkge1xyXG4gIHJldHVybiBmdW5jdGlvbiBvYnNlcnZlciAobmV3VmFsLCBvbGRWYWwpIHtcclxuICAgIGlmICh0aGlzLiR2bSkge1xyXG4gICAgICB0aGlzLiR2bVtuYW1lXSA9IG5ld1ZhbDsgLy8g5Li65LqG6Kem5Y+R5YW25LuW6Z2eIHJlbmRlciB3YXRjaGVyXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBpbml0QmVoYXZpb3JzICh2dWVPcHRpb25zLCBpbml0QmVoYXZpb3IpIHtcclxuICBjb25zdCB2dWVCZWhhdmlvcnMgPSB2dWVPcHRpb25zLmJlaGF2aW9ycztcclxuICBjb25zdCB2dWVFeHRlbmRzID0gdnVlT3B0aW9ucy5leHRlbmRzO1xyXG4gIGNvbnN0IHZ1ZU1peGlucyA9IHZ1ZU9wdGlvbnMubWl4aW5zO1xyXG5cclxuICBsZXQgdnVlUHJvcHMgPSB2dWVPcHRpb25zLnByb3BzO1xyXG5cclxuICBpZiAoIXZ1ZVByb3BzKSB7XHJcbiAgICB2dWVPcHRpb25zLnByb3BzID0gdnVlUHJvcHMgPSBbXTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGJlaGF2aW9ycyA9IFtdO1xyXG4gIGlmIChBcnJheS5pc0FycmF5KHZ1ZUJlaGF2aW9ycykpIHtcclxuICAgIHZ1ZUJlaGF2aW9ycy5mb3JFYWNoKGJlaGF2aW9yID0+IHtcclxuICAgICAgYmVoYXZpb3JzLnB1c2goYmVoYXZpb3IucmVwbGFjZSgndW5pOi8vJywgYCR7XCJ0dFwifTovL2ApKTtcclxuICAgICAgaWYgKGJlaGF2aW9yID09PSAndW5pOi8vZm9ybS1maWVsZCcpIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2dWVQcm9wcykpIHtcclxuICAgICAgICAgIHZ1ZVByb3BzLnB1c2goJ25hbWUnKTtcclxuICAgICAgICAgIHZ1ZVByb3BzLnB1c2goJ3ZhbHVlJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZ1ZVByb3BzLm5hbWUgPSB7XHJcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICAgICAgZGVmYXVsdDogJydcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICB2dWVQcm9wcy52YWx1ZSA9IHtcclxuICAgICAgICAgICAgdHlwZTogW1N0cmluZywgTnVtYmVyLCBCb29sZWFuLCBBcnJheSwgT2JqZWN0LCBEYXRlXSxcclxuICAgICAgICAgICAgZGVmYXVsdDogJydcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgaWYgKGlzUGxhaW5PYmplY3QodnVlRXh0ZW5kcykgJiYgdnVlRXh0ZW5kcy5wcm9wcykge1xyXG4gICAgYmVoYXZpb3JzLnB1c2goXHJcbiAgICAgIGluaXRCZWhhdmlvcih7XHJcbiAgICAgICAgcHJvcGVydGllczogaW5pdFByb3BlcnRpZXModnVlRXh0ZW5kcy5wcm9wcywgdHJ1ZSlcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIGlmIChBcnJheS5pc0FycmF5KHZ1ZU1peGlucykpIHtcclxuICAgIHZ1ZU1peGlucy5mb3JFYWNoKHZ1ZU1peGluID0+IHtcclxuICAgICAgaWYgKGlzUGxhaW5PYmplY3QodnVlTWl4aW4pICYmIHZ1ZU1peGluLnByb3BzKSB7XHJcbiAgICAgICAgYmVoYXZpb3JzLnB1c2goXHJcbiAgICAgICAgICBpbml0QmVoYXZpb3Ioe1xyXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiBpbml0UHJvcGVydGllcyh2dWVNaXhpbi5wcm9wcywgdHJ1ZSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJldHVybiBiZWhhdmlvcnNcclxufVxyXG5cclxuZnVuY3Rpb24gcGFyc2VQcm9wVHlwZSAoa2V5LCB0eXBlLCBkZWZhdWx0VmFsdWUsIGZpbGUpIHtcclxuICAvLyBbU3RyaW5nXT0+U3RyaW5nXHJcbiAgaWYgKEFycmF5LmlzQXJyYXkodHlwZSkgJiYgdHlwZS5sZW5ndGggPT09IDEpIHtcclxuICAgIHJldHVybiB0eXBlWzBdXHJcbiAgfVxyXG4gIHJldHVybiB0eXBlXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGluaXRQcm9wZXJ0aWVzIChwcm9wcywgaXNCZWhhdmlvciA9IGZhbHNlLCBmaWxlID0gJycpIHtcclxuICBjb25zdCBwcm9wZXJ0aWVzID0ge307XHJcbiAgaWYgKCFpc0JlaGF2aW9yKSB7XHJcbiAgICBwcm9wZXJ0aWVzLnZ1ZUlkID0ge1xyXG4gICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgIHZhbHVlOiAnJ1xyXG4gICAgfTtcclxuICAgIC8vIOeUqOS6juWtl+iKgui3s+WKqOWwj+eoi+W6j+aooeaLn+aKveixoeiKgueCuVxyXG4gICAgcHJvcGVydGllcy5nZW5lcmljID0ge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIHZhbHVlOiBudWxsXHJcbiAgICB9O1xyXG4gICAgLy8gc2NvcGVkU2xvdHNDb21waWxlciBhdXRvXHJcbiAgICBwcm9wZXJ0aWVzLnNjb3BlZFNsb3RzQ29tcGlsZXIgPSB7XHJcbiAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgdmFsdWU6ICcnXHJcbiAgICB9O1xyXG4gICAgcHJvcGVydGllcy52dWVTbG90cyA9IHsgLy8g5bCP56iL5bqP5LiN6IO955u05o6l5a6a5LmJICRzbG90cyDnmoQgcHJvcHPvvIzmiYDku6XpgJrov4cgdnVlU2xvdHMg6L2s5o2i5YiwICRzbG90c1xyXG4gICAgICB0eXBlOiBudWxsLFxyXG4gICAgICB2YWx1ZTogW10sXHJcbiAgICAgIG9ic2VydmVyOiBmdW5jdGlvbiAobmV3VmFsLCBvbGRWYWwpIHtcclxuICAgICAgICBjb25zdCAkc2xvdHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gICAgICAgIG5ld1ZhbC5mb3JFYWNoKHNsb3ROYW1lID0+IHtcclxuICAgICAgICAgICRzbG90c1tzbG90TmFtZV0gPSB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICAkc2xvdHNcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcbiAgaWYgKEFycmF5LmlzQXJyYXkocHJvcHMpKSB7IC8vIFsndGl0bGUnXVxyXG4gICAgcHJvcHMuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICBwcm9wZXJ0aWVzW2tleV0gPSB7XHJcbiAgICAgICAgdHlwZTogbnVsbCxcclxuICAgICAgICBvYnNlcnZlcjogY3JlYXRlT2JzZXJ2ZXIoa2V5KVxyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHByb3BzKSkgeyAvLyB7dGl0bGU6e3R5cGU6U3RyaW5nLGRlZmF1bHQ6Jyd9LGNvbnRlbnQ6U3RyaW5nfVxyXG4gICAgT2JqZWN0LmtleXMocHJvcHMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgY29uc3Qgb3B0cyA9IHByb3BzW2tleV07XHJcbiAgICAgIGlmIChpc1BsYWluT2JqZWN0KG9wdHMpKSB7IC8vIHRpdGxlOnt0eXBlOlN0cmluZyxkZWZhdWx0OicnfVxyXG4gICAgICAgIGxldCB2YWx1ZSA9IG9wdHMuZGVmYXVsdDtcclxuICAgICAgICBpZiAoaXNGbih2YWx1ZSkpIHtcclxuICAgICAgICAgIHZhbHVlID0gdmFsdWUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG9wdHMudHlwZSA9IHBhcnNlUHJvcFR5cGUoa2V5LCBvcHRzLnR5cGUpO1xyXG5cclxuICAgICAgICBwcm9wZXJ0aWVzW2tleV0gPSB7XHJcbiAgICAgICAgICB0eXBlOiBQUk9QX1RZUEVTLmluZGV4T2Yob3B0cy50eXBlKSAhPT0gLTEgPyBvcHRzLnR5cGUgOiBudWxsLFxyXG4gICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICBvYnNlcnZlcjogY3JlYXRlT2JzZXJ2ZXIoa2V5KVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gZWxzZSB7IC8vIGNvbnRlbnQ6U3RyaW5nXHJcbiAgICAgICAgY29uc3QgdHlwZSA9IHBhcnNlUHJvcFR5cGUoa2V5LCBvcHRzKTtcclxuICAgICAgICBwcm9wZXJ0aWVzW2tleV0gPSB7XHJcbiAgICAgICAgICB0eXBlOiBQUk9QX1RZUEVTLmluZGV4T2YodHlwZSkgIT09IC0xID8gdHlwZSA6IG51bGwsXHJcbiAgICAgICAgICBvYnNlcnZlcjogY3JlYXRlT2JzZXJ2ZXIoa2V5KVxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICByZXR1cm4gcHJvcGVydGllc1xyXG59XHJcblxyXG5mdW5jdGlvbiB3cmFwcGVyJDEgKGV2ZW50KSB7XHJcbiAgLy8gVE9ETyDlj4jlvpflhbzlrrkgbXB2dWUg55qEIG1wIOWvueixoVxyXG4gIHRyeSB7XHJcbiAgICBldmVudC5tcCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZXZlbnQpKTtcclxuICB9IGNhdGNoIChlKSB7fVxyXG5cclxuICBldmVudC5zdG9wUHJvcGFnYXRpb24gPSBub29wO1xyXG4gIGV2ZW50LnByZXZlbnREZWZhdWx0ID0gbm9vcDtcclxuXHJcbiAgZXZlbnQudGFyZ2V0ID0gZXZlbnQudGFyZ2V0IHx8IHt9O1xyXG5cclxuICBpZiAoIWhhc093bihldmVudCwgJ2RldGFpbCcpKSB7XHJcbiAgICBldmVudC5kZXRhaWwgPSB7fTtcclxuICB9XHJcblxyXG4gIGlmIChoYXNPd24oZXZlbnQsICdtYXJrZXJJZCcpKSB7XHJcbiAgICBldmVudC5kZXRhaWwgPSB0eXBlb2YgZXZlbnQuZGV0YWlsID09PSAnb2JqZWN0JyA/IGV2ZW50LmRldGFpbCA6IHt9O1xyXG4gICAgZXZlbnQuZGV0YWlsLm1hcmtlcklkID0gZXZlbnQubWFya2VySWQ7XHJcbiAgfVxyXG5cclxuICBpZiAoaXNQbGFpbk9iamVjdChldmVudC5kZXRhaWwpKSB7XHJcbiAgICBldmVudC50YXJnZXQgPSBPYmplY3QuYXNzaWduKHt9LCBldmVudC50YXJnZXQsIGV2ZW50LmRldGFpbCk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gZXZlbnRcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0RXh0cmFWYWx1ZSAodm0sIGRhdGFQYXRoc0FycmF5KSB7XHJcbiAgbGV0IGNvbnRleHQgPSB2bTtcclxuICBkYXRhUGF0aHNBcnJheS5mb3JFYWNoKGRhdGFQYXRoQXJyYXkgPT4ge1xyXG4gICAgY29uc3QgZGF0YVBhdGggPSBkYXRhUGF0aEFycmF5WzBdO1xyXG4gICAgY29uc3QgdmFsdWUgPSBkYXRhUGF0aEFycmF5WzJdO1xyXG4gICAgaWYgKGRhdGFQYXRoIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHsgLy8gWycnLCcnLGluZGV4LCdkaXNhYmxlJ11cclxuICAgICAgY29uc3QgcHJvcFBhdGggPSBkYXRhUGF0aEFycmF5WzFdO1xyXG4gICAgICBjb25zdCB2YWx1ZVBhdGggPSBkYXRhUGF0aEFycmF5WzNdO1xyXG5cclxuICAgICAgbGV0IHZGb3I7XHJcbiAgICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKGRhdGFQYXRoKSkge1xyXG4gICAgICAgIHZGb3IgPSBkYXRhUGF0aDtcclxuICAgICAgfSBlbHNlIGlmICghZGF0YVBhdGgpIHtcclxuICAgICAgICB2Rm9yID0gY29udGV4dDtcclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZGF0YVBhdGggPT09ICdzdHJpbmcnICYmIGRhdGFQYXRoKSB7XHJcbiAgICAgICAgaWYgKGRhdGFQYXRoLmluZGV4T2YoJyNzIycpID09PSAwKSB7XHJcbiAgICAgICAgICB2Rm9yID0gZGF0YVBhdGguc3Vic3RyKDMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2Rm9yID0gdm0uX19nZXRfdmFsdWUoZGF0YVBhdGgsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIodkZvcikpIHtcclxuICAgICAgICBjb250ZXh0ID0gdmFsdWU7XHJcbiAgICAgIH0gZWxzZSBpZiAoIXByb3BQYXRoKSB7XHJcbiAgICAgICAgY29udGV4dCA9IHZGb3JbdmFsdWVdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZGb3IpKSB7XHJcbiAgICAgICAgICBjb250ZXh0ID0gdkZvci5maW5kKHZGb3JJdGVtID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHZtLl9fZ2V0X3ZhbHVlKHByb3BQYXRoLCB2Rm9ySXRlbSkgPT09IHZhbHVlXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QodkZvcikpIHtcclxuICAgICAgICAgIGNvbnRleHQgPSBPYmplY3Qua2V5cyh2Rm9yKS5maW5kKHZGb3JLZXkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdm0uX19nZXRfdmFsdWUocHJvcFBhdGgsIHZGb3JbdkZvcktleV0pID09PSB2YWx1ZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3YtZm9yIOaaguS4jeaUr+aMgeW+queOr+aVsOaNru+8micsIHZGb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHZhbHVlUGF0aCkge1xyXG4gICAgICAgIGNvbnRleHQgPSB2bS5fX2dldF92YWx1ZSh2YWx1ZVBhdGgsIGNvbnRleHQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGNvbnRleHRcclxufVxyXG5cclxuZnVuY3Rpb24gcHJvY2Vzc0V2ZW50RXh0cmEgKHZtLCBleHRyYSwgZXZlbnQpIHtcclxuICBjb25zdCBleHRyYU9iaiA9IHt9O1xyXG5cclxuICBpZiAoQXJyYXkuaXNBcnJheShleHRyYSkgJiYgZXh0cmEubGVuZ3RoKSB7XHJcbiAgICAvKipcclxuICAgICAqW1xyXG4gICAgICogICAgWydkYXRhLml0ZW1zJywgJ2RhdGEuaWQnLCBpdGVtLmRhdGEuaWRdLFxyXG4gICAgICogICAgWydtZXRhcycsICdpZCcsIG1ldGEuaWRdXHJcbiAgICAgKl0sXHJcbiAgICAgKltcclxuICAgICAqICAgIFsnZGF0YS5pdGVtcycsICdkYXRhLmlkJywgaXRlbS5kYXRhLmlkXSxcclxuICAgICAqICAgIFsnbWV0YXMnLCAnaWQnLCBtZXRhLmlkXVxyXG4gICAgICpdLFxyXG4gICAgICondGVzdCdcclxuICAgICAqL1xyXG4gICAgZXh0cmEuZm9yRWFjaCgoZGF0YVBhdGgsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmICh0eXBlb2YgZGF0YVBhdGggPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgaWYgKCFkYXRhUGF0aCkgeyAvLyBtb2RlbCxwcm9wLnN5bmNcclxuICAgICAgICAgIGV4dHJhT2JqWyckJyArIGluZGV4XSA9IHZtO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoZGF0YVBhdGggPT09ICckZXZlbnQnKSB7IC8vICRldmVudFxyXG4gICAgICAgICAgICBleHRyYU9ialsnJCcgKyBpbmRleF0gPSBldmVudDtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YVBhdGggPT09ICdhcmd1bWVudHMnKSB7XHJcbiAgICAgICAgICAgIGlmIChldmVudC5kZXRhaWwgJiYgZXZlbnQuZGV0YWlsLl9fYXJnc19fKSB7XHJcbiAgICAgICAgICAgICAgZXh0cmFPYmpbJyQnICsgaW5kZXhdID0gZXZlbnQuZGV0YWlsLl9fYXJnc19fO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGV4dHJhT2JqWyckJyArIGluZGV4XSA9IFtldmVudF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YVBhdGguaW5kZXhPZignJGV2ZW50LicpID09PSAwKSB7IC8vICRldmVudC50YXJnZXQudmFsdWVcclxuICAgICAgICAgICAgZXh0cmFPYmpbJyQnICsgaW5kZXhdID0gdm0uX19nZXRfdmFsdWUoZGF0YVBhdGgucmVwbGFjZSgnJGV2ZW50LicsICcnKSwgZXZlbnQpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZXh0cmFPYmpbJyQnICsgaW5kZXhdID0gdm0uX19nZXRfdmFsdWUoZGF0YVBhdGgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBleHRyYU9ialsnJCcgKyBpbmRleF0gPSBnZXRFeHRyYVZhbHVlKHZtLCBkYXRhUGF0aCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGV4dHJhT2JqXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldE9iakJ5QXJyYXkgKGFycikge1xyXG4gIGNvbnN0IG9iaiA9IHt9O1xyXG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyW2ldO1xyXG4gICAgb2JqW2VsZW1lbnRbMF1dID0gZWxlbWVudFsxXTtcclxuICB9XHJcbiAgcmV0dXJuIG9ialxyXG59XHJcblxyXG5mdW5jdGlvbiBwcm9jZXNzRXZlbnRBcmdzICh2bSwgZXZlbnQsIGFyZ3MgPSBbXSwgZXh0cmEgPSBbXSwgaXNDdXN0b20sIG1ldGhvZE5hbWUpIHtcclxuICBsZXQgaXNDdXN0b21NUEV2ZW50ID0gZmFsc2U7IC8vIHd4Y29tcG9uZW50IOe7hOS7tu+8jOS8oOmAkuWOn+WniyBldmVudCDlr7nosaFcclxuICBpZiAoaXNDdXN0b20pIHsgLy8g6Ieq5a6a5LmJ5LqL5Lu2XHJcbiAgICBpc0N1c3RvbU1QRXZlbnQgPSBldmVudC5jdXJyZW50VGFyZ2V0ICYmXHJcbiAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuZGF0YXNldCAmJlxyXG4gICAgICBldmVudC5jdXJyZW50VGFyZ2V0LmRhdGFzZXQuY29tVHlwZSA9PT0gJ3d4JztcclxuICAgIGlmICghYXJncy5sZW5ndGgpIHsgLy8g5peg5Y+C5pWw77yM55u05o6l5Lyg5YWlIGV2ZW50IOaIliBkZXRhaWwg5pWw57uEXHJcbiAgICAgIGlmIChpc0N1c3RvbU1QRXZlbnQpIHtcclxuICAgICAgICByZXR1cm4gW2V2ZW50XVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBldmVudC5kZXRhaWwuX19hcmdzX18gfHwgZXZlbnQuZGV0YWlsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdCBleHRyYU9iaiA9IHByb2Nlc3NFdmVudEV4dHJhKHZtLCBleHRyYSwgZXZlbnQpO1xyXG5cclxuICBjb25zdCByZXQgPSBbXTtcclxuICBhcmdzLmZvckVhY2goYXJnID0+IHtcclxuICAgIGlmIChhcmcgPT09ICckZXZlbnQnKSB7XHJcbiAgICAgIGlmIChtZXRob2ROYW1lID09PSAnX19zZXRfbW9kZWwnICYmICFpc0N1c3RvbSkgeyAvLyBpbnB1dCB2LW1vZGVsIHZhbHVlXHJcbiAgICAgICAgcmV0LnB1c2goZXZlbnQudGFyZ2V0LnZhbHVlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoaXNDdXN0b20gJiYgIWlzQ3VzdG9tTVBFdmVudCkge1xyXG4gICAgICAgICAgcmV0LnB1c2goZXZlbnQuZGV0YWlsLl9fYXJnc19fWzBdKTtcclxuICAgICAgICB9IGVsc2UgeyAvLyB3eGNvbXBvbmVudCDnu4Tku7bmiJblhoXnva7nu4Tku7ZcclxuICAgICAgICAgIHJldC5wdXNoKGV2ZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGFyZykgJiYgYXJnWzBdID09PSAnbycpIHtcclxuICAgICAgICByZXQucHVzaChnZXRPYmpCeUFycmF5KGFyZykpO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnICYmIGhhc093bihleHRyYU9iaiwgYXJnKSkge1xyXG4gICAgICAgIHJldC5wdXNoKGV4dHJhT2JqW2FyZ10pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldC5wdXNoKGFyZyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIHJldFxyXG59XHJcblxyXG5jb25zdCBPTkNFID0gJ34nO1xyXG5jb25zdCBDVVNUT00gPSAnXic7XHJcblxyXG5mdW5jdGlvbiBpc01hdGNoRXZlbnRUeXBlIChldmVudFR5cGUsIG9wdFR5cGUpIHtcclxuICByZXR1cm4gKGV2ZW50VHlwZSA9PT0gb3B0VHlwZSkgfHxcclxuICAgIChcclxuICAgICAgb3B0VHlwZSA9PT0gJ3JlZ2lvbmNoYW5nZScgJiZcclxuICAgICAgKFxyXG4gICAgICAgIGV2ZW50VHlwZSA9PT0gJ2JlZ2luJyB8fFxyXG4gICAgICAgIGV2ZW50VHlwZSA9PT0gJ2VuZCdcclxuICAgICAgKVxyXG4gICAgKVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRDb250ZXh0Vm0gKHZtKSB7XHJcbiAgbGV0ICRwYXJlbnQgPSB2bS4kcGFyZW50O1xyXG4gIC8vIOeItue7hOS7tuaYryBzY29wZWQgc2xvdHMg5oiW6ICF5YW25LuW6Ieq5a6a5LmJ57uE5Lu25pe257un57ut5p+l5om+XHJcbiAgd2hpbGUgKCRwYXJlbnQgJiYgJHBhcmVudC4kcGFyZW50ICYmICgkcGFyZW50LiRvcHRpb25zLmdlbmVyaWMgfHwgJHBhcmVudC4kcGFyZW50LiRvcHRpb25zLmdlbmVyaWMgfHwgJHBhcmVudC4kc2NvcGUuXyR2dWVQaWQpKSB7XHJcbiAgICAkcGFyZW50ID0gJHBhcmVudC4kcGFyZW50O1xyXG4gIH1cclxuICByZXR1cm4gJHBhcmVudCAmJiAkcGFyZW50LiRwYXJlbnRcclxufVxyXG5cclxuZnVuY3Rpb24gaGFuZGxlRXZlbnQgKGV2ZW50KSB7XHJcbiAgZXZlbnQgPSB3cmFwcGVyJDEoZXZlbnQpO1xyXG5cclxuICAvLyBbWyd0YXAnLFtbJ2hhbmRsZScsWzEsMixhXV0sWydoYW5kbGUxJyxbMSwyLGFdXV1dXVxyXG4gIGNvbnN0IGRhdGFzZXQgPSAoZXZlbnQuY3VycmVudFRhcmdldCB8fCBldmVudC50YXJnZXQpLmRhdGFzZXQ7XHJcbiAgaWYgKCFkYXRhc2V0KSB7XHJcbiAgICByZXR1cm4gY29uc29sZS53YXJuKCfkuovku7bkv6Hmga/kuI3lrZjlnKgnKVxyXG4gIH1cclxuICBjb25zdCBldmVudE9wdHMgPSBkYXRhc2V0LmV2ZW50T3B0cyB8fCBkYXRhc2V0WydldmVudC1vcHRzJ107IC8vIOaUr+S7mOWunSB3ZWItdmlldyDnu4Tku7YgZGF0YXNldCDpnZ7pqbzls7BcclxuICBpZiAoIWV2ZW50T3B0cykge1xyXG4gICAgcmV0dXJuIGNvbnNvbGUud2Fybign5LqL5Lu25L+h5oGv5LiN5a2Y5ZyoJylcclxuICB9XHJcblxyXG4gIC8vIFtbJ2hhbmRsZScsWzEsMixhXV0sWydoYW5kbGUxJyxbMSwyLGFdXV1cclxuICBjb25zdCBldmVudFR5cGUgPSBldmVudC50eXBlO1xyXG5cclxuICBjb25zdCByZXQgPSBbXTtcclxuXHJcbiAgZXZlbnRPcHRzLmZvckVhY2goZXZlbnRPcHQgPT4ge1xyXG4gICAgbGV0IHR5cGUgPSBldmVudE9wdFswXTtcclxuICAgIGNvbnN0IGV2ZW50c0FycmF5ID0gZXZlbnRPcHRbMV07XHJcblxyXG4gICAgY29uc3QgaXNDdXN0b20gPSB0eXBlLmNoYXJBdCgwKSA9PT0gQ1VTVE9NO1xyXG4gICAgdHlwZSA9IGlzQ3VzdG9tID8gdHlwZS5zbGljZSgxKSA6IHR5cGU7XHJcbiAgICBjb25zdCBpc09uY2UgPSB0eXBlLmNoYXJBdCgwKSA9PT0gT05DRTtcclxuICAgIHR5cGUgPSBpc09uY2UgPyB0eXBlLnNsaWNlKDEpIDogdHlwZTtcclxuXHJcbiAgICBpZiAoZXZlbnRzQXJyYXkgJiYgaXNNYXRjaEV2ZW50VHlwZShldmVudFR5cGUsIHR5cGUpKSB7XHJcbiAgICAgIGV2ZW50c0FycmF5LmZvckVhY2goZXZlbnRBcnJheSA9PiB7XHJcbiAgICAgICAgY29uc3QgbWV0aG9kTmFtZSA9IGV2ZW50QXJyYXlbMF07XHJcbiAgICAgICAgaWYgKG1ldGhvZE5hbWUpIHtcclxuICAgICAgICAgIGxldCBoYW5kbGVyQ3R4ID0gdGhpcy4kdm07XHJcbiAgICAgICAgICBpZiAoaGFuZGxlckN0eC4kb3B0aW9ucy5nZW5lcmljKSB7IC8vIG1wLXdlaXhpbixtcC10b3V0aWFvIOaKveixoeiKgueCueaooeaLnyBzY29wZWQgc2xvdHNcclxuICAgICAgICAgICAgaGFuZGxlckN0eCA9IGdldENvbnRleHRWbShoYW5kbGVyQ3R4KSB8fCBoYW5kbGVyQ3R4O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKG1ldGhvZE5hbWUgPT09ICckZW1pdCcpIHtcclxuICAgICAgICAgICAgaGFuZGxlckN0eC4kZW1pdC5hcHBseShoYW5kbGVyQ3R4LFxyXG4gICAgICAgICAgICAgIHByb2Nlc3NFdmVudEFyZ3MoXHJcbiAgICAgICAgICAgICAgICB0aGlzLiR2bSxcclxuICAgICAgICAgICAgICAgIGV2ZW50LFxyXG4gICAgICAgICAgICAgICAgZXZlbnRBcnJheVsxXSxcclxuICAgICAgICAgICAgICAgIGV2ZW50QXJyYXlbMl0sXHJcbiAgICAgICAgICAgICAgICBpc0N1c3RvbSxcclxuICAgICAgICAgICAgICAgIG1ldGhvZE5hbWVcclxuICAgICAgICAgICAgICApKTtcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBoYW5kbGVyID0gaGFuZGxlckN0eFttZXRob2ROYW1lXTtcclxuICAgICAgICAgIGlmICghaXNGbihoYW5kbGVyKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCBfdm0uJHttZXRob2ROYW1lfSBpcyBub3QgYSBmdW5jdGlvbmApXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaXNPbmNlKSB7XHJcbiAgICAgICAgICAgIGlmIChoYW5kbGVyLm9uY2UpIHtcclxuICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBoYW5kbGVyLm9uY2UgPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IHBhcmFtcyA9IHByb2Nlc3NFdmVudEFyZ3MoXHJcbiAgICAgICAgICAgIHRoaXMuJHZtLFxyXG4gICAgICAgICAgICBldmVudCxcclxuICAgICAgICAgICAgZXZlbnRBcnJheVsxXSxcclxuICAgICAgICAgICAgZXZlbnRBcnJheVsyXSxcclxuICAgICAgICAgICAgaXNDdXN0b20sXHJcbiAgICAgICAgICAgIG1ldGhvZE5hbWVcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBwYXJhbXMgPSBBcnJheS5pc0FycmF5KHBhcmFtcykgPyBwYXJhbXMgOiBbXTtcclxuICAgICAgICAgIC8vIOWPguaVsOWwvumDqOWinuWKoOWOn+Wni+S6i+S7tuWvueixoeeUqOS6juWkjeadguihqOi+vuW8j+WGheiOt+WPlumineWkluaVsOaNrlxyXG4gICAgICAgICAgaWYgKC89XFxzKlxcUytcXC5ldmVudFBhcmFtc1xccypcXHxcXHxcXHMqXFxTK1xcW1snXCJdZXZlbnQtcGFyYW1zWydcIl1cXF0vLnRlc3QoaGFuZGxlci50b1N0cmluZygpKSkge1xyXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc3BhcnNlLWFycmF5c1xyXG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuY29uY2F0KFssICwgLCAsICwgLCAsICwgLCAsIGV2ZW50XSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXQucHVzaChoYW5kbGVyLmFwcGx5KGhhbmRsZXJDdHgsIHBhcmFtcykpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIGlmIChcclxuICAgIGV2ZW50VHlwZSA9PT0gJ2lucHV0JyAmJlxyXG4gICAgcmV0Lmxlbmd0aCA9PT0gMSAmJlxyXG4gICAgdHlwZW9mIHJldFswXSAhPT0gJ3VuZGVmaW5lZCdcclxuICApIHtcclxuICAgIHJldHVybiByZXRbMF1cclxuICB9XHJcbn1cclxuXHJcbmNvbnN0IG1lc3NhZ2VzID0ge307XHJcblxyXG5sZXQgbG9jYWxlO1xyXG5cclxue1xyXG4gIGxvY2FsZSA9IHR0LmdldFN5c3RlbUluZm9TeW5jKCkubGFuZ3VhZ2U7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGluaXRJMThuTWVzc2FnZXMgKCkge1xyXG4gIGlmICghaXNFbmFibGVMb2NhbGUoKSkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIGNvbnN0IGxvY2FsZUtleXMgPSBPYmplY3Qua2V5cyhfX3VuaUNvbmZpZy5sb2NhbGVzKTtcclxuICBpZiAobG9jYWxlS2V5cy5sZW5ndGgpIHtcclxuICAgIGxvY2FsZUtleXMuZm9yRWFjaCgobG9jYWxlKSA9PiB7XHJcbiAgICAgIGNvbnN0IGN1ck1lc3NhZ2VzID0gbWVzc2FnZXNbbG9jYWxlXTtcclxuICAgICAgY29uc3QgdXNlck1lc3NhZ2VzID0gX191bmlDb25maWcubG9jYWxlc1tsb2NhbGVdO1xyXG4gICAgICBpZiAoY3VyTWVzc2FnZXMpIHtcclxuICAgICAgICBPYmplY3QuYXNzaWduKGN1ck1lc3NhZ2VzLCB1c2VyTWVzc2FnZXMpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1lc3NhZ2VzW2xvY2FsZV0gPSB1c2VyTWVzc2FnZXM7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuaW5pdEkxOG5NZXNzYWdlcygpO1xyXG5cclxuY29uc3QgaTE4biA9IGluaXRWdWVJMThuKFxyXG4gIGxvY2FsZSxcclxuICAge31cclxuKTtcclxuY29uc3QgdCA9IGkxOG4udDtcclxuY29uc3QgaTE4bk1peGluID0gKGkxOG4ubWl4aW4gPSB7XHJcbiAgYmVmb3JlQ3JlYXRlICgpIHtcclxuICAgIGNvbnN0IHVud2F0Y2ggPSBpMThuLmkxOG4ud2F0Y2hMb2NhbGUoKCkgPT4ge1xyXG4gICAgICB0aGlzLiRmb3JjZVVwZGF0ZSgpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLiRvbmNlKCdob29rOmJlZm9yZURlc3Ryb3knLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHVud2F0Y2goKTtcclxuICAgIH0pO1xyXG4gIH0sXHJcbiAgbWV0aG9kczoge1xyXG4gICAgJCR0IChrZXksIHZhbHVlcykge1xyXG4gICAgICByZXR1cm4gdChrZXksIHZhbHVlcylcclxuICAgIH1cclxuICB9XHJcbn0pO1xyXG5jb25zdCBzZXRMb2NhbGUkMSA9IGkxOG4uc2V0TG9jYWxlO1xyXG5jb25zdCBnZXRMb2NhbGUkMSA9IGkxOG4uZ2V0TG9jYWxlO1xyXG5cclxuZnVuY3Rpb24gaW5pdEFwcExvY2FsZSAoVnVlLCBhcHBWbSwgbG9jYWxlKSB7XHJcbiAgY29uc3Qgc3RhdGUgPSBWdWUub2JzZXJ2YWJsZSh7XHJcbiAgICBsb2NhbGU6IGxvY2FsZSB8fCBpMThuLmdldExvY2FsZSgpXHJcbiAgfSk7XHJcbiAgY29uc3QgbG9jYWxlV2F0Y2hlcnMgPSBbXTtcclxuICBhcHBWbS4kd2F0Y2hMb2NhbGUgPSBmbiA9PiB7XHJcbiAgICBsb2NhbGVXYXRjaGVycy5wdXNoKGZuKTtcclxuICB9O1xyXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhcHBWbSwgJyRsb2NhbGUnLCB7XHJcbiAgICBnZXQgKCkge1xyXG4gICAgICByZXR1cm4gc3RhdGUubG9jYWxlXHJcbiAgICB9LFxyXG4gICAgc2V0ICh2KSB7XHJcbiAgICAgIHN0YXRlLmxvY2FsZSA9IHY7XHJcbiAgICAgIGxvY2FsZVdhdGNoZXJzLmZvckVhY2god2F0Y2ggPT4gd2F0Y2godikpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0VuYWJsZUxvY2FsZSAoKSB7XHJcbiAgcmV0dXJuIHR5cGVvZiBfX3VuaUNvbmZpZyAhPT0gJ3VuZGVmaW5lZCcgJiYgX191bmlDb25maWcubG9jYWxlcyAmJiAhIU9iamVjdC5rZXlzKF9fdW5pQ29uZmlnLmxvY2FsZXMpLmxlbmd0aFxyXG59XHJcblxyXG4vLyBleHBvcnQgZnVuY3Rpb24gaW5pdEkxOG4oKSB7XHJcbi8vICAgY29uc3QgbG9jYWxlS2V5cyA9IE9iamVjdC5rZXlzKF9fdW5pQ29uZmlnLmxvY2FsZXMgfHwge30pXHJcbi8vICAgaWYgKGxvY2FsZUtleXMubGVuZ3RoKSB7XHJcbi8vICAgICBsb2NhbGVLZXlzLmZvckVhY2goKGxvY2FsZSkgPT5cclxuLy8gICAgICAgaTE4bi5hZGQobG9jYWxlLCBfX3VuaUNvbmZpZy5sb2NhbGVzW2xvY2FsZV0pXHJcbi8vICAgICApXHJcbi8vICAgfVxyXG4vLyB9XHJcblxyXG5jb25zdCBob29rcyA9IFtcclxuICAnb25TaG93JyxcclxuICAnb25IaWRlJyxcclxuICAnb25FcnJvcicsXHJcbiAgJ29uUGFnZU5vdEZvdW5kJyxcclxuICAnb25UaGVtZUNoYW5nZScsXHJcbiAgJ29uVW5oYW5kbGVkUmVqZWN0aW9uJ1xyXG5dO1xyXG5cclxuZnVuY3Rpb24gaW5pdEV2ZW50Q2hhbm5lbCQxICgpIHtcclxuICBWdWUucHJvdG90eXBlLmdldE9wZW5lckV2ZW50Q2hhbm5lbCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIGlmICghdGhpcy5fX2V2ZW50Q2hhbm5lbF9fKSB7XHJcbiAgICAgIHRoaXMuX19ldmVudENoYW5uZWxfXyA9IG5ldyBFdmVudENoYW5uZWwoKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLl9fZXZlbnRDaGFubmVsX19cclxuICB9O1xyXG4gIGNvbnN0IGNhbGxIb29rID0gVnVlLnByb3RvdHlwZS5fX2NhbGxfaG9vaztcclxuICBWdWUucHJvdG90eXBlLl9fY2FsbF9ob29rID0gZnVuY3Rpb24gKGhvb2ssIGFyZ3MpIHtcclxuICAgIGlmIChob29rID09PSAnb25Mb2FkJyAmJiBhcmdzICYmIGFyZ3MuX19pZF9fKSB7XHJcbiAgICAgIHRoaXMuX19ldmVudENoYW5uZWxfXyA9IGdldEV2ZW50Q2hhbm5lbChhcmdzLl9faWRfXyk7XHJcbiAgICAgIGRlbGV0ZSBhcmdzLl9faWRfXztcclxuICAgIH1cclxuICAgIHJldHVybiBjYWxsSG9vay5jYWxsKHRoaXMsIGhvb2ssIGFyZ3MpXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gaW5pdFNjb3BlZFNsb3RzUGFyYW1zICgpIHtcclxuICBjb25zdCBjZW50ZXIgPSB7fTtcclxuICBjb25zdCBwYXJlbnRzID0ge307XHJcblxyXG4gIFZ1ZS5wcm90b3R5cGUuJGhhc1Njb3BlZFNsb3RzUGFyYW1zID0gZnVuY3Rpb24gKHZ1ZUlkKSB7XHJcbiAgICBjb25zdCBoYXMgPSBjZW50ZXJbdnVlSWRdO1xyXG4gICAgaWYgKCFoYXMpIHtcclxuICAgICAgcGFyZW50c1t2dWVJZF0gPSB0aGlzO1xyXG4gICAgICB0aGlzLiRvbignaG9vazpkZXN0cm95ZWQnLCAoKSA9PiB7XHJcbiAgICAgICAgZGVsZXRlIHBhcmVudHNbdnVlSWRdO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBoYXNcclxuICB9O1xyXG5cclxuICBWdWUucHJvdG90eXBlLiRnZXRTY29wZWRTbG90c1BhcmFtcyA9IGZ1bmN0aW9uICh2dWVJZCwgbmFtZSwga2V5KSB7XHJcbiAgICBjb25zdCBkYXRhID0gY2VudGVyW3Z1ZUlkXTtcclxuICAgIGlmIChkYXRhKSB7XHJcbiAgICAgIGNvbnN0IG9iamVjdCA9IGRhdGFbbmFtZV0gfHwge307XHJcbiAgICAgIHJldHVybiBrZXkgPyBvYmplY3Rba2V5XSA6IG9iamVjdFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcGFyZW50c1t2dWVJZF0gPSB0aGlzO1xyXG4gICAgICB0aGlzLiRvbignaG9vazpkZXN0cm95ZWQnLCAoKSA9PiB7XHJcbiAgICAgICAgZGVsZXRlIHBhcmVudHNbdnVlSWRdO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBWdWUucHJvdG90eXBlLiRzZXRTY29wZWRTbG90c1BhcmFtcyA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xyXG4gICAgY29uc3QgdnVlSWRzID0gdGhpcy4kb3B0aW9ucy5wcm9wc0RhdGEudnVlSWQ7XHJcbiAgICBpZiAodnVlSWRzKSB7XHJcbiAgICAgIGNvbnN0IHZ1ZUlkID0gdnVlSWRzLnNwbGl0KCcsJylbMF07XHJcbiAgICAgIGNvbnN0IG9iamVjdCA9IGNlbnRlclt2dWVJZF0gPSBjZW50ZXJbdnVlSWRdIHx8IHt9O1xyXG4gICAgICBvYmplY3RbbmFtZV0gPSB2YWx1ZTtcclxuICAgICAgaWYgKHBhcmVudHNbdnVlSWRdKSB7XHJcbiAgICAgICAgcGFyZW50c1t2dWVJZF0uJGZvcmNlVXBkYXRlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICBWdWUubWl4aW4oe1xyXG4gICAgZGVzdHJveWVkICgpIHtcclxuICAgICAgY29uc3QgcHJvcHNEYXRhID0gdGhpcy4kb3B0aW9ucy5wcm9wc0RhdGE7XHJcbiAgICAgIGNvbnN0IHZ1ZUlkID0gcHJvcHNEYXRhICYmIHByb3BzRGF0YS52dWVJZDtcclxuICAgICAgaWYgKHZ1ZUlkKSB7XHJcbiAgICAgICAgZGVsZXRlIGNlbnRlclt2dWVJZF07XHJcbiAgICAgICAgZGVsZXRlIHBhcmVudHNbdnVlSWRdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhcnNlQmFzZUFwcCAodm0sIHtcclxuICBtb2NrcyxcclxuICBpbml0UmVmc1xyXG59KSB7XHJcbiAgaW5pdEV2ZW50Q2hhbm5lbCQxKCk7XHJcbiAge1xyXG4gICAgaW5pdFNjb3BlZFNsb3RzUGFyYW1zKCk7XHJcbiAgfVxyXG4gIGlmICh2bS4kb3B0aW9ucy5zdG9yZSkge1xyXG4gICAgVnVlLnByb3RvdHlwZS4kc3RvcmUgPSB2bS4kb3B0aW9ucy5zdG9yZTtcclxuICB9XHJcbiAgdW5pSWRNaXhpbihWdWUpO1xyXG5cclxuICBWdWUucHJvdG90eXBlLm1wSG9zdCA9IFwibXAtdG91dGlhb1wiO1xyXG5cclxuICBWdWUubWl4aW4oe1xyXG4gICAgYmVmb3JlQ3JlYXRlICgpIHtcclxuICAgICAgaWYgKCF0aGlzLiRvcHRpb25zLm1wVHlwZSkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLm1wVHlwZSA9IHRoaXMuJG9wdGlvbnMubXBUeXBlO1xyXG5cclxuICAgICAgdGhpcy4kbXAgPSB7XHJcbiAgICAgICAgZGF0YToge30sXHJcbiAgICAgICAgW3RoaXMubXBUeXBlXTogdGhpcy4kb3B0aW9ucy5tcEluc3RhbmNlXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLiRzY29wZSA9IHRoaXMuJG9wdGlvbnMubXBJbnN0YW5jZTtcclxuXHJcbiAgICAgIGRlbGV0ZSB0aGlzLiRvcHRpb25zLm1wVHlwZTtcclxuICAgICAgZGVsZXRlIHRoaXMuJG9wdGlvbnMubXBJbnN0YW5jZTtcclxuICAgICAgaWYgKHRoaXMubXBUeXBlID09PSAncGFnZScgJiYgdHlwZW9mIGdldEFwcCA9PT0gJ2Z1bmN0aW9uJykgeyAvLyBoYWNrIHZ1ZS1pMThuXHJcbiAgICAgICAgY29uc3QgYXBwID0gZ2V0QXBwKCk7XHJcbiAgICAgICAgaWYgKGFwcC4kdm0gJiYgYXBwLiR2bS4kaTE4bikge1xyXG4gICAgICAgICAgdGhpcy5faTE4biA9IGFwcC4kdm0uJGkxOG47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLm1wVHlwZSAhPT0gJ2FwcCcpIHtcclxuICAgICAgICBpbml0UmVmcyh0aGlzKTtcclxuICAgICAgICBpbml0TW9ja3ModGhpcywgbW9ja3MpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0IGFwcE9wdGlvbnMgPSB7XHJcbiAgICBvbkxhdW5jaCAoYXJncykge1xyXG4gICAgICBpZiAodGhpcy4kdm0pIHsgLy8g5bey57uP5Yid5aeL5YyW6L+H5LqG77yM5Li76KaB5piv5Li65LqG55m+5bqm77yM55m+5bqmIG9uU2hvdyDlnKggb25MYXVuY2gg5LmL5YmNXHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuJHZtID0gdm07XHJcblxyXG4gICAgICB0aGlzLiR2bS4kbXAgPSB7XHJcbiAgICAgICAgYXBwOiB0aGlzXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLiR2bS4kc2NvcGUgPSB0aGlzO1xyXG4gICAgICAvLyB2bSDkuIrkuZ/mjILovb0gZ2xvYmFsRGF0YVxyXG4gICAgICB0aGlzLiR2bS5nbG9iYWxEYXRhID0gdGhpcy5nbG9iYWxEYXRhO1xyXG5cclxuICAgICAgdGhpcy4kdm0uX2lzTW91bnRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuJHZtLl9fY2FsbF9ob29rKCdtb3VudGVkJywgYXJncyk7XHJcblxyXG4gICAgICB0aGlzLiR2bS5fX2NhbGxfaG9vaygnb25MYXVuY2gnLCBhcmdzKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICAvLyDlhbzlrrnml6fniYjmnKwgZ2xvYmFsRGF0YVxyXG4gIGFwcE9wdGlvbnMuZ2xvYmFsRGF0YSA9IHZtLiRvcHRpb25zLmdsb2JhbERhdGEgfHwge307XHJcbiAgLy8g5bCGIG1ldGhvZHMg5Lit55qE5pa55rOV5oyC5ZyoIGdldEFwcCgpIOS4rVxyXG4gIGNvbnN0IG1ldGhvZHMgPSB2bS4kb3B0aW9ucy5tZXRob2RzO1xyXG4gIGlmIChtZXRob2RzKSB7XHJcbiAgICBPYmplY3Qua2V5cyhtZXRob2RzKS5mb3JFYWNoKG5hbWUgPT4ge1xyXG4gICAgICBhcHBPcHRpb25zW25hbWVdID0gbWV0aG9kc1tuYW1lXTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaW5pdEFwcExvY2FsZShWdWUsIHZtLCB0dC5nZXRTeXN0ZW1JbmZvU3luYygpLmxhbmd1YWdlIHx8ICd6aC1IYW5zJyk7XHJcblxyXG4gIGluaXRIb29rcyhhcHBPcHRpb25zLCBob29rcyk7XHJcblxyXG4gIHJldHVybiBhcHBPcHRpb25zXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbmRWbUJ5VnVlSWQgKHZtLCB2dWVQaWQpIHtcclxuICBjb25zdCAkY2hpbGRyZW4gPSB2bS4kY2hpbGRyZW47XHJcbiAgLy8g5LyY5YWI5p+l5om+55u05bGeKOWPjeWQkeafpeaJvjpodHRwczovL2dpdGh1Yi5jb20vZGNsb3VkaW8vdW5pLWFwcC9pc3N1ZXMvMTIwMClcclxuICBmb3IgKGxldCBpID0gJGNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICBjb25zdCBjaGlsZFZtID0gJGNoaWxkcmVuW2ldO1xyXG4gICAgaWYgKGNoaWxkVm0uJHNjb3BlLl8kdnVlSWQgPT09IHZ1ZVBpZCkge1xyXG4gICAgICByZXR1cm4gY2hpbGRWbVxyXG4gICAgfVxyXG4gIH1cclxuICAvLyDlj43lkJHpgJLlvZLmn6Xmib5cclxuICBsZXQgcGFyZW50Vm07XHJcbiAgZm9yIChsZXQgaSA9ICRjaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgcGFyZW50Vm0gPSBmaW5kVm1CeVZ1ZUlkKCRjaGlsZHJlbltpXSwgdnVlUGlkKTtcclxuICAgIGlmIChwYXJlbnRWbSkge1xyXG4gICAgICByZXR1cm4gcGFyZW50Vm1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGluaXRCZWhhdmlvciAob3B0aW9ucykge1xyXG4gIHJldHVybiBCZWhhdmlvcihvcHRpb25zKVxyXG59XHJcblxyXG5mdW5jdGlvbiBoYW5kbGVMaW5rIChldmVudCkge1xyXG4gIGNvbnN0IHtcclxuICAgIHZ1ZVBpZCxcclxuICAgIHZ1ZU9wdGlvbnNcclxuICB9ID0gZXZlbnQuZGV0YWlsIHx8IGV2ZW50LnZhbHVlOyAvLyBkZXRhaWwg5piv5b6u5L+hLHZhbHVlIOaYr+eZvuW6pihkaXBhdGNoKVxyXG5cclxuICBsZXQgcGFyZW50Vm07XHJcblxyXG4gIGlmICh2dWVQaWQpIHtcclxuICAgIHBhcmVudFZtID0gZmluZFZtQnlWdWVJZCh0aGlzLiR2bSwgdnVlUGlkKTtcclxuICB9XHJcblxyXG4gIGlmICghcGFyZW50Vm0pIHtcclxuICAgIHBhcmVudFZtID0gdGhpcy4kdm07XHJcbiAgfVxyXG5cclxuICB2dWVPcHRpb25zLnBhcmVudCA9IHBhcmVudFZtO1xyXG59XHJcblxyXG5jb25zdCBtb2NrcyA9IFsnX19yb3V0ZV9fJywgJ19fd2Vidmlld0lkX18nLCAnX19ub2RlaWRfXycsICdfX25vZGVJZF9fJ107XHJcblxyXG5mdW5jdGlvbiBpc1BhZ2UgKCkge1xyXG4gIHJldHVybiB0aGlzLl9fbm9kZWlkX18gPT09IDAgfHwgdGhpcy5fX25vZGVJZF9fID09PSAwXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGluaXRSZWZzICh2bSkge1xyXG4gIGNvbnN0IG1wSW5zdGFuY2UgPSB2bS4kc2NvcGU7XHJcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cclxuICBjb25zdCBtaW5vclZlcnNpb24gPSBwYXJzZUludCh0dC5nZXRTeXN0ZW1JbmZvU3luYygpLlNES1ZlcnNpb24uc3BsaXQoJy4nKVsxXSk7XHJcbiAgaWYgKG1pbm9yVmVyc2lvbiA+IDE2KSB7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodm0sICckcmVmcycsIHtcclxuICAgICAgZ2V0ICgpIHtcclxuICAgICAgICBjb25zdCAkcmVmcyA9IHt9O1xyXG4gICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSBtcEluc3RhbmNlLnNlbGVjdEFsbENvbXBvbmVudHMoJy52dWUtcmVmJyk7XHJcbiAgICAgICAgY29tcG9uZW50cy5mb3JFYWNoKGNvbXBvbmVudCA9PiB7XHJcbiAgICAgICAgICBjb25zdCByZWYgPSBjb21wb25lbnQuZGF0YXNldC5yZWY7XHJcbiAgICAgICAgICAkcmVmc1tyZWZdID0gY29tcG9uZW50LiR2bSB8fCBjb21wb25lbnQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgZm9yQ29tcG9uZW50cyA9IG1wSW5zdGFuY2Uuc2VsZWN0QWxsQ29tcG9uZW50cygnLnZ1ZS1yZWYtaW4tZm9yJyk7XHJcbiAgICAgICAgZm9yQ29tcG9uZW50cy5mb3JFYWNoKGNvbXBvbmVudCA9PiB7XHJcbiAgICAgICAgICBjb25zdCByZWYgPSBjb21wb25lbnQuZGF0YXNldC5yZWY7XHJcbiAgICAgICAgICBpZiAoISRyZWZzW3JlZl0pIHtcclxuICAgICAgICAgICAgJHJlZnNbcmVmXSA9IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgJHJlZnNbcmVmXS5wdXNoKGNvbXBvbmVudC4kdm0gfHwgY29tcG9uZW50KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gJHJlZnNcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIG1wSW5zdGFuY2Uuc2VsZWN0QWxsQ29tcG9uZW50cygnLnZ1ZS1yZWYnLCAoY29tcG9uZW50cykgPT4ge1xyXG4gICAgICBjb21wb25lbnRzLmZvckVhY2goY29tcG9uZW50ID0+IHtcclxuICAgICAgICBjb25zdCByZWYgPSBjb21wb25lbnQuZGF0YXNldC5yZWY7XHJcbiAgICAgICAgdm0uJHJlZnNbcmVmXSA9IGNvbXBvbmVudC4kdm0gfHwgY29tcG9uZW50O1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgbXBJbnN0YW5jZS5zZWxlY3RBbGxDb21wb25lbnRzKCcudnVlLXJlZi1pbi1mb3InLCAoZm9yQ29tcG9uZW50cykgPT4ge1xyXG4gICAgICBmb3JDb21wb25lbnRzLmZvckVhY2goY29tcG9uZW50ID0+IHtcclxuICAgICAgICBjb25zdCByZWYgPSBjb21wb25lbnQuZGF0YXNldC5yZWY7XHJcbiAgICAgICAgaWYgKCF2bS4kcmVmc1tyZWZdKSB7XHJcbiAgICAgICAgICB2bS4kcmVmc1tyZWZdID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZtLiRyZWZzW3JlZl0ucHVzaChjb21wb25lbnQuJHZtIHx8IGNvbXBvbmVudCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5jb25zdCBpbnN0YW5jZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG5cclxuZnVuY3Rpb24gaW5pdFJlbGF0aW9uICh7XHJcbiAgdnVlUGlkLFxyXG4gIG1wSW5zdGFuY2VcclxufSkge1xyXG4gIC8vIOWktOadoSB0cmlnZ2VyRXZlbnQg5ZCO77yM5o6l5pS25LqL5Lu25pe25py654m55Yir5pma77yM5bey57uP5Yiw5LqGIHJlYWR5IOS5i+WQjlxyXG4gIGNvbnN0IG5vZGVJZCA9IChtcEluc3RhbmNlLl9fbm9kZUlkX18gfHwgbXBJbnN0YW5jZS5fX25vZGVpZF9fKSArICcnO1xyXG4gIGNvbnN0IHdlYnZpZXdJZCA9IG1wSW5zdGFuY2UuX193ZWJ2aWV3SWRfXyArICcnO1xyXG5cclxuICBpbnN0YW5jZXNbd2Vidmlld0lkICsgJ18nICsgbm9kZUlkXSA9IG1wSW5zdGFuY2UuJHZtO1xyXG5cclxuICB0aGlzLnRyaWdnZXJFdmVudCgnX19sJywge1xyXG4gICAgdnVlUGlkLFxyXG4gICAgbm9kZUlkLFxyXG4gICAgd2Vidmlld0lkXHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhbmRsZUxpbmskMSAoe1xyXG4gIGRldGFpbDoge1xyXG4gICAgdnVlUGlkLFxyXG4gICAgbm9kZUlkLFxyXG4gICAgd2Vidmlld0lkXHJcbiAgfVxyXG59KSB7XHJcbiAgY29uc3Qgdm0gPSBpbnN0YW5jZXNbd2Vidmlld0lkICsgJ18nICsgbm9kZUlkXTtcclxuICBpZiAoIXZtKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcblxyXG4gIGxldCBwYXJlbnRWbTtcclxuXHJcbiAgaWYgKHZ1ZVBpZCkge1xyXG4gICAgcGFyZW50Vm0gPSBmaW5kVm1CeVZ1ZUlkKHRoaXMuJHZtLCB2dWVQaWQpO1xyXG4gIH1cclxuXHJcbiAgaWYgKCFwYXJlbnRWbSkge1xyXG4gICAgcGFyZW50Vm0gPSB0aGlzLiR2bTtcclxuICB9XHJcblxyXG4gIHZtLiRwYXJlbnQgPSBwYXJlbnRWbTtcclxuICB2bS4kcm9vdCA9IHBhcmVudFZtLiRyb290O1xyXG4gIHBhcmVudFZtLiRjaGlsZHJlbi5wdXNoKHZtKTtcclxuXHJcbiAgdm0uX19jYWxsX2hvb2soJ2NyZWF0ZWQnKTtcclxuICB2bS5fX2NhbGxfaG9vaygnYmVmb3JlTW91bnQnKTtcclxuICB2bS5faXNNb3VudGVkID0gdHJ1ZTtcclxuICB2bS5fX2NhbGxfaG9vaygnbW91bnRlZCcpO1xyXG4gIHZtLl9fY2FsbF9ob29rKCdvblJlYWR5Jyk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhcnNlQXBwICh2bSkge1xyXG4gIFZ1ZS5wcm90b3R5cGUuXyRmYWxsYmFjayA9IHRydWU7IC8vIOmZjee6p++8iOiwg+aVtOWOnyB2dWUg55qE6YOo5YiG55Sf5ZG95ZGo5pyf77yM5aaCIGNyZWF0ZWTvvIxiZWZvcmVNb3VudCxpbmplY3QscHJvdmlkZe+8iVxyXG5cclxuICBWdWUubWl4aW4oe1xyXG4gICAgY3JlYXRlZCAoKSB7IC8vIOWkhOeQhiBpbmplY3Rpb25zLOWktOadoSB0cmlnZ2VyRXZlbnQg5piv5byC5q2l77yM5LiU6Kem5Y+R5pe25py65b6I5oWi77yM5pWF5bu26L+fIHJlbGF0aW9uIOiuvue9rlxyXG4gICAgICBpZiAodGhpcy5tcFR5cGUgIT09ICdhcHAnKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5tcFR5cGUgPT09ICdwYWdlJyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLiRzY29wZS5yb3V0ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHNjb3BlLl9fcm91dGVfX1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy4kc2NvcGUucm91dGUgPSB0aGlzLiRzY29wZS5fX3JvdXRlX187XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpbml0UmVmcyh0aGlzKTtcclxuXHJcbiAgICAgICAgdGhpcy5fX2luaXRfaW5qZWN0aW9ucyh0aGlzKTtcclxuICAgICAgICB0aGlzLl9faW5pdF9wcm92aWRlKHRoaXMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBwYXJzZUJhc2VBcHAodm0sIHtcclxuICAgIG1vY2tzLFxyXG4gICAgaW5pdFJlZnM6IGZ1bmN0aW9uICgpIHt9IC8vIGF0dGFjaGVkIOaXtu+8jOWPr+iDveafpeivouS4jeWIsFxyXG4gIH0pXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZUFwcCAodm0pIHtcclxuICBBcHAocGFyc2VBcHAodm0pKTtcclxuICByZXR1cm4gdm1cclxufVxyXG5cclxuY29uc3QgZW5jb2RlUmVzZXJ2ZVJFID0gL1shJygpKl0vZztcclxuY29uc3QgZW5jb2RlUmVzZXJ2ZVJlcGxhY2VyID0gYyA9PiAnJScgKyBjLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpO1xyXG5jb25zdCBjb21tYVJFID0gLyUyQy9nO1xyXG5cclxuLy8gZml4ZWQgZW5jb2RlVVJJQ29tcG9uZW50IHdoaWNoIGlzIG1vcmUgY29uZm9ybWFudCB0byBSRkMzOTg2OlxyXG4vLyAtIGVzY2FwZXMgWyEnKCkqXVxyXG4vLyAtIHByZXNlcnZlIGNvbW1hc1xyXG5jb25zdCBlbmNvZGUgPSBzdHIgPT4gZW5jb2RlVVJJQ29tcG9uZW50KHN0cilcclxuICAucmVwbGFjZShlbmNvZGVSZXNlcnZlUkUsIGVuY29kZVJlc2VydmVSZXBsYWNlcilcclxuICAucmVwbGFjZShjb21tYVJFLCAnLCcpO1xyXG5cclxuZnVuY3Rpb24gc3RyaW5naWZ5UXVlcnkgKG9iaiwgZW5jb2RlU3RyID0gZW5jb2RlKSB7XHJcbiAgY29uc3QgcmVzID0gb2JqID8gT2JqZWN0LmtleXMob2JqKS5tYXAoa2V5ID0+IHtcclxuICAgIGNvbnN0IHZhbCA9IG9ialtrZXldO1xyXG5cclxuICAgIGlmICh2YWwgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gJydcclxuICAgIH1cclxuXHJcbiAgICBpZiAodmFsID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBlbmNvZGVTdHIoa2V5KVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gW107XHJcbiAgICAgIHZhbC5mb3JFYWNoKHZhbDIgPT4ge1xyXG4gICAgICAgIGlmICh2YWwyID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodmFsMiA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goZW5jb2RlU3RyKGtleSkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaChlbmNvZGVTdHIoa2V5KSArICc9JyArIGVuY29kZVN0cih2YWwyKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHJlc3VsdC5qb2luKCcmJylcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZW5jb2RlU3RyKGtleSkgKyAnPScgKyBlbmNvZGVTdHIodmFsKVxyXG4gIH0pLmZpbHRlcih4ID0+IHgubGVuZ3RoID4gMCkuam9pbignJicpIDogbnVsbDtcclxuICByZXR1cm4gcmVzID8gYD8ke3Jlc31gIDogJydcclxufVxyXG5cclxuZnVuY3Rpb24gcGFyc2VCYXNlQ29tcG9uZW50ICh2dWVDb21wb25lbnRPcHRpb25zLCB7XHJcbiAgaXNQYWdlLFxyXG4gIGluaXRSZWxhdGlvblxyXG59ID0ge30pIHtcclxuICBjb25zdCBbVnVlQ29tcG9uZW50LCB2dWVPcHRpb25zXSA9IGluaXRWdWVDb21wb25lbnQoVnVlLCB2dWVDb21wb25lbnRPcHRpb25zKTtcclxuXHJcbiAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgIG11bHRpcGxlU2xvdHM6IHRydWUsXHJcbiAgICBhZGRHbG9iYWxDbGFzczogdHJ1ZSxcclxuICAgIC4uLih2dWVPcHRpb25zLm9wdGlvbnMgfHwge30pXHJcbiAgfTtcclxuXHJcbiAgY29uc3QgY29tcG9uZW50T3B0aW9ucyA9IHtcclxuICAgIG9wdGlvbnMsXHJcbiAgICBkYXRhOiBpbml0RGF0YSh2dWVPcHRpb25zLCBWdWUucHJvdG90eXBlKSxcclxuICAgIGJlaGF2aW9yczogaW5pdEJlaGF2aW9ycyh2dWVPcHRpb25zLCBpbml0QmVoYXZpb3IpLFxyXG4gICAgcHJvcGVydGllczogaW5pdFByb3BlcnRpZXModnVlT3B0aW9ucy5wcm9wcywgZmFsc2UsIHZ1ZU9wdGlvbnMuX19maWxlKSxcclxuICAgIGxpZmV0aW1lczoge1xyXG4gICAgICBhdHRhY2hlZCAoKSB7XHJcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IHRoaXMucHJvcGVydGllcztcclxuXHJcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgICAgIG1wVHlwZTogaXNQYWdlLmNhbGwodGhpcykgPyAncGFnZScgOiAnY29tcG9uZW50JyxcclxuICAgICAgICAgIG1wSW5zdGFuY2U6IHRoaXMsXHJcbiAgICAgICAgICBwcm9wc0RhdGE6IHByb3BlcnRpZXNcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpbml0VnVlSWRzKHByb3BlcnRpZXMudnVlSWQsIHRoaXMpO1xyXG5cclxuICAgICAgICAvLyDlpITnkIbniLblrZDlhbPns7tcclxuICAgICAgICBpbml0UmVsYXRpb24uY2FsbCh0aGlzLCB7XHJcbiAgICAgICAgICB2dWVQaWQ6IHRoaXMuXyR2dWVQaWQsXHJcbiAgICAgICAgICB2dWVPcHRpb25zOiBvcHRpb25zXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIOWIneWni+WMliB2dWUg5a6e5L6LXHJcbiAgICAgICAgdGhpcy4kdm0gPSBuZXcgVnVlQ29tcG9uZW50KG9wdGlvbnMpO1xyXG5cclxuICAgICAgICAvLyDlpITnkIYkc2xvdHMsJHNjb3BlZFNsb3Rz77yI5pqC5LiN5pSv5oyB5Yqo5oCB5Y+Y5YyWJHNsb3Rz77yJXHJcbiAgICAgICAgaW5pdFNsb3RzKHRoaXMuJHZtLCBwcm9wZXJ0aWVzLnZ1ZVNsb3RzKTtcclxuXHJcbiAgICAgICAgLy8g6Kem5Y+R6aaW5qyhIHNldERhdGFcclxuICAgICAgICB0aGlzLiR2bS4kbW91bnQoKTtcclxuICAgICAgfSxcclxuICAgICAgcmVhZHkgKCkge1xyXG4gICAgICAgIC8vIOW9k+e7hOS7tiBwcm9wcyDpu5jorqTlgLzkuLogdHJ1Ze+8jOWIneWni+WMluaXtuS8oOWFpSBmYWxzZSDkvJrlr7zoh7QgY3JlYXRlZCxyZWFkeSDop6blj5EsIOS9hiBhdHRhY2hlZCDkuI3op6blj5FcclxuICAgICAgICAvLyBodHRwczovL2RldmVsb3BlcnMud2VpeGluLnFxLmNvbS9jb21tdW5pdHkvZGV2ZWxvcC9kb2MvMDAwNjZhZTI4NDRjYzBmOGViODgzZTJhNTU3ODAwXHJcbiAgICAgICAgaWYgKHRoaXMuJHZtKSB7XHJcbiAgICAgICAgICB0aGlzLiR2bS5faXNNb3VudGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuJHZtLl9fY2FsbF9ob29rKCdtb3VudGVkJyk7XHJcbiAgICAgICAgICB0aGlzLiR2bS5fX2NhbGxfaG9vaygnb25SZWFkeScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgZGV0YWNoZWQgKCkge1xyXG4gICAgICAgIHRoaXMuJHZtICYmIHRoaXMuJHZtLiRkZXN0cm95KCk7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBwYWdlTGlmZXRpbWVzOiB7XHJcbiAgICAgIHNob3cgKGFyZ3MpIHtcclxuICAgICAgICB0aGlzLiR2bSAmJiB0aGlzLiR2bS5fX2NhbGxfaG9vaygnb25QYWdlU2hvdycsIGFyZ3MpO1xyXG4gICAgICB9LFxyXG4gICAgICBoaWRlICgpIHtcclxuICAgICAgICB0aGlzLiR2bSAmJiB0aGlzLiR2bS5fX2NhbGxfaG9vaygnb25QYWdlSGlkZScpO1xyXG4gICAgICB9LFxyXG4gICAgICByZXNpemUgKHNpemUpIHtcclxuICAgICAgICB0aGlzLiR2bSAmJiB0aGlzLiR2bS5fX2NhbGxfaG9vaygnb25QYWdlUmVzaXplJywgc2l6ZSk7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBtZXRob2RzOiB7XHJcbiAgICAgIF9fbDogaGFuZGxlTGluayxcclxuICAgICAgX19lOiBoYW5kbGVFdmVudFxyXG4gICAgfVxyXG4gIH07XHJcbiAgLy8gZXh0ZXJuYWxDbGFzc2VzXHJcbiAgaWYgKHZ1ZU9wdGlvbnMuZXh0ZXJuYWxDbGFzc2VzKSB7XHJcbiAgICBjb21wb25lbnRPcHRpb25zLmV4dGVybmFsQ2xhc3NlcyA9IHZ1ZU9wdGlvbnMuZXh0ZXJuYWxDbGFzc2VzO1xyXG4gIH1cclxuXHJcbiAgaWYgKEFycmF5LmlzQXJyYXkodnVlT3B0aW9ucy53eHNDYWxsTWV0aG9kcykpIHtcclxuICAgIHZ1ZU9wdGlvbnMud3hzQ2FsbE1ldGhvZHMuZm9yRWFjaChjYWxsTWV0aG9kID0+IHtcclxuICAgICAgY29tcG9uZW50T3B0aW9ucy5tZXRob2RzW2NhbGxNZXRob2RdID0gZnVuY3Rpb24gKGFyZ3MpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4kdm1bY2FsbE1ldGhvZF0oYXJncylcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaWYgKGlzUGFnZSkge1xyXG4gICAgcmV0dXJuIGNvbXBvbmVudE9wdGlvbnNcclxuICB9XHJcbiAgcmV0dXJuIFtjb21wb25lbnRPcHRpb25zLCBWdWVDb21wb25lbnRdXHJcbn1cclxuXHJcbmNvbnN0IGNvbXBvbmVudHMgPSBbXTtcclxuXHJcbmZ1bmN0aW9uIHBhcnNlQ29tcG9uZW50ICh2dWVPcHRpb25zKSB7XHJcbiAgY29uc3QgW2NvbXBvbmVudE9wdGlvbnMsIFZ1ZUNvbXBvbmVudF0gPSBwYXJzZUJhc2VDb21wb25lbnQodnVlT3B0aW9ucyk7XHJcblxyXG4gIC8vIOWfuuehgOW6kyAyLjAg5Lul5LiKIGF0dGFjaGVkIOmhuuW6j+mUmeS5se+8jOaMieeFpyBjcmVhdGVkIOmhuuW6j+W8uuWItue6oOato1xyXG4gIGNvbXBvbmVudE9wdGlvbnMubGlmZXRpbWVzLmNyZWF0ZWQgPSBmdW5jdGlvbiBjcmVhdGVkICgpIHtcclxuICAgIGNvbXBvbmVudHMucHVzaCh0aGlzKTtcclxuICB9O1xyXG5cclxuICBjb21wb25lbnRPcHRpb25zLmxpZmV0aW1lcy5hdHRhY2hlZCA9IGZ1bmN0aW9uIGF0dGFjaGVkICgpIHtcclxuICAgIHRoaXMuX19saWZldGltZXNfYXR0YWNoZWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLnByb3BlcnRpZXM7XHJcblxyXG4gICAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICAgIG1wVHlwZTogaXNQYWdlLmNhbGwodGhpcykgPyAncGFnZScgOiAnY29tcG9uZW50JyxcclxuICAgICAgICBtcEluc3RhbmNlOiB0aGlzLFxyXG4gICAgICAgIHByb3BzRGF0YTogcHJvcGVydGllc1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgaW5pdFZ1ZUlkcyhwcm9wZXJ0aWVzLnZ1ZUlkLCB0aGlzKTtcclxuXHJcbiAgICAgIC8vIOWIneWni+WMliB2dWUg5a6e5L6LXHJcbiAgICAgIHRoaXMuJHZtID0gbmV3IFZ1ZUNvbXBvbmVudChvcHRpb25zKTtcclxuXHJcbiAgICAgIC8vIOWkhOeQhiRzbG90cywkc2NvcGVkU2xvdHPvvIjmmoLkuI3mlK/mjIHliqjmgIHlj5jljJYkc2xvdHPvvIlcclxuICAgICAgaW5pdFNsb3RzKHRoaXMuJHZtLCBwcm9wZXJ0aWVzLnZ1ZVNsb3RzKTtcclxuXHJcbiAgICAgIC8vIOWkhOeQhueItuWtkOWFs+ezu1xyXG4gICAgICBpbml0UmVsYXRpb24uY2FsbCh0aGlzLCB7XHJcbiAgICAgICAgdnVlUGlkOiB0aGlzLl8kdnVlUGlkLFxyXG4gICAgICAgIG1wSW5zdGFuY2U6IHRoaXNcclxuICAgICAgfSk7XHJcblxyXG4gICAgICAvLyDop6blj5HpppbmrKEgc2V0RGF0YVxyXG4gICAgICB0aGlzLiR2bS4kbW91bnQoKTtcclxuICAgIH07XHJcbiAgICBsZXQgY29tcG9uZW50ID0gdGhpcztcclxuICAgIHdoaWxlIChjb21wb25lbnQgJiYgY29tcG9uZW50Ll9fbGlmZXRpbWVzX2F0dGFjaGVkICYmIGNvbXBvbmVudHNbMF0gJiYgY29tcG9uZW50ID09PSBjb21wb25lbnRzWzBdKSB7XHJcbiAgICAgIGNvbXBvbmVudHMuc2hpZnQoKTtcclxuICAgICAgY29tcG9uZW50Ll9fbGlmZXRpbWVzX2F0dGFjaGVkKCk7XHJcbiAgICAgIGRlbGV0ZSBjb21wb25lbnQuX19saWZldGltZXNfYXR0YWNoZWQ7XHJcbiAgICAgIGNvbXBvbmVudCA9IGNvbXBvbmVudHNbMF07XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgLy8gcmVhZHkg5q+UIGhhbmRsZUxpbmsg6L+Y5pep77yM5Yid5aeL5YyW6YC76L6R5pS+5YiwIGhhbmRsZUxpbmsg5LitXHJcbiAgZGVsZXRlIGNvbXBvbmVudE9wdGlvbnMubGlmZXRpbWVzLnJlYWR5O1xyXG5cclxuICBjb21wb25lbnRPcHRpb25zLm1ldGhvZHMuX19sID0gaGFuZGxlTGluayQxO1xyXG5cclxuICByZXR1cm4gY29tcG9uZW50T3B0aW9uc1xyXG59XHJcblxyXG5jb25zdCBob29rcyQxID0gW1xyXG4gICdvblNob3cnLFxyXG4gICdvbkhpZGUnLFxyXG4gICdvblVubG9hZCdcclxuXTtcclxuXHJcbmhvb2tzJDEucHVzaCguLi5QQUdFX0VWRU5UX0hPT0tTKTtcclxuXHJcbmZ1bmN0aW9uIHBhcnNlQmFzZVBhZ2UgKHZ1ZVBhZ2VPcHRpb25zLCB7XHJcbiAgaXNQYWdlLFxyXG4gIGluaXRSZWxhdGlvblxyXG59KSB7XHJcbiAgY29uc3QgcGFnZU9wdGlvbnMgPSBwYXJzZUNvbXBvbmVudCh2dWVQYWdlT3B0aW9ucyk7XHJcblxyXG4gIGluaXRIb29rcyhwYWdlT3B0aW9ucy5tZXRob2RzLCBob29rcyQxLCB2dWVQYWdlT3B0aW9ucyk7XHJcblxyXG4gIHBhZ2VPcHRpb25zLm1ldGhvZHMub25Mb2FkID0gZnVuY3Rpb24gKHF1ZXJ5KSB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSBxdWVyeTtcclxuICAgIGNvbnN0IGNvcHlRdWVyeSA9IE9iamVjdC5hc3NpZ24oe30sIHF1ZXJ5KTtcclxuICAgIGRlbGV0ZSBjb3B5UXVlcnkuX19pZF9fO1xyXG4gICAgdGhpcy4kcGFnZSA9IHtcclxuICAgICAgZnVsbFBhdGg6ICcvJyArICh0aGlzLnJvdXRlIHx8IHRoaXMuaXMpICsgc3RyaW5naWZ5UXVlcnkoY29weVF1ZXJ5KVxyXG4gICAgfTtcclxuICAgIHRoaXMuJHZtLiRtcC5xdWVyeSA9IHF1ZXJ5OyAvLyDlhbzlrrkgbXB2dWVcclxuICAgIHRoaXMuJHZtLl9fY2FsbF9ob29rKCdvbkxvYWQnLCBxdWVyeSk7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIHBhZ2VPcHRpb25zXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhcnNlUGFnZSAodnVlUGFnZU9wdGlvbnMpIHtcclxuICBjb25zdCBwYWdlT3B0aW9ucyA9IHBhcnNlQmFzZVBhZ2UodnVlUGFnZU9wdGlvbnMsIHtcclxuICAgIGlzUGFnZSxcclxuICAgIGluaXRSZWxhdGlvblxyXG4gIH0pO1xyXG4gIC8vIOmhtemdoumcgOimgeWcqCByZWFkeSDkuK3op6blj5HvvIzlhbbku5bnu4Tku7bmmK/lnKggaGFuZGxlTGluayDkuK3op6blj5FcclxuICBwYWdlT3B0aW9ucy5saWZldGltZXMucmVhZHkgPSBmdW5jdGlvbiByZWFkeSAoKSB7XHJcbiAgICBpZiAodGhpcy4kdm0gJiYgdGhpcy4kdm0ubXBUeXBlID09PSAncGFnZScpIHtcclxuICAgICAgdGhpcy4kdm0uX19jYWxsX2hvb2soJ2NyZWF0ZWQnKTtcclxuICAgICAgdGhpcy4kdm0uX19jYWxsX2hvb2soJ2JlZm9yZU1vdW50Jyk7XHJcbiAgICAgIHRoaXMuJHZtLl9pc01vdW50ZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLiR2bS5fX2NhbGxfaG9vaygnbW91bnRlZCcpO1xyXG4gICAgICB0aGlzLiR2bS5fX2NhbGxfaG9vaygnb25SZWFkeScpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pcyAmJiBjb25zb2xlLndhcm4odGhpcy5pcyArICcgaXMgbm90IHJlYWR5Jyk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgcGFnZU9wdGlvbnMubGlmZXRpbWVzLmRldGFjaGVkID0gZnVuY3Rpb24gZGV0YWNoZWQgKCkge1xyXG4gICAgdGhpcy4kdm0gJiYgdGhpcy4kdm0uJGRlc3Ryb3koKTtcclxuICAgIC8vIOa4heeQhlxyXG4gICAgY29uc3Qgd2Vidmlld0lkID0gdGhpcy5fX3dlYnZpZXdJZF9fO1xyXG4gICAgd2Vidmlld0lkICYmIE9iamVjdC5rZXlzKGluc3RhbmNlcykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICBpZiAoa2V5LmluZGV4T2Yod2Vidmlld0lkICsgJ18nKSA9PT0gMCkge1xyXG4gICAgICAgIGRlbGV0ZSBpbnN0YW5jZXNba2V5XTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIHBhZ2VPcHRpb25zXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZVBhZ2UgKHZ1ZVBhZ2VPcHRpb25zKSB7XHJcbiAge1xyXG4gICAgcmV0dXJuIENvbXBvbmVudChwYXJzZVBhZ2UodnVlUGFnZU9wdGlvbnMpKVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50ICh2dWVPcHRpb25zKSB7XHJcbiAge1xyXG4gICAgcmV0dXJuIENvbXBvbmVudChwYXJzZUNvbXBvbmVudCh2dWVPcHRpb25zKSlcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZVN1YnBhY2thZ2VBcHAgKHZtKSB7XHJcbiAgY29uc3QgYXBwT3B0aW9ucyA9IHBhcnNlQXBwKHZtKTtcclxuICBjb25zdCBhcHAgPSBnZXRBcHAoe1xyXG4gICAgYWxsb3dEZWZhdWx0OiB0cnVlXHJcbiAgfSk7XHJcbiAgdm0uJHNjb3BlID0gYXBwO1xyXG4gIGNvbnN0IGdsb2JhbERhdGEgPSBhcHAuZ2xvYmFsRGF0YTtcclxuICBpZiAoZ2xvYmFsRGF0YSkge1xyXG4gICAgT2JqZWN0LmtleXMoYXBwT3B0aW9ucy5nbG9iYWxEYXRhKS5mb3JFYWNoKG5hbWUgPT4ge1xyXG4gICAgICBpZiAoIWhhc093bihnbG9iYWxEYXRhLCBuYW1lKSkge1xyXG4gICAgICAgIGdsb2JhbERhdGFbbmFtZV0gPSBhcHBPcHRpb25zLmdsb2JhbERhdGFbbmFtZV07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBPYmplY3Qua2V5cyhhcHBPcHRpb25zKS5mb3JFYWNoKG5hbWUgPT4ge1xyXG4gICAgaWYgKCFoYXNPd24oYXBwLCBuYW1lKSkge1xyXG4gICAgICBhcHBbbmFtZV0gPSBhcHBPcHRpb25zW25hbWVdO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIGlmIChpc0ZuKGFwcE9wdGlvbnMub25TaG93KSAmJiB0dC5vbkFwcFNob3cpIHtcclxuICAgIHR0Lm9uQXBwU2hvdygoLi4uYXJncykgPT4ge1xyXG4gICAgICB2bS5fX2NhbGxfaG9vaygnb25TaG93JywgYXJncyk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgaWYgKGlzRm4oYXBwT3B0aW9ucy5vbkhpZGUpICYmIHR0Lm9uQXBwSGlkZSkge1xyXG4gICAgdHQub25BcHBIaWRlKCguLi5hcmdzKSA9PiB7XHJcbiAgICAgIHZtLl9fY2FsbF9ob29rKCdvbkhpZGUnLCBhcmdzKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBpZiAoaXNGbihhcHBPcHRpb25zLm9uTGF1bmNoKSkge1xyXG4gICAgY29uc3QgYXJncyA9IHR0LmdldExhdW5jaE9wdGlvbnNTeW5jICYmIHR0LmdldExhdW5jaE9wdGlvbnNTeW5jKCk7XHJcbiAgICB2bS5fX2NhbGxfaG9vaygnb25MYXVuY2gnLCBhcmdzKTtcclxuICB9XHJcbiAgcmV0dXJuIHZtXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZVBsdWdpbiAodm0pIHtcclxuICBjb25zdCBhcHBPcHRpb25zID0gcGFyc2VBcHAodm0pO1xyXG4gIGlmIChpc0ZuKGFwcE9wdGlvbnMub25TaG93KSAmJiB0dC5vbkFwcFNob3cpIHtcclxuICAgIHR0Lm9uQXBwU2hvdygoLi4uYXJncykgPT4ge1xyXG4gICAgICB2bS5fX2NhbGxfaG9vaygnb25TaG93JywgYXJncyk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgaWYgKGlzRm4oYXBwT3B0aW9ucy5vbkhpZGUpICYmIHR0Lm9uQXBwSGlkZSkge1xyXG4gICAgdHQub25BcHBIaWRlKCguLi5hcmdzKSA9PiB7XHJcbiAgICAgIHZtLl9fY2FsbF9ob29rKCdvbkhpZGUnLCBhcmdzKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBpZiAoaXNGbihhcHBPcHRpb25zLm9uTGF1bmNoKSkge1xyXG4gICAgY29uc3QgYXJncyA9IHR0LmdldExhdW5jaE9wdGlvbnNTeW5jICYmIHR0LmdldExhdW5jaE9wdGlvbnNTeW5jKCk7XHJcbiAgICB2bS5fX2NhbGxfaG9vaygnb25MYXVuY2gnLCBhcmdzKTtcclxuICB9XHJcbiAgcmV0dXJuIHZtXHJcbn1cclxuXHJcbnRvZG9zLmZvckVhY2godG9kb0FwaSA9PiB7XHJcbiAgcHJvdG9jb2xzW3RvZG9BcGldID0gZmFsc2U7XHJcbn0pO1xyXG5cclxuY2FuSVVzZXMuZm9yRWFjaChjYW5JVXNlQXBpID0+IHtcclxuICBjb25zdCBhcGlOYW1lID0gcHJvdG9jb2xzW2NhbklVc2VBcGldICYmIHByb3RvY29sc1tjYW5JVXNlQXBpXS5uYW1lID8gcHJvdG9jb2xzW2NhbklVc2VBcGldLm5hbWVcclxuICAgIDogY2FuSVVzZUFwaTtcclxuICBpZiAoIXR0LmNhbklVc2UoYXBpTmFtZSkpIHtcclxuICAgIHByb3RvY29sc1tjYW5JVXNlQXBpXSA9IGZhbHNlO1xyXG4gIH1cclxufSk7XHJcblxyXG5sZXQgdW5pID0ge307XHJcblxyXG5pZiAodHlwZW9mIFByb3h5ICE9PSAndW5kZWZpbmVkJyAmJiBcIm1wLXRvdXRpYW9cIiAhPT0gJ2FwcC1wbHVzJykge1xyXG4gIHVuaSA9IG5ldyBQcm94eSh7fSwge1xyXG4gICAgZ2V0ICh0YXJnZXQsIG5hbWUpIHtcclxuICAgICAgaWYgKGhhc093bih0YXJnZXQsIG5hbWUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldFtuYW1lXVxyXG4gICAgICB9XHJcbiAgICAgIGlmIChiYXNlQXBpW25hbWVdKSB7XHJcbiAgICAgICAgcmV0dXJuIGJhc2VBcGlbbmFtZV1cclxuICAgICAgfVxyXG4gICAgICBpZiAoYXBpW25hbWVdKSB7XHJcbiAgICAgICAgcmV0dXJuIHByb21pc2lmeShuYW1lLCBhcGlbbmFtZV0pXHJcbiAgICAgIH1cclxuICAgICAge1xyXG4gICAgICAgIGlmIChleHRyYUFwaVtuYW1lXSkge1xyXG4gICAgICAgICAgcmV0dXJuIHByb21pc2lmeShuYW1lLCBleHRyYUFwaVtuYW1lXSlcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRvZG9BcGlzW25hbWVdKSB7XHJcbiAgICAgICAgICByZXR1cm4gcHJvbWlzaWZ5KG5hbWUsIHRvZG9BcGlzW25hbWVdKVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoZXZlbnRBcGlbbmFtZV0pIHtcclxuICAgICAgICByZXR1cm4gZXZlbnRBcGlbbmFtZV1cclxuICAgICAgfVxyXG4gICAgICBpZiAoIWhhc093bih0dCwgbmFtZSkgJiYgIWhhc093bihwcm90b2NvbHMsIG5hbWUpKSB7XHJcbiAgICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHByb21pc2lmeShuYW1lLCB3cmFwcGVyKG5hbWUsIHR0W25hbWVdKSlcclxuICAgIH0sXHJcbiAgICBzZXQgKHRhcmdldCwgbmFtZSwgdmFsdWUpIHtcclxuICAgICAgdGFyZ2V0W25hbWVdID0gdmFsdWU7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgfSk7XHJcbn0gZWxzZSB7XHJcbiAgT2JqZWN0LmtleXMoYmFzZUFwaSkuZm9yRWFjaChuYW1lID0+IHtcclxuICAgIHVuaVtuYW1lXSA9IGJhc2VBcGlbbmFtZV07XHJcbiAgfSk7XHJcblxyXG4gIHtcclxuICAgIE9iamVjdC5rZXlzKHRvZG9BcGlzKS5mb3JFYWNoKG5hbWUgPT4ge1xyXG4gICAgICB1bmlbbmFtZV0gPSBwcm9taXNpZnkobmFtZSwgdG9kb0FwaXNbbmFtZV0pO1xyXG4gICAgfSk7XHJcbiAgICBPYmplY3Qua2V5cyhleHRyYUFwaSkuZm9yRWFjaChuYW1lID0+IHtcclxuICAgICAgdW5pW25hbWVdID0gcHJvbWlzaWZ5KG5hbWUsIHRvZG9BcGlzW25hbWVdKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgT2JqZWN0LmtleXMoZXZlbnRBcGkpLmZvckVhY2gobmFtZSA9PiB7XHJcbiAgICB1bmlbbmFtZV0gPSBldmVudEFwaVtuYW1lXTtcclxuICB9KTtcclxuXHJcbiAgT2JqZWN0LmtleXMoYXBpKS5mb3JFYWNoKG5hbWUgPT4ge1xyXG4gICAgdW5pW25hbWVdID0gcHJvbWlzaWZ5KG5hbWUsIGFwaVtuYW1lXSk7XHJcbiAgfSk7XHJcblxyXG4gIE9iamVjdC5rZXlzKHR0KS5mb3JFYWNoKG5hbWUgPT4ge1xyXG4gICAgaWYgKGhhc093bih0dCwgbmFtZSkgfHwgaGFzT3duKHByb3RvY29scywgbmFtZSkpIHtcclxuICAgICAgdW5pW25hbWVdID0gcHJvbWlzaWZ5KG5hbWUsIHdyYXBwZXIobmFtZSwgdHRbbmFtZV0pKTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxudHQuY3JlYXRlQXBwID0gY3JlYXRlQXBwO1xyXG50dC5jcmVhdGVQYWdlID0gY3JlYXRlUGFnZTtcclxudHQuY3JlYXRlQ29tcG9uZW50ID0gY3JlYXRlQ29tcG9uZW50O1xyXG50dC5jcmVhdGVTdWJwYWNrYWdlQXBwID0gY3JlYXRlU3VicGFja2FnZUFwcDtcclxudHQuY3JlYXRlUGx1Z2luID0gY3JlYXRlUGx1Z2luO1xyXG5cclxudmFyIHVuaSQxID0gdW5pO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgdW5pJDE7XHJcbmV4cG9ydCB7IGNyZWF0ZUFwcCwgY3JlYXRlQ29tcG9uZW50LCBjcmVhdGVQYWdlLCBjcmVhdGVQbHVnaW4sIGNyZWF0ZVN1YnBhY2thZ2VBcHAgfTtcclxuIiwidmFyIGc7XG5cbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXG5nID0gKGZ1bmN0aW9uKCkge1xuXHRyZXR1cm4gdGhpcztcbn0pKCk7XG5cbnRyeSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxuXHRnID0gZyB8fCBuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpO1xufSBjYXRjaCAoZSkge1xuXHQvLyBUaGlzIHdvcmtzIGlmIHRoZSB3aW5kb3cgcmVmZXJlbmNlIGlzIGF2YWlsYWJsZVxuXHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIikgZyA9IHdpbmRvdztcbn1cblxuLy8gZyBjYW4gc3RpbGwgYmUgdW5kZWZpbmVkLCBidXQgbm90aGluZyB0byBkbyBhYm91dCBpdC4uLlxuLy8gV2UgcmV0dXJuIHVuZGVmaW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3Ncbi8vIGVhc2llciB0byBoYW5kbGUgdGhpcyBjYXNlLiBpZighZ2xvYmFsKSB7IC4uLn1cblxubW9kdWxlLmV4cG9ydHMgPSBnO1xuIiwiLyohXG4gKiBWdWUuanMgdjIuNi4xMVxuICogKGMpIDIwMTQtMjAyMSBFdmFuIFlvdVxuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG4vKiAgKi9cblxudmFyIGVtcHR5T2JqZWN0ID0gT2JqZWN0LmZyZWV6ZSh7fSk7XG5cbi8vIFRoZXNlIGhlbHBlcnMgcHJvZHVjZSBiZXR0ZXIgVk0gY29kZSBpbiBKUyBlbmdpbmVzIGR1ZSB0byB0aGVpclxuLy8gZXhwbGljaXRuZXNzIGFuZCBmdW5jdGlvbiBpbmxpbmluZy5cbmZ1bmN0aW9uIGlzVW5kZWYgKHYpIHtcbiAgcmV0dXJuIHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSBudWxsXG59XG5cbmZ1bmN0aW9uIGlzRGVmICh2KSB7XG4gIHJldHVybiB2ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gbnVsbFxufVxuXG5mdW5jdGlvbiBpc1RydWUgKHYpIHtcbiAgcmV0dXJuIHYgPT09IHRydWVcbn1cblxuZnVuY3Rpb24gaXNGYWxzZSAodikge1xuICByZXR1cm4gdiA9PT0gZmFsc2Vcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB2YWx1ZSBpcyBwcmltaXRpdmUuXG4gKi9cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlICh2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHxcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8XG4gICAgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gICAgdHlwZW9mIHZhbHVlID09PSAnc3ltYm9sJyB8fFxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nXG4gIClcbn1cblxuLyoqXG4gKiBRdWljayBvYmplY3QgY2hlY2sgLSB0aGlzIGlzIHByaW1hcmlseSB1c2VkIHRvIHRlbGxcbiAqIE9iamVjdHMgZnJvbSBwcmltaXRpdmUgdmFsdWVzIHdoZW4gd2Uga25vdyB0aGUgdmFsdWVcbiAqIGlzIGEgSlNPTi1jb21wbGlhbnQgdHlwZS5cbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QgKG9iaikge1xuICByZXR1cm4gb2JqICE9PSBudWxsICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnXG59XG5cbi8qKlxuICogR2V0IHRoZSByYXcgdHlwZSBzdHJpbmcgb2YgYSB2YWx1ZSwgZS5nLiwgW29iamVjdCBPYmplY3RdLlxuICovXG52YXIgX3RvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuZnVuY3Rpb24gdG9SYXdUeXBlICh2YWx1ZSkge1xuICByZXR1cm4gX3RvU3RyaW5nLmNhbGwodmFsdWUpLnNsaWNlKDgsIC0xKVxufVxuXG4vKipcbiAqIFN0cmljdCBvYmplY3QgdHlwZSBjaGVjay4gT25seSByZXR1cm5zIHRydWVcbiAqIGZvciBwbGFpbiBKYXZhU2NyaXB0IG9iamVjdHMuXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QgKG9iaikge1xuICByZXR1cm4gX3RvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgT2JqZWN0XSdcbn1cblxuZnVuY3Rpb24gaXNSZWdFeHAgKHYpIHtcbiAgcmV0dXJuIF90b1N0cmluZy5jYWxsKHYpID09PSAnW29iamVjdCBSZWdFeHBdJ1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHZhbCBpcyBhIHZhbGlkIGFycmF5IGluZGV4LlxuICovXG5mdW5jdGlvbiBpc1ZhbGlkQXJyYXlJbmRleCAodmFsKSB7XG4gIHZhciBuID0gcGFyc2VGbG9hdChTdHJpbmcodmFsKSk7XG4gIHJldHVybiBuID49IDAgJiYgTWF0aC5mbG9vcihuKSA9PT0gbiAmJiBpc0Zpbml0ZSh2YWwpXG59XG5cbmZ1bmN0aW9uIGlzUHJvbWlzZSAodmFsKSB7XG4gIHJldHVybiAoXG4gICAgaXNEZWYodmFsKSAmJlxuICAgIHR5cGVvZiB2YWwudGhlbiA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiB2YWwuY2F0Y2ggPT09ICdmdW5jdGlvbidcbiAgKVxufVxuXG4vKipcbiAqIENvbnZlcnQgYSB2YWx1ZSB0byBhIHN0cmluZyB0aGF0IGlzIGFjdHVhbGx5IHJlbmRlcmVkLlxuICovXG5mdW5jdGlvbiB0b1N0cmluZyAodmFsKSB7XG4gIHJldHVybiB2YWwgPT0gbnVsbFxuICAgID8gJydcbiAgICA6IEFycmF5LmlzQXJyYXkodmFsKSB8fCAoaXNQbGFpbk9iamVjdCh2YWwpICYmIHZhbC50b1N0cmluZyA9PT0gX3RvU3RyaW5nKVxuICAgICAgPyBKU09OLnN0cmluZ2lmeSh2YWwsIG51bGwsIDIpXG4gICAgICA6IFN0cmluZyh2YWwpXG59XG5cbi8qKlxuICogQ29udmVydCBhbiBpbnB1dCB2YWx1ZSB0byBhIG51bWJlciBmb3IgcGVyc2lzdGVuY2UuXG4gKiBJZiB0aGUgY29udmVyc2lvbiBmYWlscywgcmV0dXJuIG9yaWdpbmFsIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gdG9OdW1iZXIgKHZhbCkge1xuICB2YXIgbiA9IHBhcnNlRmxvYXQodmFsKTtcbiAgcmV0dXJuIGlzTmFOKG4pID8gdmFsIDogblxufVxuXG4vKipcbiAqIE1ha2UgYSBtYXAgYW5kIHJldHVybiBhIGZ1bmN0aW9uIGZvciBjaGVja2luZyBpZiBhIGtleVxuICogaXMgaW4gdGhhdCBtYXAuXG4gKi9cbmZ1bmN0aW9uIG1ha2VNYXAgKFxuICBzdHIsXG4gIGV4cGVjdHNMb3dlckNhc2Vcbikge1xuICB2YXIgbWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIGxpc3QgPSBzdHIuc3BsaXQoJywnKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgbWFwW2xpc3RbaV1dID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZXhwZWN0c0xvd2VyQ2FzZVxuICAgID8gZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gbWFwW3ZhbC50b0xvd2VyQ2FzZSgpXTsgfVxuICAgIDogZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gbWFwW3ZhbF07IH1cbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIHRhZyBpcyBhIGJ1aWx0LWluIHRhZy5cbiAqL1xudmFyIGlzQnVpbHRJblRhZyA9IG1ha2VNYXAoJ3Nsb3QsY29tcG9uZW50JywgdHJ1ZSk7XG5cbi8qKlxuICogQ2hlY2sgaWYgYW4gYXR0cmlidXRlIGlzIGEgcmVzZXJ2ZWQgYXR0cmlidXRlLlxuICovXG52YXIgaXNSZXNlcnZlZEF0dHJpYnV0ZSA9IG1ha2VNYXAoJ2tleSxyZWYsc2xvdCxzbG90LXNjb3BlLGlzJyk7XG5cbi8qKlxuICogUmVtb3ZlIGFuIGl0ZW0gZnJvbSBhbiBhcnJheS5cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlIChhcnIsIGl0ZW0pIHtcbiAgaWYgKGFyci5sZW5ndGgpIHtcbiAgICB2YXIgaW5kZXggPSBhcnIuaW5kZXhPZihpdGVtKTtcbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgcmV0dXJuIGFyci5zcGxpY2UoaW5kZXgsIDEpXG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBhbiBvYmplY3QgaGFzIHRoZSBwcm9wZXJ0eS5cbiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbmZ1bmN0aW9uIGhhc093biAob2JqLCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgY2FjaGVkIHZlcnNpb24gb2YgYSBwdXJlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBjYWNoZWQgKGZuKSB7XG4gIHZhciBjYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHJldHVybiAoZnVuY3Rpb24gY2FjaGVkRm4gKHN0cikge1xuICAgIHZhciBoaXQgPSBjYWNoZVtzdHJdO1xuICAgIHJldHVybiBoaXQgfHwgKGNhY2hlW3N0cl0gPSBmbihzdHIpKVxuICB9KVxufVxuXG4vKipcbiAqIENhbWVsaXplIGEgaHlwaGVuLWRlbGltaXRlZCBzdHJpbmcuXG4gKi9cbnZhciBjYW1lbGl6ZVJFID0gLy0oXFx3KS9nO1xudmFyIGNhbWVsaXplID0gY2FjaGVkKGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKGNhbWVsaXplUkUsIGZ1bmN0aW9uIChfLCBjKSB7IHJldHVybiBjID8gYy50b1VwcGVyQ2FzZSgpIDogJyc7IH0pXG59KTtcblxuLyoqXG4gKiBDYXBpdGFsaXplIGEgc3RyaW5nLlxuICovXG52YXIgY2FwaXRhbGl6ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSlcbn0pO1xuXG4vKipcbiAqIEh5cGhlbmF0ZSBhIGNhbWVsQ2FzZSBzdHJpbmcuXG4gKi9cbnZhciBoeXBoZW5hdGVSRSA9IC9cXEIoW0EtWl0pL2c7XG52YXIgaHlwaGVuYXRlID0gY2FjaGVkKGZ1bmN0aW9uIChzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKGh5cGhlbmF0ZVJFLCAnLSQxJykudG9Mb3dlckNhc2UoKVxufSk7XG5cbi8qKlxuICogU2ltcGxlIGJpbmQgcG9seWZpbGwgZm9yIGVudmlyb25tZW50cyB0aGF0IGRvIG5vdCBzdXBwb3J0IGl0LFxuICogZS5nLiwgUGhhbnRvbUpTIDEueC4gVGVjaG5pY2FsbHksIHdlIGRvbid0IG5lZWQgdGhpcyBhbnltb3JlXG4gKiBzaW5jZSBuYXRpdmUgYmluZCBpcyBub3cgcGVyZm9ybWFudCBlbm91Z2ggaW4gbW9zdCBicm93c2Vycy5cbiAqIEJ1dCByZW1vdmluZyBpdCB3b3VsZCBtZWFuIGJyZWFraW5nIGNvZGUgdGhhdCB3YXMgYWJsZSB0byBydW4gaW5cbiAqIFBoYW50b21KUyAxLngsIHNvIHRoaXMgbXVzdCBiZSBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LlxuICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBwb2x5ZmlsbEJpbmQgKGZuLCBjdHgpIHtcbiAgZnVuY3Rpb24gYm91bmRGbiAoYSkge1xuICAgIHZhciBsID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICByZXR1cm4gbFxuICAgICAgPyBsID4gMVxuICAgICAgICA/IGZuLmFwcGx5KGN0eCwgYXJndW1lbnRzKVxuICAgICAgICA6IGZuLmNhbGwoY3R4LCBhKVxuICAgICAgOiBmbi5jYWxsKGN0eClcbiAgfVxuXG4gIGJvdW5kRm4uX2xlbmd0aCA9IGZuLmxlbmd0aDtcbiAgcmV0dXJuIGJvdW5kRm5cbn1cblxuZnVuY3Rpb24gbmF0aXZlQmluZCAoZm4sIGN0eCkge1xuICByZXR1cm4gZm4uYmluZChjdHgpXG59XG5cbnZhciBiaW5kID0gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmRcbiAgPyBuYXRpdmVCaW5kXG4gIDogcG9seWZpbGxCaW5kO1xuXG4vKipcbiAqIENvbnZlcnQgYW4gQXJyYXktbGlrZSBvYmplY3QgdG8gYSByZWFsIEFycmF5LlxuICovXG5mdW5jdGlvbiB0b0FycmF5IChsaXN0LCBzdGFydCkge1xuICBzdGFydCA9IHN0YXJ0IHx8IDA7XG4gIHZhciBpID0gbGlzdC5sZW5ndGggLSBzdGFydDtcbiAgdmFyIHJldCA9IG5ldyBBcnJheShpKTtcbiAgd2hpbGUgKGktLSkge1xuICAgIHJldFtpXSA9IGxpc3RbaSArIHN0YXJ0XTtcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbi8qKlxuICogTWl4IHByb3BlcnRpZXMgaW50byB0YXJnZXQgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBleHRlbmQgKHRvLCBfZnJvbSkge1xuICBmb3IgKHZhciBrZXkgaW4gX2Zyb20pIHtcbiAgICB0b1trZXldID0gX2Zyb21ba2V5XTtcbiAgfVxuICByZXR1cm4gdG9cbn1cblxuLyoqXG4gKiBNZXJnZSBhbiBBcnJheSBvZiBPYmplY3RzIGludG8gYSBzaW5nbGUgT2JqZWN0LlxuICovXG5mdW5jdGlvbiB0b09iamVjdCAoYXJyKSB7XG4gIHZhciByZXMgPSB7fTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoYXJyW2ldKSB7XG4gICAgICBleHRlbmQocmVzLCBhcnJbaV0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5cbi8qKlxuICogUGVyZm9ybSBubyBvcGVyYXRpb24uXG4gKiBTdHViYmluZyBhcmdzIHRvIG1ha2UgRmxvdyBoYXBweSB3aXRob3V0IGxlYXZpbmcgdXNlbGVzcyB0cmFuc3BpbGVkIGNvZGVcbiAqIHdpdGggLi4ucmVzdCAoaHR0cHM6Ly9mbG93Lm9yZy9ibG9nLzIwMTcvMDUvMDcvU3RyaWN0LUZ1bmN0aW9uLUNhbGwtQXJpdHkvKS5cbiAqL1xuZnVuY3Rpb24gbm9vcCAoYSwgYiwgYykge31cblxuLyoqXG4gKiBBbHdheXMgcmV0dXJuIGZhbHNlLlxuICovXG52YXIgbm8gPSBmdW5jdGlvbiAoYSwgYiwgYykgeyByZXR1cm4gZmFsc2U7IH07XG5cbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cblxuLyoqXG4gKiBSZXR1cm4gdGhlIHNhbWUgdmFsdWUuXG4gKi9cbnZhciBpZGVudGl0eSA9IGZ1bmN0aW9uIChfKSB7IHJldHVybiBfOyB9O1xuXG4vKipcbiAqIENoZWNrIGlmIHR3byB2YWx1ZXMgYXJlIGxvb3NlbHkgZXF1YWwgLSB0aGF0IGlzLFxuICogaWYgdGhleSBhcmUgcGxhaW4gb2JqZWN0cywgZG8gdGhleSBoYXZlIHRoZSBzYW1lIHNoYXBlP1xuICovXG5mdW5jdGlvbiBsb29zZUVxdWFsIChhLCBiKSB7XG4gIGlmIChhID09PSBiKSB7IHJldHVybiB0cnVlIH1cbiAgdmFyIGlzT2JqZWN0QSA9IGlzT2JqZWN0KGEpO1xuICB2YXIgaXNPYmplY3RCID0gaXNPYmplY3QoYik7XG4gIGlmIChpc09iamVjdEEgJiYgaXNPYmplY3RCKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBpc0FycmF5QSA9IEFycmF5LmlzQXJyYXkoYSk7XG4gICAgICB2YXIgaXNBcnJheUIgPSBBcnJheS5pc0FycmF5KGIpO1xuICAgICAgaWYgKGlzQXJyYXlBICYmIGlzQXJyYXlCKSB7XG4gICAgICAgIHJldHVybiBhLmxlbmd0aCA9PT0gYi5sZW5ndGggJiYgYS5ldmVyeShmdW5jdGlvbiAoZSwgaSkge1xuICAgICAgICAgIHJldHVybiBsb29zZUVxdWFsKGUsIGJbaV0pXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKGEgaW5zdGFuY2VvZiBEYXRlICYmIGIgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIHJldHVybiBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKClcbiAgICAgIH0gZWxzZSBpZiAoIWlzQXJyYXlBICYmICFpc0FycmF5Qikge1xuICAgICAgICB2YXIga2V5c0EgPSBPYmplY3Qua2V5cyhhKTtcbiAgICAgICAgdmFyIGtleXNCID0gT2JqZWN0LmtleXMoYik7XG4gICAgICAgIHJldHVybiBrZXlzQS5sZW5ndGggPT09IGtleXNCLmxlbmd0aCAmJiBrZXlzQS5ldmVyeShmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgcmV0dXJuIGxvb3NlRXF1YWwoYVtrZXldLCBiW2tleV0pXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9IGVsc2UgaWYgKCFpc09iamVjdEEgJiYgIWlzT2JqZWN0Qikge1xuICAgIHJldHVybiBTdHJpbmcoYSkgPT09IFN0cmluZyhiKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbi8qKlxuICogUmV0dXJuIHRoZSBmaXJzdCBpbmRleCBhdCB3aGljaCBhIGxvb3NlbHkgZXF1YWwgdmFsdWUgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgYXJyYXkgKGlmIHZhbHVlIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGUgYXJyYXkgbXVzdFxuICogY29udGFpbiBhbiBvYmplY3Qgb2YgdGhlIHNhbWUgc2hhcGUpLCBvciAtMSBpZiBpdCBpcyBub3QgcHJlc2VudC5cbiAqL1xuZnVuY3Rpb24gbG9vc2VJbmRleE9mIChhcnIsIHZhbCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgIGlmIChsb29zZUVxdWFsKGFycltpXSwgdmFsKSkgeyByZXR1cm4gaSB9XG4gIH1cbiAgcmV0dXJuIC0xXG59XG5cbi8qKlxuICogRW5zdXJlIGEgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgb25jZS5cbiAqL1xuZnVuY3Rpb24gb25jZSAoZm4pIHtcbiAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmICghY2FsbGVkKSB7XG4gICAgICBjYWxsZWQgPSB0cnVlO1xuICAgICAgZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIEFTU0VUX1RZUEVTID0gW1xuICAnY29tcG9uZW50JyxcbiAgJ2RpcmVjdGl2ZScsXG4gICdmaWx0ZXInXG5dO1xuXG52YXIgTElGRUNZQ0xFX0hPT0tTID0gW1xuICAnYmVmb3JlQ3JlYXRlJyxcbiAgJ2NyZWF0ZWQnLFxuICAnYmVmb3JlTW91bnQnLFxuICAnbW91bnRlZCcsXG4gICdiZWZvcmVVcGRhdGUnLFxuICAndXBkYXRlZCcsXG4gICdiZWZvcmVEZXN0cm95JyxcbiAgJ2Rlc3Ryb3llZCcsXG4gICdhY3RpdmF0ZWQnLFxuICAnZGVhY3RpdmF0ZWQnLFxuICAnZXJyb3JDYXB0dXJlZCcsXG4gICdzZXJ2ZXJQcmVmZXRjaCdcbl07XG5cbi8qICAqL1xuXG5cblxudmFyIGNvbmZpZyA9ICh7XG4gIC8qKlxuICAgKiBPcHRpb24gbWVyZ2Ugc3RyYXRlZ2llcyAodXNlZCBpbiBjb3JlL3V0aWwvb3B0aW9ucylcbiAgICovXG4gIC8vICRmbG93LWRpc2FibGUtbGluZVxuICBvcHRpb25NZXJnZVN0cmF0ZWdpZXM6IE9iamVjdC5jcmVhdGUobnVsbCksXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc3VwcHJlc3Mgd2FybmluZ3MuXG4gICAqL1xuICBzaWxlbnQ6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBTaG93IHByb2R1Y3Rpb24gbW9kZSB0aXAgbWVzc2FnZSBvbiBib290P1xuICAgKi9cbiAgcHJvZHVjdGlvblRpcDogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyxcblxuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgZGV2dG9vbHNcbiAgICovXG4gIGRldnRvb2xzOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJlY29yZCBwZXJmXG4gICAqL1xuICBwZXJmb3JtYW5jZTogZmFsc2UsXG5cbiAgLyoqXG4gICAqIEVycm9yIGhhbmRsZXIgZm9yIHdhdGNoZXIgZXJyb3JzXG4gICAqL1xuICBlcnJvckhhbmRsZXI6IG51bGwsXG5cbiAgLyoqXG4gICAqIFdhcm4gaGFuZGxlciBmb3Igd2F0Y2hlciB3YXJuc1xuICAgKi9cbiAgd2FybkhhbmRsZXI6IG51bGwsXG5cbiAgLyoqXG4gICAqIElnbm9yZSBjZXJ0YWluIGN1c3RvbSBlbGVtZW50c1xuICAgKi9cbiAgaWdub3JlZEVsZW1lbnRzOiBbXSxcblxuICAvKipcbiAgICogQ3VzdG9tIHVzZXIga2V5IGFsaWFzZXMgZm9yIHYtb25cbiAgICovXG4gIC8vICRmbG93LWRpc2FibGUtbGluZVxuICBrZXlDb2RlczogT2JqZWN0LmNyZWF0ZShudWxsKSxcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSB0YWcgaXMgcmVzZXJ2ZWQgc28gdGhhdCBpdCBjYW5ub3QgYmUgcmVnaXN0ZXJlZCBhcyBhXG4gICAqIGNvbXBvbmVudC4gVGhpcyBpcyBwbGF0Zm9ybS1kZXBlbmRlbnQgYW5kIG1heSBiZSBvdmVyd3JpdHRlbi5cbiAgICovXG4gIGlzUmVzZXJ2ZWRUYWc6IG5vLFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhdHRyaWJ1dGUgaXMgcmVzZXJ2ZWQgc28gdGhhdCBpdCBjYW5ub3QgYmUgdXNlZCBhcyBhIGNvbXBvbmVudFxuICAgKiBwcm9wLiBUaGlzIGlzIHBsYXRmb3JtLWRlcGVuZGVudCBhbmQgbWF5IGJlIG92ZXJ3cml0dGVuLlxuICAgKi9cbiAgaXNSZXNlcnZlZEF0dHI6IG5vLFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIHRhZyBpcyBhbiB1bmtub3duIGVsZW1lbnQuXG4gICAqIFBsYXRmb3JtLWRlcGVuZGVudC5cbiAgICovXG4gIGlzVW5rbm93bkVsZW1lbnQ6IG5vLFxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG5hbWVzcGFjZSBvZiBhbiBlbGVtZW50XG4gICAqL1xuICBnZXRUYWdOYW1lc3BhY2U6IG5vb3AsXG5cbiAgLyoqXG4gICAqIFBhcnNlIHRoZSByZWFsIHRhZyBuYW1lIGZvciB0aGUgc3BlY2lmaWMgcGxhdGZvcm0uXG4gICAqL1xuICBwYXJzZVBsYXRmb3JtVGFnTmFtZTogaWRlbnRpdHksXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIGF0dHJpYnV0ZSBtdXN0IGJlIGJvdW5kIHVzaW5nIHByb3BlcnR5LCBlLmcuIHZhbHVlXG4gICAqIFBsYXRmb3JtLWRlcGVuZGVudC5cbiAgICovXG4gIG11c3RVc2VQcm9wOiBubyxcblxuICAvKipcbiAgICogUGVyZm9ybSB1cGRhdGVzIGFzeW5jaHJvbm91c2x5LiBJbnRlbmRlZCB0byBiZSB1c2VkIGJ5IFZ1ZSBUZXN0IFV0aWxzXG4gICAqIFRoaXMgd2lsbCBzaWduaWZpY2FudGx5IHJlZHVjZSBwZXJmb3JtYW5jZSBpZiBzZXQgdG8gZmFsc2UuXG4gICAqL1xuICBhc3luYzogdHJ1ZSxcblxuICAvKipcbiAgICogRXhwb3NlZCBmb3IgbGVnYWN5IHJlYXNvbnNcbiAgICovXG4gIF9saWZlY3ljbGVIb29rczogTElGRUNZQ0xFX0hPT0tTXG59KTtcblxuLyogICovXG5cbi8qKlxuICogdW5pY29kZSBsZXR0ZXJzIHVzZWQgZm9yIHBhcnNpbmcgaHRtbCB0YWdzLCBjb21wb25lbnQgbmFtZXMgYW5kIHByb3BlcnR5IHBhdGhzLlxuICogdXNpbmcgaHR0cHM6Ly93d3cudzMub3JnL1RSL2h0bWw1My9zZW1hbnRpY3Mtc2NyaXB0aW5nLmh0bWwjcG90ZW50aWFsY3VzdG9tZWxlbWVudG5hbWVcbiAqIHNraXBwaW5nIFxcdTEwMDAwLVxcdUVGRkZGIGR1ZSB0byBpdCBmcmVlemluZyB1cCBQaGFudG9tSlNcbiAqL1xudmFyIHVuaWNvZGVSZWdFeHAgPSAvYS16QS1aXFx1MDBCN1xcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwM0YtXFx1MjA0MFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRC87XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzdHJpbmcgc3RhcnRzIHdpdGggJCBvciBfXG4gKi9cbmZ1bmN0aW9uIGlzUmVzZXJ2ZWQgKHN0cikge1xuICB2YXIgYyA9IChzdHIgKyAnJykuY2hhckNvZGVBdCgwKTtcbiAgcmV0dXJuIGMgPT09IDB4MjQgfHwgYyA9PT0gMHg1RlxufVxuXG4vKipcbiAqIERlZmluZSBhIHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiBkZWYgKG9iaiwga2V5LCB2YWwsIGVudW1lcmFibGUpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgdmFsdWU6IHZhbCxcbiAgICBlbnVtZXJhYmxlOiAhIWVudW1lcmFibGUsXG4gICAgd3JpdGFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuXG4vKipcbiAqIFBhcnNlIHNpbXBsZSBwYXRoLlxuICovXG52YXIgYmFpbFJFID0gbmV3IFJlZ0V4cCgoXCJbXlwiICsgKHVuaWNvZGVSZWdFeHAuc291cmNlKSArIFwiLiRfXFxcXGRdXCIpKTtcbmZ1bmN0aW9uIHBhcnNlUGF0aCAocGF0aCkge1xuICBpZiAoYmFpbFJFLnRlc3QocGF0aCkpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgc2VnbWVudHMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gIHJldHVybiBmdW5jdGlvbiAob2JqKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWdtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFvYmopIHsgcmV0dXJuIH1cbiAgICAgIG9iaiA9IG9ialtzZWdtZW50c1tpXV07XG4gICAgfVxuICAgIHJldHVybiBvYmpcbiAgfVxufVxuXG4vKiAgKi9cblxuLy8gY2FuIHdlIHVzZSBfX3Byb3RvX18/XG52YXIgaGFzUHJvdG8gPSAnX19wcm90b19fJyBpbiB7fTtcblxuLy8gQnJvd3NlciBlbnZpcm9ubWVudCBzbmlmZmluZ1xudmFyIGluQnJvd3NlciA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xudmFyIGluV2VleCA9IHR5cGVvZiBXWEVudmlyb25tZW50ICE9PSAndW5kZWZpbmVkJyAmJiAhIVdYRW52aXJvbm1lbnQucGxhdGZvcm07XG52YXIgd2VleFBsYXRmb3JtID0gaW5XZWV4ICYmIFdYRW52aXJvbm1lbnQucGxhdGZvcm0udG9Mb3dlckNhc2UoKTtcbnZhciBVQSA9IGluQnJvd3NlciAmJiB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xudmFyIGlzSUUgPSBVQSAmJiAvbXNpZXx0cmlkZW50Ly50ZXN0KFVBKTtcbnZhciBpc0lFOSA9IFVBICYmIFVBLmluZGV4T2YoJ21zaWUgOS4wJykgPiAwO1xudmFyIGlzRWRnZSA9IFVBICYmIFVBLmluZGV4T2YoJ2VkZ2UvJykgPiAwO1xudmFyIGlzQW5kcm9pZCA9IChVQSAmJiBVQS5pbmRleE9mKCdhbmRyb2lkJykgPiAwKSB8fCAod2VleFBsYXRmb3JtID09PSAnYW5kcm9pZCcpO1xudmFyIGlzSU9TID0gKFVBICYmIC9pcGhvbmV8aXBhZHxpcG9kfGlvcy8udGVzdChVQSkpIHx8ICh3ZWV4UGxhdGZvcm0gPT09ICdpb3MnKTtcbnZhciBpc0Nocm9tZSA9IFVBICYmIC9jaHJvbWVcXC9cXGQrLy50ZXN0KFVBKSAmJiAhaXNFZGdlO1xudmFyIGlzUGhhbnRvbUpTID0gVUEgJiYgL3BoYW50b21qcy8udGVzdChVQSk7XG52YXIgaXNGRiA9IFVBICYmIFVBLm1hdGNoKC9maXJlZm94XFwvKFxcZCspLyk7XG5cbi8vIEZpcmVmb3ggaGFzIGEgXCJ3YXRjaFwiIGZ1bmN0aW9uIG9uIE9iamVjdC5wcm90b3R5cGUuLi5cbnZhciBuYXRpdmVXYXRjaCA9ICh7fSkud2F0Y2g7XG5pZiAoaW5Ccm93c2VyKSB7XG4gIHRyeSB7XG4gICAgdmFyIG9wdHMgPSB7fTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob3B0cywgJ3Bhc3NpdmUnLCAoe1xuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQgKCkge1xuICAgICAgfVxuICAgIH0pKTsgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzI4NVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0ZXN0LXBhc3NpdmUnLCBudWxsLCBvcHRzKTtcbiAgfSBjYXRjaCAoZSkge31cbn1cblxuLy8gdGhpcyBuZWVkcyB0byBiZSBsYXp5LWV2YWxlZCBiZWNhdXNlIHZ1ZSBtYXkgYmUgcmVxdWlyZWQgYmVmb3JlXG4vLyB2dWUtc2VydmVyLXJlbmRlcmVyIGNhbiBzZXQgVlVFX0VOVlxudmFyIF9pc1NlcnZlcjtcbnZhciBpc1NlcnZlclJlbmRlcmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKF9pc1NlcnZlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCFpbkJyb3dzZXIgJiYgIWluV2VleCAmJiB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgLy8gZGV0ZWN0IHByZXNlbmNlIG9mIHZ1ZS1zZXJ2ZXItcmVuZGVyZXIgYW5kIGF2b2lkXG4gICAgICAvLyBXZWJwYWNrIHNoaW1taW5nIHRoZSBwcm9jZXNzXG4gICAgICBfaXNTZXJ2ZXIgPSBnbG9iYWxbJ3Byb2Nlc3MnXSAmJiBnbG9iYWxbJ3Byb2Nlc3MnXS5lbnYuVlVFX0VOViA9PT0gJ3NlcnZlcic7XG4gICAgfSBlbHNlIHtcbiAgICAgIF9pc1NlcnZlciA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gX2lzU2VydmVyXG59O1xuXG4vLyBkZXRlY3QgZGV2dG9vbHNcbnZhciBkZXZ0b29scyA9IGluQnJvd3NlciAmJiB3aW5kb3cuX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIGlzTmF0aXZlIChDdG9yKSB7XG4gIHJldHVybiB0eXBlb2YgQ3RvciA9PT0gJ2Z1bmN0aW9uJyAmJiAvbmF0aXZlIGNvZGUvLnRlc3QoQ3Rvci50b1N0cmluZygpKVxufVxuXG52YXIgaGFzU3ltYm9sID1cbiAgdHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNOYXRpdmUoU3ltYm9sKSAmJlxuICB0eXBlb2YgUmVmbGVjdCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNOYXRpdmUoUmVmbGVjdC5vd25LZXlzKTtcblxudmFyIF9TZXQ7XG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi8gLy8gJGZsb3ctZGlzYWJsZS1saW5lXG5pZiAodHlwZW9mIFNldCAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNOYXRpdmUoU2V0KSkge1xuICAvLyB1c2UgbmF0aXZlIFNldCB3aGVuIGF2YWlsYWJsZS5cbiAgX1NldCA9IFNldDtcbn0gZWxzZSB7XG4gIC8vIGEgbm9uLXN0YW5kYXJkIFNldCBwb2x5ZmlsbCB0aGF0IG9ubHkgd29ya3Mgd2l0aCBwcmltaXRpdmUga2V5cy5cbiAgX1NldCA9IC8qQF9fUFVSRV9fKi8oZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFNldCAoKSB7XG4gICAgICB0aGlzLnNldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgfVxuICAgIFNldC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gaGFzIChrZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldFtrZXldID09PSB0cnVlXG4gICAgfTtcbiAgICBTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAoa2V5KSB7XG4gICAgICB0aGlzLnNldFtrZXldID0gdHJ1ZTtcbiAgICB9O1xuICAgIFNldC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiBjbGVhciAoKSB7XG4gICAgICB0aGlzLnNldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgfTtcblxuICAgIHJldHVybiBTZXQ7XG4gIH0oKSk7XG59XG5cbi8qICAqL1xuXG52YXIgd2FybiA9IG5vb3A7XG52YXIgdGlwID0gbm9vcDtcbnZhciBnZW5lcmF0ZUNvbXBvbmVudFRyYWNlID0gKG5vb3ApOyAvLyB3b3JrIGFyb3VuZCBmbG93IGNoZWNrXG52YXIgZm9ybWF0Q29tcG9uZW50TmFtZSA9IChub29wKTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGhhc0NvbnNvbGUgPSB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCc7XG4gIHZhciBjbGFzc2lmeVJFID0gLyg/Ol58Wy1fXSkoXFx3KS9nO1xuICB2YXIgY2xhc3NpZnkgPSBmdW5jdGlvbiAoc3RyKSB7IHJldHVybiBzdHJcbiAgICAucmVwbGFjZShjbGFzc2lmeVJFLCBmdW5jdGlvbiAoYykgeyByZXR1cm4gYy50b1VwcGVyQ2FzZSgpOyB9KVxuICAgIC5yZXBsYWNlKC9bLV9dL2csICcnKTsgfTtcblxuICB3YXJuID0gZnVuY3Rpb24gKG1zZywgdm0pIHtcbiAgICB2YXIgdHJhY2UgPSB2bSA/IGdlbmVyYXRlQ29tcG9uZW50VHJhY2Uodm0pIDogJyc7XG5cbiAgICBpZiAoY29uZmlnLndhcm5IYW5kbGVyKSB7XG4gICAgICBjb25maWcud2FybkhhbmRsZXIuY2FsbChudWxsLCBtc2csIHZtLCB0cmFjZSk7XG4gICAgfSBlbHNlIGlmIChoYXNDb25zb2xlICYmICghY29uZmlnLnNpbGVudCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoKFwiW1Z1ZSB3YXJuXTogXCIgKyBtc2cgKyB0cmFjZSkpO1xuICAgIH1cbiAgfTtcblxuICB0aXAgPSBmdW5jdGlvbiAobXNnLCB2bSkge1xuICAgIGlmIChoYXNDb25zb2xlICYmICghY29uZmlnLnNpbGVudCkpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIltWdWUgdGlwXTogXCIgKyBtc2cgKyAoXG4gICAgICAgIHZtID8gZ2VuZXJhdGVDb21wb25lbnRUcmFjZSh2bSkgOiAnJ1xuICAgICAgKSk7XG4gICAgfVxuICB9O1xuXG4gIGZvcm1hdENvbXBvbmVudE5hbWUgPSBmdW5jdGlvbiAodm0sIGluY2x1ZGVGaWxlKSB7XG4gICAgaWYgKHZtLiRyb290ID09PSB2bSkge1xuICAgICAgaWYgKHZtLiRvcHRpb25zICYmIHZtLiRvcHRpb25zLl9fZmlsZSkgeyAvLyBmaXhlZCBieSB4eHh4eHhcbiAgICAgICAgcmV0dXJuICgnJykgKyB2bS4kb3B0aW9ucy5fX2ZpbGVcbiAgICAgIH1cbiAgICAgIHJldHVybiAnPFJvb3Q+J1xuICAgIH1cbiAgICB2YXIgb3B0aW9ucyA9IHR5cGVvZiB2bSA9PT0gJ2Z1bmN0aW9uJyAmJiB2bS5jaWQgIT0gbnVsbFxuICAgICAgPyB2bS5vcHRpb25zXG4gICAgICA6IHZtLl9pc1Z1ZVxuICAgICAgICA/IHZtLiRvcHRpb25zIHx8IHZtLmNvbnN0cnVjdG9yLm9wdGlvbnNcbiAgICAgICAgOiB2bTtcbiAgICB2YXIgbmFtZSA9IG9wdGlvbnMubmFtZSB8fCBvcHRpb25zLl9jb21wb25lbnRUYWc7XG4gICAgdmFyIGZpbGUgPSBvcHRpb25zLl9fZmlsZTtcbiAgICBpZiAoIW5hbWUgJiYgZmlsZSkge1xuICAgICAgdmFyIG1hdGNoID0gZmlsZS5tYXRjaCgvKFteL1xcXFxdKylcXC52dWUkLyk7XG4gICAgICBuYW1lID0gbWF0Y2ggJiYgbWF0Y2hbMV07XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIChuYW1lID8gKFwiPFwiICsgKGNsYXNzaWZ5KG5hbWUpKSArIFwiPlwiKSA6IFwiPEFub255bW91cz5cIikgK1xuICAgICAgKGZpbGUgJiYgaW5jbHVkZUZpbGUgIT09IGZhbHNlID8gKFwiIGF0IFwiICsgZmlsZSkgOiAnJylcbiAgICApXG4gIH07XG5cbiAgdmFyIHJlcGVhdCA9IGZ1bmN0aW9uIChzdHIsIG4pIHtcbiAgICB2YXIgcmVzID0gJyc7XG4gICAgd2hpbGUgKG4pIHtcbiAgICAgIGlmIChuICUgMiA9PT0gMSkgeyByZXMgKz0gc3RyOyB9XG4gICAgICBpZiAobiA+IDEpIHsgc3RyICs9IHN0cjsgfVxuICAgICAgbiA+Pj0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc1xuICB9O1xuXG4gIGdlbmVyYXRlQ29tcG9uZW50VHJhY2UgPSBmdW5jdGlvbiAodm0pIHtcbiAgICBpZiAodm0uX2lzVnVlICYmIHZtLiRwYXJlbnQpIHtcbiAgICAgIHZhciB0cmVlID0gW107XG4gICAgICB2YXIgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlID0gMDtcbiAgICAgIHdoaWxlICh2bSAmJiB2bS4kb3B0aW9ucy5uYW1lICE9PSAnUGFnZUJvZHknKSB7XG4gICAgICAgIGlmICh0cmVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB2YXIgbGFzdCA9IHRyZWVbdHJlZS5sZW5ndGggLSAxXTtcbiAgICAgICAgICBpZiAobGFzdC5jb25zdHJ1Y3RvciA9PT0gdm0uY29uc3RydWN0b3IpIHtcbiAgICAgICAgICAgIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZSsrO1xuICAgICAgICAgICAgdm0gPSB2bS4kcGFyZW50O1xuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZSA+IDApIHtcbiAgICAgICAgICAgIHRyZWVbdHJlZS5sZW5ndGggLSAxXSA9IFtsYXN0LCBjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2VdO1xuICAgICAgICAgICAgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgIXZtLiRvcHRpb25zLmlzUmVzZXJ2ZWQgJiYgdHJlZS5wdXNoKHZtKTtcbiAgICAgICAgdm0gPSB2bS4kcGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuICdcXG5cXG5mb3VuZCBpblxcblxcbicgKyB0cmVlXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKHZtLCBpKSB7IHJldHVybiAoXCJcIiArIChpID09PSAwID8gJy0tLT4gJyA6IHJlcGVhdCgnICcsIDUgKyBpICogMikpICsgKEFycmF5LmlzQXJyYXkodm0pXG4gICAgICAgICAgICA/ICgoZm9ybWF0Q29tcG9uZW50TmFtZSh2bVswXSkpICsgXCIuLi4gKFwiICsgKHZtWzFdKSArIFwiIHJlY3Vyc2l2ZSBjYWxscylcIilcbiAgICAgICAgICAgIDogZm9ybWF0Q29tcG9uZW50TmFtZSh2bSkpKTsgfSlcbiAgICAgICAgLmpvaW4oJ1xcbicpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoXCJcXG5cXG4oZm91bmQgaW4gXCIgKyAoZm9ybWF0Q29tcG9uZW50TmFtZSh2bSkpICsgXCIpXCIpXG4gICAgfVxuICB9O1xufVxuXG4vKiAgKi9cblxudmFyIHVpZCA9IDA7XG5cbi8qKlxuICogQSBkZXAgaXMgYW4gb2JzZXJ2YWJsZSB0aGF0IGNhbiBoYXZlIG11bHRpcGxlXG4gKiBkaXJlY3RpdmVzIHN1YnNjcmliaW5nIHRvIGl0LlxuICovXG52YXIgRGVwID0gZnVuY3Rpb24gRGVwICgpIHtcbiAgdGhpcy5pZCA9IHVpZCsrO1xuICB0aGlzLnN1YnMgPSBbXTtcbn07XG5cbkRlcC5wcm90b3R5cGUuYWRkU3ViID0gZnVuY3Rpb24gYWRkU3ViIChzdWIpIHtcbiAgdGhpcy5zdWJzLnB1c2goc3ViKTtcbn07XG5cbkRlcC5wcm90b3R5cGUucmVtb3ZlU3ViID0gZnVuY3Rpb24gcmVtb3ZlU3ViIChzdWIpIHtcbiAgcmVtb3ZlKHRoaXMuc3Vicywgc3ViKTtcbn07XG5cbkRlcC5wcm90b3R5cGUuZGVwZW5kID0gZnVuY3Rpb24gZGVwZW5kICgpIHtcbiAgaWYgKERlcC5TaGFyZWRPYmplY3QudGFyZ2V0KSB7XG4gICAgRGVwLlNoYXJlZE9iamVjdC50YXJnZXQuYWRkRGVwKHRoaXMpO1xuICB9XG59O1xuXG5EZXAucHJvdG90eXBlLm5vdGlmeSA9IGZ1bmN0aW9uIG5vdGlmeSAoKSB7XG4gIC8vIHN0YWJpbGl6ZSB0aGUgc3Vic2NyaWJlciBsaXN0IGZpcnN0XG4gIHZhciBzdWJzID0gdGhpcy5zdWJzLnNsaWNlKCk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFjb25maWcuYXN5bmMpIHtcbiAgICAvLyBzdWJzIGFyZW4ndCBzb3J0ZWQgaW4gc2NoZWR1bGVyIGlmIG5vdCBydW5uaW5nIGFzeW5jXG4gICAgLy8gd2UgbmVlZCB0byBzb3J0IHRoZW0gbm93IHRvIG1ha2Ugc3VyZSB0aGV5IGZpcmUgaW4gY29ycmVjdFxuICAgIC8vIG9yZGVyXG4gICAgc3Vicy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLmlkIC0gYi5pZDsgfSk7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBzdWJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHN1YnNbaV0udXBkYXRlKCk7XG4gIH1cbn07XG5cbi8vIFRoZSBjdXJyZW50IHRhcmdldCB3YXRjaGVyIGJlaW5nIGV2YWx1YXRlZC5cbi8vIFRoaXMgaXMgZ2xvYmFsbHkgdW5pcXVlIGJlY2F1c2Ugb25seSBvbmUgd2F0Y2hlclxuLy8gY2FuIGJlIGV2YWx1YXRlZCBhdCBhIHRpbWUuXG4vLyBmaXhlZCBieSB4eHh4eHggKG52dWUgc2hhcmVkIHZ1ZXgpXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiAqL1xuRGVwLlNoYXJlZE9iamVjdCA9IHt9O1xuRGVwLlNoYXJlZE9iamVjdC50YXJnZXQgPSBudWxsO1xuRGVwLlNoYXJlZE9iamVjdC50YXJnZXRTdGFjayA9IFtdO1xuXG5mdW5jdGlvbiBwdXNoVGFyZ2V0ICh0YXJnZXQpIHtcbiAgRGVwLlNoYXJlZE9iamVjdC50YXJnZXRTdGFjay5wdXNoKHRhcmdldCk7XG4gIERlcC5TaGFyZWRPYmplY3QudGFyZ2V0ID0gdGFyZ2V0O1xuICBEZXAudGFyZ2V0ID0gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBwb3BUYXJnZXQgKCkge1xuICBEZXAuU2hhcmVkT2JqZWN0LnRhcmdldFN0YWNrLnBvcCgpO1xuICBEZXAuU2hhcmVkT2JqZWN0LnRhcmdldCA9IERlcC5TaGFyZWRPYmplY3QudGFyZ2V0U3RhY2tbRGVwLlNoYXJlZE9iamVjdC50YXJnZXRTdGFjay5sZW5ndGggLSAxXTtcbiAgRGVwLnRhcmdldCA9IERlcC5TaGFyZWRPYmplY3QudGFyZ2V0O1xufVxuXG4vKiAgKi9cblxudmFyIFZOb2RlID0gZnVuY3Rpb24gVk5vZGUgKFxuICB0YWcsXG4gIGRhdGEsXG4gIGNoaWxkcmVuLFxuICB0ZXh0LFxuICBlbG0sXG4gIGNvbnRleHQsXG4gIGNvbXBvbmVudE9wdGlvbnMsXG4gIGFzeW5jRmFjdG9yeVxuKSB7XG4gIHRoaXMudGFnID0gdGFnO1xuICB0aGlzLmRhdGEgPSBkYXRhO1xuICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIHRoaXMudGV4dCA9IHRleHQ7XG4gIHRoaXMuZWxtID0gZWxtO1xuICB0aGlzLm5zID0gdW5kZWZpbmVkO1xuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLmZuQ29udGV4dCA9IHVuZGVmaW5lZDtcbiAgdGhpcy5mbk9wdGlvbnMgPSB1bmRlZmluZWQ7XG4gIHRoaXMuZm5TY29wZUlkID0gdW5kZWZpbmVkO1xuICB0aGlzLmtleSA9IGRhdGEgJiYgZGF0YS5rZXk7XG4gIHRoaXMuY29tcG9uZW50T3B0aW9ucyA9IGNvbXBvbmVudE9wdGlvbnM7XG4gIHRoaXMuY29tcG9uZW50SW5zdGFuY2UgPSB1bmRlZmluZWQ7XG4gIHRoaXMucGFyZW50ID0gdW5kZWZpbmVkO1xuICB0aGlzLnJhdyA9IGZhbHNlO1xuICB0aGlzLmlzU3RhdGljID0gZmFsc2U7XG4gIHRoaXMuaXNSb290SW5zZXJ0ID0gdHJ1ZTtcbiAgdGhpcy5pc0NvbW1lbnQgPSBmYWxzZTtcbiAgdGhpcy5pc0Nsb25lZCA9IGZhbHNlO1xuICB0aGlzLmlzT25jZSA9IGZhbHNlO1xuICB0aGlzLmFzeW5jRmFjdG9yeSA9IGFzeW5jRmFjdG9yeTtcbiAgdGhpcy5hc3luY01ldGEgPSB1bmRlZmluZWQ7XG4gIHRoaXMuaXNBc3luY1BsYWNlaG9sZGVyID0gZmFsc2U7XG59O1xuXG52YXIgcHJvdG90eXBlQWNjZXNzb3JzID0geyBjaGlsZDogeyBjb25maWd1cmFibGU6IHRydWUgfSB9O1xuXG4vLyBERVBSRUNBVEVEOiBhbGlhcyBmb3IgY29tcG9uZW50SW5zdGFuY2UgZm9yIGJhY2t3YXJkcyBjb21wYXQuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xucHJvdG90eXBlQWNjZXNzb3JzLmNoaWxkLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuY29tcG9uZW50SW5zdGFuY2Vcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBWTm9kZS5wcm90b3R5cGUsIHByb3RvdHlwZUFjY2Vzc29ycyApO1xuXG52YXIgY3JlYXRlRW1wdHlWTm9kZSA9IGZ1bmN0aW9uICh0ZXh0KSB7XG4gIGlmICggdGV4dCA9PT0gdm9pZCAwICkgdGV4dCA9ICcnO1xuXG4gIHZhciBub2RlID0gbmV3IFZOb2RlKCk7XG4gIG5vZGUudGV4dCA9IHRleHQ7XG4gIG5vZGUuaXNDb21tZW50ID0gdHJ1ZTtcbiAgcmV0dXJuIG5vZGVcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZVRleHRWTm9kZSAodmFsKSB7XG4gIHJldHVybiBuZXcgVk5vZGUodW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgU3RyaW5nKHZhbCkpXG59XG5cbi8vIG9wdGltaXplZCBzaGFsbG93IGNsb25lXG4vLyB1c2VkIGZvciBzdGF0aWMgbm9kZXMgYW5kIHNsb3Qgbm9kZXMgYmVjYXVzZSB0aGV5IG1heSBiZSByZXVzZWQgYWNyb3NzXG4vLyBtdWx0aXBsZSByZW5kZXJzLCBjbG9uaW5nIHRoZW0gYXZvaWRzIGVycm9ycyB3aGVuIERPTSBtYW5pcHVsYXRpb25zIHJlbHlcbi8vIG9uIHRoZWlyIGVsbSByZWZlcmVuY2UuXG5mdW5jdGlvbiBjbG9uZVZOb2RlICh2bm9kZSkge1xuICB2YXIgY2xvbmVkID0gbmV3IFZOb2RlKFxuICAgIHZub2RlLnRhZyxcbiAgICB2bm9kZS5kYXRhLFxuICAgIC8vICM3OTc1XG4gICAgLy8gY2xvbmUgY2hpbGRyZW4gYXJyYXkgdG8gYXZvaWQgbXV0YXRpbmcgb3JpZ2luYWwgaW4gY2FzZSBvZiBjbG9uaW5nXG4gICAgLy8gYSBjaGlsZC5cbiAgICB2bm9kZS5jaGlsZHJlbiAmJiB2bm9kZS5jaGlsZHJlbi5zbGljZSgpLFxuICAgIHZub2RlLnRleHQsXG4gICAgdm5vZGUuZWxtLFxuICAgIHZub2RlLmNvbnRleHQsXG4gICAgdm5vZGUuY29tcG9uZW50T3B0aW9ucyxcbiAgICB2bm9kZS5hc3luY0ZhY3RvcnlcbiAgKTtcbiAgY2xvbmVkLm5zID0gdm5vZGUubnM7XG4gIGNsb25lZC5pc1N0YXRpYyA9IHZub2RlLmlzU3RhdGljO1xuICBjbG9uZWQua2V5ID0gdm5vZGUua2V5O1xuICBjbG9uZWQuaXNDb21tZW50ID0gdm5vZGUuaXNDb21tZW50O1xuICBjbG9uZWQuZm5Db250ZXh0ID0gdm5vZGUuZm5Db250ZXh0O1xuICBjbG9uZWQuZm5PcHRpb25zID0gdm5vZGUuZm5PcHRpb25zO1xuICBjbG9uZWQuZm5TY29wZUlkID0gdm5vZGUuZm5TY29wZUlkO1xuICBjbG9uZWQuYXN5bmNNZXRhID0gdm5vZGUuYXN5bmNNZXRhO1xuICBjbG9uZWQuaXNDbG9uZWQgPSB0cnVlO1xuICByZXR1cm4gY2xvbmVkXG59XG5cbi8qXG4gKiBub3QgdHlwZSBjaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBmbG93IGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGhcbiAqIGR5bmFtaWNhbGx5IGFjY2Vzc2luZyBtZXRob2RzIG9uIEFycmF5IHByb3RvdHlwZVxuICovXG5cbnZhciBhcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xudmFyIGFycmF5TWV0aG9kcyA9IE9iamVjdC5jcmVhdGUoYXJyYXlQcm90byk7XG5cbnZhciBtZXRob2RzVG9QYXRjaCA9IFtcbiAgJ3B1c2gnLFxuICAncG9wJyxcbiAgJ3NoaWZ0JyxcbiAgJ3Vuc2hpZnQnLFxuICAnc3BsaWNlJyxcbiAgJ3NvcnQnLFxuICAncmV2ZXJzZSdcbl07XG5cbi8qKlxuICogSW50ZXJjZXB0IG11dGF0aW5nIG1ldGhvZHMgYW5kIGVtaXQgZXZlbnRzXG4gKi9cbm1ldGhvZHNUb1BhdGNoLmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuICAvLyBjYWNoZSBvcmlnaW5hbCBtZXRob2RcbiAgdmFyIG9yaWdpbmFsID0gYXJyYXlQcm90b1ttZXRob2RdO1xuICBkZWYoYXJyYXlNZXRob2RzLCBtZXRob2QsIGZ1bmN0aW9uIG11dGF0b3IgKCkge1xuICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gXTtcblxuICAgIHZhciByZXN1bHQgPSBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB2YXIgb2IgPSB0aGlzLl9fb2JfXztcbiAgICB2YXIgaW5zZXJ0ZWQ7XG4gICAgc3dpdGNoIChtZXRob2QpIHtcbiAgICAgIGNhc2UgJ3B1c2gnOlxuICAgICAgY2FzZSAndW5zaGlmdCc6XG4gICAgICAgIGluc2VydGVkID0gYXJncztcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3NwbGljZSc6XG4gICAgICAgIGluc2VydGVkID0gYXJncy5zbGljZSgyKTtcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gICAgaWYgKGluc2VydGVkKSB7IG9iLm9ic2VydmVBcnJheShpbnNlcnRlZCk7IH1cbiAgICAvLyBub3RpZnkgY2hhbmdlXG4gICAgb2IuZGVwLm5vdGlmeSgpO1xuICAgIHJldHVybiByZXN1bHRcbiAgfSk7XG59KTtcblxuLyogICovXG5cbnZhciBhcnJheUtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhhcnJheU1ldGhvZHMpO1xuXG4vKipcbiAqIEluIHNvbWUgY2FzZXMgd2UgbWF5IHdhbnQgdG8gZGlzYWJsZSBvYnNlcnZhdGlvbiBpbnNpZGUgYSBjb21wb25lbnQnc1xuICogdXBkYXRlIGNvbXB1dGF0aW9uLlxuICovXG52YXIgc2hvdWxkT2JzZXJ2ZSA9IHRydWU7XG5cbmZ1bmN0aW9uIHRvZ2dsZU9ic2VydmluZyAodmFsdWUpIHtcbiAgc2hvdWxkT2JzZXJ2ZSA9IHZhbHVlO1xufVxuXG4vKipcbiAqIE9ic2VydmVyIGNsYXNzIHRoYXQgaXMgYXR0YWNoZWQgdG8gZWFjaCBvYnNlcnZlZFxuICogb2JqZWN0LiBPbmNlIGF0dGFjaGVkLCB0aGUgb2JzZXJ2ZXIgY29udmVydHMgdGhlIHRhcmdldFxuICogb2JqZWN0J3MgcHJvcGVydHkga2V5cyBpbnRvIGdldHRlci9zZXR0ZXJzIHRoYXRcbiAqIGNvbGxlY3QgZGVwZW5kZW5jaWVzIGFuZCBkaXNwYXRjaCB1cGRhdGVzLlxuICovXG52YXIgT2JzZXJ2ZXIgPSBmdW5jdGlvbiBPYnNlcnZlciAodmFsdWUpIHtcbiAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB0aGlzLmRlcCA9IG5ldyBEZXAoKTtcbiAgdGhpcy52bUNvdW50ID0gMDtcbiAgZGVmKHZhbHVlLCAnX19vYl9fJywgdGhpcyk7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGlmIChoYXNQcm90bykge1xuICAgICAgey8vIGZpeGVkIGJ5IHh4eHh4eCDlvq7kv6HlsI/nqIvluo/kvb/nlKggcGx1Z2lucyDkuYvlkI7vvIzmlbDnu4Tmlrnms5Xooqvnm7TmjqXmjILovb3liLDkuobmlbDnu4Tlr7nosaHkuIrvvIzpnIDopoHmiafooYwgY29weUF1Z21lbnQg6YC76L6RXG4gICAgICAgIGlmKHZhbHVlLnB1c2ggIT09IHZhbHVlLl9fcHJvdG9fXy5wdXNoKXtcbiAgICAgICAgICBjb3B5QXVnbWVudCh2YWx1ZSwgYXJyYXlNZXRob2RzLCBhcnJheUtleXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb3RvQXVnbWVudCh2YWx1ZSwgYXJyYXlNZXRob2RzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb3B5QXVnbWVudCh2YWx1ZSwgYXJyYXlNZXRob2RzLCBhcnJheUtleXMpO1xuICAgIH1cbiAgICB0aGlzLm9ic2VydmVBcnJheSh2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy53YWxrKHZhbHVlKTtcbiAgfVxufTtcblxuLyoqXG4gKiBXYWxrIHRocm91Z2ggYWxsIHByb3BlcnRpZXMgYW5kIGNvbnZlcnQgdGhlbSBpbnRvXG4gKiBnZXR0ZXIvc2V0dGVycy4gVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW5cbiAqIHZhbHVlIHR5cGUgaXMgT2JqZWN0LlxuICovXG5PYnNlcnZlci5wcm90b3R5cGUud2FsayA9IGZ1bmN0aW9uIHdhbGsgKG9iaikge1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGRlZmluZVJlYWN0aXZlJCQxKG9iaiwga2V5c1tpXSk7XG4gIH1cbn07XG5cbi8qKlxuICogT2JzZXJ2ZSBhIGxpc3Qgb2YgQXJyYXkgaXRlbXMuXG4gKi9cbk9ic2VydmVyLnByb3RvdHlwZS5vYnNlcnZlQXJyYXkgPSBmdW5jdGlvbiBvYnNlcnZlQXJyYXkgKGl0ZW1zKSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0gaXRlbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgb2JzZXJ2ZShpdGVtc1tpXSk7XG4gIH1cbn07XG5cbi8vIGhlbHBlcnNcblxuLyoqXG4gKiBBdWdtZW50IGEgdGFyZ2V0IE9iamVjdCBvciBBcnJheSBieSBpbnRlcmNlcHRpbmdcbiAqIHRoZSBwcm90b3R5cGUgY2hhaW4gdXNpbmcgX19wcm90b19fXG4gKi9cbmZ1bmN0aW9uIHByb3RvQXVnbWVudCAodGFyZ2V0LCBzcmMpIHtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cbiAgdGFyZ2V0Ll9fcHJvdG9fXyA9IHNyYztcbiAgLyogZXNsaW50LWVuYWJsZSBuby1wcm90byAqL1xufVxuXG4vKipcbiAqIEF1Z21lbnQgYSB0YXJnZXQgT2JqZWN0IG9yIEFycmF5IGJ5IGRlZmluaW5nXG4gKiBoaWRkZW4gcHJvcGVydGllcy5cbiAqL1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmZ1bmN0aW9uIGNvcHlBdWdtZW50ICh0YXJnZXQsIHNyYywga2V5cykge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgZGVmKHRhcmdldCwga2V5LCBzcmNba2V5XSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBdHRlbXB0IHRvIGNyZWF0ZSBhbiBvYnNlcnZlciBpbnN0YW5jZSBmb3IgYSB2YWx1ZSxcbiAqIHJldHVybnMgdGhlIG5ldyBvYnNlcnZlciBpZiBzdWNjZXNzZnVsbHkgb2JzZXJ2ZWQsXG4gKiBvciB0aGUgZXhpc3Rpbmcgb2JzZXJ2ZXIgaWYgdGhlIHZhbHVlIGFscmVhZHkgaGFzIG9uZS5cbiAqL1xuZnVuY3Rpb24gb2JzZXJ2ZSAodmFsdWUsIGFzUm9vdERhdGEpIHtcbiAgaWYgKCFpc09iamVjdCh2YWx1ZSkgfHwgdmFsdWUgaW5zdGFuY2VvZiBWTm9kZSkge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBvYjtcbiAgaWYgKGhhc093bih2YWx1ZSwgJ19fb2JfXycpICYmIHZhbHVlLl9fb2JfXyBpbnN0YW5jZW9mIE9ic2VydmVyKSB7XG4gICAgb2IgPSB2YWx1ZS5fX29iX187XG4gIH0gZWxzZSBpZiAoXG4gICAgc2hvdWxkT2JzZXJ2ZSAmJlxuICAgICFpc1NlcnZlclJlbmRlcmluZygpICYmXG4gICAgKEFycmF5LmlzQXJyYXkodmFsdWUpIHx8IGlzUGxhaW5PYmplY3QodmFsdWUpKSAmJlxuICAgIE9iamVjdC5pc0V4dGVuc2libGUodmFsdWUpICYmXG4gICAgIXZhbHVlLl9pc1Z1ZVxuICApIHtcbiAgICBvYiA9IG5ldyBPYnNlcnZlcih2YWx1ZSk7XG4gIH1cbiAgaWYgKGFzUm9vdERhdGEgJiYgb2IpIHtcbiAgICBvYi52bUNvdW50Kys7XG4gIH1cbiAgcmV0dXJuIG9iXG59XG5cbi8qKlxuICogRGVmaW5lIGEgcmVhY3RpdmUgcHJvcGVydHkgb24gYW4gT2JqZWN0LlxuICovXG5mdW5jdGlvbiBkZWZpbmVSZWFjdGl2ZSQkMSAoXG4gIG9iaixcbiAga2V5LFxuICB2YWwsXG4gIGN1c3RvbVNldHRlcixcbiAgc2hhbGxvd1xuKSB7XG4gIHZhciBkZXAgPSBuZXcgRGVwKCk7XG5cbiAgdmFyIHByb3BlcnR5ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSk7XG4gIGlmIChwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5jb25maWd1cmFibGUgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBjYXRlciBmb3IgcHJlLWRlZmluZWQgZ2V0dGVyL3NldHRlcnNcbiAgdmFyIGdldHRlciA9IHByb3BlcnR5ICYmIHByb3BlcnR5LmdldDtcbiAgdmFyIHNldHRlciA9IHByb3BlcnR5ICYmIHByb3BlcnR5LnNldDtcbiAgaWYgKCghZ2V0dGVyIHx8IHNldHRlcikgJiYgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgIHZhbCA9IG9ialtrZXldO1xuICB9XG5cbiAgdmFyIGNoaWxkT2IgPSAhc2hhbGxvdyAmJiBvYnNlcnZlKHZhbCk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gcmVhY3RpdmVHZXR0ZXIgKCkge1xuICAgICAgdmFyIHZhbHVlID0gZ2V0dGVyID8gZ2V0dGVyLmNhbGwob2JqKSA6IHZhbDtcbiAgICAgIGlmIChEZXAuU2hhcmVkT2JqZWN0LnRhcmdldCkgeyAvLyBmaXhlZCBieSB4eHh4eHhcbiAgICAgICAgZGVwLmRlcGVuZCgpO1xuICAgICAgICBpZiAoY2hpbGRPYikge1xuICAgICAgICAgIGNoaWxkT2IuZGVwLmRlcGVuZCgpO1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgZGVwZW5kQXJyYXkodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlXG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIHJlYWN0aXZlU2V0dGVyIChuZXdWYWwpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGdldHRlciA/IGdldHRlci5jYWxsKG9iaikgOiB2YWw7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1zZWxmLWNvbXBhcmUgKi9cbiAgICAgIGlmIChuZXdWYWwgPT09IHZhbHVlIHx8IChuZXdWYWwgIT09IG5ld1ZhbCAmJiB2YWx1ZSAhPT0gdmFsdWUpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgLyogZXNsaW50LWVuYWJsZSBuby1zZWxmLWNvbXBhcmUgKi9cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGN1c3RvbVNldHRlcikge1xuICAgICAgICBjdXN0b21TZXR0ZXIoKTtcbiAgICAgIH1cbiAgICAgIC8vICM3OTgxOiBmb3IgYWNjZXNzb3IgcHJvcGVydGllcyB3aXRob3V0IHNldHRlclxuICAgICAgaWYgKGdldHRlciAmJiAhc2V0dGVyKSB7IHJldHVybiB9XG4gICAgICBpZiAoc2V0dGVyKSB7XG4gICAgICAgIHNldHRlci5jYWxsKG9iaiwgbmV3VmFsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbCA9IG5ld1ZhbDtcbiAgICAgIH1cbiAgICAgIGNoaWxkT2IgPSAhc2hhbGxvdyAmJiBvYnNlcnZlKG5ld1ZhbCk7XG4gICAgICBkZXAubm90aWZ5KCk7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBTZXQgYSBwcm9wZXJ0eSBvbiBhbiBvYmplY3QuIEFkZHMgdGhlIG5ldyBwcm9wZXJ0eSBhbmRcbiAqIHRyaWdnZXJzIGNoYW5nZSBub3RpZmljYXRpb24gaWYgdGhlIHByb3BlcnR5IGRvZXNuJ3RcbiAqIGFscmVhZHkgZXhpc3QuXG4gKi9cbmZ1bmN0aW9uIHNldCAodGFyZ2V0LCBrZXksIHZhbCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgIChpc1VuZGVmKHRhcmdldCkgfHwgaXNQcmltaXRpdmUodGFyZ2V0KSlcbiAgKSB7XG4gICAgd2FybigoXCJDYW5ub3Qgc2V0IHJlYWN0aXZlIHByb3BlcnR5IG9uIHVuZGVmaW5lZCwgbnVsbCwgb3IgcHJpbWl0aXZlIHZhbHVlOiBcIiArICgodGFyZ2V0KSkpKTtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpICYmIGlzVmFsaWRBcnJheUluZGV4KGtleSkpIHtcbiAgICB0YXJnZXQubGVuZ3RoID0gTWF0aC5tYXgodGFyZ2V0Lmxlbmd0aCwga2V5KTtcbiAgICB0YXJnZXQuc3BsaWNlKGtleSwgMSwgdmFsKTtcbiAgICByZXR1cm4gdmFsXG4gIH1cbiAgaWYgKGtleSBpbiB0YXJnZXQgJiYgIShrZXkgaW4gT2JqZWN0LnByb3RvdHlwZSkpIHtcbiAgICB0YXJnZXRba2V5XSA9IHZhbDtcbiAgICByZXR1cm4gdmFsXG4gIH1cbiAgdmFyIG9iID0gKHRhcmdldCkuX19vYl9fO1xuICBpZiAodGFyZ2V0Ll9pc1Z1ZSB8fCAob2IgJiYgb2Iudm1Db3VudCkpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAnQXZvaWQgYWRkaW5nIHJlYWN0aXZlIHByb3BlcnRpZXMgdG8gYSBWdWUgaW5zdGFuY2Ugb3IgaXRzIHJvb3QgJGRhdGEgJyArXG4gICAgICAnYXQgcnVudGltZSAtIGRlY2xhcmUgaXQgdXBmcm9udCBpbiB0aGUgZGF0YSBvcHRpb24uJ1xuICAgICk7XG4gICAgcmV0dXJuIHZhbFxuICB9XG4gIGlmICghb2IpIHtcbiAgICB0YXJnZXRba2V5XSA9IHZhbDtcbiAgICByZXR1cm4gdmFsXG4gIH1cbiAgZGVmaW5lUmVhY3RpdmUkJDEob2IudmFsdWUsIGtleSwgdmFsKTtcbiAgb2IuZGVwLm5vdGlmeSgpO1xuICByZXR1cm4gdmFsXG59XG5cbi8qKlxuICogRGVsZXRlIGEgcHJvcGVydHkgYW5kIHRyaWdnZXIgY2hhbmdlIGlmIG5lY2Vzc2FyeS5cbiAqL1xuZnVuY3Rpb24gZGVsICh0YXJnZXQsIGtleSkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgIChpc1VuZGVmKHRhcmdldCkgfHwgaXNQcmltaXRpdmUodGFyZ2V0KSlcbiAgKSB7XG4gICAgd2FybigoXCJDYW5ub3QgZGVsZXRlIHJlYWN0aXZlIHByb3BlcnR5IG9uIHVuZGVmaW5lZCwgbnVsbCwgb3IgcHJpbWl0aXZlIHZhbHVlOiBcIiArICgodGFyZ2V0KSkpKTtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpICYmIGlzVmFsaWRBcnJheUluZGV4KGtleSkpIHtcbiAgICB0YXJnZXQuc3BsaWNlKGtleSwgMSk7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIG9iID0gKHRhcmdldCkuX19vYl9fO1xuICBpZiAodGFyZ2V0Ll9pc1Z1ZSB8fCAob2IgJiYgb2Iudm1Db3VudCkpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAnQXZvaWQgZGVsZXRpbmcgcHJvcGVydGllcyBvbiBhIFZ1ZSBpbnN0YW5jZSBvciBpdHMgcm9vdCAkZGF0YSAnICtcbiAgICAgICctIGp1c3Qgc2V0IGl0IHRvIG51bGwuJ1xuICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKCFoYXNPd24odGFyZ2V0LCBrZXkpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgZGVsZXRlIHRhcmdldFtrZXldO1xuICBpZiAoIW9iKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgb2IuZGVwLm5vdGlmeSgpO1xufVxuXG4vKipcbiAqIENvbGxlY3QgZGVwZW5kZW5jaWVzIG9uIGFycmF5IGVsZW1lbnRzIHdoZW4gdGhlIGFycmF5IGlzIHRvdWNoZWQsIHNpbmNlXG4gKiB3ZSBjYW5ub3QgaW50ZXJjZXB0IGFycmF5IGVsZW1lbnQgYWNjZXNzIGxpa2UgcHJvcGVydHkgZ2V0dGVycy5cbiAqL1xuZnVuY3Rpb24gZGVwZW5kQXJyYXkgKHZhbHVlKSB7XG4gIGZvciAodmFyIGUgPSAodm9pZCAwKSwgaSA9IDAsIGwgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBlID0gdmFsdWVbaV07XG4gICAgZSAmJiBlLl9fb2JfXyAmJiBlLl9fb2JfXy5kZXAuZGVwZW5kKCk7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHtcbiAgICAgIGRlcGVuZEFycmF5KGUpO1xuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBPcHRpb24gb3ZlcndyaXRpbmcgc3RyYXRlZ2llcyBhcmUgZnVuY3Rpb25zIHRoYXQgaGFuZGxlXG4gKiBob3cgdG8gbWVyZ2UgYSBwYXJlbnQgb3B0aW9uIHZhbHVlIGFuZCBhIGNoaWxkIG9wdGlvblxuICogdmFsdWUgaW50byB0aGUgZmluYWwgdmFsdWUuXG4gKi9cbnZhciBzdHJhdHMgPSBjb25maWcub3B0aW9uTWVyZ2VTdHJhdGVnaWVzO1xuXG4vKipcbiAqIE9wdGlvbnMgd2l0aCByZXN0cmljdGlvbnNcbiAqL1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgc3RyYXRzLmVsID0gc3RyYXRzLnByb3BzRGF0YSA9IGZ1bmN0aW9uIChwYXJlbnQsIGNoaWxkLCB2bSwga2V5KSB7XG4gICAgaWYgKCF2bSkge1xuICAgICAgd2FybihcbiAgICAgICAgXCJvcHRpb24gXFxcIlwiICsga2V5ICsgXCJcXFwiIGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIGluc3RhbmNlIFwiICtcbiAgICAgICAgJ2NyZWF0aW9uIHdpdGggdGhlIGBuZXdgIGtleXdvcmQuJ1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGRlZmF1bHRTdHJhdChwYXJlbnQsIGNoaWxkKVxuICB9O1xufVxuXG4vKipcbiAqIEhlbHBlciB0aGF0IHJlY3Vyc2l2ZWx5IG1lcmdlcyB0d28gZGF0YSBvYmplY3RzIHRvZ2V0aGVyLlxuICovXG5mdW5jdGlvbiBtZXJnZURhdGEgKHRvLCBmcm9tKSB7XG4gIGlmICghZnJvbSkgeyByZXR1cm4gdG8gfVxuICB2YXIga2V5LCB0b1ZhbCwgZnJvbVZhbDtcblxuICB2YXIga2V5cyA9IGhhc1N5bWJvbFxuICAgID8gUmVmbGVjdC5vd25LZXlzKGZyb20pXG4gICAgOiBPYmplY3Qua2V5cyhmcm9tKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBrZXkgPSBrZXlzW2ldO1xuICAgIC8vIGluIGNhc2UgdGhlIG9iamVjdCBpcyBhbHJlYWR5IG9ic2VydmVkLi4uXG4gICAgaWYgKGtleSA9PT0gJ19fb2JfXycpIHsgY29udGludWUgfVxuICAgIHRvVmFsID0gdG9ba2V5XTtcbiAgICBmcm9tVmFsID0gZnJvbVtrZXldO1xuICAgIGlmICghaGFzT3duKHRvLCBrZXkpKSB7XG4gICAgICBzZXQodG8sIGtleSwgZnJvbVZhbCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRvVmFsICE9PSBmcm9tVmFsICYmXG4gICAgICBpc1BsYWluT2JqZWN0KHRvVmFsKSAmJlxuICAgICAgaXNQbGFpbk9iamVjdChmcm9tVmFsKVxuICAgICkge1xuICAgICAgbWVyZ2VEYXRhKHRvVmFsLCBmcm9tVmFsKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRvXG59XG5cbi8qKlxuICogRGF0YVxuICovXG5mdW5jdGlvbiBtZXJnZURhdGFPckZuIChcbiAgcGFyZW50VmFsLFxuICBjaGlsZFZhbCxcbiAgdm1cbikge1xuICBpZiAoIXZtKSB7XG4gICAgLy8gaW4gYSBWdWUuZXh0ZW5kIG1lcmdlLCBib3RoIHNob3VsZCBiZSBmdW5jdGlvbnNcbiAgICBpZiAoIWNoaWxkVmFsKSB7XG4gICAgICByZXR1cm4gcGFyZW50VmFsXG4gICAgfVxuICAgIGlmICghcGFyZW50VmFsKSB7XG4gICAgICByZXR1cm4gY2hpbGRWYWxcbiAgICB9XG4gICAgLy8gd2hlbiBwYXJlbnRWYWwgJiBjaGlsZFZhbCBhcmUgYm90aCBwcmVzZW50LFxuICAgIC8vIHdlIG5lZWQgdG8gcmV0dXJuIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZVxuICAgIC8vIG1lcmdlZCByZXN1bHQgb2YgYm90aCBmdW5jdGlvbnMuLi4gbm8gbmVlZCB0b1xuICAgIC8vIGNoZWNrIGlmIHBhcmVudFZhbCBpcyBhIGZ1bmN0aW9uIGhlcmUgYmVjYXVzZVxuICAgIC8vIGl0IGhhcyB0byBiZSBhIGZ1bmN0aW9uIHRvIHBhc3MgcHJldmlvdXMgbWVyZ2VzLlxuICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZWREYXRhRm4gKCkge1xuICAgICAgcmV0dXJuIG1lcmdlRGF0YShcbiAgICAgICAgdHlwZW9mIGNoaWxkVmFsID09PSAnZnVuY3Rpb24nID8gY2hpbGRWYWwuY2FsbCh0aGlzLCB0aGlzKSA6IGNoaWxkVmFsLFxuICAgICAgICB0eXBlb2YgcGFyZW50VmFsID09PSAnZnVuY3Rpb24nID8gcGFyZW50VmFsLmNhbGwodGhpcywgdGhpcykgOiBwYXJlbnRWYWxcbiAgICAgIClcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdlZEluc3RhbmNlRGF0YUZuICgpIHtcbiAgICAgIC8vIGluc3RhbmNlIG1lcmdlXG4gICAgICB2YXIgaW5zdGFuY2VEYXRhID0gdHlwZW9mIGNoaWxkVmFsID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gY2hpbGRWYWwuY2FsbCh2bSwgdm0pXG4gICAgICAgIDogY2hpbGRWYWw7XG4gICAgICB2YXIgZGVmYXVsdERhdGEgPSB0eXBlb2YgcGFyZW50VmFsID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gcGFyZW50VmFsLmNhbGwodm0sIHZtKVxuICAgICAgICA6IHBhcmVudFZhbDtcbiAgICAgIGlmIChpbnN0YW5jZURhdGEpIHtcbiAgICAgICAgcmV0dXJuIG1lcmdlRGF0YShpbnN0YW5jZURhdGEsIGRlZmF1bHREYXRhKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHREYXRhXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnN0cmF0cy5kYXRhID0gZnVuY3Rpb24gKFxuICBwYXJlbnRWYWwsXG4gIGNoaWxkVmFsLFxuICB2bVxuKSB7XG4gIGlmICghdm0pIHtcbiAgICBpZiAoY2hpbGRWYWwgJiYgdHlwZW9mIGNoaWxkVmFsICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICdUaGUgXCJkYXRhXCIgb3B0aW9uIHNob3VsZCBiZSBhIGZ1bmN0aW9uICcgK1xuICAgICAgICAndGhhdCByZXR1cm5zIGEgcGVyLWluc3RhbmNlIHZhbHVlIGluIGNvbXBvbmVudCAnICtcbiAgICAgICAgJ2RlZmluaXRpb25zLicsXG4gICAgICAgIHZtXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gcGFyZW50VmFsXG4gICAgfVxuICAgIHJldHVybiBtZXJnZURhdGFPckZuKHBhcmVudFZhbCwgY2hpbGRWYWwpXG4gIH1cblxuICByZXR1cm4gbWVyZ2VEYXRhT3JGbihwYXJlbnRWYWwsIGNoaWxkVmFsLCB2bSlcbn07XG5cbi8qKlxuICogSG9va3MgYW5kIHByb3BzIGFyZSBtZXJnZWQgYXMgYXJyYXlzLlxuICovXG5mdW5jdGlvbiBtZXJnZUhvb2sgKFxuICBwYXJlbnRWYWwsXG4gIGNoaWxkVmFsXG4pIHtcbiAgdmFyIHJlcyA9IGNoaWxkVmFsXG4gICAgPyBwYXJlbnRWYWxcbiAgICAgID8gcGFyZW50VmFsLmNvbmNhdChjaGlsZFZhbClcbiAgICAgIDogQXJyYXkuaXNBcnJheShjaGlsZFZhbClcbiAgICAgICAgPyBjaGlsZFZhbFxuICAgICAgICA6IFtjaGlsZFZhbF1cbiAgICA6IHBhcmVudFZhbDtcbiAgcmV0dXJuIHJlc1xuICAgID8gZGVkdXBlSG9va3MocmVzKVxuICAgIDogcmVzXG59XG5cbmZ1bmN0aW9uIGRlZHVwZUhvb2tzIChob29rcykge1xuICB2YXIgcmVzID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaG9va3MubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAocmVzLmluZGV4T2YoaG9va3NbaV0pID09PSAtMSkge1xuICAgICAgcmVzLnB1c2goaG9va3NbaV0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbkxJRkVDWUNMRV9IT09LUy5mb3JFYWNoKGZ1bmN0aW9uIChob29rKSB7XG4gIHN0cmF0c1tob29rXSA9IG1lcmdlSG9vaztcbn0pO1xuXG4vKipcbiAqIEFzc2V0c1xuICpcbiAqIFdoZW4gYSB2bSBpcyBwcmVzZW50IChpbnN0YW5jZSBjcmVhdGlvbiksIHdlIG5lZWQgdG8gZG9cbiAqIGEgdGhyZWUtd2F5IG1lcmdlIGJldHdlZW4gY29uc3RydWN0b3Igb3B0aW9ucywgaW5zdGFuY2VcbiAqIG9wdGlvbnMgYW5kIHBhcmVudCBvcHRpb25zLlxuICovXG5mdW5jdGlvbiBtZXJnZUFzc2V0cyAoXG4gIHBhcmVudFZhbCxcbiAgY2hpbGRWYWwsXG4gIHZtLFxuICBrZXlcbikge1xuICB2YXIgcmVzID0gT2JqZWN0LmNyZWF0ZShwYXJlbnRWYWwgfHwgbnVsbCk7XG4gIGlmIChjaGlsZFZhbCkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgYXNzZXJ0T2JqZWN0VHlwZShrZXksIGNoaWxkVmFsLCB2bSk7XG4gICAgcmV0dXJuIGV4dGVuZChyZXMsIGNoaWxkVmFsKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiByZXNcbiAgfVxufVxuXG5BU1NFVF9UWVBFUy5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gIHN0cmF0c1t0eXBlICsgJ3MnXSA9IG1lcmdlQXNzZXRzO1xufSk7XG5cbi8qKlxuICogV2F0Y2hlcnMuXG4gKlxuICogV2F0Y2hlcnMgaGFzaGVzIHNob3VsZCBub3Qgb3ZlcndyaXRlIG9uZVxuICogYW5vdGhlciwgc28gd2UgbWVyZ2UgdGhlbSBhcyBhcnJheXMuXG4gKi9cbnN0cmF0cy53YXRjaCA9IGZ1bmN0aW9uIChcbiAgcGFyZW50VmFsLFxuICBjaGlsZFZhbCxcbiAgdm0sXG4gIGtleVxuKSB7XG4gIC8vIHdvcmsgYXJvdW5kIEZpcmVmb3gncyBPYmplY3QucHJvdG90eXBlLndhdGNoLi4uXG4gIGlmIChwYXJlbnRWYWwgPT09IG5hdGl2ZVdhdGNoKSB7IHBhcmVudFZhbCA9IHVuZGVmaW5lZDsgfVxuICBpZiAoY2hpbGRWYWwgPT09IG5hdGl2ZVdhdGNoKSB7IGNoaWxkVmFsID0gdW5kZWZpbmVkOyB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIWNoaWxkVmFsKSB7IHJldHVybiBPYmplY3QuY3JlYXRlKHBhcmVudFZhbCB8fCBudWxsKSB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgYXNzZXJ0T2JqZWN0VHlwZShrZXksIGNoaWxkVmFsLCB2bSk7XG4gIH1cbiAgaWYgKCFwYXJlbnRWYWwpIHsgcmV0dXJuIGNoaWxkVmFsIH1cbiAgdmFyIHJldCA9IHt9O1xuICBleHRlbmQocmV0LCBwYXJlbnRWYWwpO1xuICBmb3IgKHZhciBrZXkkMSBpbiBjaGlsZFZhbCkge1xuICAgIHZhciBwYXJlbnQgPSByZXRba2V5JDFdO1xuICAgIHZhciBjaGlsZCA9IGNoaWxkVmFsW2tleSQxXTtcbiAgICBpZiAocGFyZW50ICYmICFBcnJheS5pc0FycmF5KHBhcmVudCkpIHtcbiAgICAgIHBhcmVudCA9IFtwYXJlbnRdO1xuICAgIH1cbiAgICByZXRba2V5JDFdID0gcGFyZW50XG4gICAgICA/IHBhcmVudC5jb25jYXQoY2hpbGQpXG4gICAgICA6IEFycmF5LmlzQXJyYXkoY2hpbGQpID8gY2hpbGQgOiBbY2hpbGRdO1xuICB9XG4gIHJldHVybiByZXRcbn07XG5cbi8qKlxuICogT3RoZXIgb2JqZWN0IGhhc2hlcy5cbiAqL1xuc3RyYXRzLnByb3BzID1cbnN0cmF0cy5tZXRob2RzID1cbnN0cmF0cy5pbmplY3QgPVxuc3RyYXRzLmNvbXB1dGVkID0gZnVuY3Rpb24gKFxuICBwYXJlbnRWYWwsXG4gIGNoaWxkVmFsLFxuICB2bSxcbiAga2V5XG4pIHtcbiAgaWYgKGNoaWxkVmFsICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBhc3NlcnRPYmplY3RUeXBlKGtleSwgY2hpbGRWYWwsIHZtKTtcbiAgfVxuICBpZiAoIXBhcmVudFZhbCkgeyByZXR1cm4gY2hpbGRWYWwgfVxuICB2YXIgcmV0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgZXh0ZW5kKHJldCwgcGFyZW50VmFsKTtcbiAgaWYgKGNoaWxkVmFsKSB7IGV4dGVuZChyZXQsIGNoaWxkVmFsKTsgfVxuICByZXR1cm4gcmV0XG59O1xuc3RyYXRzLnByb3ZpZGUgPSBtZXJnZURhdGFPckZuO1xuXG4vKipcbiAqIERlZmF1bHQgc3RyYXRlZ3kuXG4gKi9cbnZhciBkZWZhdWx0U3RyYXQgPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICByZXR1cm4gY2hpbGRWYWwgPT09IHVuZGVmaW5lZFxuICAgID8gcGFyZW50VmFsXG4gICAgOiBjaGlsZFZhbFxufTtcblxuLyoqXG4gKiBWYWxpZGF0ZSBjb21wb25lbnQgbmFtZXNcbiAqL1xuZnVuY3Rpb24gY2hlY2tDb21wb25lbnRzIChvcHRpb25zKSB7XG4gIGZvciAodmFyIGtleSBpbiBvcHRpb25zLmNvbXBvbmVudHMpIHtcbiAgICB2YWxpZGF0ZUNvbXBvbmVudE5hbWUoa2V5KTtcbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUNvbXBvbmVudE5hbWUgKG5hbWUpIHtcbiAgaWYgKCFuZXcgUmVnRXhwKChcIl5bYS16QS1aXVtcXFxcLVxcXFwuMC05X1wiICsgKHVuaWNvZGVSZWdFeHAuc291cmNlKSArIFwiXSokXCIpKS50ZXN0KG5hbWUpKSB7XG4gICAgd2FybihcbiAgICAgICdJbnZhbGlkIGNvbXBvbmVudCBuYW1lOiBcIicgKyBuYW1lICsgJ1wiLiBDb21wb25lbnQgbmFtZXMgJyArXG4gICAgICAnc2hvdWxkIGNvbmZvcm0gdG8gdmFsaWQgY3VzdG9tIGVsZW1lbnQgbmFtZSBpbiBodG1sNSBzcGVjaWZpY2F0aW9uLidcbiAgICApO1xuICB9XG4gIGlmIChpc0J1aWx0SW5UYWcobmFtZSkgfHwgY29uZmlnLmlzUmVzZXJ2ZWRUYWcobmFtZSkpIHtcbiAgICB3YXJuKFxuICAgICAgJ0RvIG5vdCB1c2UgYnVpbHQtaW4gb3IgcmVzZXJ2ZWQgSFRNTCBlbGVtZW50cyBhcyBjb21wb25lbnQgJyArXG4gICAgICAnaWQ6ICcgKyBuYW1lXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEVuc3VyZSBhbGwgcHJvcHMgb3B0aW9uIHN5bnRheCBhcmUgbm9ybWFsaXplZCBpbnRvIHRoZVxuICogT2JqZWN0LWJhc2VkIGZvcm1hdC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplUHJvcHMgKG9wdGlvbnMsIHZtKSB7XG4gIHZhciBwcm9wcyA9IG9wdGlvbnMucHJvcHM7XG4gIGlmICghcHJvcHMpIHsgcmV0dXJuIH1cbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgaSwgdmFsLCBuYW1lO1xuICBpZiAoQXJyYXkuaXNBcnJheShwcm9wcykpIHtcbiAgICBpID0gcHJvcHMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIHZhbCA9IHByb3BzW2ldO1xuICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG5hbWUgPSBjYW1lbGl6ZSh2YWwpO1xuICAgICAgICByZXNbbmFtZV0gPSB7IHR5cGU6IG51bGwgfTtcbiAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3YXJuKCdwcm9wcyBtdXN0IGJlIHN0cmluZ3Mgd2hlbiB1c2luZyBhcnJheSBzeW50YXguJyk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QocHJvcHMpKSB7XG4gICAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgICB2YWwgPSBwcm9wc1trZXldO1xuICAgICAgbmFtZSA9IGNhbWVsaXplKGtleSk7XG4gICAgICByZXNbbmFtZV0gPSBpc1BsYWluT2JqZWN0KHZhbClcbiAgICAgICAgPyB2YWxcbiAgICAgICAgOiB7IHR5cGU6IHZhbCB9O1xuICAgIH1cbiAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgd2FybihcbiAgICAgIFwiSW52YWxpZCB2YWx1ZSBmb3Igb3B0aW9uIFxcXCJwcm9wc1xcXCI6IGV4cGVjdGVkIGFuIEFycmF5IG9yIGFuIE9iamVjdCwgXCIgK1xuICAgICAgXCJidXQgZ290IFwiICsgKHRvUmF3VHlwZShwcm9wcykpICsgXCIuXCIsXG4gICAgICB2bVxuICAgICk7XG4gIH1cbiAgb3B0aW9ucy5wcm9wcyA9IHJlcztcbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgYWxsIGluamVjdGlvbnMgaW50byBPYmplY3QtYmFzZWQgZm9ybWF0XG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZUluamVjdCAob3B0aW9ucywgdm0pIHtcbiAgdmFyIGluamVjdCA9IG9wdGlvbnMuaW5qZWN0O1xuICBpZiAoIWluamVjdCkgeyByZXR1cm4gfVxuICB2YXIgbm9ybWFsaXplZCA9IG9wdGlvbnMuaW5qZWN0ID0ge307XG4gIGlmIChBcnJheS5pc0FycmF5KGluamVjdCkpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluamVjdC5sZW5ndGg7IGkrKykge1xuICAgICAgbm9ybWFsaXplZFtpbmplY3RbaV1dID0geyBmcm9tOiBpbmplY3RbaV0gfTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChpbmplY3QpKSB7XG4gICAgZm9yICh2YXIga2V5IGluIGluamVjdCkge1xuICAgICAgdmFyIHZhbCA9IGluamVjdFtrZXldO1xuICAgICAgbm9ybWFsaXplZFtrZXldID0gaXNQbGFpbk9iamVjdCh2YWwpXG4gICAgICAgID8gZXh0ZW5kKHsgZnJvbToga2V5IH0sIHZhbClcbiAgICAgICAgOiB7IGZyb206IHZhbCB9O1xuICAgIH1cbiAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgd2FybihcbiAgICAgIFwiSW52YWxpZCB2YWx1ZSBmb3Igb3B0aW9uIFxcXCJpbmplY3RcXFwiOiBleHBlY3RlZCBhbiBBcnJheSBvciBhbiBPYmplY3QsIFwiICtcbiAgICAgIFwiYnV0IGdvdCBcIiArICh0b1Jhd1R5cGUoaW5qZWN0KSkgKyBcIi5cIixcbiAgICAgIHZtXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSByYXcgZnVuY3Rpb24gZGlyZWN0aXZlcyBpbnRvIG9iamVjdCBmb3JtYXQuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZURpcmVjdGl2ZXMgKG9wdGlvbnMpIHtcbiAgdmFyIGRpcnMgPSBvcHRpb25zLmRpcmVjdGl2ZXM7XG4gIGlmIChkaXJzKSB7XG4gICAgZm9yICh2YXIga2V5IGluIGRpcnMpIHtcbiAgICAgIHZhciBkZWYkJDEgPSBkaXJzW2tleV07XG4gICAgICBpZiAodHlwZW9mIGRlZiQkMSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBkaXJzW2tleV0gPSB7IGJpbmQ6IGRlZiQkMSwgdXBkYXRlOiBkZWYkJDEgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0T2JqZWN0VHlwZSAobmFtZSwgdmFsdWUsIHZtKSB7XG4gIGlmICghaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICB3YXJuKFxuICAgICAgXCJJbnZhbGlkIHZhbHVlIGZvciBvcHRpb24gXFxcIlwiICsgbmFtZSArIFwiXFxcIjogZXhwZWN0ZWQgYW4gT2JqZWN0LCBcIiArXG4gICAgICBcImJ1dCBnb3QgXCIgKyAodG9SYXdUeXBlKHZhbHVlKSkgKyBcIi5cIixcbiAgICAgIHZtXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIE1lcmdlIHR3byBvcHRpb24gb2JqZWN0cyBpbnRvIGEgbmV3IG9uZS5cbiAqIENvcmUgdXRpbGl0eSB1c2VkIGluIGJvdGggaW5zdGFudGlhdGlvbiBhbmQgaW5oZXJpdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1lcmdlT3B0aW9ucyAoXG4gIHBhcmVudCxcbiAgY2hpbGQsXG4gIHZtXG4pIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjaGVja0NvbXBvbmVudHMoY2hpbGQpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNoaWxkID0gY2hpbGQub3B0aW9ucztcbiAgfVxuXG4gIG5vcm1hbGl6ZVByb3BzKGNoaWxkLCB2bSk7XG4gIG5vcm1hbGl6ZUluamVjdChjaGlsZCwgdm0pO1xuICBub3JtYWxpemVEaXJlY3RpdmVzKGNoaWxkKTtcblxuICAvLyBBcHBseSBleHRlbmRzIGFuZCBtaXhpbnMgb24gdGhlIGNoaWxkIG9wdGlvbnMsXG4gIC8vIGJ1dCBvbmx5IGlmIGl0IGlzIGEgcmF3IG9wdGlvbnMgb2JqZWN0IHRoYXQgaXNuJ3RcbiAgLy8gdGhlIHJlc3VsdCBvZiBhbm90aGVyIG1lcmdlT3B0aW9ucyBjYWxsLlxuICAvLyBPbmx5IG1lcmdlZCBvcHRpb25zIGhhcyB0aGUgX2Jhc2UgcHJvcGVydHkuXG4gIGlmICghY2hpbGQuX2Jhc2UpIHtcbiAgICBpZiAoY2hpbGQuZXh0ZW5kcykge1xuICAgICAgcGFyZW50ID0gbWVyZ2VPcHRpb25zKHBhcmVudCwgY2hpbGQuZXh0ZW5kcywgdm0pO1xuICAgIH1cbiAgICBpZiAoY2hpbGQubWl4aW5zKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNoaWxkLm1peGlucy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgcGFyZW50ID0gbWVyZ2VPcHRpb25zKHBhcmVudCwgY2hpbGQubWl4aW5zW2ldLCB2bSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdmFyIG9wdGlvbnMgPSB7fTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gcGFyZW50KSB7XG4gICAgbWVyZ2VGaWVsZChrZXkpO1xuICB9XG4gIGZvciAoa2V5IGluIGNoaWxkKSB7XG4gICAgaWYgKCFoYXNPd24ocGFyZW50LCBrZXkpKSB7XG4gICAgICBtZXJnZUZpZWxkKGtleSk7XG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIG1lcmdlRmllbGQgKGtleSkge1xuICAgIHZhciBzdHJhdCA9IHN0cmF0c1trZXldIHx8IGRlZmF1bHRTdHJhdDtcbiAgICBvcHRpb25zW2tleV0gPSBzdHJhdChwYXJlbnRba2V5XSwgY2hpbGRba2V5XSwgdm0sIGtleSk7XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGFuIGFzc2V0LlxuICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJlY2F1c2UgY2hpbGQgaW5zdGFuY2VzIG5lZWQgYWNjZXNzXG4gKiB0byBhc3NldHMgZGVmaW5lZCBpbiBpdHMgYW5jZXN0b3IgY2hhaW4uXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVBc3NldCAoXG4gIG9wdGlvbnMsXG4gIHR5cGUsXG4gIGlkLFxuICB3YXJuTWlzc2luZ1xuKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAodHlwZW9mIGlkICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVyblxuICB9XG4gIHZhciBhc3NldHMgPSBvcHRpb25zW3R5cGVdO1xuICAvLyBjaGVjayBsb2NhbCByZWdpc3RyYXRpb24gdmFyaWF0aW9ucyBmaXJzdFxuICBpZiAoaGFzT3duKGFzc2V0cywgaWQpKSB7IHJldHVybiBhc3NldHNbaWRdIH1cbiAgdmFyIGNhbWVsaXplZElkID0gY2FtZWxpemUoaWQpO1xuICBpZiAoaGFzT3duKGFzc2V0cywgY2FtZWxpemVkSWQpKSB7IHJldHVybiBhc3NldHNbY2FtZWxpemVkSWRdIH1cbiAgdmFyIFBhc2NhbENhc2VJZCA9IGNhcGl0YWxpemUoY2FtZWxpemVkSWQpO1xuICBpZiAoaGFzT3duKGFzc2V0cywgUGFzY2FsQ2FzZUlkKSkgeyByZXR1cm4gYXNzZXRzW1Bhc2NhbENhc2VJZF0gfVxuICAvLyBmYWxsYmFjayB0byBwcm90b3R5cGUgY2hhaW5cbiAgdmFyIHJlcyA9IGFzc2V0c1tpZF0gfHwgYXNzZXRzW2NhbWVsaXplZElkXSB8fCBhc3NldHNbUGFzY2FsQ2FzZUlkXTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2Fybk1pc3NpbmcgJiYgIXJlcykge1xuICAgIHdhcm4oXG4gICAgICAnRmFpbGVkIHRvIHJlc29sdmUgJyArIHR5cGUuc2xpY2UoMCwgLTEpICsgJzogJyArIGlkLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxuXG5cbmZ1bmN0aW9uIHZhbGlkYXRlUHJvcCAoXG4gIGtleSxcbiAgcHJvcE9wdGlvbnMsXG4gIHByb3BzRGF0YSxcbiAgdm1cbikge1xuICB2YXIgcHJvcCA9IHByb3BPcHRpb25zW2tleV07XG4gIHZhciBhYnNlbnQgPSAhaGFzT3duKHByb3BzRGF0YSwga2V5KTtcbiAgdmFyIHZhbHVlID0gcHJvcHNEYXRhW2tleV07XG4gIC8vIGJvb2xlYW4gY2FzdGluZ1xuICB2YXIgYm9vbGVhbkluZGV4ID0gZ2V0VHlwZUluZGV4KEJvb2xlYW4sIHByb3AudHlwZSk7XG4gIGlmIChib29sZWFuSW5kZXggPiAtMSkge1xuICAgIGlmIChhYnNlbnQgJiYgIWhhc093bihwcm9wLCAnZGVmYXVsdCcpKSB7XG4gICAgICB2YWx1ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgPT09ICcnIHx8IHZhbHVlID09PSBoeXBoZW5hdGUoa2V5KSkge1xuICAgICAgLy8gb25seSBjYXN0IGVtcHR5IHN0cmluZyAvIHNhbWUgbmFtZSB0byBib29sZWFuIGlmXG4gICAgICAvLyBib29sZWFuIGhhcyBoaWdoZXIgcHJpb3JpdHlcbiAgICAgIHZhciBzdHJpbmdJbmRleCA9IGdldFR5cGVJbmRleChTdHJpbmcsIHByb3AudHlwZSk7XG4gICAgICBpZiAoc3RyaW5nSW5kZXggPCAwIHx8IGJvb2xlYW5JbmRleCA8IHN0cmluZ0luZGV4KSB7XG4gICAgICAgIHZhbHVlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gY2hlY2sgZGVmYXVsdCB2YWx1ZVxuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHZhbHVlID0gZ2V0UHJvcERlZmF1bHRWYWx1ZSh2bSwgcHJvcCwga2V5KTtcbiAgICAvLyBzaW5jZSB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBhIGZyZXNoIGNvcHksXG4gICAgLy8gbWFrZSBzdXJlIHRvIG9ic2VydmUgaXQuXG4gICAgdmFyIHByZXZTaG91bGRPYnNlcnZlID0gc2hvdWxkT2JzZXJ2ZTtcbiAgICB0b2dnbGVPYnNlcnZpbmcodHJ1ZSk7XG4gICAgb2JzZXJ2ZSh2YWx1ZSk7XG4gICAgdG9nZ2xlT2JzZXJ2aW5nKHByZXZTaG91bGRPYnNlcnZlKTtcbiAgfVxuICBpZiAoXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgIC8vIHNraXAgdmFsaWRhdGlvbiBmb3Igd2VleCByZWN5Y2xlLWxpc3QgY2hpbGQgY29tcG9uZW50IHByb3BzXG4gICAgIShmYWxzZSlcbiAgKSB7XG4gICAgYXNzZXJ0UHJvcChwcm9wLCBrZXksIHZhbHVlLCB2bSwgYWJzZW50KTtcbiAgfVxuICByZXR1cm4gdmFsdWVcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgYSBwcm9wLlxuICovXG5mdW5jdGlvbiBnZXRQcm9wRGVmYXVsdFZhbHVlICh2bSwgcHJvcCwga2V5KSB7XG4gIC8vIG5vIGRlZmF1bHQsIHJldHVybiB1bmRlZmluZWRcbiAgaWYgKCFoYXNPd24ocHJvcCwgJ2RlZmF1bHQnKSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuICB2YXIgZGVmID0gcHJvcC5kZWZhdWx0O1xuICAvLyB3YXJuIGFnYWluc3Qgbm9uLWZhY3RvcnkgZGVmYXVsdHMgZm9yIE9iamVjdCAmIEFycmF5XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGlzT2JqZWN0KGRlZikpIHtcbiAgICB3YXJuKFxuICAgICAgJ0ludmFsaWQgZGVmYXVsdCB2YWx1ZSBmb3IgcHJvcCBcIicgKyBrZXkgKyAnXCI6ICcgK1xuICAgICAgJ1Byb3BzIHdpdGggdHlwZSBPYmplY3QvQXJyYXkgbXVzdCB1c2UgYSBmYWN0b3J5IGZ1bmN0aW9uICcgK1xuICAgICAgJ3RvIHJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZS4nLFxuICAgICAgdm1cbiAgICApO1xuICB9XG4gIC8vIHRoZSByYXcgcHJvcCB2YWx1ZSB3YXMgYWxzbyB1bmRlZmluZWQgZnJvbSBwcmV2aW91cyByZW5kZXIsXG4gIC8vIHJldHVybiBwcmV2aW91cyBkZWZhdWx0IHZhbHVlIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHdhdGNoZXIgdHJpZ2dlclxuICBpZiAodm0gJiYgdm0uJG9wdGlvbnMucHJvcHNEYXRhICYmXG4gICAgdm0uJG9wdGlvbnMucHJvcHNEYXRhW2tleV0gPT09IHVuZGVmaW5lZCAmJlxuICAgIHZtLl9wcm9wc1trZXldICE9PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgcmV0dXJuIHZtLl9wcm9wc1trZXldXG4gIH1cbiAgLy8gY2FsbCBmYWN0b3J5IGZ1bmN0aW9uIGZvciBub24tRnVuY3Rpb24gdHlwZXNcbiAgLy8gYSB2YWx1ZSBpcyBGdW5jdGlvbiBpZiBpdHMgcHJvdG90eXBlIGlzIGZ1bmN0aW9uIGV2ZW4gYWNyb3NzIGRpZmZlcmVudCBleGVjdXRpb24gY29udGV4dFxuICByZXR1cm4gdHlwZW9mIGRlZiA9PT0gJ2Z1bmN0aW9uJyAmJiBnZXRUeXBlKHByb3AudHlwZSkgIT09ICdGdW5jdGlvbidcbiAgICA/IGRlZi5jYWxsKHZtKVxuICAgIDogZGVmXG59XG5cbi8qKlxuICogQXNzZXJ0IHdoZXRoZXIgYSBwcm9wIGlzIHZhbGlkLlxuICovXG5mdW5jdGlvbiBhc3NlcnRQcm9wIChcbiAgcHJvcCxcbiAgbmFtZSxcbiAgdmFsdWUsXG4gIHZtLFxuICBhYnNlbnRcbikge1xuICBpZiAocHJvcC5yZXF1aXJlZCAmJiBhYnNlbnQpIHtcbiAgICB3YXJuKFxuICAgICAgJ01pc3NpbmcgcmVxdWlyZWQgcHJvcDogXCInICsgbmFtZSArICdcIicsXG4gICAgICB2bVxuICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKHZhbHVlID09IG51bGwgJiYgIXByb3AucmVxdWlyZWQpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgdHlwZSA9IHByb3AudHlwZTtcbiAgdmFyIHZhbGlkID0gIXR5cGUgfHwgdHlwZSA9PT0gdHJ1ZTtcbiAgdmFyIGV4cGVjdGVkVHlwZXMgPSBbXTtcbiAgaWYgKHR5cGUpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodHlwZSkpIHtcbiAgICAgIHR5cGUgPSBbdHlwZV07XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHlwZS5sZW5ndGggJiYgIXZhbGlkOyBpKyspIHtcbiAgICAgIHZhciBhc3NlcnRlZFR5cGUgPSBhc3NlcnRUeXBlKHZhbHVlLCB0eXBlW2ldKTtcbiAgICAgIGV4cGVjdGVkVHlwZXMucHVzaChhc3NlcnRlZFR5cGUuZXhwZWN0ZWRUeXBlIHx8ICcnKTtcbiAgICAgIHZhbGlkID0gYXNzZXJ0ZWRUeXBlLnZhbGlkO1xuICAgIH1cbiAgfVxuXG4gIGlmICghdmFsaWQpIHtcbiAgICB3YXJuKFxuICAgICAgZ2V0SW52YWxpZFR5cGVNZXNzYWdlKG5hbWUsIHZhbHVlLCBleHBlY3RlZFR5cGVzKSxcbiAgICAgIHZtXG4gICAgKTtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgdmFsaWRhdG9yID0gcHJvcC52YWxpZGF0b3I7XG4gIGlmICh2YWxpZGF0b3IpIHtcbiAgICBpZiAoIXZhbGlkYXRvcih2YWx1ZSkpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdJbnZhbGlkIHByb3A6IGN1c3RvbSB2YWxpZGF0b3IgY2hlY2sgZmFpbGVkIGZvciBwcm9wIFwiJyArIG5hbWUgKyAnXCIuJyxcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbnZhciBzaW1wbGVDaGVja1JFID0gL14oU3RyaW5nfE51bWJlcnxCb29sZWFufEZ1bmN0aW9ufFN5bWJvbCkkLztcblxuZnVuY3Rpb24gYXNzZXJ0VHlwZSAodmFsdWUsIHR5cGUpIHtcbiAgdmFyIHZhbGlkO1xuICB2YXIgZXhwZWN0ZWRUeXBlID0gZ2V0VHlwZSh0eXBlKTtcbiAgaWYgKHNpbXBsZUNoZWNrUkUudGVzdChleHBlY3RlZFR5cGUpKSB7XG4gICAgdmFyIHQgPSB0eXBlb2YgdmFsdWU7XG4gICAgdmFsaWQgPSB0ID09PSBleHBlY3RlZFR5cGUudG9Mb3dlckNhc2UoKTtcbiAgICAvLyBmb3IgcHJpbWl0aXZlIHdyYXBwZXIgb2JqZWN0c1xuICAgIGlmICghdmFsaWQgJiYgdCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHZhbGlkID0gdmFsdWUgaW5zdGFuY2VvZiB0eXBlO1xuICAgIH1cbiAgfSBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09ICdPYmplY3QnKSB7XG4gICAgdmFsaWQgPSBpc1BsYWluT2JqZWN0KHZhbHVlKTtcbiAgfSBlbHNlIGlmIChleHBlY3RlZFR5cGUgPT09ICdBcnJheScpIHtcbiAgICB2YWxpZCA9IEFycmF5LmlzQXJyYXkodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHZhbGlkID0gdmFsdWUgaW5zdGFuY2VvZiB0eXBlO1xuICB9XG4gIHJldHVybiB7XG4gICAgdmFsaWQ6IHZhbGlkLFxuICAgIGV4cGVjdGVkVHlwZTogZXhwZWN0ZWRUeXBlXG4gIH1cbn1cblxuLyoqXG4gKiBVc2UgZnVuY3Rpb24gc3RyaW5nIG5hbWUgdG8gY2hlY2sgYnVpbHQtaW4gdHlwZXMsXG4gKiBiZWNhdXNlIGEgc2ltcGxlIGVxdWFsaXR5IGNoZWNrIHdpbGwgZmFpbCB3aGVuIHJ1bm5pbmdcbiAqIGFjcm9zcyBkaWZmZXJlbnQgdm1zIC8gaWZyYW1lcy5cbiAqL1xuZnVuY3Rpb24gZ2V0VHlwZSAoZm4pIHtcbiAgdmFyIG1hdGNoID0gZm4gJiYgZm4udG9TdHJpbmcoKS5tYXRjaCgvXlxccypmdW5jdGlvbiAoXFx3KykvKTtcbiAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiAnJ1xufVxuXG5mdW5jdGlvbiBpc1NhbWVUeXBlIChhLCBiKSB7XG4gIHJldHVybiBnZXRUeXBlKGEpID09PSBnZXRUeXBlKGIpXG59XG5cbmZ1bmN0aW9uIGdldFR5cGVJbmRleCAodHlwZSwgZXhwZWN0ZWRUeXBlcykge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoZXhwZWN0ZWRUeXBlcykpIHtcbiAgICByZXR1cm4gaXNTYW1lVHlwZShleHBlY3RlZFR5cGVzLCB0eXBlKSA/IDAgOiAtMVxuICB9XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBleHBlY3RlZFR5cGVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGlzU2FtZVR5cGUoZXhwZWN0ZWRUeXBlc1tpXSwgdHlwZSkpIHtcbiAgICAgIHJldHVybiBpXG4gICAgfVxuICB9XG4gIHJldHVybiAtMVxufVxuXG5mdW5jdGlvbiBnZXRJbnZhbGlkVHlwZU1lc3NhZ2UgKG5hbWUsIHZhbHVlLCBleHBlY3RlZFR5cGVzKSB7XG4gIHZhciBtZXNzYWdlID0gXCJJbnZhbGlkIHByb3A6IHR5cGUgY2hlY2sgZmFpbGVkIGZvciBwcm9wIFxcXCJcIiArIG5hbWUgKyBcIlxcXCIuXCIgK1xuICAgIFwiIEV4cGVjdGVkIFwiICsgKGV4cGVjdGVkVHlwZXMubWFwKGNhcGl0YWxpemUpLmpvaW4oJywgJykpO1xuICB2YXIgZXhwZWN0ZWRUeXBlID0gZXhwZWN0ZWRUeXBlc1swXTtcbiAgdmFyIHJlY2VpdmVkVHlwZSA9IHRvUmF3VHlwZSh2YWx1ZSk7XG4gIHZhciBleHBlY3RlZFZhbHVlID0gc3R5bGVWYWx1ZSh2YWx1ZSwgZXhwZWN0ZWRUeXBlKTtcbiAgdmFyIHJlY2VpdmVkVmFsdWUgPSBzdHlsZVZhbHVlKHZhbHVlLCByZWNlaXZlZFR5cGUpO1xuICAvLyBjaGVjayBpZiB3ZSBuZWVkIHRvIHNwZWNpZnkgZXhwZWN0ZWQgdmFsdWVcbiAgaWYgKGV4cGVjdGVkVHlwZXMubGVuZ3RoID09PSAxICYmXG4gICAgICBpc0V4cGxpY2FibGUoZXhwZWN0ZWRUeXBlKSAmJlxuICAgICAgIWlzQm9vbGVhbihleHBlY3RlZFR5cGUsIHJlY2VpdmVkVHlwZSkpIHtcbiAgICBtZXNzYWdlICs9IFwiIHdpdGggdmFsdWUgXCIgKyBleHBlY3RlZFZhbHVlO1xuICB9XG4gIG1lc3NhZ2UgKz0gXCIsIGdvdCBcIiArIHJlY2VpdmVkVHlwZSArIFwiIFwiO1xuICAvLyBjaGVjayBpZiB3ZSBuZWVkIHRvIHNwZWNpZnkgcmVjZWl2ZWQgdmFsdWVcbiAgaWYgKGlzRXhwbGljYWJsZShyZWNlaXZlZFR5cGUpKSB7XG4gICAgbWVzc2FnZSArPSBcIndpdGggdmFsdWUgXCIgKyByZWNlaXZlZFZhbHVlICsgXCIuXCI7XG4gIH1cbiAgcmV0dXJuIG1lc3NhZ2Vcbn1cblxuZnVuY3Rpb24gc3R5bGVWYWx1ZSAodmFsdWUsIHR5cGUpIHtcbiAgaWYgKHR5cGUgPT09ICdTdHJpbmcnKSB7XG4gICAgcmV0dXJuIChcIlxcXCJcIiArIHZhbHVlICsgXCJcXFwiXCIpXG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ051bWJlcicpIHtcbiAgICByZXR1cm4gKFwiXCIgKyAoTnVtYmVyKHZhbHVlKSkpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChcIlwiICsgdmFsdWUpXG4gIH1cbn1cblxuZnVuY3Rpb24gaXNFeHBsaWNhYmxlICh2YWx1ZSkge1xuICB2YXIgZXhwbGljaXRUeXBlcyA9IFsnc3RyaW5nJywgJ251bWJlcicsICdib29sZWFuJ107XG4gIHJldHVybiBleHBsaWNpdFR5cGVzLnNvbWUoZnVuY3Rpb24gKGVsZW0pIHsgcmV0dXJuIHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09IGVsZW07IH0pXG59XG5cbmZ1bmN0aW9uIGlzQm9vbGVhbiAoKSB7XG4gIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHdoaWxlICggbGVuLS0gKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuIF07XG5cbiAgcmV0dXJuIGFyZ3Muc29tZShmdW5jdGlvbiAoZWxlbSkgeyByZXR1cm4gZWxlbS50b0xvd2VyQ2FzZSgpID09PSAnYm9vbGVhbic7IH0pXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBoYW5kbGVFcnJvciAoZXJyLCB2bSwgaW5mbykge1xuICAvLyBEZWFjdGl2YXRlIGRlcHMgdHJhY2tpbmcgd2hpbGUgcHJvY2Vzc2luZyBlcnJvciBoYW5kbGVyIHRvIGF2b2lkIHBvc3NpYmxlIGluZmluaXRlIHJlbmRlcmluZy5cbiAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vdnVlanMvdnVleC9pc3N1ZXMvMTUwNVxuICBwdXNoVGFyZ2V0KCk7XG4gIHRyeSB7XG4gICAgaWYgKHZtKSB7XG4gICAgICB2YXIgY3VyID0gdm07XG4gICAgICB3aGlsZSAoKGN1ciA9IGN1ci4kcGFyZW50KSkge1xuICAgICAgICB2YXIgaG9va3MgPSBjdXIuJG9wdGlvbnMuZXJyb3JDYXB0dXJlZDtcbiAgICAgICAgaWYgKGhvb2tzKSB7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBob29rcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgdmFyIGNhcHR1cmUgPSBob29rc1tpXS5jYWxsKGN1ciwgZXJyLCB2bSwgaW5mbykgPT09IGZhbHNlO1xuICAgICAgICAgICAgICBpZiAoY2FwdHVyZSkgeyByZXR1cm4gfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBnbG9iYWxIYW5kbGVFcnJvcihlLCBjdXIsICdlcnJvckNhcHR1cmVkIGhvb2snKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZ2xvYmFsSGFuZGxlRXJyb3IoZXJyLCB2bSwgaW5mbyk7XG4gIH0gZmluYWxseSB7XG4gICAgcG9wVGFyZ2V0KCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW52b2tlV2l0aEVycm9ySGFuZGxpbmcgKFxuICBoYW5kbGVyLFxuICBjb250ZXh0LFxuICBhcmdzLFxuICB2bSxcbiAgaW5mb1xuKSB7XG4gIHZhciByZXM7XG4gIHRyeSB7XG4gICAgcmVzID0gYXJncyA/IGhhbmRsZXIuYXBwbHkoY29udGV4dCwgYXJncykgOiBoYW5kbGVyLmNhbGwoY29udGV4dCk7XG4gICAgaWYgKHJlcyAmJiAhcmVzLl9pc1Z1ZSAmJiBpc1Byb21pc2UocmVzKSAmJiAhcmVzLl9oYW5kbGVkKSB7XG4gICAgICByZXMuY2F0Y2goZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGhhbmRsZUVycm9yKGUsIHZtLCBpbmZvICsgXCIgKFByb21pc2UvYXN5bmMpXCIpOyB9KTtcbiAgICAgIC8vIGlzc3VlICM5NTExXG4gICAgICAvLyBhdm9pZCBjYXRjaCB0cmlnZ2VyaW5nIG11bHRpcGxlIHRpbWVzIHdoZW4gbmVzdGVkIGNhbGxzXG4gICAgICByZXMuX2hhbmRsZWQgPSB0cnVlO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGhhbmRsZUVycm9yKGUsIHZtLCBpbmZvKTtcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGdsb2JhbEhhbmRsZUVycm9yIChlcnIsIHZtLCBpbmZvKSB7XG4gIGlmIChjb25maWcuZXJyb3JIYW5kbGVyKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjb25maWcuZXJyb3JIYW5kbGVyLmNhbGwobnVsbCwgZXJyLCB2bSwgaW5mbylcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBpZiB0aGUgdXNlciBpbnRlbnRpb25hbGx5IHRocm93cyB0aGUgb3JpZ2luYWwgZXJyb3IgaW4gdGhlIGhhbmRsZXIsXG4gICAgICAvLyBkbyBub3QgbG9nIGl0IHR3aWNlXG4gICAgICBpZiAoZSAhPT0gZXJyKSB7XG4gICAgICAgIGxvZ0Vycm9yKGUsIG51bGwsICdjb25maWcuZXJyb3JIYW5kbGVyJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGxvZ0Vycm9yKGVyciwgdm0sIGluZm8pO1xufVxuXG5mdW5jdGlvbiBsb2dFcnJvciAoZXJyLCB2bSwgaW5mbykge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4oKFwiRXJyb3IgaW4gXCIgKyBpbmZvICsgXCI6IFxcXCJcIiArIChlcnIudG9TdHJpbmcoKSkgKyBcIlxcXCJcIiksIHZtKTtcbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoKGluQnJvd3NlciB8fCBpbldlZXgpICYmIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBlcnJcbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIGNhbGxiYWNrcyA9IFtdO1xudmFyIHBlbmRpbmcgPSBmYWxzZTtcblxuZnVuY3Rpb24gZmx1c2hDYWxsYmFja3MgKCkge1xuICBwZW5kaW5nID0gZmFsc2U7XG4gIHZhciBjb3BpZXMgPSBjYWxsYmFja3Muc2xpY2UoMCk7XG4gIGNhbGxiYWNrcy5sZW5ndGggPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGNvcGllcy5sZW5ndGg7IGkrKykge1xuICAgIGNvcGllc1tpXSgpO1xuICB9XG59XG5cbi8vIEhlcmUgd2UgaGF2ZSBhc3luYyBkZWZlcnJpbmcgd3JhcHBlcnMgdXNpbmcgbWljcm90YXNrcy5cbi8vIEluIDIuNSB3ZSB1c2VkIChtYWNybykgdGFza3MgKGluIGNvbWJpbmF0aW9uIHdpdGggbWljcm90YXNrcykuXG4vLyBIb3dldmVyLCBpdCBoYXMgc3VidGxlIHByb2JsZW1zIHdoZW4gc3RhdGUgaXMgY2hhbmdlZCByaWdodCBiZWZvcmUgcmVwYWludFxuLy8gKGUuZy4gIzY4MTMsIG91dC1pbiB0cmFuc2l0aW9ucykuXG4vLyBBbHNvLCB1c2luZyAobWFjcm8pIHRhc2tzIGluIGV2ZW50IGhhbmRsZXIgd291bGQgY2F1c2Ugc29tZSB3ZWlyZCBiZWhhdmlvcnNcbi8vIHRoYXQgY2Fubm90IGJlIGNpcmN1bXZlbnRlZCAoZS5nLiAjNzEwOSwgIzcxNTMsICM3NTQ2LCAjNzgzNCwgIzgxMDkpLlxuLy8gU28gd2Ugbm93IHVzZSBtaWNyb3Rhc2tzIGV2ZXJ5d2hlcmUsIGFnYWluLlxuLy8gQSBtYWpvciBkcmF3YmFjayBvZiB0aGlzIHRyYWRlb2ZmIGlzIHRoYXQgdGhlcmUgYXJlIHNvbWUgc2NlbmFyaW9zXG4vLyB3aGVyZSBtaWNyb3Rhc2tzIGhhdmUgdG9vIGhpZ2ggYSBwcmlvcml0eSBhbmQgZmlyZSBpbiBiZXR3ZWVuIHN1cHBvc2VkbHlcbi8vIHNlcXVlbnRpYWwgZXZlbnRzIChlLmcuICM0NTIxLCAjNjY5MCwgd2hpY2ggaGF2ZSB3b3JrYXJvdW5kcylcbi8vIG9yIGV2ZW4gYmV0d2VlbiBidWJibGluZyBvZiB0aGUgc2FtZSBldmVudCAoIzY1NjYpLlxudmFyIHRpbWVyRnVuYztcblxuLy8gVGhlIG5leHRUaWNrIGJlaGF2aW9yIGxldmVyYWdlcyB0aGUgbWljcm90YXNrIHF1ZXVlLCB3aGljaCBjYW4gYmUgYWNjZXNzZWRcbi8vIHZpYSBlaXRoZXIgbmF0aXZlIFByb21pc2UudGhlbiBvciBNdXRhdGlvbk9ic2VydmVyLlxuLy8gTXV0YXRpb25PYnNlcnZlciBoYXMgd2lkZXIgc3VwcG9ydCwgaG93ZXZlciBpdCBpcyBzZXJpb3VzbHkgYnVnZ2VkIGluXG4vLyBVSVdlYlZpZXcgaW4gaU9TID49IDkuMy4zIHdoZW4gdHJpZ2dlcmVkIGluIHRvdWNoIGV2ZW50IGhhbmRsZXJzLiBJdFxuLy8gY29tcGxldGVseSBzdG9wcyB3b3JraW5nIGFmdGVyIHRyaWdnZXJpbmcgYSBmZXcgdGltZXMuLi4gc28sIGlmIG5hdGl2ZVxuLy8gUHJvbWlzZSBpcyBhdmFpbGFibGUsIHdlIHdpbGwgdXNlIGl0OlxuLyogaXN0YW5idWwgaWdub3JlIG5leHQsICRmbG93LWRpc2FibGUtbGluZSAqL1xuaWYgKHR5cGVvZiBQcm9taXNlICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShQcm9taXNlKSkge1xuICB2YXIgcCA9IFByb21pc2UucmVzb2x2ZSgpO1xuICB0aW1lckZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcC50aGVuKGZsdXNoQ2FsbGJhY2tzKTtcbiAgICAvLyBJbiBwcm9ibGVtYXRpYyBVSVdlYlZpZXdzLCBQcm9taXNlLnRoZW4gZG9lc24ndCBjb21wbGV0ZWx5IGJyZWFrLCBidXRcbiAgICAvLyBpdCBjYW4gZ2V0IHN0dWNrIGluIGEgd2VpcmQgc3RhdGUgd2hlcmUgY2FsbGJhY2tzIGFyZSBwdXNoZWQgaW50byB0aGVcbiAgICAvLyBtaWNyb3Rhc2sgcXVldWUgYnV0IHRoZSBxdWV1ZSBpc24ndCBiZWluZyBmbHVzaGVkLCB1bnRpbCB0aGUgYnJvd3NlclxuICAgIC8vIG5lZWRzIHRvIGRvIHNvbWUgb3RoZXIgd29yaywgZS5nLiBoYW5kbGUgYSB0aW1lci4gVGhlcmVmb3JlIHdlIGNhblxuICAgIC8vIFwiZm9yY2VcIiB0aGUgbWljcm90YXNrIHF1ZXVlIHRvIGJlIGZsdXNoZWQgYnkgYWRkaW5nIGFuIGVtcHR5IHRpbWVyLlxuICAgIGlmIChpc0lPUykgeyBzZXRUaW1lb3V0KG5vb3ApOyB9XG4gIH07XG59IGVsc2UgaWYgKCFpc0lFICYmIHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyICE9PSAndW5kZWZpbmVkJyAmJiAoXG4gIGlzTmF0aXZlKE11dGF0aW9uT2JzZXJ2ZXIpIHx8XG4gIC8vIFBoYW50b21KUyBhbmQgaU9TIDcueFxuICBNdXRhdGlvbk9ic2VydmVyLnRvU3RyaW5nKCkgPT09ICdbb2JqZWN0IE11dGF0aW9uT2JzZXJ2ZXJDb25zdHJ1Y3Rvcl0nXG4pKSB7XG4gIC8vIFVzZSBNdXRhdGlvbk9ic2VydmVyIHdoZXJlIG5hdGl2ZSBQcm9taXNlIGlzIG5vdCBhdmFpbGFibGUsXG4gIC8vIGUuZy4gUGhhbnRvbUpTLCBpT1M3LCBBbmRyb2lkIDQuNFxuICAvLyAoIzY0NjYgTXV0YXRpb25PYnNlcnZlciBpcyB1bnJlbGlhYmxlIGluIElFMTEpXG4gIHZhciBjb3VudGVyID0gMTtcbiAgdmFyIG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZmx1c2hDYWxsYmFja3MpO1xuICB2YXIgdGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoY291bnRlcikpO1xuICBvYnNlcnZlci5vYnNlcnZlKHRleHROb2RlLCB7XG4gICAgY2hhcmFjdGVyRGF0YTogdHJ1ZVxuICB9KTtcbiAgdGltZXJGdW5jID0gZnVuY3Rpb24gKCkge1xuICAgIGNvdW50ZXIgPSAoY291bnRlciArIDEpICUgMjtcbiAgICB0ZXh0Tm9kZS5kYXRhID0gU3RyaW5nKGNvdW50ZXIpO1xuICB9O1xufSBlbHNlIGlmICh0eXBlb2Ygc2V0SW1tZWRpYXRlICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShzZXRJbW1lZGlhdGUpKSB7XG4gIC8vIEZhbGxiYWNrIHRvIHNldEltbWVkaWF0ZS5cbiAgLy8gVGVjaG5pY2FsbHkgaXQgbGV2ZXJhZ2VzIHRoZSAobWFjcm8pIHRhc2sgcXVldWUsXG4gIC8vIGJ1dCBpdCBpcyBzdGlsbCBhIGJldHRlciBjaG9pY2UgdGhhbiBzZXRUaW1lb3V0LlxuICB0aW1lckZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgc2V0SW1tZWRpYXRlKGZsdXNoQ2FsbGJhY2tzKTtcbiAgfTtcbn0gZWxzZSB7XG4gIC8vIEZhbGxiYWNrIHRvIHNldFRpbWVvdXQuXG4gIHRpbWVyRnVuYyA9IGZ1bmN0aW9uICgpIHtcbiAgICBzZXRUaW1lb3V0KGZsdXNoQ2FsbGJhY2tzLCAwKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gbmV4dFRpY2sgKGNiLCBjdHgpIHtcbiAgdmFyIF9yZXNvbHZlO1xuICBjYWxsYmFja3MucHVzaChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGNiKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjYi5jYWxsKGN0eCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGUsIGN0eCwgJ25leHRUaWNrJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChfcmVzb2x2ZSkge1xuICAgICAgX3Jlc29sdmUoY3R4KTtcbiAgICB9XG4gIH0pO1xuICBpZiAoIXBlbmRpbmcpIHtcbiAgICBwZW5kaW5nID0gdHJ1ZTtcbiAgICB0aW1lckZ1bmMoKTtcbiAgfVxuICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgaWYgKCFjYiAmJiB0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgIF9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICB9KVxuICB9XG59XG5cbi8qICAqL1xuXG4vKiBub3QgdHlwZSBjaGVja2luZyB0aGlzIGZpbGUgYmVjYXVzZSBmbG93IGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGggUHJveHkgKi9cblxudmFyIGluaXRQcm94eTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGFsbG93ZWRHbG9iYWxzID0gbWFrZU1hcChcbiAgICAnSW5maW5pdHksdW5kZWZpbmVkLE5hTixpc0Zpbml0ZSxpc05hTiwnICtcbiAgICAncGFyc2VGbG9hdCxwYXJzZUludCxkZWNvZGVVUkksZGVjb2RlVVJJQ29tcG9uZW50LGVuY29kZVVSSSxlbmNvZGVVUklDb21wb25lbnQsJyArXG4gICAgJ01hdGgsTnVtYmVyLERhdGUsQXJyYXksT2JqZWN0LEJvb2xlYW4sU3RyaW5nLFJlZ0V4cCxNYXAsU2V0LEpTT04sSW50bCwnICtcbiAgICAncmVxdWlyZScgLy8gZm9yIFdlYnBhY2svQnJvd3NlcmlmeVxuICApO1xuXG4gIHZhciB3YXJuTm9uUHJlc2VudCA9IGZ1bmN0aW9uICh0YXJnZXQsIGtleSkge1xuICAgIHdhcm4oXG4gICAgICBcIlByb3BlcnR5IG9yIG1ldGhvZCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgbm90IGRlZmluZWQgb24gdGhlIGluc3RhbmNlIGJ1dCBcIiArXG4gICAgICAncmVmZXJlbmNlZCBkdXJpbmcgcmVuZGVyLiBNYWtlIHN1cmUgdGhhdCB0aGlzIHByb3BlcnR5IGlzIHJlYWN0aXZlLCAnICtcbiAgICAgICdlaXRoZXIgaW4gdGhlIGRhdGEgb3B0aW9uLCBvciBmb3IgY2xhc3MtYmFzZWQgY29tcG9uZW50cywgYnkgJyArXG4gICAgICAnaW5pdGlhbGl6aW5nIHRoZSBwcm9wZXJ0eS4gJyArXG4gICAgICAnU2VlOiBodHRwczovL3Z1ZWpzLm9yZy92Mi9ndWlkZS9yZWFjdGl2aXR5Lmh0bWwjRGVjbGFyaW5nLVJlYWN0aXZlLVByb3BlcnRpZXMuJyxcbiAgICAgIHRhcmdldFxuICAgICk7XG4gIH07XG5cbiAgdmFyIHdhcm5SZXNlcnZlZFByZWZpeCA9IGZ1bmN0aW9uICh0YXJnZXQsIGtleSkge1xuICAgIHdhcm4oXG4gICAgICBcIlByb3BlcnR5IFxcXCJcIiArIGtleSArIFwiXFxcIiBtdXN0IGJlIGFjY2Vzc2VkIHdpdGggXFxcIiRkYXRhLlwiICsga2V5ICsgXCJcXFwiIGJlY2F1c2UgXCIgK1xuICAgICAgJ3Byb3BlcnRpZXMgc3RhcnRpbmcgd2l0aCBcIiRcIiBvciBcIl9cIiBhcmUgbm90IHByb3hpZWQgaW4gdGhlIFZ1ZSBpbnN0YW5jZSB0byAnICtcbiAgICAgICdwcmV2ZW50IGNvbmZsaWN0cyB3aXRoIFZ1ZSBpbnRlcm5hbHMuICcgK1xuICAgICAgJ1NlZTogaHR0cHM6Ly92dWVqcy5vcmcvdjIvYXBpLyNkYXRhJyxcbiAgICAgIHRhcmdldFxuICAgICk7XG4gIH07XG5cbiAgdmFyIGhhc1Byb3h5ID1cbiAgICB0eXBlb2YgUHJveHkgIT09ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFByb3h5KTtcblxuICBpZiAoaGFzUHJveHkpIHtcbiAgICB2YXIgaXNCdWlsdEluTW9kaWZpZXIgPSBtYWtlTWFwKCdzdG9wLHByZXZlbnQsc2VsZixjdHJsLHNoaWZ0LGFsdCxtZXRhLGV4YWN0Jyk7XG4gICAgY29uZmlnLmtleUNvZGVzID0gbmV3IFByb3h5KGNvbmZpZy5rZXlDb2Rlcywge1xuICAgICAgc2V0OiBmdW5jdGlvbiBzZXQgKHRhcmdldCwga2V5LCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNCdWlsdEluTW9kaWZpZXIoa2V5KSkge1xuICAgICAgICAgIHdhcm4oKFwiQXZvaWQgb3ZlcndyaXRpbmcgYnVpbHQtaW4gbW9kaWZpZXIgaW4gY29uZmlnLmtleUNvZGVzOiAuXCIgKyBrZXkpKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHZhbHVlO1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHZhciBoYXNIYW5kbGVyID0ge1xuICAgIGhhczogZnVuY3Rpb24gaGFzICh0YXJnZXQsIGtleSkge1xuICAgICAgdmFyIGhhcyA9IGtleSBpbiB0YXJnZXQ7XG4gICAgICB2YXIgaXNBbGxvd2VkID0gYWxsb3dlZEdsb2JhbHMoa2V5KSB8fFxuICAgICAgICAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycgJiYga2V5LmNoYXJBdCgwKSA9PT0gJ18nICYmICEoa2V5IGluIHRhcmdldC4kZGF0YSkpO1xuICAgICAgaWYgKCFoYXMgJiYgIWlzQWxsb3dlZCkge1xuICAgICAgICBpZiAoa2V5IGluIHRhcmdldC4kZGF0YSkgeyB3YXJuUmVzZXJ2ZWRQcmVmaXgodGFyZ2V0LCBrZXkpOyB9XG4gICAgICAgIGVsc2UgeyB3YXJuTm9uUHJlc2VudCh0YXJnZXQsIGtleSk7IH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXMgfHwgIWlzQWxsb3dlZFxuICAgIH1cbiAgfTtcblxuICB2YXIgZ2V0SGFuZGxlciA9IHtcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCAodGFyZ2V0LCBrZXkpIHtcbiAgICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyAmJiAhKGtleSBpbiB0YXJnZXQpKSB7XG4gICAgICAgIGlmIChrZXkgaW4gdGFyZ2V0LiRkYXRhKSB7IHdhcm5SZXNlcnZlZFByZWZpeCh0YXJnZXQsIGtleSk7IH1cbiAgICAgICAgZWxzZSB7IHdhcm5Ob25QcmVzZW50KHRhcmdldCwga2V5KTsgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRhcmdldFtrZXldXG4gICAgfVxuICB9O1xuXG4gIGluaXRQcm94eSA9IGZ1bmN0aW9uIGluaXRQcm94eSAodm0pIHtcbiAgICBpZiAoaGFzUHJveHkpIHtcbiAgICAgIC8vIGRldGVybWluZSB3aGljaCBwcm94eSBoYW5kbGVyIHRvIHVzZVxuICAgICAgdmFyIG9wdGlvbnMgPSB2bS4kb3B0aW9ucztcbiAgICAgIHZhciBoYW5kbGVycyA9IG9wdGlvbnMucmVuZGVyICYmIG9wdGlvbnMucmVuZGVyLl93aXRoU3RyaXBwZWRcbiAgICAgICAgPyBnZXRIYW5kbGVyXG4gICAgICAgIDogaGFzSGFuZGxlcjtcbiAgICAgIHZtLl9yZW5kZXJQcm94eSA9IG5ldyBQcm94eSh2bSwgaGFuZGxlcnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bS5fcmVuZGVyUHJveHkgPSB2bTtcbiAgICB9XG4gIH07XG59XG5cbi8qICAqL1xuXG52YXIgc2Vlbk9iamVjdHMgPSBuZXcgX1NldCgpO1xuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IHRyYXZlcnNlIGFuIG9iamVjdCB0byBldm9rZSBhbGwgY29udmVydGVkXG4gKiBnZXR0ZXJzLCBzbyB0aGF0IGV2ZXJ5IG5lc3RlZCBwcm9wZXJ0eSBpbnNpZGUgdGhlIG9iamVjdFxuICogaXMgY29sbGVjdGVkIGFzIGEgXCJkZWVwXCIgZGVwZW5kZW5jeS5cbiAqL1xuZnVuY3Rpb24gdHJhdmVyc2UgKHZhbCkge1xuICBfdHJhdmVyc2UodmFsLCBzZWVuT2JqZWN0cyk7XG4gIHNlZW5PYmplY3RzLmNsZWFyKCk7XG59XG5cbmZ1bmN0aW9uIF90cmF2ZXJzZSAodmFsLCBzZWVuKSB7XG4gIHZhciBpLCBrZXlzO1xuICB2YXIgaXNBID0gQXJyYXkuaXNBcnJheSh2YWwpO1xuICBpZiAoKCFpc0EgJiYgIWlzT2JqZWN0KHZhbCkpIHx8IE9iamVjdC5pc0Zyb3plbih2YWwpIHx8IHZhbCBpbnN0YW5jZW9mIFZOb2RlKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKHZhbC5fX29iX18pIHtcbiAgICB2YXIgZGVwSWQgPSB2YWwuX19vYl9fLmRlcC5pZDtcbiAgICBpZiAoc2Vlbi5oYXMoZGVwSWQpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2Vlbi5hZGQoZGVwSWQpO1xuICB9XG4gIGlmIChpc0EpIHtcbiAgICBpID0gdmFsLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7IF90cmF2ZXJzZSh2YWxbaV0sIHNlZW4pOyB9XG4gIH0gZWxzZSB7XG4gICAga2V5cyA9IE9iamVjdC5rZXlzKHZhbCk7XG4gICAgaSA9IGtleXMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHsgX3RyYXZlcnNlKHZhbFtrZXlzW2ldXSwgc2Vlbik7IH1cbiAgfVxufVxuXG52YXIgbWFyaztcbnZhciBtZWFzdXJlO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgcGVyZiA9IGluQnJvd3NlciAmJiB3aW5kb3cucGVyZm9ybWFuY2U7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoXG4gICAgcGVyZiAmJlxuICAgIHBlcmYubWFyayAmJlxuICAgIHBlcmYubWVhc3VyZSAmJlxuICAgIHBlcmYuY2xlYXJNYXJrcyAmJlxuICAgIHBlcmYuY2xlYXJNZWFzdXJlc1xuICApIHtcbiAgICBtYXJrID0gZnVuY3Rpb24gKHRhZykgeyByZXR1cm4gcGVyZi5tYXJrKHRhZyk7IH07XG4gICAgbWVhc3VyZSA9IGZ1bmN0aW9uIChuYW1lLCBzdGFydFRhZywgZW5kVGFnKSB7XG4gICAgICBwZXJmLm1lYXN1cmUobmFtZSwgc3RhcnRUYWcsIGVuZFRhZyk7XG4gICAgICBwZXJmLmNsZWFyTWFya3Moc3RhcnRUYWcpO1xuICAgICAgcGVyZi5jbGVhck1hcmtzKGVuZFRhZyk7XG4gICAgICAvLyBwZXJmLmNsZWFyTWVhc3VyZXMobmFtZSlcbiAgICB9O1xuICB9XG59XG5cbi8qICAqL1xuXG52YXIgbm9ybWFsaXplRXZlbnQgPSBjYWNoZWQoZnVuY3Rpb24gKG5hbWUpIHtcbiAgdmFyIHBhc3NpdmUgPSBuYW1lLmNoYXJBdCgwKSA9PT0gJyYnO1xuICBuYW1lID0gcGFzc2l2ZSA/IG5hbWUuc2xpY2UoMSkgOiBuYW1lO1xuICB2YXIgb25jZSQkMSA9IG5hbWUuY2hhckF0KDApID09PSAnfic7IC8vIFByZWZpeGVkIGxhc3QsIGNoZWNrZWQgZmlyc3RcbiAgbmFtZSA9IG9uY2UkJDEgPyBuYW1lLnNsaWNlKDEpIDogbmFtZTtcbiAgdmFyIGNhcHR1cmUgPSBuYW1lLmNoYXJBdCgwKSA9PT0gJyEnO1xuICBuYW1lID0gY2FwdHVyZSA/IG5hbWUuc2xpY2UoMSkgOiBuYW1lO1xuICByZXR1cm4ge1xuICAgIG5hbWU6IG5hbWUsXG4gICAgb25jZTogb25jZSQkMSxcbiAgICBjYXB0dXJlOiBjYXB0dXJlLFxuICAgIHBhc3NpdmU6IHBhc3NpdmVcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUZuSW52b2tlciAoZm5zLCB2bSkge1xuICBmdW5jdGlvbiBpbnZva2VyICgpIHtcbiAgICB2YXIgYXJndW1lbnRzJDEgPSBhcmd1bWVudHM7XG5cbiAgICB2YXIgZm5zID0gaW52b2tlci5mbnM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZm5zKSkge1xuICAgICAgdmFyIGNsb25lZCA9IGZucy5zbGljZSgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjbG9uZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaW52b2tlV2l0aEVycm9ySGFuZGxpbmcoY2xvbmVkW2ldLCBudWxsLCBhcmd1bWVudHMkMSwgdm0sIFwidi1vbiBoYW5kbGVyXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyByZXR1cm4gaGFuZGxlciByZXR1cm4gdmFsdWUgZm9yIHNpbmdsZSBoYW5kbGVyc1xuICAgICAgcmV0dXJuIGludm9rZVdpdGhFcnJvckhhbmRsaW5nKGZucywgbnVsbCwgYXJndW1lbnRzLCB2bSwgXCJ2LW9uIGhhbmRsZXJcIilcbiAgICB9XG4gIH1cbiAgaW52b2tlci5mbnMgPSBmbnM7XG4gIHJldHVybiBpbnZva2VyXG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUxpc3RlbmVycyAoXG4gIG9uLFxuICBvbGRPbixcbiAgYWRkLFxuICByZW1vdmUkJDEsXG4gIGNyZWF0ZU9uY2VIYW5kbGVyLFxuICB2bVxuKSB7XG4gIHZhciBuYW1lLCBkZWYkJDEsIGN1ciwgb2xkLCBldmVudDtcbiAgZm9yIChuYW1lIGluIG9uKSB7XG4gICAgZGVmJCQxID0gY3VyID0gb25bbmFtZV07XG4gICAgb2xkID0gb2xkT25bbmFtZV07XG4gICAgZXZlbnQgPSBub3JtYWxpemVFdmVudChuYW1lKTtcbiAgICBpZiAoaXNVbmRlZihjdXIpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgIFwiSW52YWxpZCBoYW5kbGVyIGZvciBldmVudCBcXFwiXCIgKyAoZXZlbnQubmFtZSkgKyBcIlxcXCI6IGdvdCBcIiArIFN0cmluZyhjdXIpLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGlzVW5kZWYob2xkKSkge1xuICAgICAgaWYgKGlzVW5kZWYoY3VyLmZucykpIHtcbiAgICAgICAgY3VyID0gb25bbmFtZV0gPSBjcmVhdGVGbkludm9rZXIoY3VyLCB2bSk7XG4gICAgICB9XG4gICAgICBpZiAoaXNUcnVlKGV2ZW50Lm9uY2UpKSB7XG4gICAgICAgIGN1ciA9IG9uW25hbWVdID0gY3JlYXRlT25jZUhhbmRsZXIoZXZlbnQubmFtZSwgY3VyLCBldmVudC5jYXB0dXJlKTtcbiAgICAgIH1cbiAgICAgIGFkZChldmVudC5uYW1lLCBjdXIsIGV2ZW50LmNhcHR1cmUsIGV2ZW50LnBhc3NpdmUsIGV2ZW50LnBhcmFtcyk7XG4gICAgfSBlbHNlIGlmIChjdXIgIT09IG9sZCkge1xuICAgICAgb2xkLmZucyA9IGN1cjtcbiAgICAgIG9uW25hbWVdID0gb2xkO1xuICAgIH1cbiAgfVxuICBmb3IgKG5hbWUgaW4gb2xkT24pIHtcbiAgICBpZiAoaXNVbmRlZihvbltuYW1lXSkpIHtcbiAgICAgIGV2ZW50ID0gbm9ybWFsaXplRXZlbnQobmFtZSk7XG4gICAgICByZW1vdmUkJDEoZXZlbnQubmFtZSwgb2xkT25bbmFtZV0sIGV2ZW50LmNhcHR1cmUpO1xuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxuLyogICovXG5cbi8vIGZpeGVkIGJ5IHh4eHh4eCAobXAgcHJvcGVydGllcylcbmZ1bmN0aW9uIGV4dHJhY3RQcm9wZXJ0aWVzRnJvbVZOb2RlRGF0YShkYXRhLCBDdG9yLCByZXMsIGNvbnRleHQpIHtcbiAgdmFyIHByb3BPcHRpb25zID0gQ3Rvci5vcHRpb25zLm1wT3B0aW9ucyAmJiBDdG9yLm9wdGlvbnMubXBPcHRpb25zLnByb3BlcnRpZXM7XG4gIGlmIChpc1VuZGVmKHByb3BPcHRpb25zKSkge1xuICAgIHJldHVybiByZXNcbiAgfVxuICB2YXIgZXh0ZXJuYWxDbGFzc2VzID0gQ3Rvci5vcHRpb25zLm1wT3B0aW9ucy5leHRlcm5hbENsYXNzZXMgfHwgW107XG4gIHZhciBhdHRycyA9IGRhdGEuYXR0cnM7XG4gIHZhciBwcm9wcyA9IGRhdGEucHJvcHM7XG4gIGlmIChpc0RlZihhdHRycykgfHwgaXNEZWYocHJvcHMpKSB7XG4gICAgZm9yICh2YXIga2V5IGluIHByb3BPcHRpb25zKSB7XG4gICAgICB2YXIgYWx0S2V5ID0gaHlwaGVuYXRlKGtleSk7XG4gICAgICB2YXIgcmVzdWx0ID0gY2hlY2tQcm9wKHJlcywgcHJvcHMsIGtleSwgYWx0S2V5LCB0cnVlKSB8fFxuICAgICAgICAgIGNoZWNrUHJvcChyZXMsIGF0dHJzLCBrZXksIGFsdEtleSwgZmFsc2UpO1xuICAgICAgLy8gZXh0ZXJuYWxDbGFzc1xuICAgICAgaWYgKFxuICAgICAgICByZXN1bHQgJiZcbiAgICAgICAgcmVzW2tleV0gJiZcbiAgICAgICAgZXh0ZXJuYWxDbGFzc2VzLmluZGV4T2YoYWx0S2V5KSAhPT0gLTEgJiZcbiAgICAgICAgY29udGV4dFtjYW1lbGl6ZShyZXNba2V5XSldXG4gICAgICApIHtcbiAgICAgICAgLy8g6LWL5YC8IGV4dGVybmFsQ2xhc3Mg55yf5q2j55qE5YC8KOaooeadv+mHjCBleHRlcm5hbENsYXNzIOeahOWAvOWPr+iDveaYr+Wtl+espuS4silcbiAgICAgICAgcmVzW2tleV0gPSBjb250ZXh0W2NhbWVsaXplKHJlc1trZXldKV07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gZXh0cmFjdFByb3BzRnJvbVZOb2RlRGF0YSAoXG4gIGRhdGEsXG4gIEN0b3IsXG4gIHRhZyxcbiAgY29udGV4dC8vIGZpeGVkIGJ5IHh4eHh4eFxuKSB7XG4gIC8vIHdlIGFyZSBvbmx5IGV4dHJhY3RpbmcgcmF3IHZhbHVlcyBoZXJlLlxuICAvLyB2YWxpZGF0aW9uIGFuZCBkZWZhdWx0IHZhbHVlcyBhcmUgaGFuZGxlZCBpbiB0aGUgY2hpbGRcbiAgLy8gY29tcG9uZW50IGl0c2VsZi5cbiAgdmFyIHByb3BPcHRpb25zID0gQ3Rvci5vcHRpb25zLnByb3BzO1xuICBpZiAoaXNVbmRlZihwcm9wT3B0aW9ucykpIHtcbiAgICAvLyBmaXhlZCBieSB4eHh4eHhcbiAgICByZXR1cm4gZXh0cmFjdFByb3BlcnRpZXNGcm9tVk5vZGVEYXRhKGRhdGEsIEN0b3IsIHt9LCBjb250ZXh0KVxuICB9XG4gIHZhciByZXMgPSB7fTtcbiAgdmFyIGF0dHJzID0gZGF0YS5hdHRycztcbiAgdmFyIHByb3BzID0gZGF0YS5wcm9wcztcbiAgaWYgKGlzRGVmKGF0dHJzKSB8fCBpc0RlZihwcm9wcykpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gcHJvcE9wdGlvbnMpIHtcbiAgICAgIHZhciBhbHRLZXkgPSBoeXBoZW5hdGUoa2V5KTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhciBrZXlJbkxvd2VyQ2FzZSA9IGtleS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAga2V5ICE9PSBrZXlJbkxvd2VyQ2FzZSAmJlxuICAgICAgICAgIGF0dHJzICYmIGhhc093bihhdHRycywga2V5SW5Mb3dlckNhc2UpXG4gICAgICAgICkge1xuICAgICAgICAgIHRpcChcbiAgICAgICAgICAgIFwiUHJvcCBcXFwiXCIgKyBrZXlJbkxvd2VyQ2FzZSArIFwiXFxcIiBpcyBwYXNzZWQgdG8gY29tcG9uZW50IFwiICtcbiAgICAgICAgICAgIChmb3JtYXRDb21wb25lbnROYW1lKHRhZyB8fCBDdG9yKSkgKyBcIiwgYnV0IHRoZSBkZWNsYXJlZCBwcm9wIG5hbWUgaXNcIiArXG4gICAgICAgICAgICBcIiBcXFwiXCIgKyBrZXkgKyBcIlxcXCIuIFwiICtcbiAgICAgICAgICAgIFwiTm90ZSB0aGF0IEhUTUwgYXR0cmlidXRlcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgY2FtZWxDYXNlZCBcIiArXG4gICAgICAgICAgICBcInByb3BzIG5lZWQgdG8gdXNlIHRoZWlyIGtlYmFiLWNhc2UgZXF1aXZhbGVudHMgd2hlbiB1c2luZyBpbi1ET00gXCIgK1xuICAgICAgICAgICAgXCJ0ZW1wbGF0ZXMuIFlvdSBzaG91bGQgcHJvYmFibHkgdXNlIFxcXCJcIiArIGFsdEtleSArIFwiXFxcIiBpbnN0ZWFkIG9mIFxcXCJcIiArIGtleSArIFwiXFxcIi5cIlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNoZWNrUHJvcChyZXMsIHByb3BzLCBrZXksIGFsdEtleSwgdHJ1ZSkgfHxcbiAgICAgIGNoZWNrUHJvcChyZXMsIGF0dHJzLCBrZXksIGFsdEtleSwgZmFsc2UpO1xuICAgIH1cbiAgfVxuICAvLyBmaXhlZCBieSB4eHh4eHhcbiAgcmV0dXJuIGV4dHJhY3RQcm9wZXJ0aWVzRnJvbVZOb2RlRGF0YShkYXRhLCBDdG9yLCByZXMsIGNvbnRleHQpXG59XG5cbmZ1bmN0aW9uIGNoZWNrUHJvcCAoXG4gIHJlcyxcbiAgaGFzaCxcbiAga2V5LFxuICBhbHRLZXksXG4gIHByZXNlcnZlXG4pIHtcbiAgaWYgKGlzRGVmKGhhc2gpKSB7XG4gICAgaWYgKGhhc093bihoYXNoLCBrZXkpKSB7XG4gICAgICByZXNba2V5XSA9IGhhc2hba2V5XTtcbiAgICAgIGlmICghcHJlc2VydmUpIHtcbiAgICAgICAgZGVsZXRlIGhhc2hba2V5XTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIGlmIChoYXNPd24oaGFzaCwgYWx0S2V5KSkge1xuICAgICAgcmVzW2tleV0gPSBoYXNoW2FsdEtleV07XG4gICAgICBpZiAoIXByZXNlcnZlKSB7XG4gICAgICAgIGRlbGV0ZSBoYXNoW2FsdEtleV07XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyogICovXG5cbi8vIFRoZSB0ZW1wbGF0ZSBjb21waWxlciBhdHRlbXB0cyB0byBtaW5pbWl6ZSB0aGUgbmVlZCBmb3Igbm9ybWFsaXphdGlvbiBieVxuLy8gc3RhdGljYWxseSBhbmFseXppbmcgdGhlIHRlbXBsYXRlIGF0IGNvbXBpbGUgdGltZS5cbi8vXG4vLyBGb3IgcGxhaW4gSFRNTCBtYXJrdXAsIG5vcm1hbGl6YXRpb24gY2FuIGJlIGNvbXBsZXRlbHkgc2tpcHBlZCBiZWNhdXNlIHRoZVxuLy8gZ2VuZXJhdGVkIHJlbmRlciBmdW5jdGlvbiBpcyBndWFyYW50ZWVkIHRvIHJldHVybiBBcnJheTxWTm9kZT4uIFRoZXJlIGFyZVxuLy8gdHdvIGNhc2VzIHdoZXJlIGV4dHJhIG5vcm1hbGl6YXRpb24gaXMgbmVlZGVkOlxuXG4vLyAxLiBXaGVuIHRoZSBjaGlsZHJlbiBjb250YWlucyBjb21wb25lbnRzIC0gYmVjYXVzZSBhIGZ1bmN0aW9uYWwgY29tcG9uZW50XG4vLyBtYXkgcmV0dXJuIGFuIEFycmF5IGluc3RlYWQgb2YgYSBzaW5nbGUgcm9vdC4gSW4gdGhpcyBjYXNlLCBqdXN0IGEgc2ltcGxlXG4vLyBub3JtYWxpemF0aW9uIGlzIG5lZWRlZCAtIGlmIGFueSBjaGlsZCBpcyBhbiBBcnJheSwgd2UgZmxhdHRlbiB0aGUgd2hvbGVcbi8vIHRoaW5nIHdpdGggQXJyYXkucHJvdG90eXBlLmNvbmNhdC4gSXQgaXMgZ3VhcmFudGVlZCB0byBiZSBvbmx5IDEtbGV2ZWwgZGVlcFxuLy8gYmVjYXVzZSBmdW5jdGlvbmFsIGNvbXBvbmVudHMgYWxyZWFkeSBub3JtYWxpemUgdGhlaXIgb3duIGNoaWxkcmVuLlxuZnVuY3Rpb24gc2ltcGxlTm9ybWFsaXplQ2hpbGRyZW4gKGNoaWxkcmVuKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbltpXSkpIHtcbiAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCBjaGlsZHJlbilcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNoaWxkcmVuXG59XG5cbi8vIDIuIFdoZW4gdGhlIGNoaWxkcmVuIGNvbnRhaW5zIGNvbnN0cnVjdHMgdGhhdCBhbHdheXMgZ2VuZXJhdGVkIG5lc3RlZCBBcnJheXMsXG4vLyBlLmcuIDx0ZW1wbGF0ZT4sIDxzbG90Piwgdi1mb3IsIG9yIHdoZW4gdGhlIGNoaWxkcmVuIGlzIHByb3ZpZGVkIGJ5IHVzZXJcbi8vIHdpdGggaGFuZC13cml0dGVuIHJlbmRlciBmdW5jdGlvbnMgLyBKU1guIEluIHN1Y2ggY2FzZXMgYSBmdWxsIG5vcm1hbGl6YXRpb25cbi8vIGlzIG5lZWRlZCB0byBjYXRlciB0byBhbGwgcG9zc2libGUgdHlwZXMgb2YgY2hpbGRyZW4gdmFsdWVzLlxuZnVuY3Rpb24gbm9ybWFsaXplQ2hpbGRyZW4gKGNoaWxkcmVuKSB7XG4gIHJldHVybiBpc1ByaW1pdGl2ZShjaGlsZHJlbilcbiAgICA/IFtjcmVhdGVUZXh0Vk5vZGUoY2hpbGRyZW4pXVxuICAgIDogQXJyYXkuaXNBcnJheShjaGlsZHJlbilcbiAgICAgID8gbm9ybWFsaXplQXJyYXlDaGlsZHJlbihjaGlsZHJlbilcbiAgICAgIDogdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIGlzVGV4dE5vZGUgKG5vZGUpIHtcbiAgcmV0dXJuIGlzRGVmKG5vZGUpICYmIGlzRGVmKG5vZGUudGV4dCkgJiYgaXNGYWxzZShub2RlLmlzQ29tbWVudClcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplQXJyYXlDaGlsZHJlbiAoY2hpbGRyZW4sIG5lc3RlZEluZGV4KSB7XG4gIHZhciByZXMgPSBbXTtcbiAgdmFyIGksIGMsIGxhc3RJbmRleCwgbGFzdDtcbiAgZm9yIChpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgYyA9IGNoaWxkcmVuW2ldO1xuICAgIGlmIChpc1VuZGVmKGMpIHx8IHR5cGVvZiBjID09PSAnYm9vbGVhbicpIHsgY29udGludWUgfVxuICAgIGxhc3RJbmRleCA9IHJlcy5sZW5ndGggLSAxO1xuICAgIGxhc3QgPSByZXNbbGFzdEluZGV4XTtcbiAgICAvLyAgbmVzdGVkXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYykpIHtcbiAgICAgIGlmIChjLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYyA9IG5vcm1hbGl6ZUFycmF5Q2hpbGRyZW4oYywgKChuZXN0ZWRJbmRleCB8fCAnJykgKyBcIl9cIiArIGkpKTtcbiAgICAgICAgLy8gbWVyZ2UgYWRqYWNlbnQgdGV4dCBub2Rlc1xuICAgICAgICBpZiAoaXNUZXh0Tm9kZShjWzBdKSAmJiBpc1RleHROb2RlKGxhc3QpKSB7XG4gICAgICAgICAgcmVzW2xhc3RJbmRleF0gPSBjcmVhdGVUZXh0Vk5vZGUobGFzdC50ZXh0ICsgKGNbMF0pLnRleHQpO1xuICAgICAgICAgIGMuc2hpZnQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXMucHVzaC5hcHBseShyZXMsIGMpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNQcmltaXRpdmUoYykpIHtcbiAgICAgIGlmIChpc1RleHROb2RlKGxhc3QpKSB7XG4gICAgICAgIC8vIG1lcmdlIGFkamFjZW50IHRleHQgbm9kZXNcbiAgICAgICAgLy8gdGhpcyBpcyBuZWNlc3NhcnkgZm9yIFNTUiBoeWRyYXRpb24gYmVjYXVzZSB0ZXh0IG5vZGVzIGFyZVxuICAgICAgICAvLyBlc3NlbnRpYWxseSBtZXJnZWQgd2hlbiByZW5kZXJlZCB0byBIVE1MIHN0cmluZ3NcbiAgICAgICAgcmVzW2xhc3RJbmRleF0gPSBjcmVhdGVUZXh0Vk5vZGUobGFzdC50ZXh0ICsgYyk7XG4gICAgICB9IGVsc2UgaWYgKGMgIT09ICcnKSB7XG4gICAgICAgIC8vIGNvbnZlcnQgcHJpbWl0aXZlIHRvIHZub2RlXG4gICAgICAgIHJlcy5wdXNoKGNyZWF0ZVRleHRWTm9kZShjKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc1RleHROb2RlKGMpICYmIGlzVGV4dE5vZGUobGFzdCkpIHtcbiAgICAgICAgLy8gbWVyZ2UgYWRqYWNlbnQgdGV4dCBub2Rlc1xuICAgICAgICByZXNbbGFzdEluZGV4XSA9IGNyZWF0ZVRleHRWTm9kZShsYXN0LnRleHQgKyBjLnRleHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZGVmYXVsdCBrZXkgZm9yIG5lc3RlZCBhcnJheSBjaGlsZHJlbiAobGlrZWx5IGdlbmVyYXRlZCBieSB2LWZvcilcbiAgICAgICAgaWYgKGlzVHJ1ZShjaGlsZHJlbi5faXNWTGlzdCkgJiZcbiAgICAgICAgICBpc0RlZihjLnRhZykgJiZcbiAgICAgICAgICBpc1VuZGVmKGMua2V5KSAmJlxuICAgICAgICAgIGlzRGVmKG5lc3RlZEluZGV4KSkge1xuICAgICAgICAgIGMua2V5ID0gXCJfX3ZsaXN0XCIgKyBuZXN0ZWRJbmRleCArIFwiX1wiICsgaSArIFwiX19cIjtcbiAgICAgICAgfVxuICAgICAgICByZXMucHVzaChjKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdFByb3ZpZGUgKHZtKSB7XG4gIHZhciBwcm92aWRlID0gdm0uJG9wdGlvbnMucHJvdmlkZTtcbiAgaWYgKHByb3ZpZGUpIHtcbiAgICB2bS5fcHJvdmlkZWQgPSB0eXBlb2YgcHJvdmlkZSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyBwcm92aWRlLmNhbGwodm0pXG4gICAgICA6IHByb3ZpZGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdEluamVjdGlvbnMgKHZtKSB7XG4gIHZhciByZXN1bHQgPSByZXNvbHZlSW5qZWN0KHZtLiRvcHRpb25zLmluamVjdCwgdm0pO1xuICBpZiAocmVzdWx0KSB7XG4gICAgdG9nZ2xlT2JzZXJ2aW5nKGZhbHNlKTtcbiAgICBPYmplY3Qua2V5cyhyZXN1bHQpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGRlZmluZVJlYWN0aXZlJCQxKHZtLCBrZXksIHJlc3VsdFtrZXldLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgd2FybihcbiAgICAgICAgICAgIFwiQXZvaWQgbXV0YXRpbmcgYW4gaW5qZWN0ZWQgdmFsdWUgZGlyZWN0bHkgc2luY2UgdGhlIGNoYW5nZXMgd2lsbCBiZSBcIiArXG4gICAgICAgICAgICBcIm92ZXJ3cml0dGVuIHdoZW5ldmVyIHRoZSBwcm92aWRlZCBjb21wb25lbnQgcmUtcmVuZGVycy4gXCIgK1xuICAgICAgICAgICAgXCJpbmplY3Rpb24gYmVpbmcgbXV0YXRlZDogXFxcIlwiICsga2V5ICsgXCJcXFwiXCIsXG4gICAgICAgICAgICB2bVxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVmaW5lUmVhY3RpdmUkJDEodm0sIGtleSwgcmVzdWx0W2tleV0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRvZ2dsZU9ic2VydmluZyh0cnVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXNvbHZlSW5qZWN0IChpbmplY3QsIHZtKSB7XG4gIGlmIChpbmplY3QpIHtcbiAgICAvLyBpbmplY3QgaXMgOmFueSBiZWNhdXNlIGZsb3cgaXMgbm90IHNtYXJ0IGVub3VnaCB0byBmaWd1cmUgb3V0IGNhY2hlZFxuICAgIHZhciByZXN1bHQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHZhciBrZXlzID0gaGFzU3ltYm9sXG4gICAgICA/IFJlZmxlY3Qub3duS2V5cyhpbmplY3QpXG4gICAgICA6IE9iamVjdC5rZXlzKGluamVjdCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgICAgLy8gIzY1NzQgaW4gY2FzZSB0aGUgaW5qZWN0IG9iamVjdCBpcyBvYnNlcnZlZC4uLlxuICAgICAgaWYgKGtleSA9PT0gJ19fb2JfXycpIHsgY29udGludWUgfVxuICAgICAgdmFyIHByb3ZpZGVLZXkgPSBpbmplY3Rba2V5XS5mcm9tO1xuICAgICAgdmFyIHNvdXJjZSA9IHZtO1xuICAgICAgd2hpbGUgKHNvdXJjZSkge1xuICAgICAgICBpZiAoc291cmNlLl9wcm92aWRlZCAmJiBoYXNPd24oc291cmNlLl9wcm92aWRlZCwgcHJvdmlkZUtleSkpIHtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IHNvdXJjZS5fcHJvdmlkZWRbcHJvdmlkZUtleV07XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBzb3VyY2UgPSBzb3VyY2UuJHBhcmVudDtcbiAgICAgIH1cbiAgICAgIGlmICghc291cmNlKSB7XG4gICAgICAgIGlmICgnZGVmYXVsdCcgaW4gaW5qZWN0W2tleV0pIHtcbiAgICAgICAgICB2YXIgcHJvdmlkZURlZmF1bHQgPSBpbmplY3Rba2V5XS5kZWZhdWx0O1xuICAgICAgICAgIHJlc3VsdFtrZXldID0gdHlwZW9mIHByb3ZpZGVEZWZhdWx0ID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICA/IHByb3ZpZGVEZWZhdWx0LmNhbGwodm0pXG4gICAgICAgICAgICA6IHByb3ZpZGVEZWZhdWx0O1xuICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3YXJuKChcIkluamVjdGlvbiBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgbm90IGZvdW5kXCIpLCB2bSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG5cbi8qICAqL1xuXG5cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVzb2x2aW5nIHJhdyBjaGlsZHJlbiBWTm9kZXMgaW50byBhIHNsb3Qgb2JqZWN0LlxuICovXG5mdW5jdGlvbiByZXNvbHZlU2xvdHMgKFxuICBjaGlsZHJlbixcbiAgY29udGV4dFxuKSB7XG4gIGlmICghY2hpbGRyZW4gfHwgIWNoaWxkcmVuLmxlbmd0aCkge1xuICAgIHJldHVybiB7fVxuICB9XG4gIHZhciBzbG90cyA9IHt9O1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgIHZhciBkYXRhID0gY2hpbGQuZGF0YTtcbiAgICAvLyByZW1vdmUgc2xvdCBhdHRyaWJ1dGUgaWYgdGhlIG5vZGUgaXMgcmVzb2x2ZWQgYXMgYSBWdWUgc2xvdCBub2RlXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5hdHRycyAmJiBkYXRhLmF0dHJzLnNsb3QpIHtcbiAgICAgIGRlbGV0ZSBkYXRhLmF0dHJzLnNsb3Q7XG4gICAgfVxuICAgIC8vIG5hbWVkIHNsb3RzIHNob3VsZCBvbmx5IGJlIHJlc3BlY3RlZCBpZiB0aGUgdm5vZGUgd2FzIHJlbmRlcmVkIGluIHRoZVxuICAgIC8vIHNhbWUgY29udGV4dC5cbiAgICBpZiAoKGNoaWxkLmNvbnRleHQgPT09IGNvbnRleHQgfHwgY2hpbGQuZm5Db250ZXh0ID09PSBjb250ZXh0KSAmJlxuICAgICAgZGF0YSAmJiBkYXRhLnNsb3QgIT0gbnVsbFxuICAgICkge1xuICAgICAgdmFyIG5hbWUgPSBkYXRhLnNsb3Q7XG4gICAgICB2YXIgc2xvdCA9IChzbG90c1tuYW1lXSB8fCAoc2xvdHNbbmFtZV0gPSBbXSkpO1xuICAgICAgaWYgKGNoaWxkLnRhZyA9PT0gJ3RlbXBsYXRlJykge1xuICAgICAgICBzbG90LnB1c2guYXBwbHkoc2xvdCwgY2hpbGQuY2hpbGRyZW4gfHwgW10pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2xvdC5wdXNoKGNoaWxkKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZml4ZWQgYnkgeHh4eHh4IOS4tOaXtiBoYWNrIOaOiSB1bmktYXBwIOS4reeahOW8guatpSBuYW1lIHNsb3QgcGFnZVxuICAgICAgaWYoY2hpbGQuYXN5bmNNZXRhICYmIGNoaWxkLmFzeW5jTWV0YS5kYXRhICYmIGNoaWxkLmFzeW5jTWV0YS5kYXRhLnNsb3QgPT09ICdwYWdlJyl7XG4gICAgICAgIChzbG90c1sncGFnZSddIHx8IChzbG90c1sncGFnZSddID0gW10pKS5wdXNoKGNoaWxkKTtcbiAgICAgIH1lbHNle1xuICAgICAgICAoc2xvdHMuZGVmYXVsdCB8fCAoc2xvdHMuZGVmYXVsdCA9IFtdKSkucHVzaChjaGlsZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIGlnbm9yZSBzbG90cyB0aGF0IGNvbnRhaW5zIG9ubHkgd2hpdGVzcGFjZVxuICBmb3IgKHZhciBuYW1lJDEgaW4gc2xvdHMpIHtcbiAgICBpZiAoc2xvdHNbbmFtZSQxXS5ldmVyeShpc1doaXRlc3BhY2UpKSB7XG4gICAgICBkZWxldGUgc2xvdHNbbmFtZSQxXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHNsb3RzXG59XG5cbmZ1bmN0aW9uIGlzV2hpdGVzcGFjZSAobm9kZSkge1xuICByZXR1cm4gKG5vZGUuaXNDb21tZW50ICYmICFub2RlLmFzeW5jRmFjdG9yeSkgfHwgbm9kZS50ZXh0ID09PSAnICdcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVNjb3BlZFNsb3RzIChcbiAgc2xvdHMsXG4gIG5vcm1hbFNsb3RzLFxuICBwcmV2U2xvdHNcbikge1xuICB2YXIgcmVzO1xuICB2YXIgaGFzTm9ybWFsU2xvdHMgPSBPYmplY3Qua2V5cyhub3JtYWxTbG90cykubGVuZ3RoID4gMDtcbiAgdmFyIGlzU3RhYmxlID0gc2xvdHMgPyAhIXNsb3RzLiRzdGFibGUgOiAhaGFzTm9ybWFsU2xvdHM7XG4gIHZhciBrZXkgPSBzbG90cyAmJiBzbG90cy4ka2V5O1xuICBpZiAoIXNsb3RzKSB7XG4gICAgcmVzID0ge307XG4gIH0gZWxzZSBpZiAoc2xvdHMuX25vcm1hbGl6ZWQpIHtcbiAgICAvLyBmYXN0IHBhdGggMTogY2hpbGQgY29tcG9uZW50IHJlLXJlbmRlciBvbmx5LCBwYXJlbnQgZGlkIG5vdCBjaGFuZ2VcbiAgICByZXR1cm4gc2xvdHMuX25vcm1hbGl6ZWRcbiAgfSBlbHNlIGlmIChcbiAgICBpc1N0YWJsZSAmJlxuICAgIHByZXZTbG90cyAmJlxuICAgIHByZXZTbG90cyAhPT0gZW1wdHlPYmplY3QgJiZcbiAgICBrZXkgPT09IHByZXZTbG90cy4ka2V5ICYmXG4gICAgIWhhc05vcm1hbFNsb3RzICYmXG4gICAgIXByZXZTbG90cy4kaGFzTm9ybWFsXG4gICkge1xuICAgIC8vIGZhc3QgcGF0aCAyOiBzdGFibGUgc2NvcGVkIHNsb3RzIHcvIG5vIG5vcm1hbCBzbG90cyB0byBwcm94eSxcbiAgICAvLyBvbmx5IG5lZWQgdG8gbm9ybWFsaXplIG9uY2VcbiAgICByZXR1cm4gcHJldlNsb3RzXG4gIH0gZWxzZSB7XG4gICAgcmVzID0ge307XG4gICAgZm9yICh2YXIga2V5JDEgaW4gc2xvdHMpIHtcbiAgICAgIGlmIChzbG90c1trZXkkMV0gJiYga2V5JDFbMF0gIT09ICckJykge1xuICAgICAgICByZXNba2V5JDFdID0gbm9ybWFsaXplU2NvcGVkU2xvdChub3JtYWxTbG90cywga2V5JDEsIHNsb3RzW2tleSQxXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIGV4cG9zZSBub3JtYWwgc2xvdHMgb24gc2NvcGVkU2xvdHNcbiAgZm9yICh2YXIga2V5JDIgaW4gbm9ybWFsU2xvdHMpIHtcbiAgICBpZiAoIShrZXkkMiBpbiByZXMpKSB7XG4gICAgICByZXNba2V5JDJdID0gcHJveHlOb3JtYWxTbG90KG5vcm1hbFNsb3RzLCBrZXkkMik7XG4gICAgfVxuICB9XG4gIC8vIGF2b3JpYXogc2VlbXMgdG8gbW9jayBhIG5vbi1leHRlbnNpYmxlICRzY29wZWRTbG90cyBvYmplY3RcbiAgLy8gYW5kIHdoZW4gdGhhdCBpcyBwYXNzZWQgZG93biB0aGlzIHdvdWxkIGNhdXNlIGFuIGVycm9yXG4gIGlmIChzbG90cyAmJiBPYmplY3QuaXNFeHRlbnNpYmxlKHNsb3RzKSkge1xuICAgIChzbG90cykuX25vcm1hbGl6ZWQgPSByZXM7XG4gIH1cbiAgZGVmKHJlcywgJyRzdGFibGUnLCBpc1N0YWJsZSk7XG4gIGRlZihyZXMsICcka2V5Jywga2V5KTtcbiAgZGVmKHJlcywgJyRoYXNOb3JtYWwnLCBoYXNOb3JtYWxTbG90cyk7XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplU2NvcGVkU2xvdChub3JtYWxTbG90cywga2V5LCBmbikge1xuICB2YXIgbm9ybWFsaXplZCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzID0gYXJndW1lbnRzLmxlbmd0aCA/IGZuLmFwcGx5KG51bGwsIGFyZ3VtZW50cykgOiBmbih7fSk7XG4gICAgcmVzID0gcmVzICYmIHR5cGVvZiByZXMgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHJlcylcbiAgICAgID8gW3Jlc10gLy8gc2luZ2xlIHZub2RlXG4gICAgICA6IG5vcm1hbGl6ZUNoaWxkcmVuKHJlcyk7XG4gICAgcmV0dXJuIHJlcyAmJiAoXG4gICAgICByZXMubGVuZ3RoID09PSAwIHx8XG4gICAgICAocmVzLmxlbmd0aCA9PT0gMSAmJiByZXNbMF0uaXNDb21tZW50KSAvLyAjOTY1OFxuICAgICkgPyB1bmRlZmluZWRcbiAgICAgIDogcmVzXG4gIH07XG4gIC8vIHRoaXMgaXMgYSBzbG90IHVzaW5nIHRoZSBuZXcgdi1zbG90IHN5bnRheCB3aXRob3V0IHNjb3BlLiBhbHRob3VnaCBpdCBpc1xuICAvLyBjb21waWxlZCBhcyBhIHNjb3BlZCBzbG90LCByZW5kZXIgZm4gdXNlcnMgd291bGQgZXhwZWN0IGl0IHRvIGJlIHByZXNlbnRcbiAgLy8gb24gdGhpcy4kc2xvdHMgYmVjYXVzZSB0aGUgdXNhZ2UgaXMgc2VtYW50aWNhbGx5IGEgbm9ybWFsIHNsb3QuXG4gIGlmIChmbi5wcm94eSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShub3JtYWxTbG90cywga2V5LCB7XG4gICAgICBnZXQ6IG5vcm1hbGl6ZWQsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIG5vcm1hbGl6ZWRcbn1cblxuZnVuY3Rpb24gcHJveHlOb3JtYWxTbG90KHNsb3RzLCBrZXkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHNsb3RzW2tleV07IH1cbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlbmRlcmluZyB2LWZvciBsaXN0cy5cbiAqL1xuZnVuY3Rpb24gcmVuZGVyTGlzdCAoXG4gIHZhbCxcbiAgcmVuZGVyXG4pIHtcbiAgdmFyIHJldCwgaSwgbCwga2V5cywga2V5O1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpIHx8IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0ID0gbmV3IEFycmF5KHZhbC5sZW5ndGgpO1xuICAgIGZvciAoaSA9IDAsIGwgPSB2YWwubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICByZXRbaV0gPSByZW5kZXIodmFsW2ldLCBpLCBpLCBpKTsgLy8gZml4ZWQgYnkgeHh4eHh4XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgcmV0ID0gbmV3IEFycmF5KHZhbCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHZhbDsgaSsrKSB7XG4gICAgICByZXRbaV0gPSByZW5kZXIoaSArIDEsIGksIGksIGkpOyAvLyBmaXhlZCBieSB4eHh4eHhcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNPYmplY3QodmFsKSkge1xuICAgIGlmIChoYXNTeW1ib2wgJiYgdmFsW1N5bWJvbC5pdGVyYXRvcl0pIHtcbiAgICAgIHJldCA9IFtdO1xuICAgICAgdmFyIGl0ZXJhdG9yID0gdmFsW1N5bWJvbC5pdGVyYXRvcl0oKTtcbiAgICAgIHZhciByZXN1bHQgPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgICB3aGlsZSAoIXJlc3VsdC5kb25lKSB7XG4gICAgICAgIHJldC5wdXNoKHJlbmRlcihyZXN1bHQudmFsdWUsIHJldC5sZW5ndGgsIGksIGkrKykpOyAvLyBmaXhlZCBieSB4eHh4eHhcbiAgICAgICAgcmVzdWx0ID0gaXRlcmF0b3IubmV4dCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBrZXlzID0gT2JqZWN0LmtleXModmFsKTtcbiAgICAgIHJldCA9IG5ldyBBcnJheShrZXlzLmxlbmd0aCk7XG4gICAgICBmb3IgKGkgPSAwLCBsID0ga2V5cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgcmV0W2ldID0gcmVuZGVyKHZhbFtrZXldLCBrZXksIGksIGkpOyAvLyBmaXhlZCBieSB4eHh4eHhcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKCFpc0RlZihyZXQpKSB7XG4gICAgcmV0ID0gW107XG4gIH1cbiAgKHJldCkuX2lzVkxpc3QgPSB0cnVlO1xuICByZXR1cm4gcmV0XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZW5kZXJpbmcgPHNsb3Q+XG4gKi9cbmZ1bmN0aW9uIHJlbmRlclNsb3QgKFxuICBuYW1lLFxuICBmYWxsYmFjayxcbiAgcHJvcHMsXG4gIGJpbmRPYmplY3Rcbikge1xuICB2YXIgc2NvcGVkU2xvdEZuID0gdGhpcy4kc2NvcGVkU2xvdHNbbmFtZV07XG4gIHZhciBub2RlcztcbiAgaWYgKHNjb3BlZFNsb3RGbikgeyAvLyBzY29wZWQgc2xvdFxuICAgIHByb3BzID0gcHJvcHMgfHwge307XG4gICAgaWYgKGJpbmRPYmplY3QpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFpc09iamVjdChiaW5kT2JqZWN0KSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdzbG90IHYtYmluZCB3aXRob3V0IGFyZ3VtZW50IGV4cGVjdHMgYW4gT2JqZWN0JyxcbiAgICAgICAgICB0aGlzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBwcm9wcyA9IGV4dGVuZChleHRlbmQoe30sIGJpbmRPYmplY3QpLCBwcm9wcyk7XG4gICAgfVxuICAgIC8vIGZpeGVkIGJ5IHh4eHh4eCBhcHAtcGx1cyBzY29wZWRTbG90XG4gICAgbm9kZXMgPSBzY29wZWRTbG90Rm4ocHJvcHMsIHRoaXMsIHByb3BzLl9pKSB8fCBmYWxsYmFjaztcbiAgfSBlbHNlIHtcbiAgICBub2RlcyA9IHRoaXMuJHNsb3RzW25hbWVdIHx8IGZhbGxiYWNrO1xuICB9XG5cbiAgdmFyIHRhcmdldCA9IHByb3BzICYmIHByb3BzLnNsb3Q7XG4gIGlmICh0YXJnZXQpIHtcbiAgICByZXR1cm4gdGhpcy4kY3JlYXRlRWxlbWVudCgndGVtcGxhdGUnLCB7IHNsb3Q6IHRhcmdldCB9LCBub2RlcylcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbm9kZXNcbiAgfVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVzb2x2aW5nIGZpbHRlcnNcbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUZpbHRlciAoaWQpIHtcbiAgcmV0dXJuIHJlc29sdmVBc3NldCh0aGlzLiRvcHRpb25zLCAnZmlsdGVycycsIGlkLCB0cnVlKSB8fCBpZGVudGl0eVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaXNLZXlOb3RNYXRjaCAoZXhwZWN0LCBhY3R1YWwpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZXhwZWN0KSkge1xuICAgIHJldHVybiBleHBlY3QuaW5kZXhPZihhY3R1YWwpID09PSAtMVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBleHBlY3QgIT09IGFjdHVhbFxuICB9XG59XG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIGNoZWNraW5nIGtleUNvZGVzIGZyb20gY29uZmlnLlxuICogZXhwb3NlZCBhcyBWdWUucHJvdG90eXBlLl9rXG4gKiBwYXNzaW5nIGluIGV2ZW50S2V5TmFtZSBhcyBsYXN0IGFyZ3VtZW50IHNlcGFyYXRlbHkgZm9yIGJhY2t3YXJkcyBjb21wYXRcbiAqL1xuZnVuY3Rpb24gY2hlY2tLZXlDb2RlcyAoXG4gIGV2ZW50S2V5Q29kZSxcbiAga2V5LFxuICBidWlsdEluS2V5Q29kZSxcbiAgZXZlbnRLZXlOYW1lLFxuICBidWlsdEluS2V5TmFtZVxuKSB7XG4gIHZhciBtYXBwZWRLZXlDb2RlID0gY29uZmlnLmtleUNvZGVzW2tleV0gfHwgYnVpbHRJbktleUNvZGU7XG4gIGlmIChidWlsdEluS2V5TmFtZSAmJiBldmVudEtleU5hbWUgJiYgIWNvbmZpZy5rZXlDb2Rlc1trZXldKSB7XG4gICAgcmV0dXJuIGlzS2V5Tm90TWF0Y2goYnVpbHRJbktleU5hbWUsIGV2ZW50S2V5TmFtZSlcbiAgfSBlbHNlIGlmIChtYXBwZWRLZXlDb2RlKSB7XG4gICAgcmV0dXJuIGlzS2V5Tm90TWF0Y2gobWFwcGVkS2V5Q29kZSwgZXZlbnRLZXlDb2RlKVxuICB9IGVsc2UgaWYgKGV2ZW50S2V5TmFtZSkge1xuICAgIHJldHVybiBoeXBoZW5hdGUoZXZlbnRLZXlOYW1lKSAhPT0ga2V5XG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIG1lcmdpbmcgdi1iaW5kPVwib2JqZWN0XCIgaW50byBhIFZOb2RlJ3MgZGF0YS5cbiAqL1xuZnVuY3Rpb24gYmluZE9iamVjdFByb3BzIChcbiAgZGF0YSxcbiAgdGFnLFxuICB2YWx1ZSxcbiAgYXNQcm9wLFxuICBpc1N5bmNcbikge1xuICBpZiAodmFsdWUpIHtcbiAgICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAndi1iaW5kIHdpdGhvdXQgYXJndW1lbnQgZXhwZWN0cyBhbiBPYmplY3Qgb3IgQXJyYXkgdmFsdWUnLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUgPSB0b09iamVjdCh2YWx1ZSk7XG4gICAgICB9XG4gICAgICB2YXIgaGFzaDtcbiAgICAgIHZhciBsb29wID0gZnVuY3Rpb24gKCBrZXkgKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBrZXkgPT09ICdjbGFzcycgfHxcbiAgICAgICAgICBrZXkgPT09ICdzdHlsZScgfHxcbiAgICAgICAgICBpc1Jlc2VydmVkQXR0cmlidXRlKGtleSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgaGFzaCA9IGRhdGE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHR5cGUgPSBkYXRhLmF0dHJzICYmIGRhdGEuYXR0cnMudHlwZTtcbiAgICAgICAgICBoYXNoID0gYXNQcm9wIHx8IGNvbmZpZy5tdXN0VXNlUHJvcCh0YWcsIHR5cGUsIGtleSlcbiAgICAgICAgICAgID8gZGF0YS5kb21Qcm9wcyB8fCAoZGF0YS5kb21Qcm9wcyA9IHt9KVxuICAgICAgICAgICAgOiBkYXRhLmF0dHJzIHx8IChkYXRhLmF0dHJzID0ge30pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjYW1lbGl6ZWRLZXkgPSBjYW1lbGl6ZShrZXkpO1xuICAgICAgICB2YXIgaHlwaGVuYXRlZEtleSA9IGh5cGhlbmF0ZShrZXkpO1xuICAgICAgICBpZiAoIShjYW1lbGl6ZWRLZXkgaW4gaGFzaCkgJiYgIShoeXBoZW5hdGVkS2V5IGluIGhhc2gpKSB7XG4gICAgICAgICAgaGFzaFtrZXldID0gdmFsdWVba2V5XTtcblxuICAgICAgICAgIGlmIChpc1N5bmMpIHtcbiAgICAgICAgICAgIHZhciBvbiA9IGRhdGEub24gfHwgKGRhdGEub24gPSB7fSk7XG4gICAgICAgICAgICBvblsoXCJ1cGRhdGU6XCIgKyBrZXkpXSA9IGZ1bmN0aW9uICgkZXZlbnQpIHtcbiAgICAgICAgICAgICAgdmFsdWVba2V5XSA9ICRldmVudDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIGxvb3AoIGtleSApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVuZGVyaW5nIHN0YXRpYyB0cmVlcy5cbiAqL1xuZnVuY3Rpb24gcmVuZGVyU3RhdGljIChcbiAgaW5kZXgsXG4gIGlzSW5Gb3Jcbikge1xuICB2YXIgY2FjaGVkID0gdGhpcy5fc3RhdGljVHJlZXMgfHwgKHRoaXMuX3N0YXRpY1RyZWVzID0gW10pO1xuICB2YXIgdHJlZSA9IGNhY2hlZFtpbmRleF07XG4gIC8vIGlmIGhhcyBhbHJlYWR5LXJlbmRlcmVkIHN0YXRpYyB0cmVlIGFuZCBub3QgaW5zaWRlIHYtZm9yLFxuICAvLyB3ZSBjYW4gcmV1c2UgdGhlIHNhbWUgdHJlZS5cbiAgaWYgKHRyZWUgJiYgIWlzSW5Gb3IpIHtcbiAgICByZXR1cm4gdHJlZVxuICB9XG4gIC8vIG90aGVyd2lzZSwgcmVuZGVyIGEgZnJlc2ggdHJlZS5cbiAgdHJlZSA9IGNhY2hlZFtpbmRleF0gPSB0aGlzLiRvcHRpb25zLnN0YXRpY1JlbmRlckZuc1tpbmRleF0uY2FsbChcbiAgICB0aGlzLl9yZW5kZXJQcm94eSxcbiAgICBudWxsLFxuICAgIHRoaXMgLy8gZm9yIHJlbmRlciBmbnMgZ2VuZXJhdGVkIGZvciBmdW5jdGlvbmFsIGNvbXBvbmVudCB0ZW1wbGF0ZXNcbiAgKTtcbiAgbWFya1N0YXRpYyh0cmVlLCAoXCJfX3N0YXRpY19fXCIgKyBpbmRleCksIGZhbHNlKTtcbiAgcmV0dXJuIHRyZWVcbn1cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3Igdi1vbmNlLlxuICogRWZmZWN0aXZlbHkgaXQgbWVhbnMgbWFya2luZyB0aGUgbm9kZSBhcyBzdGF0aWMgd2l0aCBhIHVuaXF1ZSBrZXkuXG4gKi9cbmZ1bmN0aW9uIG1hcmtPbmNlIChcbiAgdHJlZSxcbiAgaW5kZXgsXG4gIGtleVxuKSB7XG4gIG1hcmtTdGF0aWModHJlZSwgKFwiX19vbmNlX19cIiArIGluZGV4ICsgKGtleSA/IChcIl9cIiArIGtleSkgOiBcIlwiKSksIHRydWUpO1xuICByZXR1cm4gdHJlZVxufVxuXG5mdW5jdGlvbiBtYXJrU3RhdGljIChcbiAgdHJlZSxcbiAga2V5LFxuICBpc09uY2Vcbikge1xuICBpZiAoQXJyYXkuaXNBcnJheSh0cmVlKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHJlZS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRyZWVbaV0gJiYgdHlwZW9mIHRyZWVbaV0gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG1hcmtTdGF0aWNOb2RlKHRyZWVbaV0sIChrZXkgKyBcIl9cIiArIGkpLCBpc09uY2UpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBtYXJrU3RhdGljTm9kZSh0cmVlLCBrZXksIGlzT25jZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFya1N0YXRpY05vZGUgKG5vZGUsIGtleSwgaXNPbmNlKSB7XG4gIG5vZGUuaXNTdGF0aWMgPSB0cnVlO1xuICBub2RlLmtleSA9IGtleTtcbiAgbm9kZS5pc09uY2UgPSBpc09uY2U7XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBiaW5kT2JqZWN0TGlzdGVuZXJzIChkYXRhLCB2YWx1ZSkge1xuICBpZiAodmFsdWUpIHtcbiAgICBpZiAoIWlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgICd2LW9uIHdpdGhvdXQgYXJndW1lbnQgZXhwZWN0cyBhbiBPYmplY3QgdmFsdWUnLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgb24gPSBkYXRhLm9uID0gZGF0YS5vbiA/IGV4dGVuZCh7fSwgZGF0YS5vbikgOiB7fTtcbiAgICAgIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgICAgICB2YXIgZXhpc3RpbmcgPSBvbltrZXldO1xuICAgICAgICB2YXIgb3VycyA9IHZhbHVlW2tleV07XG4gICAgICAgIG9uW2tleV0gPSBleGlzdGluZyA/IFtdLmNvbmNhdChleGlzdGluZywgb3VycykgOiBvdXJzO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gcmVzb2x2ZVNjb3BlZFNsb3RzIChcbiAgZm5zLCAvLyBzZWUgZmxvdy92bm9kZVxuICByZXMsXG4gIC8vIHRoZSBmb2xsb3dpbmcgYXJlIGFkZGVkIGluIDIuNlxuICBoYXNEeW5hbWljS2V5cyxcbiAgY29udGVudEhhc2hLZXlcbikge1xuICByZXMgPSByZXMgfHwgeyAkc3RhYmxlOiAhaGFzRHluYW1pY0tleXMgfTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBmbnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc2xvdCA9IGZuc1tpXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzbG90KSkge1xuICAgICAgcmVzb2x2ZVNjb3BlZFNsb3RzKHNsb3QsIHJlcywgaGFzRHluYW1pY0tleXMpO1xuICAgIH0gZWxzZSBpZiAoc2xvdCkge1xuICAgICAgLy8gbWFya2VyIGZvciByZXZlcnNlIHByb3h5aW5nIHYtc2xvdCB3aXRob3V0IHNjb3BlIG9uIHRoaXMuJHNsb3RzXG4gICAgICBpZiAoc2xvdC5wcm94eSkge1xuICAgICAgICBzbG90LmZuLnByb3h5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJlc1tzbG90LmtleV0gPSBzbG90LmZuO1xuICAgIH1cbiAgfVxuICBpZiAoY29udGVudEhhc2hLZXkpIHtcbiAgICAocmVzKS4ka2V5ID0gY29udGVudEhhc2hLZXk7XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gYmluZER5bmFtaWNLZXlzIChiYXNlT2JqLCB2YWx1ZXMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIga2V5ID0gdmFsdWVzW2ldO1xuICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyAmJiBrZXkpIHtcbiAgICAgIGJhc2VPYmpbdmFsdWVzW2ldXSA9IHZhbHVlc1tpICsgMV07XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGtleSAhPT0gJycgJiYga2V5ICE9PSBudWxsKSB7XG4gICAgICAvLyBudWxsIGlzIGEgc3BlY2lhbCB2YWx1ZSBmb3IgZXhwbGljaXRseSByZW1vdmluZyBhIGJpbmRpbmdcbiAgICAgIHdhcm4oXG4gICAgICAgIChcIkludmFsaWQgdmFsdWUgZm9yIGR5bmFtaWMgZGlyZWN0aXZlIGFyZ3VtZW50IChleHBlY3RlZCBzdHJpbmcgb3IgbnVsbCk6IFwiICsga2V5KSxcbiAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGJhc2VPYmpcbn1cblxuLy8gaGVscGVyIHRvIGR5bmFtaWNhbGx5IGFwcGVuZCBtb2RpZmllciBydW50aW1lIG1hcmtlcnMgdG8gZXZlbnQgbmFtZXMuXG4vLyBlbnN1cmUgb25seSBhcHBlbmQgd2hlbiB2YWx1ZSBpcyBhbHJlYWR5IHN0cmluZywgb3RoZXJ3aXNlIGl0IHdpbGwgYmUgY2FzdFxuLy8gdG8gc3RyaW5nIGFuZCBjYXVzZSB0aGUgdHlwZSBjaGVjayB0byBtaXNzLlxuZnVuY3Rpb24gcHJlcGVuZE1vZGlmaWVyICh2YWx1ZSwgc3ltYm9sKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gc3ltYm9sICsgdmFsdWUgOiB2YWx1ZVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5zdGFsbFJlbmRlckhlbHBlcnMgKHRhcmdldCkge1xuICB0YXJnZXQuX28gPSBtYXJrT25jZTtcbiAgdGFyZ2V0Ll9uID0gdG9OdW1iZXI7XG4gIHRhcmdldC5fcyA9IHRvU3RyaW5nO1xuICB0YXJnZXQuX2wgPSByZW5kZXJMaXN0O1xuICB0YXJnZXQuX3QgPSByZW5kZXJTbG90O1xuICB0YXJnZXQuX3EgPSBsb29zZUVxdWFsO1xuICB0YXJnZXQuX2kgPSBsb29zZUluZGV4T2Y7XG4gIHRhcmdldC5fbSA9IHJlbmRlclN0YXRpYztcbiAgdGFyZ2V0Ll9mID0gcmVzb2x2ZUZpbHRlcjtcbiAgdGFyZ2V0Ll9rID0gY2hlY2tLZXlDb2RlcztcbiAgdGFyZ2V0Ll9iID0gYmluZE9iamVjdFByb3BzO1xuICB0YXJnZXQuX3YgPSBjcmVhdGVUZXh0Vk5vZGU7XG4gIHRhcmdldC5fZSA9IGNyZWF0ZUVtcHR5Vk5vZGU7XG4gIHRhcmdldC5fdSA9IHJlc29sdmVTY29wZWRTbG90cztcbiAgdGFyZ2V0Ll9nID0gYmluZE9iamVjdExpc3RlbmVycztcbiAgdGFyZ2V0Ll9kID0gYmluZER5bmFtaWNLZXlzO1xuICB0YXJnZXQuX3AgPSBwcmVwZW5kTW9kaWZpZXI7XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBGdW5jdGlvbmFsUmVuZGVyQ29udGV4dCAoXG4gIGRhdGEsXG4gIHByb3BzLFxuICBjaGlsZHJlbixcbiAgcGFyZW50LFxuICBDdG9yXG4pIHtcbiAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgdmFyIG9wdGlvbnMgPSBDdG9yLm9wdGlvbnM7XG4gIC8vIGVuc3VyZSB0aGUgY3JlYXRlRWxlbWVudCBmdW5jdGlvbiBpbiBmdW5jdGlvbmFsIGNvbXBvbmVudHNcbiAgLy8gZ2V0cyBhIHVuaXF1ZSBjb250ZXh0IC0gdGhpcyBpcyBuZWNlc3NhcnkgZm9yIGNvcnJlY3QgbmFtZWQgc2xvdCBjaGVja1xuICB2YXIgY29udGV4dFZtO1xuICBpZiAoaGFzT3duKHBhcmVudCwgJ191aWQnKSkge1xuICAgIGNvbnRleHRWbSA9IE9iamVjdC5jcmVhdGUocGFyZW50KTtcbiAgICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgICBjb250ZXh0Vm0uX29yaWdpbmFsID0gcGFyZW50O1xuICB9IGVsc2Uge1xuICAgIC8vIHRoZSBjb250ZXh0IHZtIHBhc3NlZCBpbiBpcyBhIGZ1bmN0aW9uYWwgY29udGV4dCBhcyB3ZWxsLlxuICAgIC8vIGluIHRoaXMgY2FzZSB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBhcmUgYWJsZSB0byBnZXQgYSBob2xkIHRvIHRoZVxuICAgIC8vIHJlYWwgY29udGV4dCBpbnN0YW5jZS5cbiAgICBjb250ZXh0Vm0gPSBwYXJlbnQ7XG4gICAgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gICAgcGFyZW50ID0gcGFyZW50Ll9vcmlnaW5hbDtcbiAgfVxuICB2YXIgaXNDb21waWxlZCA9IGlzVHJ1ZShvcHRpb25zLl9jb21waWxlZCk7XG4gIHZhciBuZWVkTm9ybWFsaXphdGlvbiA9ICFpc0NvbXBpbGVkO1xuXG4gIHRoaXMuZGF0YSA9IGRhdGE7XG4gIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgdGhpcy5saXN0ZW5lcnMgPSBkYXRhLm9uIHx8IGVtcHR5T2JqZWN0O1xuICB0aGlzLmluamVjdGlvbnMgPSByZXNvbHZlSW5qZWN0KG9wdGlvbnMuaW5qZWN0LCBwYXJlbnQpO1xuICB0aGlzLnNsb3RzID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcyQxLiRzbG90cykge1xuICAgICAgbm9ybWFsaXplU2NvcGVkU2xvdHMoXG4gICAgICAgIGRhdGEuc2NvcGVkU2xvdHMsXG4gICAgICAgIHRoaXMkMS4kc2xvdHMgPSByZXNvbHZlU2xvdHMoY2hpbGRyZW4sIHBhcmVudClcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzJDEuJHNsb3RzXG4gIH07XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdzY29wZWRTbG90cycsICh7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCAoKSB7XG4gICAgICByZXR1cm4gbm9ybWFsaXplU2NvcGVkU2xvdHMoZGF0YS5zY29wZWRTbG90cywgdGhpcy5zbG90cygpKVxuICAgIH1cbiAgfSkpO1xuXG4gIC8vIHN1cHBvcnQgZm9yIGNvbXBpbGVkIGZ1bmN0aW9uYWwgdGVtcGxhdGVcbiAgaWYgKGlzQ29tcGlsZWQpIHtcbiAgICAvLyBleHBvc2luZyAkb3B0aW9ucyBmb3IgcmVuZGVyU3RhdGljKClcbiAgICB0aGlzLiRvcHRpb25zID0gb3B0aW9ucztcbiAgICAvLyBwcmUtcmVzb2x2ZSBzbG90cyBmb3IgcmVuZGVyU2xvdCgpXG4gICAgdGhpcy4kc2xvdHMgPSB0aGlzLnNsb3RzKCk7XG4gICAgdGhpcy4kc2NvcGVkU2xvdHMgPSBub3JtYWxpemVTY29wZWRTbG90cyhkYXRhLnNjb3BlZFNsb3RzLCB0aGlzLiRzbG90cyk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5fc2NvcGVJZCkge1xuICAgIHRoaXMuX2MgPSBmdW5jdGlvbiAoYSwgYiwgYywgZCkge1xuICAgICAgdmFyIHZub2RlID0gY3JlYXRlRWxlbWVudChjb250ZXh0Vm0sIGEsIGIsIGMsIGQsIG5lZWROb3JtYWxpemF0aW9uKTtcbiAgICAgIGlmICh2bm9kZSAmJiAhQXJyYXkuaXNBcnJheSh2bm9kZSkpIHtcbiAgICAgICAgdm5vZGUuZm5TY29wZUlkID0gb3B0aW9ucy5fc2NvcGVJZDtcbiAgICAgICAgdm5vZGUuZm5Db250ZXh0ID0gcGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZub2RlXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9jID0gZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHsgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoY29udGV4dFZtLCBhLCBiLCBjLCBkLCBuZWVkTm9ybWFsaXphdGlvbik7IH07XG4gIH1cbn1cblxuaW5zdGFsbFJlbmRlckhlbHBlcnMoRnVuY3Rpb25hbFJlbmRlckNvbnRleHQucHJvdG90eXBlKTtcblxuZnVuY3Rpb24gY3JlYXRlRnVuY3Rpb25hbENvbXBvbmVudCAoXG4gIEN0b3IsXG4gIHByb3BzRGF0YSxcbiAgZGF0YSxcbiAgY29udGV4dFZtLFxuICBjaGlsZHJlblxuKSB7XG4gIHZhciBvcHRpb25zID0gQ3Rvci5vcHRpb25zO1xuICB2YXIgcHJvcHMgPSB7fTtcbiAgdmFyIHByb3BPcHRpb25zID0gb3B0aW9ucy5wcm9wcztcbiAgaWYgKGlzRGVmKHByb3BPcHRpb25zKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wT3B0aW9ucykge1xuICAgICAgcHJvcHNba2V5XSA9IHZhbGlkYXRlUHJvcChrZXksIHByb3BPcHRpb25zLCBwcm9wc0RhdGEgfHwgZW1wdHlPYmplY3QpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoaXNEZWYoZGF0YS5hdHRycykpIHsgbWVyZ2VQcm9wcyhwcm9wcywgZGF0YS5hdHRycyk7IH1cbiAgICBpZiAoaXNEZWYoZGF0YS5wcm9wcykpIHsgbWVyZ2VQcm9wcyhwcm9wcywgZGF0YS5wcm9wcyk7IH1cbiAgfVxuXG4gIHZhciByZW5kZXJDb250ZXh0ID0gbmV3IEZ1bmN0aW9uYWxSZW5kZXJDb250ZXh0KFxuICAgIGRhdGEsXG4gICAgcHJvcHMsXG4gICAgY2hpbGRyZW4sXG4gICAgY29udGV4dFZtLFxuICAgIEN0b3JcbiAgKTtcblxuICB2YXIgdm5vZGUgPSBvcHRpb25zLnJlbmRlci5jYWxsKG51bGwsIHJlbmRlckNvbnRleHQuX2MsIHJlbmRlckNvbnRleHQpO1xuXG4gIGlmICh2bm9kZSBpbnN0YW5jZW9mIFZOb2RlKSB7XG4gICAgcmV0dXJuIGNsb25lQW5kTWFya0Z1bmN0aW9uYWxSZXN1bHQodm5vZGUsIGRhdGEsIHJlbmRlckNvbnRleHQucGFyZW50LCBvcHRpb25zLCByZW5kZXJDb250ZXh0KVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodm5vZGUpKSB7XG4gICAgdmFyIHZub2RlcyA9IG5vcm1hbGl6ZUNoaWxkcmVuKHZub2RlKSB8fCBbXTtcbiAgICB2YXIgcmVzID0gbmV3IEFycmF5KHZub2Rlcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdm5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICByZXNbaV0gPSBjbG9uZUFuZE1hcmtGdW5jdGlvbmFsUmVzdWx0KHZub2Rlc1tpXSwgZGF0YSwgcmVuZGVyQ29udGV4dC5wYXJlbnQsIG9wdGlvbnMsIHJlbmRlckNvbnRleHQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzXG4gIH1cbn1cblxuZnVuY3Rpb24gY2xvbmVBbmRNYXJrRnVuY3Rpb25hbFJlc3VsdCAodm5vZGUsIGRhdGEsIGNvbnRleHRWbSwgb3B0aW9ucywgcmVuZGVyQ29udGV4dCkge1xuICAvLyAjNzgxNyBjbG9uZSBub2RlIGJlZm9yZSBzZXR0aW5nIGZuQ29udGV4dCwgb3RoZXJ3aXNlIGlmIHRoZSBub2RlIGlzIHJldXNlZFxuICAvLyAoZS5nLiBpdCB3YXMgZnJvbSBhIGNhY2hlZCBub3JtYWwgc2xvdCkgdGhlIGZuQ29udGV4dCBjYXVzZXMgbmFtZWQgc2xvdHNcbiAgLy8gdGhhdCBzaG91bGQgbm90IGJlIG1hdGNoZWQgdG8gbWF0Y2guXG4gIHZhciBjbG9uZSA9IGNsb25lVk5vZGUodm5vZGUpO1xuICBjbG9uZS5mbkNvbnRleHQgPSBjb250ZXh0Vm07XG4gIGNsb25lLmZuT3B0aW9ucyA9IG9wdGlvbnM7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgKGNsb25lLmRldnRvb2xzTWV0YSA9IGNsb25lLmRldnRvb2xzTWV0YSB8fCB7fSkucmVuZGVyQ29udGV4dCA9IHJlbmRlckNvbnRleHQ7XG4gIH1cbiAgaWYgKGRhdGEuc2xvdCkge1xuICAgIChjbG9uZS5kYXRhIHx8IChjbG9uZS5kYXRhID0ge30pKS5zbG90ID0gZGF0YS5zbG90O1xuICB9XG4gIHJldHVybiBjbG9uZVxufVxuXG5mdW5jdGlvbiBtZXJnZVByb3BzICh0bywgZnJvbSkge1xuICBmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuICAgIHRvW2NhbWVsaXplKGtleSldID0gZnJvbVtrZXldO1xuICB9XG59XG5cbi8qICAqL1xuXG4vKiAgKi9cblxuLyogICovXG5cbi8qICAqL1xuXG4vLyBpbmxpbmUgaG9va3MgdG8gYmUgaW52b2tlZCBvbiBjb21wb25lbnQgVk5vZGVzIGR1cmluZyBwYXRjaFxudmFyIGNvbXBvbmVudFZOb2RlSG9va3MgPSB7XG4gIGluaXQ6IGZ1bmN0aW9uIGluaXQgKHZub2RlLCBoeWRyYXRpbmcpIHtcbiAgICBpZiAoXG4gICAgICB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSAmJlxuICAgICAgIXZub2RlLmNvbXBvbmVudEluc3RhbmNlLl9pc0Rlc3Ryb3llZCAmJlxuICAgICAgdm5vZGUuZGF0YS5rZWVwQWxpdmVcbiAgICApIHtcbiAgICAgIC8vIGtlcHQtYWxpdmUgY29tcG9uZW50cywgdHJlYXQgYXMgYSBwYXRjaFxuICAgICAgdmFyIG1vdW50ZWROb2RlID0gdm5vZGU7IC8vIHdvcmsgYXJvdW5kIGZsb3dcbiAgICAgIGNvbXBvbmVudFZOb2RlSG9va3MucHJlcGF0Y2gobW91bnRlZE5vZGUsIG1vdW50ZWROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGNoaWxkID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgPSBjcmVhdGVDb21wb25lbnRJbnN0YW5jZUZvclZub2RlKFxuICAgICAgICB2bm9kZSxcbiAgICAgICAgYWN0aXZlSW5zdGFuY2VcbiAgICAgICk7XG4gICAgICBjaGlsZC4kbW91bnQoaHlkcmF0aW5nID8gdm5vZGUuZWxtIDogdW5kZWZpbmVkLCBoeWRyYXRpbmcpO1xuICAgIH1cbiAgfSxcblxuICBwcmVwYXRjaDogZnVuY3Rpb24gcHJlcGF0Y2ggKG9sZFZub2RlLCB2bm9kZSkge1xuICAgIHZhciBvcHRpb25zID0gdm5vZGUuY29tcG9uZW50T3B0aW9ucztcbiAgICB2YXIgY2hpbGQgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IG9sZFZub2RlLmNvbXBvbmVudEluc3RhbmNlO1xuICAgIHVwZGF0ZUNoaWxkQ29tcG9uZW50KFxuICAgICAgY2hpbGQsXG4gICAgICBvcHRpb25zLnByb3BzRGF0YSwgLy8gdXBkYXRlZCBwcm9wc1xuICAgICAgb3B0aW9ucy5saXN0ZW5lcnMsIC8vIHVwZGF0ZWQgbGlzdGVuZXJzXG4gICAgICB2bm9kZSwgLy8gbmV3IHBhcmVudCB2bm9kZVxuICAgICAgb3B0aW9ucy5jaGlsZHJlbiAvLyBuZXcgY2hpbGRyZW5cbiAgICApO1xuICB9LFxuXG4gIGluc2VydDogZnVuY3Rpb24gaW5zZXJ0ICh2bm9kZSkge1xuICAgIHZhciBjb250ZXh0ID0gdm5vZGUuY29udGV4dDtcbiAgICB2YXIgY29tcG9uZW50SW5zdGFuY2UgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICBpZiAoIWNvbXBvbmVudEluc3RhbmNlLl9pc01vdW50ZWQpIHtcbiAgICAgIGNhbGxIb29rKGNvbXBvbmVudEluc3RhbmNlLCAnb25TZXJ2aWNlQ3JlYXRlZCcpO1xuICAgICAgY2FsbEhvb2soY29tcG9uZW50SW5zdGFuY2UsICdvblNlcnZpY2VBdHRhY2hlZCcpO1xuICAgICAgY29tcG9uZW50SW5zdGFuY2UuX2lzTW91bnRlZCA9IHRydWU7XG4gICAgICBjYWxsSG9vayhjb21wb25lbnRJbnN0YW5jZSwgJ21vdW50ZWQnKTtcbiAgICB9XG4gICAgaWYgKHZub2RlLmRhdGEua2VlcEFsaXZlKSB7XG4gICAgICBpZiAoY29udGV4dC5faXNNb3VudGVkKSB7XG4gICAgICAgIC8vIHZ1ZS1yb3V0ZXIjMTIxMlxuICAgICAgICAvLyBEdXJpbmcgdXBkYXRlcywgYSBrZXB0LWFsaXZlIGNvbXBvbmVudCdzIGNoaWxkIGNvbXBvbmVudHMgbWF5XG4gICAgICAgIC8vIGNoYW5nZSwgc28gZGlyZWN0bHkgd2Fsa2luZyB0aGUgdHJlZSBoZXJlIG1heSBjYWxsIGFjdGl2YXRlZCBob29rc1xuICAgICAgICAvLyBvbiBpbmNvcnJlY3QgY2hpbGRyZW4uIEluc3RlYWQgd2UgcHVzaCB0aGVtIGludG8gYSBxdWV1ZSB3aGljaCB3aWxsXG4gICAgICAgIC8vIGJlIHByb2Nlc3NlZCBhZnRlciB0aGUgd2hvbGUgcGF0Y2ggcHJvY2VzcyBlbmRlZC5cbiAgICAgICAgcXVldWVBY3RpdmF0ZWRDb21wb25lbnQoY29tcG9uZW50SW5zdGFuY2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWN0aXZhdGVDaGlsZENvbXBvbmVudChjb21wb25lbnRJbnN0YW5jZSwgdHJ1ZSAvKiBkaXJlY3QgKi8pO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95ICh2bm9kZSkge1xuICAgIHZhciBjb21wb25lbnRJbnN0YW5jZSA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlO1xuICAgIGlmICghY29tcG9uZW50SW5zdGFuY2UuX2lzRGVzdHJveWVkKSB7XG4gICAgICBpZiAoIXZub2RlLmRhdGEua2VlcEFsaXZlKSB7XG4gICAgICAgIGNvbXBvbmVudEluc3RhbmNlLiRkZXN0cm95KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWFjdGl2YXRlQ2hpbGRDb21wb25lbnQoY29tcG9uZW50SW5zdGFuY2UsIHRydWUgLyogZGlyZWN0ICovKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbnZhciBob29rc1RvTWVyZ2UgPSBPYmplY3Qua2V5cyhjb21wb25lbnRWTm9kZUhvb2tzKTtcblxuZnVuY3Rpb24gY3JlYXRlQ29tcG9uZW50IChcbiAgQ3RvcixcbiAgZGF0YSxcbiAgY29udGV4dCxcbiAgY2hpbGRyZW4sXG4gIHRhZ1xuKSB7XG4gIGlmIChpc1VuZGVmKEN0b3IpKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgYmFzZUN0b3IgPSBjb250ZXh0LiRvcHRpb25zLl9iYXNlO1xuXG4gIC8vIHBsYWluIG9wdGlvbnMgb2JqZWN0OiB0dXJuIGl0IGludG8gYSBjb25zdHJ1Y3RvclxuICBpZiAoaXNPYmplY3QoQ3RvcikpIHtcbiAgICBDdG9yID0gYmFzZUN0b3IuZXh0ZW5kKEN0b3IpO1xuICB9XG5cbiAgLy8gaWYgYXQgdGhpcyBzdGFnZSBpdCdzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIGFuIGFzeW5jIGNvbXBvbmVudCBmYWN0b3J5LFxuICAvLyByZWplY3QuXG4gIGlmICh0eXBlb2YgQ3RvciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB3YXJuKChcIkludmFsaWQgQ29tcG9uZW50IGRlZmluaXRpb246IFwiICsgKFN0cmluZyhDdG9yKSkpLCBjb250ZXh0KTtcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cblxuICAvLyBhc3luYyBjb21wb25lbnRcbiAgdmFyIGFzeW5jRmFjdG9yeTtcbiAgaWYgKGlzVW5kZWYoQ3Rvci5jaWQpKSB7XG4gICAgYXN5bmNGYWN0b3J5ID0gQ3RvcjtcbiAgICBDdG9yID0gcmVzb2x2ZUFzeW5jQ29tcG9uZW50KGFzeW5jRmFjdG9yeSwgYmFzZUN0b3IpO1xuICAgIGlmIChDdG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIHJldHVybiBhIHBsYWNlaG9sZGVyIG5vZGUgZm9yIGFzeW5jIGNvbXBvbmVudCwgd2hpY2ggaXMgcmVuZGVyZWRcbiAgICAgIC8vIGFzIGEgY29tbWVudCBub2RlIGJ1dCBwcmVzZXJ2ZXMgYWxsIHRoZSByYXcgaW5mb3JtYXRpb24gZm9yIHRoZSBub2RlLlxuICAgICAgLy8gdGhlIGluZm9ybWF0aW9uIHdpbGwgYmUgdXNlZCBmb3IgYXN5bmMgc2VydmVyLXJlbmRlcmluZyBhbmQgaHlkcmF0aW9uLlxuICAgICAgcmV0dXJuIGNyZWF0ZUFzeW5jUGxhY2Vob2xkZXIoXG4gICAgICAgIGFzeW5jRmFjdG9yeSxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgIHRhZ1xuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGRhdGEgPSBkYXRhIHx8IHt9O1xuXG4gIC8vIHJlc29sdmUgY29uc3RydWN0b3Igb3B0aW9ucyBpbiBjYXNlIGdsb2JhbCBtaXhpbnMgYXJlIGFwcGxpZWQgYWZ0ZXJcbiAgLy8gY29tcG9uZW50IGNvbnN0cnVjdG9yIGNyZWF0aW9uXG4gIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnMoQ3Rvcik7XG5cbiAgLy8gdHJhbnNmb3JtIGNvbXBvbmVudCB2LW1vZGVsIGRhdGEgaW50byBwcm9wcyAmIGV2ZW50c1xuICBpZiAoaXNEZWYoZGF0YS5tb2RlbCkpIHtcbiAgICB0cmFuc2Zvcm1Nb2RlbChDdG9yLm9wdGlvbnMsIGRhdGEpO1xuICB9XG5cbiAgLy8gZXh0cmFjdCBwcm9wc1xuICB2YXIgcHJvcHNEYXRhID0gZXh0cmFjdFByb3BzRnJvbVZOb2RlRGF0YShkYXRhLCBDdG9yLCB0YWcsIGNvbnRleHQpOyAvLyBmaXhlZCBieSB4eHh4eHhcblxuICAvLyBmdW5jdGlvbmFsIGNvbXBvbmVudFxuICBpZiAoaXNUcnVlKEN0b3Iub3B0aW9ucy5mdW5jdGlvbmFsKSkge1xuICAgIHJldHVybiBjcmVhdGVGdW5jdGlvbmFsQ29tcG9uZW50KEN0b3IsIHByb3BzRGF0YSwgZGF0YSwgY29udGV4dCwgY2hpbGRyZW4pXG4gIH1cblxuICAvLyBleHRyYWN0IGxpc3RlbmVycywgc2luY2UgdGhlc2UgbmVlZHMgdG8gYmUgdHJlYXRlZCBhc1xuICAvLyBjaGlsZCBjb21wb25lbnQgbGlzdGVuZXJzIGluc3RlYWQgb2YgRE9NIGxpc3RlbmVyc1xuICB2YXIgbGlzdGVuZXJzID0gZGF0YS5vbjtcbiAgLy8gcmVwbGFjZSB3aXRoIGxpc3RlbmVycyB3aXRoIC5uYXRpdmUgbW9kaWZpZXJcbiAgLy8gc28gaXQgZ2V0cyBwcm9jZXNzZWQgZHVyaW5nIHBhcmVudCBjb21wb25lbnQgcGF0Y2guXG4gIGRhdGEub24gPSBkYXRhLm5hdGl2ZU9uO1xuXG4gIGlmIChpc1RydWUoQ3Rvci5vcHRpb25zLmFic3RyYWN0KSkge1xuICAgIC8vIGFic3RyYWN0IGNvbXBvbmVudHMgZG8gbm90IGtlZXAgYW55dGhpbmdcbiAgICAvLyBvdGhlciB0aGFuIHByb3BzICYgbGlzdGVuZXJzICYgc2xvdFxuXG4gICAgLy8gd29yayBhcm91bmQgZmxvd1xuICAgIHZhciBzbG90ID0gZGF0YS5zbG90O1xuICAgIGRhdGEgPSB7fTtcbiAgICBpZiAoc2xvdCkge1xuICAgICAgZGF0YS5zbG90ID0gc2xvdDtcbiAgICB9XG4gIH1cblxuICAvLyBpbnN0YWxsIGNvbXBvbmVudCBtYW5hZ2VtZW50IGhvb2tzIG9udG8gdGhlIHBsYWNlaG9sZGVyIG5vZGVcbiAgaW5zdGFsbENvbXBvbmVudEhvb2tzKGRhdGEpO1xuXG4gIC8vIHJldHVybiBhIHBsYWNlaG9sZGVyIHZub2RlXG4gIHZhciBuYW1lID0gQ3Rvci5vcHRpb25zLm5hbWUgfHwgdGFnO1xuICB2YXIgdm5vZGUgPSBuZXcgVk5vZGUoXG4gICAgKFwidnVlLWNvbXBvbmVudC1cIiArIChDdG9yLmNpZCkgKyAobmFtZSA/IChcIi1cIiArIG5hbWUpIDogJycpKSxcbiAgICBkYXRhLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb250ZXh0LFxuICAgIHsgQ3RvcjogQ3RvciwgcHJvcHNEYXRhOiBwcm9wc0RhdGEsIGxpc3RlbmVyczogbGlzdGVuZXJzLCB0YWc6IHRhZywgY2hpbGRyZW46IGNoaWxkcmVuIH0sXG4gICAgYXN5bmNGYWN0b3J5XG4gICk7XG5cbiAgcmV0dXJuIHZub2RlXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudEluc3RhbmNlRm9yVm5vZGUgKFxuICB2bm9kZSwgLy8gd2Uga25vdyBpdCdzIE1vdW50ZWRDb21wb25lbnRWTm9kZSBidXQgZmxvdyBkb2Vzbid0XG4gIHBhcmVudCAvLyBhY3RpdmVJbnN0YW5jZSBpbiBsaWZlY3ljbGUgc3RhdGVcbikge1xuICB2YXIgb3B0aW9ucyA9IHtcbiAgICBfaXNDb21wb25lbnQ6IHRydWUsXG4gICAgX3BhcmVudFZub2RlOiB2bm9kZSxcbiAgICBwYXJlbnQ6IHBhcmVudFxuICB9O1xuICAvLyBjaGVjayBpbmxpbmUtdGVtcGxhdGUgcmVuZGVyIGZ1bmN0aW9uc1xuICB2YXIgaW5saW5lVGVtcGxhdGUgPSB2bm9kZS5kYXRhLmlubGluZVRlbXBsYXRlO1xuICBpZiAoaXNEZWYoaW5saW5lVGVtcGxhdGUpKSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSBpbmxpbmVUZW1wbGF0ZS5yZW5kZXI7XG4gICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBpbmxpbmVUZW1wbGF0ZS5zdGF0aWNSZW5kZXJGbnM7XG4gIH1cbiAgcmV0dXJuIG5ldyB2bm9kZS5jb21wb25lbnRPcHRpb25zLkN0b3Iob3B0aW9ucylcbn1cblxuZnVuY3Rpb24gaW5zdGFsbENvbXBvbmVudEhvb2tzIChkYXRhKSB7XG4gIHZhciBob29rcyA9IGRhdGEuaG9vayB8fCAoZGF0YS5ob29rID0ge30pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGhvb2tzVG9NZXJnZS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBob29rc1RvTWVyZ2VbaV07XG4gICAgdmFyIGV4aXN0aW5nID0gaG9va3Nba2V5XTtcbiAgICB2YXIgdG9NZXJnZSA9IGNvbXBvbmVudFZOb2RlSG9va3Nba2V5XTtcbiAgICBpZiAoZXhpc3RpbmcgIT09IHRvTWVyZ2UgJiYgIShleGlzdGluZyAmJiBleGlzdGluZy5fbWVyZ2VkKSkge1xuICAgICAgaG9va3Nba2V5XSA9IGV4aXN0aW5nID8gbWVyZ2VIb29rJDEodG9NZXJnZSwgZXhpc3RpbmcpIDogdG9NZXJnZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VIb29rJDEgKGYxLCBmMikge1xuICB2YXIgbWVyZ2VkID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAvLyBmbG93IGNvbXBsYWlucyBhYm91dCBleHRyYSBhcmdzIHdoaWNoIGlzIHdoeSB3ZSB1c2UgYW55XG4gICAgZjEoYSwgYik7XG4gICAgZjIoYSwgYik7XG4gIH07XG4gIG1lcmdlZC5fbWVyZ2VkID0gdHJ1ZTtcbiAgcmV0dXJuIG1lcmdlZFxufVxuXG4vLyB0cmFuc2Zvcm0gY29tcG9uZW50IHYtbW9kZWwgaW5mbyAodmFsdWUgYW5kIGNhbGxiYWNrKSBpbnRvXG4vLyBwcm9wIGFuZCBldmVudCBoYW5kbGVyIHJlc3BlY3RpdmVseS5cbmZ1bmN0aW9uIHRyYW5zZm9ybU1vZGVsIChvcHRpb25zLCBkYXRhKSB7XG4gIHZhciBwcm9wID0gKG9wdGlvbnMubW9kZWwgJiYgb3B0aW9ucy5tb2RlbC5wcm9wKSB8fCAndmFsdWUnO1xuICB2YXIgZXZlbnQgPSAob3B0aW9ucy5tb2RlbCAmJiBvcHRpb25zLm1vZGVsLmV2ZW50KSB8fCAnaW5wdXQnXG4gIDsoZGF0YS5hdHRycyB8fCAoZGF0YS5hdHRycyA9IHt9KSlbcHJvcF0gPSBkYXRhLm1vZGVsLnZhbHVlO1xuICB2YXIgb24gPSBkYXRhLm9uIHx8IChkYXRhLm9uID0ge30pO1xuICB2YXIgZXhpc3RpbmcgPSBvbltldmVudF07XG4gIHZhciBjYWxsYmFjayA9IGRhdGEubW9kZWwuY2FsbGJhY2s7XG4gIGlmIChpc0RlZihleGlzdGluZykpIHtcbiAgICBpZiAoXG4gICAgICBBcnJheS5pc0FycmF5KGV4aXN0aW5nKVxuICAgICAgICA/IGV4aXN0aW5nLmluZGV4T2YoY2FsbGJhY2spID09PSAtMVxuICAgICAgICA6IGV4aXN0aW5nICE9PSBjYWxsYmFja1xuICAgICkge1xuICAgICAgb25bZXZlbnRdID0gW2NhbGxiYWNrXS5jb25jYXQoZXhpc3RpbmcpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBvbltldmVudF0gPSBjYWxsYmFjaztcbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIFNJTVBMRV9OT1JNQUxJWkUgPSAxO1xudmFyIEFMV0FZU19OT1JNQUxJWkUgPSAyO1xuXG4vLyB3cmFwcGVyIGZ1bmN0aW9uIGZvciBwcm92aWRpbmcgYSBtb3JlIGZsZXhpYmxlIGludGVyZmFjZVxuLy8gd2l0aG91dCBnZXR0aW5nIHllbGxlZCBhdCBieSBmbG93XG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50IChcbiAgY29udGV4dCxcbiAgdGFnLFxuICBkYXRhLFxuICBjaGlsZHJlbixcbiAgbm9ybWFsaXphdGlvblR5cGUsXG4gIGFsd2F5c05vcm1hbGl6ZVxuKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGRhdGEpIHx8IGlzUHJpbWl0aXZlKGRhdGEpKSB7XG4gICAgbm9ybWFsaXphdGlvblR5cGUgPSBjaGlsZHJlbjtcbiAgICBjaGlsZHJlbiA9IGRhdGE7XG4gICAgZGF0YSA9IHVuZGVmaW5lZDtcbiAgfVxuICBpZiAoaXNUcnVlKGFsd2F5c05vcm1hbGl6ZSkpIHtcbiAgICBub3JtYWxpemF0aW9uVHlwZSA9IEFMV0FZU19OT1JNQUxJWkU7XG4gIH1cbiAgcmV0dXJuIF9jcmVhdGVFbGVtZW50KGNvbnRleHQsIHRhZywgZGF0YSwgY2hpbGRyZW4sIG5vcm1hbGl6YXRpb25UeXBlKVxufVxuXG5mdW5jdGlvbiBfY3JlYXRlRWxlbWVudCAoXG4gIGNvbnRleHQsXG4gIHRhZyxcbiAgZGF0YSxcbiAgY2hpbGRyZW4sXG4gIG5vcm1hbGl6YXRpb25UeXBlXG4pIHtcbiAgaWYgKGlzRGVmKGRhdGEpICYmIGlzRGVmKChkYXRhKS5fX29iX18pKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgXCJBdm9pZCB1c2luZyBvYnNlcnZlZCBkYXRhIG9iamVjdCBhcyB2bm9kZSBkYXRhOiBcIiArIChKU09OLnN0cmluZ2lmeShkYXRhKSkgKyBcIlxcblwiICtcbiAgICAgICdBbHdheXMgY3JlYXRlIGZyZXNoIHZub2RlIGRhdGEgb2JqZWN0cyBpbiBlYWNoIHJlbmRlciEnLFxuICAgICAgY29udGV4dFxuICAgICk7XG4gICAgcmV0dXJuIGNyZWF0ZUVtcHR5Vk5vZGUoKVxuICB9XG4gIC8vIG9iamVjdCBzeW50YXggaW4gdi1iaW5kXG4gIGlmIChpc0RlZihkYXRhKSAmJiBpc0RlZihkYXRhLmlzKSkge1xuICAgIHRhZyA9IGRhdGEuaXM7XG4gIH1cbiAgaWYgKCF0YWcpIHtcbiAgICAvLyBpbiBjYXNlIG9mIGNvbXBvbmVudCA6aXMgc2V0IHRvIGZhbHN5IHZhbHVlXG4gICAgcmV0dXJuIGNyZWF0ZUVtcHR5Vk5vZGUoKVxuICB9XG4gIC8vIHdhcm4gYWdhaW5zdCBub24tcHJpbWl0aXZlIGtleVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJlxuICAgIGlzRGVmKGRhdGEpICYmIGlzRGVmKGRhdGEua2V5KSAmJiAhaXNQcmltaXRpdmUoZGF0YS5rZXkpXG4gICkge1xuICAgIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdBdm9pZCB1c2luZyBub24tcHJpbWl0aXZlIHZhbHVlIGFzIGtleSwgJyArXG4gICAgICAgICd1c2Ugc3RyaW5nL251bWJlciB2YWx1ZSBpbnN0ZWFkLicsXG4gICAgICAgIGNvbnRleHRcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIC8vIHN1cHBvcnQgc2luZ2xlIGZ1bmN0aW9uIGNoaWxkcmVuIGFzIGRlZmF1bHQgc2NvcGVkIHNsb3RcbiAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmXG4gICAgdHlwZW9mIGNoaWxkcmVuWzBdID09PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIGRhdGEgPSBkYXRhIHx8IHt9O1xuICAgIGRhdGEuc2NvcGVkU2xvdHMgPSB7IGRlZmF1bHQ6IGNoaWxkcmVuWzBdIH07XG4gICAgY2hpbGRyZW4ubGVuZ3RoID0gMDtcbiAgfVxuICBpZiAobm9ybWFsaXphdGlvblR5cGUgPT09IEFMV0FZU19OT1JNQUxJWkUpIHtcbiAgICBjaGlsZHJlbiA9IG5vcm1hbGl6ZUNoaWxkcmVuKGNoaWxkcmVuKTtcbiAgfSBlbHNlIGlmIChub3JtYWxpemF0aW9uVHlwZSA9PT0gU0lNUExFX05PUk1BTElaRSkge1xuICAgIGNoaWxkcmVuID0gc2ltcGxlTm9ybWFsaXplQ2hpbGRyZW4oY2hpbGRyZW4pO1xuICB9XG4gIHZhciB2bm9kZSwgbnM7XG4gIGlmICh0eXBlb2YgdGFnID09PSAnc3RyaW5nJykge1xuICAgIHZhciBDdG9yO1xuICAgIG5zID0gKGNvbnRleHQuJHZub2RlICYmIGNvbnRleHQuJHZub2RlLm5zKSB8fCBjb25maWcuZ2V0VGFnTmFtZXNwYWNlKHRhZyk7XG4gICAgaWYgKGNvbmZpZy5pc1Jlc2VydmVkVGFnKHRhZykpIHtcbiAgICAgIC8vIHBsYXRmb3JtIGJ1aWx0LWluIGVsZW1lbnRzXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBpc0RlZihkYXRhKSAmJiBpc0RlZihkYXRhLm5hdGl2ZU9uKSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIChcIlRoZSAubmF0aXZlIG1vZGlmaWVyIGZvciB2LW9uIGlzIG9ubHkgdmFsaWQgb24gY29tcG9uZW50cyBidXQgaXQgd2FzIHVzZWQgb24gPFwiICsgdGFnICsgXCI+LlwiKSxcbiAgICAgICAgICBjb250ZXh0XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB2bm9kZSA9IG5ldyBWTm9kZShcbiAgICAgICAgY29uZmlnLnBhcnNlUGxhdGZvcm1UYWdOYW1lKHRhZyksIGRhdGEsIGNoaWxkcmVuLFxuICAgICAgICB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29udGV4dFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKCghZGF0YSB8fCAhZGF0YS5wcmUpICYmIGlzRGVmKEN0b3IgPSByZXNvbHZlQXNzZXQoY29udGV4dC4kb3B0aW9ucywgJ2NvbXBvbmVudHMnLCB0YWcpKSkge1xuICAgICAgLy8gY29tcG9uZW50XG4gICAgICB2bm9kZSA9IGNyZWF0ZUNvbXBvbmVudChDdG9yLCBkYXRhLCBjb250ZXh0LCBjaGlsZHJlbiwgdGFnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdW5rbm93biBvciB1bmxpc3RlZCBuYW1lc3BhY2VkIGVsZW1lbnRzXG4gICAgICAvLyBjaGVjayBhdCBydW50aW1lIGJlY2F1c2UgaXQgbWF5IGdldCBhc3NpZ25lZCBhIG5hbWVzcGFjZSB3aGVuIGl0c1xuICAgICAgLy8gcGFyZW50IG5vcm1hbGl6ZXMgY2hpbGRyZW5cbiAgICAgIHZub2RlID0gbmV3IFZOb2RlKFxuICAgICAgICB0YWcsIGRhdGEsIGNoaWxkcmVuLFxuICAgICAgICB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29udGV4dFxuICAgICAgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gZGlyZWN0IGNvbXBvbmVudCBvcHRpb25zIC8gY29uc3RydWN0b3JcbiAgICB2bm9kZSA9IGNyZWF0ZUNvbXBvbmVudCh0YWcsIGRhdGEsIGNvbnRleHQsIGNoaWxkcmVuKTtcbiAgfVxuICBpZiAoQXJyYXkuaXNBcnJheSh2bm9kZSkpIHtcbiAgICByZXR1cm4gdm5vZGVcbiAgfSBlbHNlIGlmIChpc0RlZih2bm9kZSkpIHtcbiAgICBpZiAoaXNEZWYobnMpKSB7IGFwcGx5TlModm5vZGUsIG5zKTsgfVxuICAgIGlmIChpc0RlZihkYXRhKSkgeyByZWdpc3RlckRlZXBCaW5kaW5ncyhkYXRhKTsgfVxuICAgIHJldHVybiB2bm9kZVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBjcmVhdGVFbXB0eVZOb2RlKClcbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseU5TICh2bm9kZSwgbnMsIGZvcmNlKSB7XG4gIHZub2RlLm5zID0gbnM7XG4gIGlmICh2bm9kZS50YWcgPT09ICdmb3JlaWduT2JqZWN0Jykge1xuICAgIC8vIHVzZSBkZWZhdWx0IG5hbWVzcGFjZSBpbnNpZGUgZm9yZWlnbk9iamVjdFxuICAgIG5zID0gdW5kZWZpbmVkO1xuICAgIGZvcmNlID0gdHJ1ZTtcbiAgfVxuICBpZiAoaXNEZWYodm5vZGUuY2hpbGRyZW4pKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSB2bm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBjaGlsZCA9IHZub2RlLmNoaWxkcmVuW2ldO1xuICAgICAgaWYgKGlzRGVmKGNoaWxkLnRhZykgJiYgKFxuICAgICAgICBpc1VuZGVmKGNoaWxkLm5zKSB8fCAoaXNUcnVlKGZvcmNlKSAmJiBjaGlsZC50YWcgIT09ICdzdmcnKSkpIHtcbiAgICAgICAgYXBwbHlOUyhjaGlsZCwgbnMsIGZvcmNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gcmVmICM1MzE4XG4vLyBuZWNlc3NhcnkgdG8gZW5zdXJlIHBhcmVudCByZS1yZW5kZXIgd2hlbiBkZWVwIGJpbmRpbmdzIGxpa2UgOnN0eWxlIGFuZFxuLy8gOmNsYXNzIGFyZSB1c2VkIG9uIHNsb3Qgbm9kZXNcbmZ1bmN0aW9uIHJlZ2lzdGVyRGVlcEJpbmRpbmdzIChkYXRhKSB7XG4gIGlmIChpc09iamVjdChkYXRhLnN0eWxlKSkge1xuICAgIHRyYXZlcnNlKGRhdGEuc3R5bGUpO1xuICB9XG4gIGlmIChpc09iamVjdChkYXRhLmNsYXNzKSkge1xuICAgIHRyYXZlcnNlKGRhdGEuY2xhc3MpO1xuICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0UmVuZGVyICh2bSkge1xuICB2bS5fdm5vZGUgPSBudWxsOyAvLyB0aGUgcm9vdCBvZiB0aGUgY2hpbGQgdHJlZVxuICB2bS5fc3RhdGljVHJlZXMgPSBudWxsOyAvLyB2LW9uY2UgY2FjaGVkIHRyZWVzXG4gIHZhciBvcHRpb25zID0gdm0uJG9wdGlvbnM7XG4gIHZhciBwYXJlbnRWbm9kZSA9IHZtLiR2bm9kZSA9IG9wdGlvbnMuX3BhcmVudFZub2RlOyAvLyB0aGUgcGxhY2Vob2xkZXIgbm9kZSBpbiBwYXJlbnQgdHJlZVxuICB2YXIgcmVuZGVyQ29udGV4dCA9IHBhcmVudFZub2RlICYmIHBhcmVudFZub2RlLmNvbnRleHQ7XG4gIHZtLiRzbG90cyA9IHJlc29sdmVTbG90cyhvcHRpb25zLl9yZW5kZXJDaGlsZHJlbiwgcmVuZGVyQ29udGV4dCk7XG4gIHZtLiRzY29wZWRTbG90cyA9IGVtcHR5T2JqZWN0O1xuICAvLyBiaW5kIHRoZSBjcmVhdGVFbGVtZW50IGZuIHRvIHRoaXMgaW5zdGFuY2VcbiAgLy8gc28gdGhhdCB3ZSBnZXQgcHJvcGVyIHJlbmRlciBjb250ZXh0IGluc2lkZSBpdC5cbiAgLy8gYXJncyBvcmRlcjogdGFnLCBkYXRhLCBjaGlsZHJlbiwgbm9ybWFsaXphdGlvblR5cGUsIGFsd2F5c05vcm1hbGl6ZVxuICAvLyBpbnRlcm5hbCB2ZXJzaW9uIGlzIHVzZWQgYnkgcmVuZGVyIGZ1bmN0aW9ucyBjb21waWxlZCBmcm9tIHRlbXBsYXRlc1xuICB2bS5fYyA9IGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7IHJldHVybiBjcmVhdGVFbGVtZW50KHZtLCBhLCBiLCBjLCBkLCBmYWxzZSk7IH07XG4gIC8vIG5vcm1hbGl6YXRpb24gaXMgYWx3YXlzIGFwcGxpZWQgZm9yIHRoZSBwdWJsaWMgdmVyc2lvbiwgdXNlZCBpblxuICAvLyB1c2VyLXdyaXR0ZW4gcmVuZGVyIGZ1bmN0aW9ucy5cbiAgdm0uJGNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAoYSwgYiwgYywgZCkgeyByZXR1cm4gY3JlYXRlRWxlbWVudCh2bSwgYSwgYiwgYywgZCwgdHJ1ZSk7IH07XG5cbiAgLy8gJGF0dHJzICYgJGxpc3RlbmVycyBhcmUgZXhwb3NlZCBmb3IgZWFzaWVyIEhPQyBjcmVhdGlvbi5cbiAgLy8gdGhleSBuZWVkIHRvIGJlIHJlYWN0aXZlIHNvIHRoYXQgSE9DcyB1c2luZyB0aGVtIGFyZSBhbHdheXMgdXBkYXRlZFxuICB2YXIgcGFyZW50RGF0YSA9IHBhcmVudFZub2RlICYmIHBhcmVudFZub2RlLmRhdGE7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBkZWZpbmVSZWFjdGl2ZSQkMSh2bSwgJyRhdHRycycsIHBhcmVudERhdGEgJiYgcGFyZW50RGF0YS5hdHRycyB8fCBlbXB0eU9iamVjdCwgZnVuY3Rpb24gKCkge1xuICAgICAgIWlzVXBkYXRpbmdDaGlsZENvbXBvbmVudCAmJiB3YXJuKFwiJGF0dHJzIGlzIHJlYWRvbmx5LlwiLCB2bSk7XG4gICAgfSwgdHJ1ZSk7XG4gICAgZGVmaW5lUmVhY3RpdmUkJDEodm0sICckbGlzdGVuZXJzJywgb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzIHx8IGVtcHR5T2JqZWN0LCBmdW5jdGlvbiAoKSB7XG4gICAgICAhaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50ICYmIHdhcm4oXCIkbGlzdGVuZXJzIGlzIHJlYWRvbmx5LlwiLCB2bSk7XG4gICAgfSwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgZGVmaW5lUmVhY3RpdmUkJDEodm0sICckYXR0cnMnLCBwYXJlbnREYXRhICYmIHBhcmVudERhdGEuYXR0cnMgfHwgZW1wdHlPYmplY3QsIG51bGwsIHRydWUpO1xuICAgIGRlZmluZVJlYWN0aXZlJCQxKHZtLCAnJGxpc3RlbmVycycsIG9wdGlvbnMuX3BhcmVudExpc3RlbmVycyB8fCBlbXB0eU9iamVjdCwgbnVsbCwgdHJ1ZSk7XG4gIH1cbn1cblxudmFyIGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSA9IG51bGw7XG5cbmZ1bmN0aW9uIHJlbmRlck1peGluIChWdWUpIHtcbiAgLy8gaW5zdGFsbCBydW50aW1lIGNvbnZlbmllbmNlIGhlbHBlcnNcbiAgaW5zdGFsbFJlbmRlckhlbHBlcnMoVnVlLnByb3RvdHlwZSk7XG5cbiAgVnVlLnByb3RvdHlwZS4kbmV4dFRpY2sgPSBmdW5jdGlvbiAoZm4pIHtcbiAgICByZXR1cm4gbmV4dFRpY2soZm4sIHRoaXMpXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS5fcmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgdmFyIHJlZiA9IHZtLiRvcHRpb25zO1xuICAgIHZhciByZW5kZXIgPSByZWYucmVuZGVyO1xuICAgIHZhciBfcGFyZW50Vm5vZGUgPSByZWYuX3BhcmVudFZub2RlO1xuXG4gICAgaWYgKF9wYXJlbnRWbm9kZSkge1xuICAgICAgdm0uJHNjb3BlZFNsb3RzID0gbm9ybWFsaXplU2NvcGVkU2xvdHMoXG4gICAgICAgIF9wYXJlbnRWbm9kZS5kYXRhLnNjb3BlZFNsb3RzLFxuICAgICAgICB2bS4kc2xvdHMsXG4gICAgICAgIHZtLiRzY29wZWRTbG90c1xuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBzZXQgcGFyZW50IHZub2RlLiB0aGlzIGFsbG93cyByZW5kZXIgZnVuY3Rpb25zIHRvIGhhdmUgYWNjZXNzXG4gICAgLy8gdG8gdGhlIGRhdGEgb24gdGhlIHBsYWNlaG9sZGVyIG5vZGUuXG4gICAgdm0uJHZub2RlID0gX3BhcmVudFZub2RlO1xuICAgIC8vIHJlbmRlciBzZWxmXG4gICAgdmFyIHZub2RlO1xuICAgIHRyeSB7XG4gICAgICAvLyBUaGVyZSdzIG5vIG5lZWQgdG8gbWFpbnRhaW4gYSBzdGFjayBiZWNhdXNlIGFsbCByZW5kZXIgZm5zIGFyZSBjYWxsZWRcbiAgICAgIC8vIHNlcGFyYXRlbHkgZnJvbSBvbmUgYW5vdGhlci4gTmVzdGVkIGNvbXBvbmVudCdzIHJlbmRlciBmbnMgYXJlIGNhbGxlZFxuICAgICAgLy8gd2hlbiBwYXJlbnQgY29tcG9uZW50IGlzIHBhdGNoZWQuXG4gICAgICBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UgPSB2bTtcbiAgICAgIHZub2RlID0gcmVuZGVyLmNhbGwodm0uX3JlbmRlclByb3h5LCB2bS4kY3JlYXRlRWxlbWVudCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sIFwicmVuZGVyXCIpO1xuICAgICAgLy8gcmV0dXJuIGVycm9yIHJlbmRlciByZXN1bHQsXG4gICAgICAvLyBvciBwcmV2aW91cyB2bm9kZSB0byBwcmV2ZW50IHJlbmRlciBlcnJvciBjYXVzaW5nIGJsYW5rIGNvbXBvbmVudFxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHZtLiRvcHRpb25zLnJlbmRlckVycm9yKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdm5vZGUgPSB2bS4kb3B0aW9ucy5yZW5kZXJFcnJvci5jYWxsKHZtLl9yZW5kZXJQcm94eSwgdm0uJGNyZWF0ZUVsZW1lbnQsIGUpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sIFwicmVuZGVyRXJyb3JcIik7XG4gICAgICAgICAgdm5vZGUgPSB2bS5fdm5vZGU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZub2RlID0gdm0uX3Zub2RlO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UgPSBudWxsO1xuICAgIH1cbiAgICAvLyBpZiB0aGUgcmV0dXJuZWQgYXJyYXkgY29udGFpbnMgb25seSBhIHNpbmdsZSBub2RlLCBhbGxvdyBpdFxuICAgIGlmIChBcnJheS5pc0FycmF5KHZub2RlKSAmJiB2bm9kZS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHZub2RlID0gdm5vZGVbMF07XG4gICAgfVxuICAgIC8vIHJldHVybiBlbXB0eSB2bm9kZSBpbiBjYXNlIHRoZSByZW5kZXIgZnVuY3Rpb24gZXJyb3JlZCBvdXRcbiAgICBpZiAoISh2bm9kZSBpbnN0YW5jZW9mIFZOb2RlKSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgQXJyYXkuaXNBcnJheSh2bm9kZSkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnTXVsdGlwbGUgcm9vdCBub2RlcyByZXR1cm5lZCBmcm9tIHJlbmRlciBmdW5jdGlvbi4gUmVuZGVyIGZ1bmN0aW9uICcgK1xuICAgICAgICAgICdzaG91bGQgcmV0dXJuIGEgc2luZ2xlIHJvb3Qgbm9kZS4nLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB2bm9kZSA9IGNyZWF0ZUVtcHR5Vk5vZGUoKTtcbiAgICB9XG4gICAgLy8gc2V0IHBhcmVudFxuICAgIHZub2RlLnBhcmVudCA9IF9wYXJlbnRWbm9kZTtcbiAgICByZXR1cm4gdm5vZGVcbiAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGVuc3VyZUN0b3IgKGNvbXAsIGJhc2UpIHtcbiAgaWYgKFxuICAgIGNvbXAuX19lc01vZHVsZSB8fFxuICAgIChoYXNTeW1ib2wgJiYgY29tcFtTeW1ib2wudG9TdHJpbmdUYWddID09PSAnTW9kdWxlJylcbiAgKSB7XG4gICAgY29tcCA9IGNvbXAuZGVmYXVsdDtcbiAgfVxuICByZXR1cm4gaXNPYmplY3QoY29tcClcbiAgICA/IGJhc2UuZXh0ZW5kKGNvbXApXG4gICAgOiBjb21wXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUFzeW5jUGxhY2Vob2xkZXIgKFxuICBmYWN0b3J5LFxuICBkYXRhLFxuICBjb250ZXh0LFxuICBjaGlsZHJlbixcbiAgdGFnXG4pIHtcbiAgdmFyIG5vZGUgPSBjcmVhdGVFbXB0eVZOb2RlKCk7XG4gIG5vZGUuYXN5bmNGYWN0b3J5ID0gZmFjdG9yeTtcbiAgbm9kZS5hc3luY01ldGEgPSB7IGRhdGE6IGRhdGEsIGNvbnRleHQ6IGNvbnRleHQsIGNoaWxkcmVuOiBjaGlsZHJlbiwgdGFnOiB0YWcgfTtcbiAgcmV0dXJuIG5vZGVcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUFzeW5jQ29tcG9uZW50IChcbiAgZmFjdG9yeSxcbiAgYmFzZUN0b3Jcbikge1xuICBpZiAoaXNUcnVlKGZhY3RvcnkuZXJyb3IpICYmIGlzRGVmKGZhY3RvcnkuZXJyb3JDb21wKSkge1xuICAgIHJldHVybiBmYWN0b3J5LmVycm9yQ29tcFxuICB9XG5cbiAgaWYgKGlzRGVmKGZhY3RvcnkucmVzb2x2ZWQpKSB7XG4gICAgcmV0dXJuIGZhY3RvcnkucmVzb2x2ZWRcbiAgfVxuXG4gIHZhciBvd25lciA9IGN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZTtcbiAgaWYgKG93bmVyICYmIGlzRGVmKGZhY3Rvcnkub3duZXJzKSAmJiBmYWN0b3J5Lm93bmVycy5pbmRleE9mKG93bmVyKSA9PT0gLTEpIHtcbiAgICAvLyBhbHJlYWR5IHBlbmRpbmdcbiAgICBmYWN0b3J5Lm93bmVycy5wdXNoKG93bmVyKTtcbiAgfVxuXG4gIGlmIChpc1RydWUoZmFjdG9yeS5sb2FkaW5nKSAmJiBpc0RlZihmYWN0b3J5LmxvYWRpbmdDb21wKSkge1xuICAgIHJldHVybiBmYWN0b3J5LmxvYWRpbmdDb21wXG4gIH1cblxuICBpZiAob3duZXIgJiYgIWlzRGVmKGZhY3Rvcnkub3duZXJzKSkge1xuICAgIHZhciBvd25lcnMgPSBmYWN0b3J5Lm93bmVycyA9IFtvd25lcl07XG4gICAgdmFyIHN5bmMgPSB0cnVlO1xuICAgIHZhciB0aW1lckxvYWRpbmcgPSBudWxsO1xuICAgIHZhciB0aW1lclRpbWVvdXQgPSBudWxsXG5cbiAgICA7KG93bmVyKS4kb24oJ2hvb2s6ZGVzdHJveWVkJywgZnVuY3Rpb24gKCkgeyByZXR1cm4gcmVtb3ZlKG93bmVycywgb3duZXIpOyB9KTtcblxuICAgIHZhciBmb3JjZVJlbmRlciA9IGZ1bmN0aW9uIChyZW5kZXJDb21wbGV0ZWQpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gb3duZXJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAob3duZXJzW2ldKS4kZm9yY2VVcGRhdGUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlbmRlckNvbXBsZXRlZCkge1xuICAgICAgICBvd25lcnMubGVuZ3RoID0gMDtcbiAgICAgICAgaWYgKHRpbWVyTG9hZGluZyAhPT0gbnVsbCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lckxvYWRpbmcpO1xuICAgICAgICAgIHRpbWVyTG9hZGluZyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRpbWVyVGltZW91dCAhPT0gbnVsbCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lclRpbWVvdXQpO1xuICAgICAgICAgIHRpbWVyVGltZW91dCA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIHJlc29sdmUgPSBvbmNlKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIC8vIGNhY2hlIHJlc29sdmVkXG4gICAgICBmYWN0b3J5LnJlc29sdmVkID0gZW5zdXJlQ3RvcihyZXMsIGJhc2VDdG9yKTtcbiAgICAgIC8vIGludm9rZSBjYWxsYmFja3Mgb25seSBpZiB0aGlzIGlzIG5vdCBhIHN5bmNocm9ub3VzIHJlc29sdmVcbiAgICAgIC8vIChhc3luYyByZXNvbHZlcyBhcmUgc2hpbW1lZCBhcyBzeW5jaHJvbm91cyBkdXJpbmcgU1NSKVxuICAgICAgaWYgKCFzeW5jKSB7XG4gICAgICAgIGZvcmNlUmVuZGVyKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3duZXJzLmxlbmd0aCA9IDA7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB2YXIgcmVqZWN0ID0gb25jZShmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgIFwiRmFpbGVkIHRvIHJlc29sdmUgYXN5bmMgY29tcG9uZW50OiBcIiArIChTdHJpbmcoZmFjdG9yeSkpICtcbiAgICAgICAgKHJlYXNvbiA/IChcIlxcblJlYXNvbjogXCIgKyByZWFzb24pIDogJycpXG4gICAgICApO1xuICAgICAgaWYgKGlzRGVmKGZhY3RvcnkuZXJyb3JDb21wKSkge1xuICAgICAgICBmYWN0b3J5LmVycm9yID0gdHJ1ZTtcbiAgICAgICAgZm9yY2VSZW5kZXIodHJ1ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB2YXIgcmVzID0gZmFjdG9yeShyZXNvbHZlLCByZWplY3QpO1xuXG4gICAgaWYgKGlzT2JqZWN0KHJlcykpIHtcbiAgICAgIGlmIChpc1Byb21pc2UocmVzKSkge1xuICAgICAgICAvLyAoKSA9PiBQcm9taXNlXG4gICAgICAgIGlmIChpc1VuZGVmKGZhY3RvcnkucmVzb2x2ZWQpKSB7XG4gICAgICAgICAgcmVzLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc1Byb21pc2UocmVzLmNvbXBvbmVudCkpIHtcbiAgICAgICAgcmVzLmNvbXBvbmVudC50aGVuKHJlc29sdmUsIHJlamVjdCk7XG5cbiAgICAgICAgaWYgKGlzRGVmKHJlcy5lcnJvcikpIHtcbiAgICAgICAgICBmYWN0b3J5LmVycm9yQ29tcCA9IGVuc3VyZUN0b3IocmVzLmVycm9yLCBiYXNlQ3Rvcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEZWYocmVzLmxvYWRpbmcpKSB7XG4gICAgICAgICAgZmFjdG9yeS5sb2FkaW5nQ29tcCA9IGVuc3VyZUN0b3IocmVzLmxvYWRpbmcsIGJhc2VDdG9yKTtcbiAgICAgICAgICBpZiAocmVzLmRlbGF5ID09PSAwKSB7XG4gICAgICAgICAgICBmYWN0b3J5LmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aW1lckxvYWRpbmcgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgdGltZXJMb2FkaW5nID0gbnVsbDtcbiAgICAgICAgICAgICAgaWYgKGlzVW5kZWYoZmFjdG9yeS5yZXNvbHZlZCkgJiYgaXNVbmRlZihmYWN0b3J5LmVycm9yKSkge1xuICAgICAgICAgICAgICAgIGZhY3RvcnkubG9hZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgZm9yY2VSZW5kZXIoZmFsc2UpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCByZXMuZGVsYXkgfHwgMjAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNEZWYocmVzLnRpbWVvdXQpKSB7XG4gICAgICAgICAgdGltZXJUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aW1lclRpbWVvdXQgPSBudWxsO1xuICAgICAgICAgICAgaWYgKGlzVW5kZWYoZmFjdG9yeS5yZXNvbHZlZCkpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KFxuICAgICAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbidcbiAgICAgICAgICAgICAgICAgID8gKFwidGltZW91dCAoXCIgKyAocmVzLnRpbWVvdXQpICsgXCJtcylcIilcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIHJlcy50aW1lb3V0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHN5bmMgPSBmYWxzZTtcbiAgICAvLyByZXR1cm4gaW4gY2FzZSByZXNvbHZlZCBzeW5jaHJvbm91c2x5XG4gICAgcmV0dXJuIGZhY3RvcnkubG9hZGluZ1xuICAgICAgPyBmYWN0b3J5LmxvYWRpbmdDb21wXG4gICAgICA6IGZhY3RvcnkucmVzb2x2ZWRcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaXNBc3luY1BsYWNlaG9sZGVyIChub2RlKSB7XG4gIHJldHVybiBub2RlLmlzQ29tbWVudCAmJiBub2RlLmFzeW5jRmFjdG9yeVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gZ2V0Rmlyc3RDb21wb25lbnRDaGlsZCAoY2hpbGRyZW4pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGMgPSBjaGlsZHJlbltpXTtcbiAgICAgIGlmIChpc0RlZihjKSAmJiAoaXNEZWYoYy5jb21wb25lbnRPcHRpb25zKSB8fCBpc0FzeW5jUGxhY2Vob2xkZXIoYykpKSB7XG4gICAgICAgIHJldHVybiBjXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdEV2ZW50cyAodm0pIHtcbiAgdm0uX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZtLl9oYXNIb29rRXZlbnQgPSBmYWxzZTtcbiAgLy8gaW5pdCBwYXJlbnQgYXR0YWNoZWQgZXZlbnRzXG4gIHZhciBsaXN0ZW5lcnMgPSB2bS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO1xuICBpZiAobGlzdGVuZXJzKSB7XG4gICAgdXBkYXRlQ29tcG9uZW50TGlzdGVuZXJzKHZtLCBsaXN0ZW5lcnMpO1xuICB9XG59XG5cbnZhciB0YXJnZXQ7XG5cbmZ1bmN0aW9uIGFkZCAoZXZlbnQsIGZuKSB7XG4gIHRhcmdldC4kb24oZXZlbnQsIGZuKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlJDEgKGV2ZW50LCBmbikge1xuICB0YXJnZXQuJG9mZihldmVudCwgZm4pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVPbmNlSGFuZGxlciAoZXZlbnQsIGZuKSB7XG4gIHZhciBfdGFyZ2V0ID0gdGFyZ2V0O1xuICByZXR1cm4gZnVuY3Rpb24gb25jZUhhbmRsZXIgKCkge1xuICAgIHZhciByZXMgPSBmbi5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgIGlmIChyZXMgIT09IG51bGwpIHtcbiAgICAgIF90YXJnZXQuJG9mZihldmVudCwgb25jZUhhbmRsZXIpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVDb21wb25lbnRMaXN0ZW5lcnMgKFxuICB2bSxcbiAgbGlzdGVuZXJzLFxuICBvbGRMaXN0ZW5lcnNcbikge1xuICB0YXJnZXQgPSB2bTtcbiAgdXBkYXRlTGlzdGVuZXJzKGxpc3RlbmVycywgb2xkTGlzdGVuZXJzIHx8IHt9LCBhZGQsIHJlbW92ZSQxLCBjcmVhdGVPbmNlSGFuZGxlciwgdm0pO1xuICB0YXJnZXQgPSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGV2ZW50c01peGluIChWdWUpIHtcbiAgdmFyIGhvb2tSRSA9IC9eaG9vazovO1xuICBWdWUucHJvdG90eXBlLiRvbiA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGV2ZW50KSkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBldmVudC5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgdm0uJG9uKGV2ZW50W2ldLCBmbik7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICh2bS5fZXZlbnRzW2V2ZW50XSB8fCAodm0uX2V2ZW50c1tldmVudF0gPSBbXSkpLnB1c2goZm4pO1xuICAgICAgLy8gb3B0aW1pemUgaG9vazpldmVudCBjb3N0IGJ5IHVzaW5nIGEgYm9vbGVhbiBmbGFnIG1hcmtlZCBhdCByZWdpc3RyYXRpb25cbiAgICAgIC8vIGluc3RlYWQgb2YgYSBoYXNoIGxvb2t1cFxuICAgICAgaWYgKGhvb2tSRS50ZXN0KGV2ZW50KSkge1xuICAgICAgICB2bS5faGFzSG9va0V2ZW50ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZtXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kb25jZSA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGZ1bmN0aW9uIG9uICgpIHtcbiAgICAgIHZtLiRvZmYoZXZlbnQsIG9uKTtcbiAgICAgIGZuLmFwcGx5KHZtLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgICBvbi5mbiA9IGZuO1xuICAgIHZtLiRvbihldmVudCwgb24pO1xuICAgIHJldHVybiB2bVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJG9mZiA9IGZ1bmN0aW9uIChldmVudCwgZm4pIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIC8vIGFsbFxuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgdm0uX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4gICAgLy8gYXJyYXkgb2YgZXZlbnRzXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZXZlbnQpKSB7XG4gICAgICBmb3IgKHZhciBpJDEgPSAwLCBsID0gZXZlbnQubGVuZ3RoOyBpJDEgPCBsOyBpJDErKykge1xuICAgICAgICB2bS4kb2ZmKGV2ZW50W2kkMV0sIGZuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICAvLyBzcGVjaWZpYyBldmVudFxuICAgIHZhciBjYnMgPSB2bS5fZXZlbnRzW2V2ZW50XTtcbiAgICBpZiAoIWNicykge1xuICAgICAgcmV0dXJuIHZtXG4gICAgfVxuICAgIGlmICghZm4pIHtcbiAgICAgIHZtLl9ldmVudHNbZXZlbnRdID0gbnVsbDtcbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICAvLyBzcGVjaWZpYyBoYW5kbGVyXG4gICAgdmFyIGNiO1xuICAgIHZhciBpID0gY2JzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICBjYiA9IGNic1tpXTtcbiAgICAgIGlmIChjYiA9PT0gZm4gfHwgY2IuZm4gPT09IGZuKSB7XG4gICAgICAgIGNicy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2bVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJGVtaXQgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgbG93ZXJDYXNlRXZlbnQgPSBldmVudC50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKGxvd2VyQ2FzZUV2ZW50ICE9PSBldmVudCAmJiB2bS5fZXZlbnRzW2xvd2VyQ2FzZUV2ZW50XSkge1xuICAgICAgICB0aXAoXG4gICAgICAgICAgXCJFdmVudCBcXFwiXCIgKyBsb3dlckNhc2VFdmVudCArIFwiXFxcIiBpcyBlbWl0dGVkIGluIGNvbXBvbmVudCBcIiArXG4gICAgICAgICAgKGZvcm1hdENvbXBvbmVudE5hbWUodm0pKSArIFwiIGJ1dCB0aGUgaGFuZGxlciBpcyByZWdpc3RlcmVkIGZvciBcXFwiXCIgKyBldmVudCArIFwiXFxcIi4gXCIgK1xuICAgICAgICAgIFwiTm90ZSB0aGF0IEhUTUwgYXR0cmlidXRlcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBhbmQgeW91IGNhbm5vdCB1c2UgXCIgK1xuICAgICAgICAgIFwidi1vbiB0byBsaXN0ZW4gdG8gY2FtZWxDYXNlIGV2ZW50cyB3aGVuIHVzaW5nIGluLURPTSB0ZW1wbGF0ZXMuIFwiICtcbiAgICAgICAgICBcIllvdSBzaG91bGQgcHJvYmFibHkgdXNlIFxcXCJcIiArIChoeXBoZW5hdGUoZXZlbnQpKSArIFwiXFxcIiBpbnN0ZWFkIG9mIFxcXCJcIiArIGV2ZW50ICsgXCJcXFwiLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBjYnMgPSB2bS5fZXZlbnRzW2V2ZW50XTtcbiAgICBpZiAoY2JzKSB7XG4gICAgICBjYnMgPSBjYnMubGVuZ3RoID4gMSA/IHRvQXJyYXkoY2JzKSA6IGNicztcbiAgICAgIHZhciBhcmdzID0gdG9BcnJheShhcmd1bWVudHMsIDEpO1xuICAgICAgdmFyIGluZm8gPSBcImV2ZW50IGhhbmRsZXIgZm9yIFxcXCJcIiArIGV2ZW50ICsgXCJcXFwiXCI7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNicy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaW52b2tlV2l0aEVycm9ySGFuZGxpbmcoY2JzW2ldLCB2bSwgYXJncywgdm0sIGluZm8pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdm1cbiAgfTtcbn1cblxuLyogICovXG5cbnZhciBhY3RpdmVJbnN0YW5jZSA9IG51bGw7XG52YXIgaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50ID0gZmFsc2U7XG5cbmZ1bmN0aW9uIHNldEFjdGl2ZUluc3RhbmNlKHZtKSB7XG4gIHZhciBwcmV2QWN0aXZlSW5zdGFuY2UgPSBhY3RpdmVJbnN0YW5jZTtcbiAgYWN0aXZlSW5zdGFuY2UgPSB2bTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBhY3RpdmVJbnN0YW5jZSA9IHByZXZBY3RpdmVJbnN0YW5jZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0TGlmZWN5Y2xlICh2bSkge1xuICB2YXIgb3B0aW9ucyA9IHZtLiRvcHRpb25zO1xuXG4gIC8vIGxvY2F0ZSBmaXJzdCBub24tYWJzdHJhY3QgcGFyZW50XG4gIHZhciBwYXJlbnQgPSBvcHRpb25zLnBhcmVudDtcbiAgaWYgKHBhcmVudCAmJiAhb3B0aW9ucy5hYnN0cmFjdCkge1xuICAgIHdoaWxlIChwYXJlbnQuJG9wdGlvbnMuYWJzdHJhY3QgJiYgcGFyZW50LiRwYXJlbnQpIHtcbiAgICAgIHBhcmVudCA9IHBhcmVudC4kcGFyZW50O1xuICAgIH1cbiAgICBwYXJlbnQuJGNoaWxkcmVuLnB1c2godm0pO1xuICB9XG5cbiAgdm0uJHBhcmVudCA9IHBhcmVudDtcbiAgdm0uJHJvb3QgPSBwYXJlbnQgPyBwYXJlbnQuJHJvb3QgOiB2bTtcblxuICB2bS4kY2hpbGRyZW4gPSBbXTtcbiAgdm0uJHJlZnMgPSB7fTtcblxuICB2bS5fd2F0Y2hlciA9IG51bGw7XG4gIHZtLl9pbmFjdGl2ZSA9IG51bGw7XG4gIHZtLl9kaXJlY3RJbmFjdGl2ZSA9IGZhbHNlO1xuICB2bS5faXNNb3VudGVkID0gZmFsc2U7XG4gIHZtLl9pc0Rlc3Ryb3llZCA9IGZhbHNlO1xuICB2bS5faXNCZWluZ0Rlc3Ryb3llZCA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBsaWZlY3ljbGVNaXhpbiAoVnVlKSB7XG4gIFZ1ZS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uICh2bm9kZSwgaHlkcmF0aW5nKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICB2YXIgcHJldkVsID0gdm0uJGVsO1xuICAgIHZhciBwcmV2Vm5vZGUgPSB2bS5fdm5vZGU7XG4gICAgdmFyIHJlc3RvcmVBY3RpdmVJbnN0YW5jZSA9IHNldEFjdGl2ZUluc3RhbmNlKHZtKTtcbiAgICB2bS5fdm5vZGUgPSB2bm9kZTtcbiAgICAvLyBWdWUucHJvdG90eXBlLl9fcGF0Y2hfXyBpcyBpbmplY3RlZCBpbiBlbnRyeSBwb2ludHNcbiAgICAvLyBiYXNlZCBvbiB0aGUgcmVuZGVyaW5nIGJhY2tlbmQgdXNlZC5cbiAgICBpZiAoIXByZXZWbm9kZSkge1xuICAgICAgLy8gaW5pdGlhbCByZW5kZXJcbiAgICAgIHZtLiRlbCA9IHZtLl9fcGF0Y2hfXyh2bS4kZWwsIHZub2RlLCBoeWRyYXRpbmcsIGZhbHNlIC8qIHJlbW92ZU9ubHkgKi8pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB1cGRhdGVzXG4gICAgICB2bS4kZWwgPSB2bS5fX3BhdGNoX18ocHJldlZub2RlLCB2bm9kZSk7XG4gICAgfVxuICAgIHJlc3RvcmVBY3RpdmVJbnN0YW5jZSgpO1xuICAgIC8vIHVwZGF0ZSBfX3Z1ZV9fIHJlZmVyZW5jZVxuICAgIGlmIChwcmV2RWwpIHtcbiAgICAgIHByZXZFbC5fX3Z1ZV9fID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHZtLiRlbCkge1xuICAgICAgdm0uJGVsLl9fdnVlX18gPSB2bTtcbiAgICB9XG4gICAgLy8gaWYgcGFyZW50IGlzIGFuIEhPQywgdXBkYXRlIGl0cyAkZWwgYXMgd2VsbFxuICAgIGlmICh2bS4kdm5vZGUgJiYgdm0uJHBhcmVudCAmJiB2bS4kdm5vZGUgPT09IHZtLiRwYXJlbnQuX3Zub2RlKSB7XG4gICAgICB2bS4kcGFyZW50LiRlbCA9IHZtLiRlbDtcbiAgICB9XG4gICAgLy8gdXBkYXRlZCBob29rIGlzIGNhbGxlZCBieSB0aGUgc2NoZWR1bGVyIHRvIGVuc3VyZSB0aGF0IGNoaWxkcmVuIGFyZVxuICAgIC8vIHVwZGF0ZWQgaW4gYSBwYXJlbnQncyB1cGRhdGVkIGhvb2suXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAodm0uX3dhdGNoZXIpIHtcbiAgICAgIHZtLl93YXRjaGVyLnVwZGF0ZSgpO1xuICAgIH1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRkZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl9pc0JlaW5nRGVzdHJveWVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FsbEhvb2sodm0sICdiZWZvcmVEZXN0cm95Jyk7XG4gICAgdm0uX2lzQmVpbmdEZXN0cm95ZWQgPSB0cnVlO1xuICAgIC8vIHJlbW92ZSBzZWxmIGZyb20gcGFyZW50XG4gICAgdmFyIHBhcmVudCA9IHZtLiRwYXJlbnQ7XG4gICAgaWYgKHBhcmVudCAmJiAhcGFyZW50Ll9pc0JlaW5nRGVzdHJveWVkICYmICF2bS4kb3B0aW9ucy5hYnN0cmFjdCkge1xuICAgICAgcmVtb3ZlKHBhcmVudC4kY2hpbGRyZW4sIHZtKTtcbiAgICB9XG4gICAgLy8gdGVhcmRvd24gd2F0Y2hlcnNcbiAgICBpZiAodm0uX3dhdGNoZXIpIHtcbiAgICAgIHZtLl93YXRjaGVyLnRlYXJkb3duKCk7XG4gICAgfVxuICAgIHZhciBpID0gdm0uX3dhdGNoZXJzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB2bS5fd2F0Y2hlcnNbaV0udGVhcmRvd24oKTtcbiAgICB9XG4gICAgLy8gcmVtb3ZlIHJlZmVyZW5jZSBmcm9tIGRhdGEgb2JcbiAgICAvLyBmcm96ZW4gb2JqZWN0IG1heSBub3QgaGF2ZSBvYnNlcnZlci5cbiAgICBpZiAodm0uX2RhdGEuX19vYl9fKSB7XG4gICAgICB2bS5fZGF0YS5fX29iX18udm1Db3VudC0tO1xuICAgIH1cbiAgICAvLyBjYWxsIHRoZSBsYXN0IGhvb2suLi5cbiAgICB2bS5faXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgIC8vIGludm9rZSBkZXN0cm95IGhvb2tzIG9uIGN1cnJlbnQgcmVuZGVyZWQgdHJlZVxuICAgIHZtLl9fcGF0Y2hfXyh2bS5fdm5vZGUsIG51bGwpO1xuICAgIC8vIGZpcmUgZGVzdHJveWVkIGhvb2tcbiAgICBjYWxsSG9vayh2bSwgJ2Rlc3Ryb3llZCcpO1xuICAgIC8vIHR1cm4gb2ZmIGFsbCBpbnN0YW5jZSBsaXN0ZW5lcnMuXG4gICAgdm0uJG9mZigpO1xuICAgIC8vIHJlbW92ZSBfX3Z1ZV9fIHJlZmVyZW5jZVxuICAgIGlmICh2bS4kZWwpIHtcbiAgICAgIHZtLiRlbC5fX3Z1ZV9fID0gbnVsbDtcbiAgICB9XG4gICAgLy8gcmVsZWFzZSBjaXJjdWxhciByZWZlcmVuY2UgKCM2NzU5KVxuICAgIGlmICh2bS4kdm5vZGUpIHtcbiAgICAgIHZtLiR2bm9kZS5wYXJlbnQgPSBudWxsO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlQ2hpbGRDb21wb25lbnQgKFxuICB2bSxcbiAgcHJvcHNEYXRhLFxuICBsaXN0ZW5lcnMsXG4gIHBhcmVudFZub2RlLFxuICByZW5kZXJDaGlsZHJlblxuKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50ID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIGRldGVybWluZSB3aGV0aGVyIGNvbXBvbmVudCBoYXMgc2xvdCBjaGlsZHJlblxuICAvLyB3ZSBuZWVkIHRvIGRvIHRoaXMgYmVmb3JlIG92ZXJ3cml0aW5nICRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbi5cblxuICAvLyBjaGVjayBpZiB0aGVyZSBhcmUgZHluYW1pYyBzY29wZWRTbG90cyAoaGFuZC13cml0dGVuIG9yIGNvbXBpbGVkIGJ1dCB3aXRoXG4gIC8vIGR5bmFtaWMgc2xvdCBuYW1lcykuIFN0YXRpYyBzY29wZWQgc2xvdHMgY29tcGlsZWQgZnJvbSB0ZW1wbGF0ZSBoYXMgdGhlXG4gIC8vIFwiJHN0YWJsZVwiIG1hcmtlci5cbiAgdmFyIG5ld1Njb3BlZFNsb3RzID0gcGFyZW50Vm5vZGUuZGF0YS5zY29wZWRTbG90cztcbiAgdmFyIG9sZFNjb3BlZFNsb3RzID0gdm0uJHNjb3BlZFNsb3RzO1xuICB2YXIgaGFzRHluYW1pY1Njb3BlZFNsb3QgPSAhIShcbiAgICAobmV3U2NvcGVkU2xvdHMgJiYgIW5ld1Njb3BlZFNsb3RzLiRzdGFibGUpIHx8XG4gICAgKG9sZFNjb3BlZFNsb3RzICE9PSBlbXB0eU9iamVjdCAmJiAhb2xkU2NvcGVkU2xvdHMuJHN0YWJsZSkgfHxcbiAgICAobmV3U2NvcGVkU2xvdHMgJiYgdm0uJHNjb3BlZFNsb3RzLiRrZXkgIT09IG5ld1Njb3BlZFNsb3RzLiRrZXkpXG4gICk7XG5cbiAgLy8gQW55IHN0YXRpYyBzbG90IGNoaWxkcmVuIGZyb20gdGhlIHBhcmVudCBtYXkgaGF2ZSBjaGFuZ2VkIGR1cmluZyBwYXJlbnQnc1xuICAvLyB1cGRhdGUuIER5bmFtaWMgc2NvcGVkIHNsb3RzIG1heSBhbHNvIGhhdmUgY2hhbmdlZC4gSW4gc3VjaCBjYXNlcywgYSBmb3JjZWRcbiAgLy8gdXBkYXRlIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgY29ycmVjdG5lc3MuXG4gIHZhciBuZWVkc0ZvcmNlVXBkYXRlID0gISEoXG4gICAgcmVuZGVyQ2hpbGRyZW4gfHwgICAgICAgICAgICAgICAvLyBoYXMgbmV3IHN0YXRpYyBzbG90c1xuICAgIHZtLiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbiB8fCAgLy8gaGFzIG9sZCBzdGF0aWMgc2xvdHNcbiAgICBoYXNEeW5hbWljU2NvcGVkU2xvdFxuICApO1xuXG4gIHZtLiRvcHRpb25zLl9wYXJlbnRWbm9kZSA9IHBhcmVudFZub2RlO1xuICB2bS4kdm5vZGUgPSBwYXJlbnRWbm9kZTsgLy8gdXBkYXRlIHZtJ3MgcGxhY2Vob2xkZXIgbm9kZSB3aXRob3V0IHJlLXJlbmRlclxuXG4gIGlmICh2bS5fdm5vZGUpIHsgLy8gdXBkYXRlIGNoaWxkIHRyZWUncyBwYXJlbnRcbiAgICB2bS5fdm5vZGUucGFyZW50ID0gcGFyZW50Vm5vZGU7XG4gIH1cbiAgdm0uJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuID0gcmVuZGVyQ2hpbGRyZW47XG5cbiAgLy8gdXBkYXRlICRhdHRycyBhbmQgJGxpc3RlbmVycyBoYXNoXG4gIC8vIHRoZXNlIGFyZSBhbHNvIHJlYWN0aXZlIHNvIHRoZXkgbWF5IHRyaWdnZXIgY2hpbGQgdXBkYXRlIGlmIHRoZSBjaGlsZFxuICAvLyB1c2VkIHRoZW0gZHVyaW5nIHJlbmRlclxuICB2bS4kYXR0cnMgPSBwYXJlbnRWbm9kZS5kYXRhLmF0dHJzIHx8IGVtcHR5T2JqZWN0O1xuICB2bS4kbGlzdGVuZXJzID0gbGlzdGVuZXJzIHx8IGVtcHR5T2JqZWN0O1xuXG4gIC8vIHVwZGF0ZSBwcm9wc1xuICBpZiAocHJvcHNEYXRhICYmIHZtLiRvcHRpb25zLnByb3BzKSB7XG4gICAgdG9nZ2xlT2JzZXJ2aW5nKGZhbHNlKTtcbiAgICB2YXIgcHJvcHMgPSB2bS5fcHJvcHM7XG4gICAgdmFyIHByb3BLZXlzID0gdm0uJG9wdGlvbnMuX3Byb3BLZXlzIHx8IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcEtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBwcm9wS2V5c1tpXTtcbiAgICAgIHZhciBwcm9wT3B0aW9ucyA9IHZtLiRvcHRpb25zLnByb3BzOyAvLyB3dGYgZmxvdz9cbiAgICAgIHByb3BzW2tleV0gPSB2YWxpZGF0ZVByb3Aoa2V5LCBwcm9wT3B0aW9ucywgcHJvcHNEYXRhLCB2bSk7XG4gICAgfVxuICAgIHRvZ2dsZU9ic2VydmluZyh0cnVlKTtcbiAgICAvLyBrZWVwIGEgY29weSBvZiByYXcgcHJvcHNEYXRhXG4gICAgdm0uJG9wdGlvbnMucHJvcHNEYXRhID0gcHJvcHNEYXRhO1xuICB9XG5cbiAgLy8gZml4ZWQgYnkgeHh4eHh4IHVwZGF0ZSBwcm9wZXJ0aWVzKG1wIHJ1bnRpbWUpXG4gIHZtLl8kdXBkYXRlUHJvcGVydGllcyAmJiB2bS5fJHVwZGF0ZVByb3BlcnRpZXModm0pO1xuXG4gIC8vIHVwZGF0ZSBsaXN0ZW5lcnNcbiAgbGlzdGVuZXJzID0gbGlzdGVuZXJzIHx8IGVtcHR5T2JqZWN0O1xuICB2YXIgb2xkTGlzdGVuZXJzID0gdm0uJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycztcbiAgdm0uJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycyA9IGxpc3RlbmVycztcbiAgdXBkYXRlQ29tcG9uZW50TGlzdGVuZXJzKHZtLCBsaXN0ZW5lcnMsIG9sZExpc3RlbmVycyk7XG5cbiAgLy8gcmVzb2x2ZSBzbG90cyArIGZvcmNlIHVwZGF0ZSBpZiBoYXMgY2hpbGRyZW5cbiAgaWYgKG5lZWRzRm9yY2VVcGRhdGUpIHtcbiAgICB2bS4kc2xvdHMgPSByZXNvbHZlU2xvdHMocmVuZGVyQ2hpbGRyZW4sIHBhcmVudFZub2RlLmNvbnRleHQpO1xuICAgIHZtLiRmb3JjZVVwZGF0ZSgpO1xuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpc1VwZGF0aW5nQ2hpbGRDb21wb25lbnQgPSBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0luSW5hY3RpdmVUcmVlICh2bSkge1xuICB3aGlsZSAodm0gJiYgKHZtID0gdm0uJHBhcmVudCkpIHtcbiAgICBpZiAodm0uX2luYWN0aXZlKSB7IHJldHVybiB0cnVlIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gYWN0aXZhdGVDaGlsZENvbXBvbmVudCAodm0sIGRpcmVjdCkge1xuICBpZiAoZGlyZWN0KSB7XG4gICAgdm0uX2RpcmVjdEluYWN0aXZlID0gZmFsc2U7XG4gICAgaWYgKGlzSW5JbmFjdGl2ZVRyZWUodm0pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gIH0gZWxzZSBpZiAodm0uX2RpcmVjdEluYWN0aXZlKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKHZtLl9pbmFjdGl2ZSB8fCB2bS5faW5hY3RpdmUgPT09IG51bGwpIHtcbiAgICB2bS5faW5hY3RpdmUgPSBmYWxzZTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZtLiRjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgYWN0aXZhdGVDaGlsZENvbXBvbmVudCh2bS4kY2hpbGRyZW5baV0pO1xuICAgIH1cbiAgICBjYWxsSG9vayh2bSwgJ2FjdGl2YXRlZCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRlYWN0aXZhdGVDaGlsZENvbXBvbmVudCAodm0sIGRpcmVjdCkge1xuICBpZiAoZGlyZWN0KSB7XG4gICAgdm0uX2RpcmVjdEluYWN0aXZlID0gdHJ1ZTtcbiAgICBpZiAoaXNJbkluYWN0aXZlVHJlZSh2bSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuICBpZiAoIXZtLl9pbmFjdGl2ZSkge1xuICAgIHZtLl9pbmFjdGl2ZSA9IHRydWU7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2bS4kY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlYWN0aXZhdGVDaGlsZENvbXBvbmVudCh2bS4kY2hpbGRyZW5baV0pO1xuICAgIH1cbiAgICBjYWxsSG9vayh2bSwgJ2RlYWN0aXZhdGVkJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsbEhvb2sgKHZtLCBob29rKSB7XG4gIC8vICM3NTczIGRpc2FibGUgZGVwIGNvbGxlY3Rpb24gd2hlbiBpbnZva2luZyBsaWZlY3ljbGUgaG9va3NcbiAgcHVzaFRhcmdldCgpO1xuICB2YXIgaGFuZGxlcnMgPSB2bS4kb3B0aW9uc1tob29rXTtcbiAgdmFyIGluZm8gPSBob29rICsgXCIgaG9va1wiO1xuICBpZiAoaGFuZGxlcnMpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgaiA9IGhhbmRsZXJzLmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgaW52b2tlV2l0aEVycm9ySGFuZGxpbmcoaGFuZGxlcnNbaV0sIHZtLCBudWxsLCB2bSwgaW5mbyk7XG4gICAgfVxuICB9XG4gIGlmICh2bS5faGFzSG9va0V2ZW50KSB7XG4gICAgdm0uJGVtaXQoJ2hvb2s6JyArIGhvb2spO1xuICB9XG4gIHBvcFRhcmdldCgpO1xufVxuXG4vKiAgKi9cblxudmFyIE1BWF9VUERBVEVfQ09VTlQgPSAxMDA7XG5cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGFjdGl2YXRlZENoaWxkcmVuID0gW107XG52YXIgaGFzID0ge307XG52YXIgY2lyY3VsYXIgPSB7fTtcbnZhciB3YWl0aW5nID0gZmFsc2U7XG52YXIgZmx1c2hpbmcgPSBmYWxzZTtcbnZhciBpbmRleCA9IDA7XG5cbi8qKlxuICogUmVzZXQgdGhlIHNjaGVkdWxlcidzIHN0YXRlLlxuICovXG5mdW5jdGlvbiByZXNldFNjaGVkdWxlclN0YXRlICgpIHtcbiAgaW5kZXggPSBxdWV1ZS5sZW5ndGggPSBhY3RpdmF0ZWRDaGlsZHJlbi5sZW5ndGggPSAwO1xuICBoYXMgPSB7fTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjaXJjdWxhciA9IHt9O1xuICB9XG4gIHdhaXRpbmcgPSBmbHVzaGluZyA9IGZhbHNlO1xufVxuXG4vLyBBc3luYyBlZGdlIGNhc2UgIzY1NjYgcmVxdWlyZXMgc2F2aW5nIHRoZSB0aW1lc3RhbXAgd2hlbiBldmVudCBsaXN0ZW5lcnMgYXJlXG4vLyBhdHRhY2hlZC4gSG93ZXZlciwgY2FsbGluZyBwZXJmb3JtYW5jZS5ub3coKSBoYXMgYSBwZXJmIG92ZXJoZWFkIGVzcGVjaWFsbHlcbi8vIGlmIHRoZSBwYWdlIGhhcyB0aG91c2FuZHMgb2YgZXZlbnQgbGlzdGVuZXJzLiBJbnN0ZWFkLCB3ZSB0YWtlIGEgdGltZXN0YW1wXG4vLyBldmVyeSB0aW1lIHRoZSBzY2hlZHVsZXIgZmx1c2hlcyBhbmQgdXNlIHRoYXQgZm9yIGFsbCBldmVudCBsaXN0ZW5lcnNcbi8vIGF0dGFjaGVkIGR1cmluZyB0aGF0IGZsdXNoLlxudmFyIGN1cnJlbnRGbHVzaFRpbWVzdGFtcCA9IDA7XG5cbi8vIEFzeW5jIGVkZ2UgY2FzZSBmaXggcmVxdWlyZXMgc3RvcmluZyBhbiBldmVudCBsaXN0ZW5lcidzIGF0dGFjaCB0aW1lc3RhbXAuXG52YXIgZ2V0Tm93ID0gRGF0ZS5ub3c7XG5cbi8vIERldGVybWluZSB3aGF0IGV2ZW50IHRpbWVzdGFtcCB0aGUgYnJvd3NlciBpcyB1c2luZy4gQW5ub3lpbmdseSwgdGhlXG4vLyB0aW1lc3RhbXAgY2FuIGVpdGhlciBiZSBoaS1yZXMgKHJlbGF0aXZlIHRvIHBhZ2UgbG9hZCkgb3IgbG93LXJlc1xuLy8gKHJlbGF0aXZlIHRvIFVOSVggZXBvY2gpLCBzbyBpbiBvcmRlciB0byBjb21wYXJlIHRpbWUgd2UgaGF2ZSB0byB1c2UgdGhlXG4vLyBzYW1lIHRpbWVzdGFtcCB0eXBlIHdoZW4gc2F2aW5nIHRoZSBmbHVzaCB0aW1lc3RhbXAuXG4vLyBBbGwgSUUgdmVyc2lvbnMgdXNlIGxvdy1yZXMgZXZlbnQgdGltZXN0YW1wcywgYW5kIGhhdmUgcHJvYmxlbWF0aWMgY2xvY2tcbi8vIGltcGxlbWVudGF0aW9ucyAoIzk2MzIpXG5pZiAoaW5Ccm93c2VyICYmICFpc0lFKSB7XG4gIHZhciBwZXJmb3JtYW5jZSA9IHdpbmRvdy5wZXJmb3JtYW5jZTtcbiAgaWYgKFxuICAgIHBlcmZvcm1hbmNlICYmXG4gICAgdHlwZW9mIHBlcmZvcm1hbmNlLm5vdyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIGdldE5vdygpID4gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50JykudGltZVN0YW1wXG4gICkge1xuICAgIC8vIGlmIHRoZSBldmVudCB0aW1lc3RhbXAsIGFsdGhvdWdoIGV2YWx1YXRlZCBBRlRFUiB0aGUgRGF0ZS5ub3coKSwgaXNcbiAgICAvLyBzbWFsbGVyIHRoYW4gaXQsIGl0IG1lYW5zIHRoZSBldmVudCBpcyB1c2luZyBhIGhpLXJlcyB0aW1lc3RhbXAsXG4gICAgLy8gYW5kIHdlIG5lZWQgdG8gdXNlIHRoZSBoaS1yZXMgdmVyc2lvbiBmb3IgZXZlbnQgbGlzdGVuZXIgdGltZXN0YW1wcyBhc1xuICAgIC8vIHdlbGwuXG4gICAgZ2V0Tm93ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcGVyZm9ybWFuY2Uubm93KCk7IH07XG4gIH1cbn1cblxuLyoqXG4gKiBGbHVzaCBib3RoIHF1ZXVlcyBhbmQgcnVuIHRoZSB3YXRjaGVycy5cbiAqL1xuZnVuY3Rpb24gZmx1c2hTY2hlZHVsZXJRdWV1ZSAoKSB7XG4gIGN1cnJlbnRGbHVzaFRpbWVzdGFtcCA9IGdldE5vdygpO1xuICBmbHVzaGluZyA9IHRydWU7XG4gIHZhciB3YXRjaGVyLCBpZDtcblxuICAvLyBTb3J0IHF1ZXVlIGJlZm9yZSBmbHVzaC5cbiAgLy8gVGhpcyBlbnN1cmVzIHRoYXQ6XG4gIC8vIDEuIENvbXBvbmVudHMgYXJlIHVwZGF0ZWQgZnJvbSBwYXJlbnQgdG8gY2hpbGQuIChiZWNhdXNlIHBhcmVudCBpcyBhbHdheXNcbiAgLy8gICAgY3JlYXRlZCBiZWZvcmUgdGhlIGNoaWxkKVxuICAvLyAyLiBBIGNvbXBvbmVudCdzIHVzZXIgd2F0Y2hlcnMgYXJlIHJ1biBiZWZvcmUgaXRzIHJlbmRlciB3YXRjaGVyIChiZWNhdXNlXG4gIC8vICAgIHVzZXIgd2F0Y2hlcnMgYXJlIGNyZWF0ZWQgYmVmb3JlIHRoZSByZW5kZXIgd2F0Y2hlcilcbiAgLy8gMy4gSWYgYSBjb21wb25lbnQgaXMgZGVzdHJveWVkIGR1cmluZyBhIHBhcmVudCBjb21wb25lbnQncyB3YXRjaGVyIHJ1bixcbiAgLy8gICAgaXRzIHdhdGNoZXJzIGNhbiBiZSBza2lwcGVkLlxuICBxdWV1ZS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLmlkIC0gYi5pZDsgfSk7XG5cbiAgLy8gZG8gbm90IGNhY2hlIGxlbmd0aCBiZWNhdXNlIG1vcmUgd2F0Y2hlcnMgbWlnaHQgYmUgcHVzaGVkXG4gIC8vIGFzIHdlIHJ1biBleGlzdGluZyB3YXRjaGVyc1xuICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBxdWV1ZS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICB3YXRjaGVyID0gcXVldWVbaW5kZXhdO1xuICAgIGlmICh3YXRjaGVyLmJlZm9yZSkge1xuICAgICAgd2F0Y2hlci5iZWZvcmUoKTtcbiAgICB9XG4gICAgaWQgPSB3YXRjaGVyLmlkO1xuICAgIGhhc1tpZF0gPSBudWxsO1xuICAgIHdhdGNoZXIucnVuKCk7XG4gICAgLy8gaW4gZGV2IGJ1aWxkLCBjaGVjayBhbmQgc3RvcCBjaXJjdWxhciB1cGRhdGVzLlxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGhhc1tpZF0gIT0gbnVsbCkge1xuICAgICAgY2lyY3VsYXJbaWRdID0gKGNpcmN1bGFyW2lkXSB8fCAwKSArIDE7XG4gICAgICBpZiAoY2lyY3VsYXJbaWRdID4gTUFYX1VQREFURV9DT1VOVCkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdZb3UgbWF5IGhhdmUgYW4gaW5maW5pdGUgdXBkYXRlIGxvb3AgJyArIChcbiAgICAgICAgICAgIHdhdGNoZXIudXNlclxuICAgICAgICAgICAgICA/IChcImluIHdhdGNoZXIgd2l0aCBleHByZXNzaW9uIFxcXCJcIiArICh3YXRjaGVyLmV4cHJlc3Npb24pICsgXCJcXFwiXCIpXG4gICAgICAgICAgICAgIDogXCJpbiBhIGNvbXBvbmVudCByZW5kZXIgZnVuY3Rpb24uXCJcbiAgICAgICAgICApLFxuICAgICAgICAgIHdhdGNoZXIudm1cbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBrZWVwIGNvcGllcyBvZiBwb3N0IHF1ZXVlcyBiZWZvcmUgcmVzZXR0aW5nIHN0YXRlXG4gIHZhciBhY3RpdmF0ZWRRdWV1ZSA9IGFjdGl2YXRlZENoaWxkcmVuLnNsaWNlKCk7XG4gIHZhciB1cGRhdGVkUXVldWUgPSBxdWV1ZS5zbGljZSgpO1xuXG4gIHJlc2V0U2NoZWR1bGVyU3RhdGUoKTtcblxuICAvLyBjYWxsIGNvbXBvbmVudCB1cGRhdGVkIGFuZCBhY3RpdmF0ZWQgaG9va3NcbiAgY2FsbEFjdGl2YXRlZEhvb2tzKGFjdGl2YXRlZFF1ZXVlKTtcbiAgY2FsbFVwZGF0ZWRIb29rcyh1cGRhdGVkUXVldWUpO1xuXG4gIC8vIGRldnRvb2wgaG9va1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKGRldnRvb2xzICYmIGNvbmZpZy5kZXZ0b29scykge1xuICAgIGRldnRvb2xzLmVtaXQoJ2ZsdXNoJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsbFVwZGF0ZWRIb29rcyAocXVldWUpIHtcbiAgdmFyIGkgPSBxdWV1ZS5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICB2YXIgd2F0Y2hlciA9IHF1ZXVlW2ldO1xuICAgIHZhciB2bSA9IHdhdGNoZXIudm07XG4gICAgaWYgKHZtLl93YXRjaGVyID09PSB3YXRjaGVyICYmIHZtLl9pc01vdW50ZWQgJiYgIXZtLl9pc0Rlc3Ryb3llZCkge1xuICAgICAgY2FsbEhvb2sodm0sICd1cGRhdGVkJyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUXVldWUgYSBrZXB0LWFsaXZlIGNvbXBvbmVudCB0aGF0IHdhcyBhY3RpdmF0ZWQgZHVyaW5nIHBhdGNoLlxuICogVGhlIHF1ZXVlIHdpbGwgYmUgcHJvY2Vzc2VkIGFmdGVyIHRoZSBlbnRpcmUgdHJlZSBoYXMgYmVlbiBwYXRjaGVkLlxuICovXG5mdW5jdGlvbiBxdWV1ZUFjdGl2YXRlZENvbXBvbmVudCAodm0pIHtcbiAgLy8gc2V0dGluZyBfaW5hY3RpdmUgdG8gZmFsc2UgaGVyZSBzbyB0aGF0IGEgcmVuZGVyIGZ1bmN0aW9uIGNhblxuICAvLyByZWx5IG9uIGNoZWNraW5nIHdoZXRoZXIgaXQncyBpbiBhbiBpbmFjdGl2ZSB0cmVlIChlLmcuIHJvdXRlci12aWV3KVxuICB2bS5faW5hY3RpdmUgPSBmYWxzZTtcbiAgYWN0aXZhdGVkQ2hpbGRyZW4ucHVzaCh2bSk7XG59XG5cbmZ1bmN0aW9uIGNhbGxBY3RpdmF0ZWRIb29rcyAocXVldWUpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xuICAgIHF1ZXVlW2ldLl9pbmFjdGl2ZSA9IHRydWU7XG4gICAgYWN0aXZhdGVDaGlsZENvbXBvbmVudChxdWV1ZVtpXSwgdHJ1ZSAvKiB0cnVlICovKTtcbiAgfVxufVxuXG4vKipcbiAqIFB1c2ggYSB3YXRjaGVyIGludG8gdGhlIHdhdGNoZXIgcXVldWUuXG4gKiBKb2JzIHdpdGggZHVwbGljYXRlIElEcyB3aWxsIGJlIHNraXBwZWQgdW5sZXNzIGl0J3NcbiAqIHB1c2hlZCB3aGVuIHRoZSBxdWV1ZSBpcyBiZWluZyBmbHVzaGVkLlxuICovXG5mdW5jdGlvbiBxdWV1ZVdhdGNoZXIgKHdhdGNoZXIpIHtcbiAgdmFyIGlkID0gd2F0Y2hlci5pZDtcbiAgaWYgKGhhc1tpZF0gPT0gbnVsbCkge1xuICAgIGhhc1tpZF0gPSB0cnVlO1xuICAgIGlmICghZmx1c2hpbmcpIHtcbiAgICAgIHF1ZXVlLnB1c2god2F0Y2hlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGlmIGFscmVhZHkgZmx1c2hpbmcsIHNwbGljZSB0aGUgd2F0Y2hlciBiYXNlZCBvbiBpdHMgaWRcbiAgICAgIC8vIGlmIGFscmVhZHkgcGFzdCBpdHMgaWQsIGl0IHdpbGwgYmUgcnVuIG5leHQgaW1tZWRpYXRlbHkuXG4gICAgICB2YXIgaSA9IHF1ZXVlLmxlbmd0aCAtIDE7XG4gICAgICB3aGlsZSAoaSA+IGluZGV4ICYmIHF1ZXVlW2ldLmlkID4gd2F0Y2hlci5pZCkge1xuICAgICAgICBpLS07XG4gICAgICB9XG4gICAgICBxdWV1ZS5zcGxpY2UoaSArIDEsIDAsIHdhdGNoZXIpO1xuICAgIH1cbiAgICAvLyBxdWV1ZSB0aGUgZmx1c2hcbiAgICBpZiAoIXdhaXRpbmcpIHtcbiAgICAgIHdhaXRpbmcgPSB0cnVlO1xuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhY29uZmlnLmFzeW5jKSB7XG4gICAgICAgIGZsdXNoU2NoZWR1bGVyUXVldWUoKTtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBuZXh0VGljayhmbHVzaFNjaGVkdWxlclF1ZXVlKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cblxuXG52YXIgdWlkJDIgPSAwO1xuXG4vKipcbiAqIEEgd2F0Y2hlciBwYXJzZXMgYW4gZXhwcmVzc2lvbiwgY29sbGVjdHMgZGVwZW5kZW5jaWVzLFxuICogYW5kIGZpcmVzIGNhbGxiYWNrIHdoZW4gdGhlIGV4cHJlc3Npb24gdmFsdWUgY2hhbmdlcy5cbiAqIFRoaXMgaXMgdXNlZCBmb3IgYm90aCB0aGUgJHdhdGNoKCkgYXBpIGFuZCBkaXJlY3RpdmVzLlxuICovXG52YXIgV2F0Y2hlciA9IGZ1bmN0aW9uIFdhdGNoZXIgKFxuICB2bSxcbiAgZXhwT3JGbixcbiAgY2IsXG4gIG9wdGlvbnMsXG4gIGlzUmVuZGVyV2F0Y2hlclxuKSB7XG4gIHRoaXMudm0gPSB2bTtcbiAgaWYgKGlzUmVuZGVyV2F0Y2hlcikge1xuICAgIHZtLl93YXRjaGVyID0gdGhpcztcbiAgfVxuICB2bS5fd2F0Y2hlcnMucHVzaCh0aGlzKTtcbiAgLy8gb3B0aW9uc1xuICBpZiAob3B0aW9ucykge1xuICAgIHRoaXMuZGVlcCA9ICEhb3B0aW9ucy5kZWVwO1xuICAgIHRoaXMudXNlciA9ICEhb3B0aW9ucy51c2VyO1xuICAgIHRoaXMubGF6eSA9ICEhb3B0aW9ucy5sYXp5O1xuICAgIHRoaXMuc3luYyA9ICEhb3B0aW9ucy5zeW5jO1xuICAgIHRoaXMuYmVmb3JlID0gb3B0aW9ucy5iZWZvcmU7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5kZWVwID0gdGhpcy51c2VyID0gdGhpcy5sYXp5ID0gdGhpcy5zeW5jID0gZmFsc2U7XG4gIH1cbiAgdGhpcy5jYiA9IGNiO1xuICB0aGlzLmlkID0gKyt1aWQkMjsgLy8gdWlkIGZvciBiYXRjaGluZ1xuICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gIHRoaXMuZGlydHkgPSB0aGlzLmxhenk7IC8vIGZvciBsYXp5IHdhdGNoZXJzXG4gIHRoaXMuZGVwcyA9IFtdO1xuICB0aGlzLm5ld0RlcHMgPSBbXTtcbiAgdGhpcy5kZXBJZHMgPSBuZXcgX1NldCgpO1xuICB0aGlzLm5ld0RlcElkcyA9IG5ldyBfU2V0KCk7XG4gIHRoaXMuZXhwcmVzc2lvbiA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbidcbiAgICA/IGV4cE9yRm4udG9TdHJpbmcoKVxuICAgIDogJyc7XG4gIC8vIHBhcnNlIGV4cHJlc3Npb24gZm9yIGdldHRlclxuICBpZiAodHlwZW9mIGV4cE9yRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICB0aGlzLmdldHRlciA9IGV4cE9yRm47XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5nZXR0ZXIgPSBwYXJzZVBhdGgoZXhwT3JGbik7XG4gICAgaWYgKCF0aGlzLmdldHRlcikge1xuICAgICAgdGhpcy5nZXR0ZXIgPSBub29wO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIkZhaWxlZCB3YXRjaGluZyBwYXRoOiBcXFwiXCIgKyBleHBPckZuICsgXCJcXFwiIFwiICtcbiAgICAgICAgJ1dhdGNoZXIgb25seSBhY2NlcHRzIHNpbXBsZSBkb3QtZGVsaW1pdGVkIHBhdGhzLiAnICtcbiAgICAgICAgJ0ZvciBmdWxsIGNvbnRyb2wsIHVzZSBhIGZ1bmN0aW9uIGluc3RlYWQuJyxcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHRoaXMudmFsdWUgPSB0aGlzLmxhenlcbiAgICA/IHVuZGVmaW5lZFxuICAgIDogdGhpcy5nZXQoKTtcbn07XG5cbi8qKlxuICogRXZhbHVhdGUgdGhlIGdldHRlciwgYW5kIHJlLWNvbGxlY3QgZGVwZW5kZW5jaWVzLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiBnZXQgKCkge1xuICBwdXNoVGFyZ2V0KHRoaXMpO1xuICB2YXIgdmFsdWU7XG4gIHZhciB2bSA9IHRoaXMudm07XG4gIHRyeSB7XG4gICAgdmFsdWUgPSB0aGlzLmdldHRlci5jYWxsKHZtLCB2bSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAodGhpcy51c2VyKSB7XG4gICAgICBoYW5kbGVFcnJvcihlLCB2bSwgKFwiZ2V0dGVyIGZvciB3YXRjaGVyIFxcXCJcIiArICh0aGlzLmV4cHJlc3Npb24pICsgXCJcXFwiXCIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBcInRvdWNoXCIgZXZlcnkgcHJvcGVydHkgc28gdGhleSBhcmUgYWxsIHRyYWNrZWQgYXNcbiAgICAvLyBkZXBlbmRlbmNpZXMgZm9yIGRlZXAgd2F0Y2hpbmdcbiAgICBpZiAodGhpcy5kZWVwKSB7XG4gICAgICB0cmF2ZXJzZSh2YWx1ZSk7XG4gICAgfVxuICAgIHBvcFRhcmdldCgpO1xuICAgIHRoaXMuY2xlYW51cERlcHMoKTtcbiAgfVxuICByZXR1cm4gdmFsdWVcbn07XG5cbi8qKlxuICogQWRkIGEgZGVwZW5kZW5jeSB0byB0aGlzIGRpcmVjdGl2ZS5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuYWRkRGVwID0gZnVuY3Rpb24gYWRkRGVwIChkZXApIHtcbiAgdmFyIGlkID0gZGVwLmlkO1xuICBpZiAoIXRoaXMubmV3RGVwSWRzLmhhcyhpZCkpIHtcbiAgICB0aGlzLm5ld0RlcElkcy5hZGQoaWQpO1xuICAgIHRoaXMubmV3RGVwcy5wdXNoKGRlcCk7XG4gICAgaWYgKCF0aGlzLmRlcElkcy5oYXMoaWQpKSB7XG4gICAgICBkZXAuYWRkU3ViKHRoaXMpO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBDbGVhbiB1cCBmb3IgZGVwZW5kZW5jeSBjb2xsZWN0aW9uLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5jbGVhbnVwRGVwcyA9IGZ1bmN0aW9uIGNsZWFudXBEZXBzICgpIHtcbiAgdmFyIGkgPSB0aGlzLmRlcHMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgdmFyIGRlcCA9IHRoaXMuZGVwc1tpXTtcbiAgICBpZiAoIXRoaXMubmV3RGVwSWRzLmhhcyhkZXAuaWQpKSB7XG4gICAgICBkZXAucmVtb3ZlU3ViKHRoaXMpO1xuICAgIH1cbiAgfVxuICB2YXIgdG1wID0gdGhpcy5kZXBJZHM7XG4gIHRoaXMuZGVwSWRzID0gdGhpcy5uZXdEZXBJZHM7XG4gIHRoaXMubmV3RGVwSWRzID0gdG1wO1xuICB0aGlzLm5ld0RlcElkcy5jbGVhcigpO1xuICB0bXAgPSB0aGlzLmRlcHM7XG4gIHRoaXMuZGVwcyA9IHRoaXMubmV3RGVwcztcbiAgdGhpcy5uZXdEZXBzID0gdG1wO1xuICB0aGlzLm5ld0RlcHMubGVuZ3RoID0gMDtcbn07XG5cbi8qKlxuICogU3Vic2NyaWJlciBpbnRlcmZhY2UuXG4gKiBXaWxsIGJlIGNhbGxlZCB3aGVuIGEgZGVwZW5kZW5jeSBjaGFuZ2VzLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKCkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAodGhpcy5sYXp5KSB7XG4gICAgdGhpcy5kaXJ0eSA9IHRydWU7XG4gIH0gZWxzZSBpZiAodGhpcy5zeW5jKSB7XG4gICAgdGhpcy5ydW4oKTtcbiAgfSBlbHNlIHtcbiAgICBxdWV1ZVdhdGNoZXIodGhpcyk7XG4gIH1cbn07XG5cbi8qKlxuICogU2NoZWR1bGVyIGpvYiBpbnRlcmZhY2UuXG4gKiBXaWxsIGJlIGNhbGxlZCBieSB0aGUgc2NoZWR1bGVyLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiBydW4gKCkge1xuICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICB2YXIgdmFsdWUgPSB0aGlzLmdldCgpO1xuICAgIGlmIChcbiAgICAgIHZhbHVlICE9PSB0aGlzLnZhbHVlIHx8XG4gICAgICAvLyBEZWVwIHdhdGNoZXJzIGFuZCB3YXRjaGVycyBvbiBPYmplY3QvQXJyYXlzIHNob3VsZCBmaXJlIGV2ZW5cbiAgICAgIC8vIHdoZW4gdGhlIHZhbHVlIGlzIHRoZSBzYW1lLCBiZWNhdXNlIHRoZSB2YWx1ZSBtYXlcbiAgICAgIC8vIGhhdmUgbXV0YXRlZC5cbiAgICAgIGlzT2JqZWN0KHZhbHVlKSB8fFxuICAgICAgdGhpcy5kZWVwXG4gICAgKSB7XG4gICAgICAvLyBzZXQgbmV3IHZhbHVlXG4gICAgICB2YXIgb2xkVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgaWYgKHRoaXMudXNlcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuY2IuY2FsbCh0aGlzLnZtLCB2YWx1ZSwgb2xkVmFsdWUpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgaGFuZGxlRXJyb3IoZSwgdGhpcy52bSwgKFwiY2FsbGJhY2sgZm9yIHdhdGNoZXIgXFxcIlwiICsgKHRoaXMuZXhwcmVzc2lvbikgKyBcIlxcXCJcIikpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNiLmNhbGwodGhpcy52bSwgdmFsdWUsIG9sZFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogRXZhbHVhdGUgdGhlIHZhbHVlIG9mIHRoZSB3YXRjaGVyLlxuICogVGhpcyBvbmx5IGdldHMgY2FsbGVkIGZvciBsYXp5IHdhdGNoZXJzLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5ldmFsdWF0ZSA9IGZ1bmN0aW9uIGV2YWx1YXRlICgpIHtcbiAgdGhpcy52YWx1ZSA9IHRoaXMuZ2V0KCk7XG4gIHRoaXMuZGlydHkgPSBmYWxzZTtcbn07XG5cbi8qKlxuICogRGVwZW5kIG9uIGFsbCBkZXBzIGNvbGxlY3RlZCBieSB0aGlzIHdhdGNoZXIuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLmRlcGVuZCA9IGZ1bmN0aW9uIGRlcGVuZCAoKSB7XG4gIHZhciBpID0gdGhpcy5kZXBzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIHRoaXMuZGVwc1tpXS5kZXBlbmQoKTtcbiAgfVxufTtcblxuLyoqXG4gKiBSZW1vdmUgc2VsZiBmcm9tIGFsbCBkZXBlbmRlbmNpZXMnIHN1YnNjcmliZXIgbGlzdC5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUudGVhcmRvd24gPSBmdW5jdGlvbiB0ZWFyZG93biAoKSB7XG4gIGlmICh0aGlzLmFjdGl2ZSkge1xuICAgIC8vIHJlbW92ZSBzZWxmIGZyb20gdm0ncyB3YXRjaGVyIGxpc3RcbiAgICAvLyB0aGlzIGlzIGEgc29tZXdoYXQgZXhwZW5zaXZlIG9wZXJhdGlvbiBzbyB3ZSBza2lwIGl0XG4gICAgLy8gaWYgdGhlIHZtIGlzIGJlaW5nIGRlc3Ryb3llZC5cbiAgICBpZiAoIXRoaXMudm0uX2lzQmVpbmdEZXN0cm95ZWQpIHtcbiAgICAgIHJlbW92ZSh0aGlzLnZtLl93YXRjaGVycywgdGhpcyk7XG4gICAgfVxuICAgIHZhciBpID0gdGhpcy5kZXBzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB0aGlzLmRlcHNbaV0ucmVtb3ZlU3ViKHRoaXMpO1xuICAgIH1cbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICB9XG59O1xuXG4vKiAgKi9cblxudmFyIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbiA9IHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBnZXQ6IG5vb3AsXG4gIHNldDogbm9vcFxufTtcblxuZnVuY3Rpb24gcHJveHkgKHRhcmdldCwgc291cmNlS2V5LCBrZXkpIHtcbiAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLmdldCA9IGZ1bmN0aW9uIHByb3h5R2V0dGVyICgpIHtcbiAgICByZXR1cm4gdGhpc1tzb3VyY2VLZXldW2tleV1cbiAgfTtcbiAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLnNldCA9IGZ1bmN0aW9uIHByb3h5U2V0dGVyICh2YWwpIHtcbiAgICB0aGlzW3NvdXJjZUtleV1ba2V5XSA9IHZhbDtcbiAgfTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24pO1xufVxuXG5mdW5jdGlvbiBpbml0U3RhdGUgKHZtKSB7XG4gIHZtLl93YXRjaGVycyA9IFtdO1xuICB2YXIgb3B0cyA9IHZtLiRvcHRpb25zO1xuICBpZiAob3B0cy5wcm9wcykgeyBpbml0UHJvcHModm0sIG9wdHMucHJvcHMpOyB9XG4gIGlmIChvcHRzLm1ldGhvZHMpIHsgaW5pdE1ldGhvZHModm0sIG9wdHMubWV0aG9kcyk7IH1cbiAgaWYgKG9wdHMuZGF0YSkge1xuICAgIGluaXREYXRhKHZtKTtcbiAgfSBlbHNlIHtcbiAgICBvYnNlcnZlKHZtLl9kYXRhID0ge30sIHRydWUgLyogYXNSb290RGF0YSAqLyk7XG4gIH1cbiAgaWYgKG9wdHMuY29tcHV0ZWQpIHsgaW5pdENvbXB1dGVkKHZtLCBvcHRzLmNvbXB1dGVkKTsgfVxuICBpZiAob3B0cy53YXRjaCAmJiBvcHRzLndhdGNoICE9PSBuYXRpdmVXYXRjaCkge1xuICAgIGluaXRXYXRjaCh2bSwgb3B0cy53YXRjaCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdFByb3BzICh2bSwgcHJvcHNPcHRpb25zKSB7XG4gIHZhciBwcm9wc0RhdGEgPSB2bS4kb3B0aW9ucy5wcm9wc0RhdGEgfHwge307XG4gIHZhciBwcm9wcyA9IHZtLl9wcm9wcyA9IHt9O1xuICAvLyBjYWNoZSBwcm9wIGtleXMgc28gdGhhdCBmdXR1cmUgcHJvcHMgdXBkYXRlcyBjYW4gaXRlcmF0ZSB1c2luZyBBcnJheVxuICAvLyBpbnN0ZWFkIG9mIGR5bmFtaWMgb2JqZWN0IGtleSBlbnVtZXJhdGlvbi5cbiAgdmFyIGtleXMgPSB2bS4kb3B0aW9ucy5fcHJvcEtleXMgPSBbXTtcbiAgdmFyIGlzUm9vdCA9ICF2bS4kcGFyZW50O1xuICAvLyByb290IGluc3RhbmNlIHByb3BzIHNob3VsZCBiZSBjb252ZXJ0ZWRcbiAgaWYgKCFpc1Jvb3QpIHtcbiAgICB0b2dnbGVPYnNlcnZpbmcoZmFsc2UpO1xuICB9XG4gIHZhciBsb29wID0gZnVuY3Rpb24gKCBrZXkgKSB7XG4gICAga2V5cy5wdXNoKGtleSk7XG4gICAgdmFyIHZhbHVlID0gdmFsaWRhdGVQcm9wKGtleSwgcHJvcHNPcHRpb25zLCBwcm9wc0RhdGEsIHZtKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgaHlwaGVuYXRlZEtleSA9IGh5cGhlbmF0ZShrZXkpO1xuICAgICAgaWYgKGlzUmVzZXJ2ZWRBdHRyaWJ1dGUoaHlwaGVuYXRlZEtleSkgfHxcbiAgICAgICAgICBjb25maWcuaXNSZXNlcnZlZEF0dHIoaHlwaGVuYXRlZEtleSkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAoXCJcXFwiXCIgKyBoeXBoZW5hdGVkS2V5ICsgXCJcXFwiIGlzIGEgcmVzZXJ2ZWQgYXR0cmlidXRlIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBjb21wb25lbnQgcHJvcC5cIiksXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGRlZmluZVJlYWN0aXZlJCQxKHByb3BzLCBrZXksIHZhbHVlLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghaXNSb290ICYmICFpc1VwZGF0aW5nQ2hpbGRDb21wb25lbnQpIHtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZih2bS5tcEhvc3QgPT09ICdtcC1iYWlkdScgfHwgdm0ubXBIb3N0ID09PSAnbXAta3VhaXNob3UnKXsvL+eZvuW6puOAgeW/q+aJiyBvYnNlcnZlciDlnKggc2V0RGF0YSBjYWxsYmFjayDkuYvlkI7op6blj5HvvIznm7TmjqXlv73nlaXor6Ugd2FyblxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9maXhlZCBieSB4eHh4eHggX19uZXh0X3RpY2tfcGVuZGluZyx1bmk6Ly9mb3JtLWZpZWxkIOaXtuS4jeWRiuitplxuICAgICAgICAgICAgaWYoXG4gICAgICAgICAgICAgICAga2V5ID09PSAndmFsdWUnICYmXG4gICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheSh2bS4kb3B0aW9ucy5iZWhhdmlvcnMpICYmXG4gICAgICAgICAgICAgICAgdm0uJG9wdGlvbnMuYmVoYXZpb3JzLmluZGV4T2YoJ3VuaTovL2Zvcm0tZmllbGQnKSAhPT0gLTFcbiAgICAgICAgICAgICAgKXtcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZih2bS5fZ2V0Rm9ybURhdGEpe1xuICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciAkcGFyZW50ID0gdm0uJHBhcmVudDtcbiAgICAgICAgICAgIHdoaWxlKCRwYXJlbnQpe1xuICAgICAgICAgICAgICBpZigkcGFyZW50Ll9fbmV4dF90aWNrX3BlbmRpbmcpe1xuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICRwYXJlbnQgPSAkcGFyZW50LiRwYXJlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICBcIkF2b2lkIG11dGF0aW5nIGEgcHJvcCBkaXJlY3RseSBzaW5jZSB0aGUgdmFsdWUgd2lsbCBiZSBcIiArXG4gICAgICAgICAgICBcIm92ZXJ3cml0dGVuIHdoZW5ldmVyIHRoZSBwYXJlbnQgY29tcG9uZW50IHJlLXJlbmRlcnMuIFwiICtcbiAgICAgICAgICAgIFwiSW5zdGVhZCwgdXNlIGEgZGF0YSBvciBjb21wdXRlZCBwcm9wZXJ0eSBiYXNlZCBvbiB0aGUgcHJvcCdzIFwiICtcbiAgICAgICAgICAgIFwidmFsdWUuIFByb3AgYmVpbmcgbXV0YXRlZDogXFxcIlwiICsga2V5ICsgXCJcXFwiXCIsXG4gICAgICAgICAgICB2bVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWZpbmVSZWFjdGl2ZSQkMShwcm9wcywga2V5LCB2YWx1ZSk7XG4gICAgfVxuICAgIC8vIHN0YXRpYyBwcm9wcyBhcmUgYWxyZWFkeSBwcm94aWVkIG9uIHRoZSBjb21wb25lbnQncyBwcm90b3R5cGVcbiAgICAvLyBkdXJpbmcgVnVlLmV4dGVuZCgpLiBXZSBvbmx5IG5lZWQgdG8gcHJveHkgcHJvcHMgZGVmaW5lZCBhdFxuICAgIC8vIGluc3RhbnRpYXRpb24gaGVyZS5cbiAgICBpZiAoIShrZXkgaW4gdm0pKSB7XG4gICAgICBwcm94eSh2bSwgXCJfcHJvcHNcIiwga2V5KTtcbiAgICB9XG4gIH07XG5cbiAgZm9yICh2YXIga2V5IGluIHByb3BzT3B0aW9ucykgbG9vcCgga2V5ICk7XG4gIHRvZ2dsZU9ic2VydmluZyh0cnVlKTtcbn1cblxuZnVuY3Rpb24gaW5pdERhdGEgKHZtKSB7XG4gIHZhciBkYXRhID0gdm0uJG9wdGlvbnMuZGF0YTtcbiAgZGF0YSA9IHZtLl9kYXRhID0gdHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbidcbiAgICA/IGdldERhdGEoZGF0YSwgdm0pXG4gICAgOiBkYXRhIHx8IHt9O1xuICBpZiAoIWlzUGxhaW5PYmplY3QoZGF0YSkpIHtcbiAgICBkYXRhID0ge307XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgJ2RhdGEgZnVuY3Rpb25zIHNob3VsZCByZXR1cm4gYW4gb2JqZWN0OlxcbicgK1xuICAgICAgJ2h0dHBzOi8vdnVlanMub3JnL3YyL2d1aWRlL2NvbXBvbmVudHMuaHRtbCNkYXRhLU11c3QtQmUtYS1GdW5jdGlvbicsXG4gICAgICB2bVxuICAgICk7XG4gIH1cbiAgLy8gcHJveHkgZGF0YSBvbiBpbnN0YW5jZVxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGRhdGEpO1xuICB2YXIgcHJvcHMgPSB2bS4kb3B0aW9ucy5wcm9wcztcbiAgdmFyIG1ldGhvZHMgPSB2bS4kb3B0aW9ucy5tZXRob2RzO1xuICB2YXIgaSA9IGtleXMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChtZXRob2RzICYmIGhhc093bihtZXRob2RzLCBrZXkpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgKFwiTWV0aG9kIFxcXCJcIiArIGtleSArIFwiXFxcIiBoYXMgYWxyZWFkeSBiZWVuIGRlZmluZWQgYXMgYSBkYXRhIHByb3BlcnR5LlwiKSxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocHJvcHMgJiYgaGFzT3duKHByb3BzLCBrZXkpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm4oXG4gICAgICAgIFwiVGhlIGRhdGEgcHJvcGVydHkgXFxcIlwiICsga2V5ICsgXCJcXFwiIGlzIGFscmVhZHkgZGVjbGFyZWQgYXMgYSBwcm9wLiBcIiArXG4gICAgICAgIFwiVXNlIHByb3AgZGVmYXVsdCB2YWx1ZSBpbnN0ZWFkLlwiLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKCFpc1Jlc2VydmVkKGtleSkpIHtcbiAgICAgIHByb3h5KHZtLCBcIl9kYXRhXCIsIGtleSk7XG4gICAgfVxuICB9XG4gIC8vIG9ic2VydmUgZGF0YVxuICBvYnNlcnZlKGRhdGEsIHRydWUgLyogYXNSb290RGF0YSAqLyk7XG59XG5cbmZ1bmN0aW9uIGdldERhdGEgKGRhdGEsIHZtKSB7XG4gIC8vICM3NTczIGRpc2FibGUgZGVwIGNvbGxlY3Rpb24gd2hlbiBpbnZva2luZyBkYXRhIGdldHRlcnNcbiAgcHVzaFRhcmdldCgpO1xuICB0cnkge1xuICAgIHJldHVybiBkYXRhLmNhbGwodm0sIHZtKVxuICB9IGNhdGNoIChlKSB7XG4gICAgaGFuZGxlRXJyb3IoZSwgdm0sIFwiZGF0YSgpXCIpO1xuICAgIHJldHVybiB7fVxuICB9IGZpbmFsbHkge1xuICAgIHBvcFRhcmdldCgpO1xuICB9XG59XG5cbnZhciBjb21wdXRlZFdhdGNoZXJPcHRpb25zID0geyBsYXp5OiB0cnVlIH07XG5cbmZ1bmN0aW9uIGluaXRDb21wdXRlZCAodm0sIGNvbXB1dGVkKSB7XG4gIC8vICRmbG93LWRpc2FibGUtbGluZVxuICB2YXIgd2F0Y2hlcnMgPSB2bS5fY29tcHV0ZWRXYXRjaGVycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIC8vIGNvbXB1dGVkIHByb3BlcnRpZXMgYXJlIGp1c3QgZ2V0dGVycyBkdXJpbmcgU1NSXG4gIHZhciBpc1NTUiA9IGlzU2VydmVyUmVuZGVyaW5nKCk7XG5cbiAgZm9yICh2YXIga2V5IGluIGNvbXB1dGVkKSB7XG4gICAgdmFyIHVzZXJEZWYgPSBjb21wdXRlZFtrZXldO1xuICAgIHZhciBnZXR0ZXIgPSB0eXBlb2YgdXNlckRlZiA9PT0gJ2Z1bmN0aW9uJyA/IHVzZXJEZWYgOiB1c2VyRGVmLmdldDtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBnZXR0ZXIgPT0gbnVsbCkge1xuICAgICAgd2FybihcbiAgICAgICAgKFwiR2V0dGVyIGlzIG1pc3NpbmcgZm9yIGNvbXB1dGVkIHByb3BlcnR5IFxcXCJcIiArIGtleSArIFwiXFxcIi5cIiksXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghaXNTU1IpIHtcbiAgICAgIC8vIGNyZWF0ZSBpbnRlcm5hbCB3YXRjaGVyIGZvciB0aGUgY29tcHV0ZWQgcHJvcGVydHkuXG4gICAgICB3YXRjaGVyc1trZXldID0gbmV3IFdhdGNoZXIoXG4gICAgICAgIHZtLFxuICAgICAgICBnZXR0ZXIgfHwgbm9vcCxcbiAgICAgICAgbm9vcCxcbiAgICAgICAgY29tcHV0ZWRXYXRjaGVyT3B0aW9uc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBjb21wb25lbnQtZGVmaW5lZCBjb21wdXRlZCBwcm9wZXJ0aWVzIGFyZSBhbHJlYWR5IGRlZmluZWQgb24gdGhlXG4gICAgLy8gY29tcG9uZW50IHByb3RvdHlwZS4gV2Ugb25seSBuZWVkIHRvIGRlZmluZSBjb21wdXRlZCBwcm9wZXJ0aWVzIGRlZmluZWRcbiAgICAvLyBhdCBpbnN0YW50aWF0aW9uIGhlcmUuXG4gICAgaWYgKCEoa2V5IGluIHZtKSkge1xuICAgICAgZGVmaW5lQ29tcHV0ZWQodm0sIGtleSwgdXNlckRlZik7XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoa2V5IGluIHZtLiRkYXRhKSB7XG4gICAgICAgIHdhcm4oKFwiVGhlIGNvbXB1dGVkIHByb3BlcnR5IFxcXCJcIiArIGtleSArIFwiXFxcIiBpcyBhbHJlYWR5IGRlZmluZWQgaW4gZGF0YS5cIiksIHZtKTtcbiAgICAgIH0gZWxzZSBpZiAodm0uJG9wdGlvbnMucHJvcHMgJiYga2V5IGluIHZtLiRvcHRpb25zLnByb3BzKSB7XG4gICAgICAgIHdhcm4oKFwiVGhlIGNvbXB1dGVkIHByb3BlcnR5IFxcXCJcIiArIGtleSArIFwiXFxcIiBpcyBhbHJlYWR5IGRlZmluZWQgYXMgYSBwcm9wLlwiKSwgdm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBkZWZpbmVDb21wdXRlZCAoXG4gIHRhcmdldCxcbiAga2V5LFxuICB1c2VyRGVmXG4pIHtcbiAgdmFyIHNob3VsZENhY2hlID0gIWlzU2VydmVyUmVuZGVyaW5nKCk7XG4gIGlmICh0eXBlb2YgdXNlckRlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5nZXQgPSBzaG91bGRDYWNoZVxuICAgICAgPyBjcmVhdGVDb21wdXRlZEdldHRlcihrZXkpXG4gICAgICA6IGNyZWF0ZUdldHRlckludm9rZXIodXNlckRlZik7XG4gICAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLnNldCA9IG5vb3A7XG4gIH0gZWxzZSB7XG4gICAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLmdldCA9IHVzZXJEZWYuZ2V0XG4gICAgICA/IHNob3VsZENhY2hlICYmIHVzZXJEZWYuY2FjaGUgIT09IGZhbHNlXG4gICAgICAgID8gY3JlYXRlQ29tcHV0ZWRHZXR0ZXIoa2V5KVxuICAgICAgICA6IGNyZWF0ZUdldHRlckludm9rZXIodXNlckRlZi5nZXQpXG4gICAgICA6IG5vb3A7XG4gICAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLnNldCA9IHVzZXJEZWYuc2V0IHx8IG5vb3A7XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPT09IG5vb3ApIHtcbiAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2FybihcbiAgICAgICAgKFwiQ29tcHV0ZWQgcHJvcGVydHkgXFxcIlwiICsga2V5ICsgXCJcXFwiIHdhcyBhc3NpZ25lZCB0byBidXQgaXQgaGFzIG5vIHNldHRlci5cIiksXG4gICAgICAgIHRoaXNcbiAgICAgICk7XG4gICAgfTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbik7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXB1dGVkR2V0dGVyIChrZXkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNvbXB1dGVkR2V0dGVyICgpIHtcbiAgICB2YXIgd2F0Y2hlciA9IHRoaXMuX2NvbXB1dGVkV2F0Y2hlcnMgJiYgdGhpcy5fY29tcHV0ZWRXYXRjaGVyc1trZXldO1xuICAgIGlmICh3YXRjaGVyKSB7XG4gICAgICBpZiAod2F0Y2hlci5kaXJ0eSkge1xuICAgICAgICB3YXRjaGVyLmV2YWx1YXRlKCk7XG4gICAgICB9XG4gICAgICBpZiAoRGVwLlNoYXJlZE9iamVjdC50YXJnZXQpIHsvLyBmaXhlZCBieSB4eHh4eHhcbiAgICAgICAgd2F0Y2hlci5kZXBlbmQoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3YXRjaGVyLnZhbHVlXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUdldHRlckludm9rZXIoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNvbXB1dGVkR2V0dGVyICgpIHtcbiAgICByZXR1cm4gZm4uY2FsbCh0aGlzLCB0aGlzKVxuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRNZXRob2RzICh2bSwgbWV0aG9kcykge1xuICB2YXIgcHJvcHMgPSB2bS4kb3B0aW9ucy5wcm9wcztcbiAgZm9yICh2YXIga2V5IGluIG1ldGhvZHMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKHR5cGVvZiBtZXRob2RzW2tleV0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICBcIk1ldGhvZCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaGFzIHR5cGUgXFxcIlwiICsgKHR5cGVvZiBtZXRob2RzW2tleV0pICsgXCJcXFwiIGluIHRoZSBjb21wb25lbnQgZGVmaW5pdGlvbi4gXCIgK1xuICAgICAgICAgIFwiRGlkIHlvdSByZWZlcmVuY2UgdGhlIGZ1bmN0aW9uIGNvcnJlY3RseT9cIixcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzICYmIGhhc093bihwcm9wcywga2V5KSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIChcIk1ldGhvZCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaGFzIGFscmVhZHkgYmVlbiBkZWZpbmVkIGFzIGEgcHJvcC5cIiksXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmICgoa2V5IGluIHZtKSAmJiBpc1Jlc2VydmVkKGtleSkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICBcIk1ldGhvZCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgY29uZmxpY3RzIHdpdGggYW4gZXhpc3RpbmcgVnVlIGluc3RhbmNlIG1ldGhvZC4gXCIgK1xuICAgICAgICAgIFwiQXZvaWQgZGVmaW5pbmcgY29tcG9uZW50IG1ldGhvZHMgdGhhdCBzdGFydCB3aXRoIF8gb3IgJC5cIlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICB2bVtrZXldID0gdHlwZW9mIG1ldGhvZHNba2V5XSAhPT0gJ2Z1bmN0aW9uJyA/IG5vb3AgOiBiaW5kKG1ldGhvZHNba2V5XSwgdm0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRXYXRjaCAodm0sIHdhdGNoKSB7XG4gIGZvciAodmFyIGtleSBpbiB3YXRjaCkge1xuICAgIHZhciBoYW5kbGVyID0gd2F0Y2hba2V5XTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShoYW5kbGVyKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoYW5kbGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNyZWF0ZVdhdGNoZXIodm0sIGtleSwgaGFuZGxlcltpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNyZWF0ZVdhdGNoZXIodm0sIGtleSwgaGFuZGxlcik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVdhdGNoZXIgKFxuICB2bSxcbiAgZXhwT3JGbixcbiAgaGFuZGxlcixcbiAgb3B0aW9uc1xuKSB7XG4gIGlmIChpc1BsYWluT2JqZWN0KGhhbmRsZXIpKSB7XG4gICAgb3B0aW9ucyA9IGhhbmRsZXI7XG4gICAgaGFuZGxlciA9IGhhbmRsZXIuaGFuZGxlcjtcbiAgfVxuICBpZiAodHlwZW9mIGhhbmRsZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgaGFuZGxlciA9IHZtW2hhbmRsZXJdO1xuICB9XG4gIHJldHVybiB2bS4kd2F0Y2goZXhwT3JGbiwgaGFuZGxlciwgb3B0aW9ucylcbn1cblxuZnVuY3Rpb24gc3RhdGVNaXhpbiAoVnVlKSB7XG4gIC8vIGZsb3cgc29tZWhvdyBoYXMgcHJvYmxlbXMgd2l0aCBkaXJlY3RseSBkZWNsYXJlZCBkZWZpbml0aW9uIG9iamVjdFxuICAvLyB3aGVuIHVzaW5nIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSwgc28gd2UgaGF2ZSB0byBwcm9jZWR1cmFsbHkgYnVpbGQgdXBcbiAgLy8gdGhlIG9iamVjdCBoZXJlLlxuICB2YXIgZGF0YURlZiA9IHt9O1xuICBkYXRhRGVmLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX2RhdGEgfTtcbiAgdmFyIHByb3BzRGVmID0ge307XG4gIHByb3BzRGVmLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX3Byb3BzIH07XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgZGF0YURlZi5zZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnQXZvaWQgcmVwbGFjaW5nIGluc3RhbmNlIHJvb3QgJGRhdGEuICcgK1xuICAgICAgICAnVXNlIG5lc3RlZCBkYXRhIHByb3BlcnRpZXMgaW5zdGVhZC4nLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgIH07XG4gICAgcHJvcHNEZWYuc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2FybihcIiRwcm9wcyBpcyByZWFkb25seS5cIiwgdGhpcyk7XG4gICAgfTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLnByb3RvdHlwZSwgJyRkYXRhJywgZGF0YURlZik7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUucHJvdG90eXBlLCAnJHByb3BzJywgcHJvcHNEZWYpO1xuXG4gIFZ1ZS5wcm90b3R5cGUuJHNldCA9IHNldDtcbiAgVnVlLnByb3RvdHlwZS4kZGVsZXRlID0gZGVsO1xuXG4gIFZ1ZS5wcm90b3R5cGUuJHdhdGNoID0gZnVuY3Rpb24gKFxuICAgIGV4cE9yRm4sXG4gICAgY2IsXG4gICAgb3B0aW9uc1xuICApIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmIChpc1BsYWluT2JqZWN0KGNiKSkge1xuICAgICAgcmV0dXJuIGNyZWF0ZVdhdGNoZXIodm0sIGV4cE9yRm4sIGNiLCBvcHRpb25zKVxuICAgIH1cbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICBvcHRpb25zLnVzZXIgPSB0cnVlO1xuICAgIHZhciB3YXRjaGVyID0gbmV3IFdhdGNoZXIodm0sIGV4cE9yRm4sIGNiLCBvcHRpb25zKTtcbiAgICBpZiAob3B0aW9ucy5pbW1lZGlhdGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNiLmNhbGwodm0sIHdhdGNoZXIudmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IsIHZtLCAoXCJjYWxsYmFjayBmb3IgaW1tZWRpYXRlIHdhdGNoZXIgXFxcIlwiICsgKHdhdGNoZXIuZXhwcmVzc2lvbikgKyBcIlxcXCJcIikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rpb24gdW53YXRjaEZuICgpIHtcbiAgICAgIHdhdGNoZXIudGVhcmRvd24oKTtcbiAgICB9XG4gIH07XG59XG5cbi8qICAqL1xuXG52YXIgdWlkJDMgPSAwO1xuXG5mdW5jdGlvbiBpbml0TWl4aW4gKFZ1ZSkge1xuICBWdWUucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIC8vIGEgdWlkXG4gICAgdm0uX3VpZCA9IHVpZCQzKys7XG5cbiAgICB2YXIgc3RhcnRUYWcsIGVuZFRhZztcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjb25maWcucGVyZm9ybWFuY2UgJiYgbWFyaykge1xuICAgICAgc3RhcnRUYWcgPSBcInZ1ZS1wZXJmLXN0YXJ0OlwiICsgKHZtLl91aWQpO1xuICAgICAgZW5kVGFnID0gXCJ2dWUtcGVyZi1lbmQ6XCIgKyAodm0uX3VpZCk7XG4gICAgICBtYXJrKHN0YXJ0VGFnKTtcbiAgICB9XG5cbiAgICAvLyBhIGZsYWcgdG8gYXZvaWQgdGhpcyBiZWluZyBvYnNlcnZlZFxuICAgIHZtLl9pc1Z1ZSA9IHRydWU7XG4gICAgLy8gbWVyZ2Ugb3B0aW9uc1xuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuX2lzQ29tcG9uZW50KSB7XG4gICAgICAvLyBvcHRpbWl6ZSBpbnRlcm5hbCBjb21wb25lbnQgaW5zdGFudGlhdGlvblxuICAgICAgLy8gc2luY2UgZHluYW1pYyBvcHRpb25zIG1lcmdpbmcgaXMgcHJldHR5IHNsb3csIGFuZCBub25lIG9mIHRoZVxuICAgICAgLy8gaW50ZXJuYWwgY29tcG9uZW50IG9wdGlvbnMgbmVlZHMgc3BlY2lhbCB0cmVhdG1lbnQuXG4gICAgICBpbml0SW50ZXJuYWxDb21wb25lbnQodm0sIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bS4kb3B0aW9ucyA9IG1lcmdlT3B0aW9ucyhcbiAgICAgICAgcmVzb2x2ZUNvbnN0cnVjdG9yT3B0aW9ucyh2bS5jb25zdHJ1Y3RvciksXG4gICAgICAgIG9wdGlvbnMgfHwge30sXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpbml0UHJveHkodm0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bS5fcmVuZGVyUHJveHkgPSB2bTtcbiAgICB9XG4gICAgLy8gZXhwb3NlIHJlYWwgc2VsZlxuICAgIHZtLl9zZWxmID0gdm07XG4gICAgaW5pdExpZmVjeWNsZSh2bSk7XG4gICAgaW5pdEV2ZW50cyh2bSk7XG4gICAgaW5pdFJlbmRlcih2bSk7XG4gICAgY2FsbEhvb2sodm0sICdiZWZvcmVDcmVhdGUnKTtcbiAgICAhdm0uXyRmYWxsYmFjayAmJiBpbml0SW5qZWN0aW9ucyh2bSk7IC8vIHJlc29sdmUgaW5qZWN0aW9ucyBiZWZvcmUgZGF0YS9wcm9wc1xuICAgIGluaXRTdGF0ZSh2bSk7XG4gICAgIXZtLl8kZmFsbGJhY2sgJiYgaW5pdFByb3ZpZGUodm0pOyAvLyByZXNvbHZlIHByb3ZpZGUgYWZ0ZXIgZGF0YS9wcm9wc1xuICAgICF2bS5fJGZhbGxiYWNrICYmIGNhbGxIb29rKHZtLCAnY3JlYXRlZCcpO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY29uZmlnLnBlcmZvcm1hbmNlICYmIG1hcmspIHtcbiAgICAgIHZtLl9uYW1lID0gZm9ybWF0Q29tcG9uZW50TmFtZSh2bSwgZmFsc2UpO1xuICAgICAgbWFyayhlbmRUYWcpO1xuICAgICAgbWVhc3VyZSgoXCJ2dWUgXCIgKyAodm0uX25hbWUpICsgXCIgaW5pdFwiKSwgc3RhcnRUYWcsIGVuZFRhZyk7XG4gICAgfVxuXG4gICAgaWYgKHZtLiRvcHRpb25zLmVsKSB7XG4gICAgICB2bS4kbW91bnQodm0uJG9wdGlvbnMuZWwpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gaW5pdEludGVybmFsQ29tcG9uZW50ICh2bSwgb3B0aW9ucykge1xuICB2YXIgb3B0cyA9IHZtLiRvcHRpb25zID0gT2JqZWN0LmNyZWF0ZSh2bS5jb25zdHJ1Y3Rvci5vcHRpb25zKTtcbiAgLy8gZG9pbmcgdGhpcyBiZWNhdXNlIGl0J3MgZmFzdGVyIHRoYW4gZHluYW1pYyBlbnVtZXJhdGlvbi5cbiAgdmFyIHBhcmVudFZub2RlID0gb3B0aW9ucy5fcGFyZW50Vm5vZGU7XG4gIG9wdHMucGFyZW50ID0gb3B0aW9ucy5wYXJlbnQ7XG4gIG9wdHMuX3BhcmVudFZub2RlID0gcGFyZW50Vm5vZGU7XG5cbiAgdmFyIHZub2RlQ29tcG9uZW50T3B0aW9ucyA9IHBhcmVudFZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gIG9wdHMucHJvcHNEYXRhID0gdm5vZGVDb21wb25lbnRPcHRpb25zLnByb3BzRGF0YTtcbiAgb3B0cy5fcGFyZW50TGlzdGVuZXJzID0gdm5vZGVDb21wb25lbnRPcHRpb25zLmxpc3RlbmVycztcbiAgb3B0cy5fcmVuZGVyQ2hpbGRyZW4gPSB2bm9kZUNvbXBvbmVudE9wdGlvbnMuY2hpbGRyZW47XG4gIG9wdHMuX2NvbXBvbmVudFRhZyA9IHZub2RlQ29tcG9uZW50T3B0aW9ucy50YWc7XG5cbiAgaWYgKG9wdGlvbnMucmVuZGVyKSB7XG4gICAgb3B0cy5yZW5kZXIgPSBvcHRpb25zLnJlbmRlcjtcbiAgICBvcHRzLnN0YXRpY1JlbmRlckZucyA9IG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnMgKEN0b3IpIHtcbiAgdmFyIG9wdGlvbnMgPSBDdG9yLm9wdGlvbnM7XG4gIGlmIChDdG9yLnN1cGVyKSB7XG4gICAgdmFyIHN1cGVyT3B0aW9ucyA9IHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnMoQ3Rvci5zdXBlcik7XG4gICAgdmFyIGNhY2hlZFN1cGVyT3B0aW9ucyA9IEN0b3Iuc3VwZXJPcHRpb25zO1xuICAgIGlmIChzdXBlck9wdGlvbnMgIT09IGNhY2hlZFN1cGVyT3B0aW9ucykge1xuICAgICAgLy8gc3VwZXIgb3B0aW9uIGNoYW5nZWQsXG4gICAgICAvLyBuZWVkIHRvIHJlc29sdmUgbmV3IG9wdGlvbnMuXG4gICAgICBDdG9yLnN1cGVyT3B0aW9ucyA9IHN1cGVyT3B0aW9ucztcbiAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgbGF0ZS1tb2RpZmllZC9hdHRhY2hlZCBvcHRpb25zICgjNDk3NilcbiAgICAgIHZhciBtb2RpZmllZE9wdGlvbnMgPSByZXNvbHZlTW9kaWZpZWRPcHRpb25zKEN0b3IpO1xuICAgICAgLy8gdXBkYXRlIGJhc2UgZXh0ZW5kIG9wdGlvbnNcbiAgICAgIGlmIChtb2RpZmllZE9wdGlvbnMpIHtcbiAgICAgICAgZXh0ZW5kKEN0b3IuZXh0ZW5kT3B0aW9ucywgbW9kaWZpZWRPcHRpb25zKTtcbiAgICAgIH1cbiAgICAgIG9wdGlvbnMgPSBDdG9yLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoc3VwZXJPcHRpb25zLCBDdG9yLmV4dGVuZE9wdGlvbnMpO1xuICAgICAgaWYgKG9wdGlvbnMubmFtZSkge1xuICAgICAgICBvcHRpb25zLmNvbXBvbmVudHNbb3B0aW9ucy5uYW1lXSA9IEN0b3I7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVNb2RpZmllZE9wdGlvbnMgKEN0b3IpIHtcbiAgdmFyIG1vZGlmaWVkO1xuICB2YXIgbGF0ZXN0ID0gQ3Rvci5vcHRpb25zO1xuICB2YXIgc2VhbGVkID0gQ3Rvci5zZWFsZWRPcHRpb25zO1xuICBmb3IgKHZhciBrZXkgaW4gbGF0ZXN0KSB7XG4gICAgaWYgKGxhdGVzdFtrZXldICE9PSBzZWFsZWRba2V5XSkge1xuICAgICAgaWYgKCFtb2RpZmllZCkgeyBtb2RpZmllZCA9IHt9OyB9XG4gICAgICBtb2RpZmllZFtrZXldID0gbGF0ZXN0W2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiBtb2RpZmllZFxufVxuXG5mdW5jdGlvbiBWdWUgKG9wdGlvbnMpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAhKHRoaXMgaW5zdGFuY2VvZiBWdWUpXG4gICkge1xuICAgIHdhcm4oJ1Z1ZSBpcyBhIGNvbnN0cnVjdG9yIGFuZCBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhlIGBuZXdgIGtleXdvcmQnKTtcbiAgfVxuICB0aGlzLl9pbml0KG9wdGlvbnMpO1xufVxuXG5pbml0TWl4aW4oVnVlKTtcbnN0YXRlTWl4aW4oVnVlKTtcbmV2ZW50c01peGluKFZ1ZSk7XG5saWZlY3ljbGVNaXhpbihWdWUpO1xucmVuZGVyTWl4aW4oVnVlKTtcblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRVc2UgKFZ1ZSkge1xuICBWdWUudXNlID0gZnVuY3Rpb24gKHBsdWdpbikge1xuICAgIHZhciBpbnN0YWxsZWRQbHVnaW5zID0gKHRoaXMuX2luc3RhbGxlZFBsdWdpbnMgfHwgKHRoaXMuX2luc3RhbGxlZFBsdWdpbnMgPSBbXSkpO1xuICAgIGlmIChpbnN0YWxsZWRQbHVnaW5zLmluZGV4T2YocGx1Z2luKSA+IC0xKSB7XG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cblxuICAgIC8vIGFkZGl0aW9uYWwgcGFyYW1ldGVyc1xuICAgIHZhciBhcmdzID0gdG9BcnJheShhcmd1bWVudHMsIDEpO1xuICAgIGFyZ3MudW5zaGlmdCh0aGlzKTtcbiAgICBpZiAodHlwZW9mIHBsdWdpbi5pbnN0YWxsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwbHVnaW4uaW5zdGFsbC5hcHBseShwbHVnaW4sIGFyZ3MpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHBsdWdpbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGx1Z2luLmFwcGx5KG51bGwsIGFyZ3MpO1xuICAgIH1cbiAgICBpbnN0YWxsZWRQbHVnaW5zLnB1c2gocGx1Z2luKTtcbiAgICByZXR1cm4gdGhpc1xuICB9O1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdE1peGluJDEgKFZ1ZSkge1xuICBWdWUubWl4aW4gPSBmdW5jdGlvbiAobWl4aW4pIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBtZXJnZU9wdGlvbnModGhpcy5vcHRpb25zLCBtaXhpbik7XG4gICAgcmV0dXJuIHRoaXNcbiAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRFeHRlbmQgKFZ1ZSkge1xuICAvKipcbiAgICogRWFjaCBpbnN0YW5jZSBjb25zdHJ1Y3RvciwgaW5jbHVkaW5nIFZ1ZSwgaGFzIGEgdW5pcXVlXG4gICAqIGNpZC4gVGhpcyBlbmFibGVzIHVzIHRvIGNyZWF0ZSB3cmFwcGVkIFwiY2hpbGRcbiAgICogY29uc3RydWN0b3JzXCIgZm9yIHByb3RvdHlwYWwgaW5oZXJpdGFuY2UgYW5kIGNhY2hlIHRoZW0uXG4gICAqL1xuICBWdWUuY2lkID0gMDtcbiAgdmFyIGNpZCA9IDE7XG5cbiAgLyoqXG4gICAqIENsYXNzIGluaGVyaXRhbmNlXG4gICAqL1xuICBWdWUuZXh0ZW5kID0gZnVuY3Rpb24gKGV4dGVuZE9wdGlvbnMpIHtcbiAgICBleHRlbmRPcHRpb25zID0gZXh0ZW5kT3B0aW9ucyB8fCB7fTtcbiAgICB2YXIgU3VwZXIgPSB0aGlzO1xuICAgIHZhciBTdXBlcklkID0gU3VwZXIuY2lkO1xuICAgIHZhciBjYWNoZWRDdG9ycyA9IGV4dGVuZE9wdGlvbnMuX0N0b3IgfHwgKGV4dGVuZE9wdGlvbnMuX0N0b3IgPSB7fSk7XG4gICAgaWYgKGNhY2hlZEN0b3JzW1N1cGVySWRdKSB7XG4gICAgICByZXR1cm4gY2FjaGVkQ3RvcnNbU3VwZXJJZF1cbiAgICB9XG5cbiAgICB2YXIgbmFtZSA9IGV4dGVuZE9wdGlvbnMubmFtZSB8fCBTdXBlci5vcHRpb25zLm5hbWU7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgbmFtZSkge1xuICAgICAgdmFsaWRhdGVDb21wb25lbnROYW1lKG5hbWUpO1xuICAgIH1cblxuICAgIHZhciBTdWIgPSBmdW5jdGlvbiBWdWVDb21wb25lbnQgKG9wdGlvbnMpIHtcbiAgICAgIHRoaXMuX2luaXQob3B0aW9ucyk7XG4gICAgfTtcbiAgICBTdWIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTdXBlci5wcm90b3R5cGUpO1xuICAgIFN1Yi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTdWI7XG4gICAgU3ViLmNpZCA9IGNpZCsrO1xuICAgIFN1Yi5vcHRpb25zID0gbWVyZ2VPcHRpb25zKFxuICAgICAgU3VwZXIub3B0aW9ucyxcbiAgICAgIGV4dGVuZE9wdGlvbnNcbiAgICApO1xuICAgIFN1Ylsnc3VwZXInXSA9IFN1cGVyO1xuXG4gICAgLy8gRm9yIHByb3BzIGFuZCBjb21wdXRlZCBwcm9wZXJ0aWVzLCB3ZSBkZWZpbmUgdGhlIHByb3h5IGdldHRlcnMgb25cbiAgICAvLyB0aGUgVnVlIGluc3RhbmNlcyBhdCBleHRlbnNpb24gdGltZSwgb24gdGhlIGV4dGVuZGVkIHByb3RvdHlwZS4gVGhpc1xuICAgIC8vIGF2b2lkcyBPYmplY3QuZGVmaW5lUHJvcGVydHkgY2FsbHMgZm9yIGVhY2ggaW5zdGFuY2UgY3JlYXRlZC5cbiAgICBpZiAoU3ViLm9wdGlvbnMucHJvcHMpIHtcbiAgICAgIGluaXRQcm9wcyQxKFN1Yik7XG4gICAgfVxuICAgIGlmIChTdWIub3B0aW9ucy5jb21wdXRlZCkge1xuICAgICAgaW5pdENvbXB1dGVkJDEoU3ViKTtcbiAgICB9XG5cbiAgICAvLyBhbGxvdyBmdXJ0aGVyIGV4dGVuc2lvbi9taXhpbi9wbHVnaW4gdXNhZ2VcbiAgICBTdWIuZXh0ZW5kID0gU3VwZXIuZXh0ZW5kO1xuICAgIFN1Yi5taXhpbiA9IFN1cGVyLm1peGluO1xuICAgIFN1Yi51c2UgPSBTdXBlci51c2U7XG5cbiAgICAvLyBjcmVhdGUgYXNzZXQgcmVnaXN0ZXJzLCBzbyBleHRlbmRlZCBjbGFzc2VzXG4gICAgLy8gY2FuIGhhdmUgdGhlaXIgcHJpdmF0ZSBhc3NldHMgdG9vLlxuICAgIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgIFN1Ylt0eXBlXSA9IFN1cGVyW3R5cGVdO1xuICAgIH0pO1xuICAgIC8vIGVuYWJsZSByZWN1cnNpdmUgc2VsZi1sb29rdXBcbiAgICBpZiAobmFtZSkge1xuICAgICAgU3ViLm9wdGlvbnMuY29tcG9uZW50c1tuYW1lXSA9IFN1YjtcbiAgICB9XG5cbiAgICAvLyBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBzdXBlciBvcHRpb25zIGF0IGV4dGVuc2lvbiB0aW1lLlxuICAgIC8vIGxhdGVyIGF0IGluc3RhbnRpYXRpb24gd2UgY2FuIGNoZWNrIGlmIFN1cGVyJ3Mgb3B0aW9ucyBoYXZlXG4gICAgLy8gYmVlbiB1cGRhdGVkLlxuICAgIFN1Yi5zdXBlck9wdGlvbnMgPSBTdXBlci5vcHRpb25zO1xuICAgIFN1Yi5leHRlbmRPcHRpb25zID0gZXh0ZW5kT3B0aW9ucztcbiAgICBTdWIuc2VhbGVkT3B0aW9ucyA9IGV4dGVuZCh7fSwgU3ViLm9wdGlvbnMpO1xuXG4gICAgLy8gY2FjaGUgY29uc3RydWN0b3JcbiAgICBjYWNoZWRDdG9yc1tTdXBlcklkXSA9IFN1YjtcbiAgICByZXR1cm4gU3ViXG4gIH07XG59XG5cbmZ1bmN0aW9uIGluaXRQcm9wcyQxIChDb21wKSB7XG4gIHZhciBwcm9wcyA9IENvbXAub3B0aW9ucy5wcm9wcztcbiAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgcHJveHkoQ29tcC5wcm90b3R5cGUsIFwiX3Byb3BzXCIsIGtleSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdENvbXB1dGVkJDEgKENvbXApIHtcbiAgdmFyIGNvbXB1dGVkID0gQ29tcC5vcHRpb25zLmNvbXB1dGVkO1xuICBmb3IgKHZhciBrZXkgaW4gY29tcHV0ZWQpIHtcbiAgICBkZWZpbmVDb21wdXRlZChDb21wLnByb3RvdHlwZSwga2V5LCBjb21wdXRlZFtrZXldKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdEFzc2V0UmVnaXN0ZXJzIChWdWUpIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhc3NldCByZWdpc3RyYXRpb24gbWV0aG9kcy5cbiAgICovXG4gIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICBWdWVbdHlwZV0gPSBmdW5jdGlvbiAoXG4gICAgICBpZCxcbiAgICAgIGRlZmluaXRpb25cbiAgICApIHtcbiAgICAgIGlmICghZGVmaW5pdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zW3R5cGUgKyAncyddW2lkXVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHR5cGUgPT09ICdjb21wb25lbnQnKSB7XG4gICAgICAgICAgdmFsaWRhdGVDb21wb25lbnROYW1lKGlkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbXBvbmVudCcgJiYgaXNQbGFpbk9iamVjdChkZWZpbml0aW9uKSkge1xuICAgICAgICAgIGRlZmluaXRpb24ubmFtZSA9IGRlZmluaXRpb24ubmFtZSB8fCBpZDtcbiAgICAgICAgICBkZWZpbml0aW9uID0gdGhpcy5vcHRpb25zLl9iYXNlLmV4dGVuZChkZWZpbml0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2RpcmVjdGl2ZScgJiYgdHlwZW9mIGRlZmluaXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBkZWZpbml0aW9uID0geyBiaW5kOiBkZWZpbml0aW9uLCB1cGRhdGU6IGRlZmluaXRpb24gfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wdGlvbnNbdHlwZSArICdzJ11baWRdID0gZGVmaW5pdGlvbjtcbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb25cbiAgICAgIH1cbiAgICB9O1xuICB9KTtcbn1cblxuLyogICovXG5cblxuXG5mdW5jdGlvbiBnZXRDb21wb25lbnROYW1lIChvcHRzKSB7XG4gIHJldHVybiBvcHRzICYmIChvcHRzLkN0b3Iub3B0aW9ucy5uYW1lIHx8IG9wdHMudGFnKVxufVxuXG5mdW5jdGlvbiBtYXRjaGVzIChwYXR0ZXJuLCBuYW1lKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHBhdHRlcm4pKSB7XG4gICAgcmV0dXJuIHBhdHRlcm4uaW5kZXhPZihuYW1lKSA+IC0xXG4gIH0gZWxzZSBpZiAodHlwZW9mIHBhdHRlcm4gPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBhdHRlcm4uc3BsaXQoJywnKS5pbmRleE9mKG5hbWUpID4gLTFcbiAgfSBlbHNlIGlmIChpc1JlZ0V4cChwYXR0ZXJuKSkge1xuICAgIHJldHVybiBwYXR0ZXJuLnRlc3QobmFtZSlcbiAgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gcHJ1bmVDYWNoZSAoa2VlcEFsaXZlSW5zdGFuY2UsIGZpbHRlcikge1xuICB2YXIgY2FjaGUgPSBrZWVwQWxpdmVJbnN0YW5jZS5jYWNoZTtcbiAgdmFyIGtleXMgPSBrZWVwQWxpdmVJbnN0YW5jZS5rZXlzO1xuICB2YXIgX3Zub2RlID0ga2VlcEFsaXZlSW5zdGFuY2UuX3Zub2RlO1xuICBmb3IgKHZhciBrZXkgaW4gY2FjaGUpIHtcbiAgICB2YXIgY2FjaGVkTm9kZSA9IGNhY2hlW2tleV07XG4gICAgaWYgKGNhY2hlZE5vZGUpIHtcbiAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZShjYWNoZWROb2RlLmNvbXBvbmVudE9wdGlvbnMpO1xuICAgICAgaWYgKG5hbWUgJiYgIWZpbHRlcihuYW1lKSkge1xuICAgICAgICBwcnVuZUNhY2hlRW50cnkoY2FjaGUsIGtleSwga2V5cywgX3Zub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJ1bmVDYWNoZUVudHJ5IChcbiAgY2FjaGUsXG4gIGtleSxcbiAga2V5cyxcbiAgY3VycmVudFxuKSB7XG4gIHZhciBjYWNoZWQkJDEgPSBjYWNoZVtrZXldO1xuICBpZiAoY2FjaGVkJCQxICYmICghY3VycmVudCB8fCBjYWNoZWQkJDEudGFnICE9PSBjdXJyZW50LnRhZykpIHtcbiAgICBjYWNoZWQkJDEuY29tcG9uZW50SW5zdGFuY2UuJGRlc3Ryb3koKTtcbiAgfVxuICBjYWNoZVtrZXldID0gbnVsbDtcbiAgcmVtb3ZlKGtleXMsIGtleSk7XG59XG5cbnZhciBwYXR0ZXJuVHlwZXMgPSBbU3RyaW5nLCBSZWdFeHAsIEFycmF5XTtcblxudmFyIEtlZXBBbGl2ZSA9IHtcbiAgbmFtZTogJ2tlZXAtYWxpdmUnLFxuICBhYnN0cmFjdDogdHJ1ZSxcblxuICBwcm9wczoge1xuICAgIGluY2x1ZGU6IHBhdHRlcm5UeXBlcyxcbiAgICBleGNsdWRlOiBwYXR0ZXJuVHlwZXMsXG4gICAgbWF4OiBbU3RyaW5nLCBOdW1iZXJdXG4gIH0sXG5cbiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCAoKSB7XG4gICAgdGhpcy5jYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdGhpcy5rZXlzID0gW107XG4gIH0sXG5cbiAgZGVzdHJveWVkOiBmdW5jdGlvbiBkZXN0cm95ZWQgKCkge1xuICAgIGZvciAodmFyIGtleSBpbiB0aGlzLmNhY2hlKSB7XG4gICAgICBwcnVuZUNhY2hlRW50cnkodGhpcy5jYWNoZSwga2V5LCB0aGlzLmtleXMpO1xuICAgIH1cbiAgfSxcblxuICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkICgpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAgIHRoaXMuJHdhdGNoKCdpbmNsdWRlJywgZnVuY3Rpb24gKHZhbCkge1xuICAgICAgcHJ1bmVDYWNoZSh0aGlzJDEsIGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiBtYXRjaGVzKHZhbCwgbmFtZSk7IH0pO1xuICAgIH0pO1xuICAgIHRoaXMuJHdhdGNoKCdleGNsdWRlJywgZnVuY3Rpb24gKHZhbCkge1xuICAgICAgcHJ1bmVDYWNoZSh0aGlzJDEsIGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiAhbWF0Y2hlcyh2YWwsIG5hbWUpOyB9KTtcbiAgICB9KTtcbiAgfSxcblxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoKSB7XG4gICAgdmFyIHNsb3QgPSB0aGlzLiRzbG90cy5kZWZhdWx0O1xuICAgIHZhciB2bm9kZSA9IGdldEZpcnN0Q29tcG9uZW50Q2hpbGQoc2xvdCk7XG4gICAgdmFyIGNvbXBvbmVudE9wdGlvbnMgPSB2bm9kZSAmJiB2bm9kZS5jb21wb25lbnRPcHRpb25zO1xuICAgIGlmIChjb21wb25lbnRPcHRpb25zKSB7XG4gICAgICAvLyBjaGVjayBwYXR0ZXJuXG4gICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWUoY29tcG9uZW50T3B0aW9ucyk7XG4gICAgICB2YXIgcmVmID0gdGhpcztcbiAgICAgIHZhciBpbmNsdWRlID0gcmVmLmluY2x1ZGU7XG4gICAgICB2YXIgZXhjbHVkZSA9IHJlZi5leGNsdWRlO1xuICAgICAgaWYgKFxuICAgICAgICAvLyBub3QgaW5jbHVkZWRcbiAgICAgICAgKGluY2x1ZGUgJiYgKCFuYW1lIHx8ICFtYXRjaGVzKGluY2x1ZGUsIG5hbWUpKSkgfHxcbiAgICAgICAgLy8gZXhjbHVkZWRcbiAgICAgICAgKGV4Y2x1ZGUgJiYgbmFtZSAmJiBtYXRjaGVzKGV4Y2x1ZGUsIG5hbWUpKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB2bm9kZVxuICAgICAgfVxuXG4gICAgICB2YXIgcmVmJDEgPSB0aGlzO1xuICAgICAgdmFyIGNhY2hlID0gcmVmJDEuY2FjaGU7XG4gICAgICB2YXIga2V5cyA9IHJlZiQxLmtleXM7XG4gICAgICB2YXIga2V5ID0gdm5vZGUua2V5ID09IG51bGxcbiAgICAgICAgLy8gc2FtZSBjb25zdHJ1Y3RvciBtYXkgZ2V0IHJlZ2lzdGVyZWQgYXMgZGlmZmVyZW50IGxvY2FsIGNvbXBvbmVudHNcbiAgICAgICAgLy8gc28gY2lkIGFsb25lIGlzIG5vdCBlbm91Z2ggKCMzMjY5KVxuICAgICAgICA/IGNvbXBvbmVudE9wdGlvbnMuQ3Rvci5jaWQgKyAoY29tcG9uZW50T3B0aW9ucy50YWcgPyAoXCI6OlwiICsgKGNvbXBvbmVudE9wdGlvbnMudGFnKSkgOiAnJylcbiAgICAgICAgOiB2bm9kZS5rZXk7XG4gICAgICBpZiAoY2FjaGVba2V5XSkge1xuICAgICAgICB2bm9kZS5jb21wb25lbnRJbnN0YW5jZSA9IGNhY2hlW2tleV0uY29tcG9uZW50SW5zdGFuY2U7XG4gICAgICAgIC8vIG1ha2UgY3VycmVudCBrZXkgZnJlc2hlc3RcbiAgICAgICAgcmVtb3ZlKGtleXMsIGtleSk7XG4gICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FjaGVba2V5XSA9IHZub2RlO1xuICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgLy8gcHJ1bmUgb2xkZXN0IGVudHJ5XG4gICAgICAgIGlmICh0aGlzLm1heCAmJiBrZXlzLmxlbmd0aCA+IHBhcnNlSW50KHRoaXMubWF4KSkge1xuICAgICAgICAgIHBydW5lQ2FjaGVFbnRyeShjYWNoZSwga2V5c1swXSwga2V5cywgdGhpcy5fdm5vZGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZub2RlLmRhdGEua2VlcEFsaXZlID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHZub2RlIHx8IChzbG90ICYmIHNsb3RbMF0pXG4gIH1cbn07XG5cbnZhciBidWlsdEluQ29tcG9uZW50cyA9IHtcbiAgS2VlcEFsaXZlOiBLZWVwQWxpdmVcbn07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0R2xvYmFsQVBJIChWdWUpIHtcbiAgLy8gY29uZmlnXG4gIHZhciBjb25maWdEZWYgPSB7fTtcbiAgY29uZmlnRGVmLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNvbmZpZzsgfTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjb25maWdEZWYuc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2FybihcbiAgICAgICAgJ0RvIG5vdCByZXBsYWNlIHRoZSBWdWUuY29uZmlnIG9iamVjdCwgc2V0IGluZGl2aWR1YWwgZmllbGRzIGluc3RlYWQuJ1xuICAgICAgKTtcbiAgICB9O1xuICB9XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUsICdjb25maWcnLCBjb25maWdEZWYpO1xuXG4gIC8vIGV4cG9zZWQgdXRpbCBtZXRob2RzLlxuICAvLyBOT1RFOiB0aGVzZSBhcmUgbm90IGNvbnNpZGVyZWQgcGFydCBvZiB0aGUgcHVibGljIEFQSSAtIGF2b2lkIHJlbHlpbmcgb25cbiAgLy8gdGhlbSB1bmxlc3MgeW91IGFyZSBhd2FyZSBvZiB0aGUgcmlzay5cbiAgVnVlLnV0aWwgPSB7XG4gICAgd2Fybjogd2FybixcbiAgICBleHRlbmQ6IGV4dGVuZCxcbiAgICBtZXJnZU9wdGlvbnM6IG1lcmdlT3B0aW9ucyxcbiAgICBkZWZpbmVSZWFjdGl2ZTogZGVmaW5lUmVhY3RpdmUkJDFcbiAgfTtcblxuICBWdWUuc2V0ID0gc2V0O1xuICBWdWUuZGVsZXRlID0gZGVsO1xuICBWdWUubmV4dFRpY2sgPSBuZXh0VGljaztcblxuICAvLyAyLjYgZXhwbGljaXQgb2JzZXJ2YWJsZSBBUElcbiAgVnVlLm9ic2VydmFibGUgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgb2JzZXJ2ZShvYmopO1xuICAgIHJldHVybiBvYmpcbiAgfTtcblxuICBWdWUub3B0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIEFTU0VUX1RZUEVTLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICBWdWUub3B0aW9uc1t0eXBlICsgJ3MnXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIH0pO1xuXG4gIC8vIHRoaXMgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUgXCJiYXNlXCIgY29uc3RydWN0b3IgdG8gZXh0ZW5kIGFsbCBwbGFpbi1vYmplY3RcbiAgLy8gY29tcG9uZW50cyB3aXRoIGluIFdlZXgncyBtdWx0aS1pbnN0YW5jZSBzY2VuYXJpb3MuXG4gIFZ1ZS5vcHRpb25zLl9iYXNlID0gVnVlO1xuXG4gIGV4dGVuZChWdWUub3B0aW9ucy5jb21wb25lbnRzLCBidWlsdEluQ29tcG9uZW50cyk7XG5cbiAgaW5pdFVzZShWdWUpO1xuICBpbml0TWl4aW4kMShWdWUpO1xuICBpbml0RXh0ZW5kKFZ1ZSk7XG4gIGluaXRBc3NldFJlZ2lzdGVycyhWdWUpO1xufVxuXG5pbml0R2xvYmFsQVBJKFZ1ZSk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUucHJvdG90eXBlLCAnJGlzU2VydmVyJywge1xuICBnZXQ6IGlzU2VydmVyUmVuZGVyaW5nXG59KTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZS5wcm90b3R5cGUsICckc3NyQ29udGV4dCcsIHtcbiAgZ2V0OiBmdW5jdGlvbiBnZXQgKCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHRcbiAgfVxufSk7XG5cbi8vIGV4cG9zZSBGdW5jdGlvbmFsUmVuZGVyQ29udGV4dCBmb3Igc3NyIHJ1bnRpbWUgaGVscGVyIGluc3RhbGxhdGlvblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZSwgJ0Z1bmN0aW9uYWxSZW5kZXJDb250ZXh0Jywge1xuICB2YWx1ZTogRnVuY3Rpb25hbFJlbmRlckNvbnRleHRcbn0pO1xuXG5WdWUudmVyc2lvbiA9ICcyLjYuMTEnO1xuXG4vKipcbiAqIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9UZW5jZW50L3dlc3RvcmUvbWFzdGVyL3BhY2thZ2VzL3dlc3RvcmUvdXRpbHMvZGlmZi5qc1xuICovXG52YXIgQVJSQVlUWVBFID0gJ1tvYmplY3QgQXJyYXldJztcbnZhciBPQkpFQ1RUWVBFID0gJ1tvYmplY3QgT2JqZWN0XSc7XG4vLyBjb25zdCBGVU5DVElPTlRZUEUgPSAnW29iamVjdCBGdW5jdGlvbl0nXG5cbmZ1bmN0aW9uIGRpZmYoY3VycmVudCwgcHJlKSB7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIHN5bmNLZXlzKGN1cnJlbnQsIHByZSk7XG4gICAgX2RpZmYoY3VycmVudCwgcHJlLCAnJywgcmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIHN5bmNLZXlzKGN1cnJlbnQsIHByZSkge1xuICAgIGlmIChjdXJyZW50ID09PSBwcmUpIHsgcmV0dXJuIH1cbiAgICB2YXIgcm9vdEN1cnJlbnRUeXBlID0gdHlwZShjdXJyZW50KTtcbiAgICB2YXIgcm9vdFByZVR5cGUgPSB0eXBlKHByZSk7XG4gICAgaWYgKHJvb3RDdXJyZW50VHlwZSA9PSBPQkpFQ1RUWVBFICYmIHJvb3RQcmVUeXBlID09IE9CSkVDVFRZUEUpIHtcbiAgICAgICAgaWYoT2JqZWN0LmtleXMoY3VycmVudCkubGVuZ3RoID49IE9iamVjdC5rZXlzKHByZSkubGVuZ3RoKXtcbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBwcmUpIHtcbiAgICAgICAgICAgICAgICB2YXIgY3VycmVudFZhbHVlID0gY3VycmVudFtrZXldO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50W2tleV0gPSBudWxsO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN5bmNLZXlzKGN1cnJlbnRWYWx1ZSwgcHJlW2tleV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAocm9vdEN1cnJlbnRUeXBlID09IEFSUkFZVFlQRSAmJiByb290UHJlVHlwZSA9PSBBUlJBWVRZUEUpIHtcbiAgICAgICAgaWYgKGN1cnJlbnQubGVuZ3RoID49IHByZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHByZS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpbmRleCkge1xuICAgICAgICAgICAgICAgIHN5bmNLZXlzKGN1cnJlbnRbaW5kZXhdLCBpdGVtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBfZGlmZihjdXJyZW50LCBwcmUsIHBhdGgsIHJlc3VsdCkge1xuICAgIGlmIChjdXJyZW50ID09PSBwcmUpIHsgcmV0dXJuIH1cbiAgICB2YXIgcm9vdEN1cnJlbnRUeXBlID0gdHlwZShjdXJyZW50KTtcbiAgICB2YXIgcm9vdFByZVR5cGUgPSB0eXBlKHByZSk7XG4gICAgaWYgKHJvb3RDdXJyZW50VHlwZSA9PSBPQkpFQ1RUWVBFKSB7XG4gICAgICAgIGlmIChyb290UHJlVHlwZSAhPSBPQkpFQ1RUWVBFIHx8IE9iamVjdC5rZXlzKGN1cnJlbnQpLmxlbmd0aCA8IE9iamVjdC5rZXlzKHByZSkubGVuZ3RoKSB7XG4gICAgICAgICAgICBzZXRSZXN1bHQocmVzdWx0LCBwYXRoLCBjdXJyZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciBsb29wID0gZnVuY3Rpb24gKCBrZXkgKSB7XG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRWYWx1ZSA9IGN1cnJlbnRba2V5XTtcbiAgICAgICAgICAgICAgICB2YXIgcHJlVmFsdWUgPSBwcmVba2V5XTtcbiAgICAgICAgICAgICAgICB2YXIgY3VycmVudFR5cGUgPSB0eXBlKGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgdmFyIHByZVR5cGUgPSB0eXBlKHByZVZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFR5cGUgIT0gQVJSQVlUWVBFICYmIGN1cnJlbnRUeXBlICE9IE9CSkVDVFRZUEUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTk9URSDmraTlpITlsIYgIT0g5L+u5pS55Li6ICE9PeOAgua2ieWPiuWcsOaWueWkquWkmuaBkOaAlea1i+ivleS4jeWIsO+8jOWmguaenOWHuueOsOaVsOaNruWvueavlOmXrumimO+8jOWwhuWFtuS/ruaUueWbnuadpeOAglxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFZhbHVlICE9PSBwcmVba2V5XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KHJlc3VsdCwgKHBhdGggPT0gJycgPyAnJyA6IHBhdGggKyBcIi5cIikgKyBrZXksIGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRUeXBlID09IEFSUkFZVFlQRSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJlVHlwZSAhPSBBUlJBWVRZUEUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChyZXN1bHQsIChwYXRoID09ICcnID8gJycgOiBwYXRoICsgXCIuXCIpICsga2V5LCBjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZS5sZW5ndGggPCBwcmVWYWx1ZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQocmVzdWx0LCAocGF0aCA9PSAnJyA/ICcnIDogcGF0aCArIFwiLlwiKSArIGtleSwgY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFZhbHVlLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kaWZmKGl0ZW0sIHByZVZhbHVlW2luZGV4XSwgKHBhdGggPT0gJycgPyAnJyA6IHBhdGggKyBcIi5cIikgKyBrZXkgKyAnWycgKyBpbmRleCArICddJywgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFR5cGUgPT0gT0JKRUNUVFlQRSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJlVHlwZSAhPSBPQkpFQ1RUWVBFIHx8IE9iamVjdC5rZXlzKGN1cnJlbnRWYWx1ZSkubGVuZ3RoIDwgT2JqZWN0LmtleXMocHJlVmFsdWUpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KHJlc3VsdCwgKHBhdGggPT0gJycgPyAnJyA6IHBhdGggKyBcIi5cIikgKyBrZXksIGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzdWJLZXkgaW4gY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RpZmYoY3VycmVudFZhbHVlW3N1YktleV0sIHByZVZhbHVlW3N1YktleV0sIChwYXRoID09ICcnID8gJycgOiBwYXRoICsgXCIuXCIpICsga2V5ICsgJy4nICsgc3ViS2V5LCByZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIGN1cnJlbnQpIGxvb3AoIGtleSApO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChyb290Q3VycmVudFR5cGUgPT0gQVJSQVlUWVBFKSB7XG4gICAgICAgIGlmIChyb290UHJlVHlwZSAhPSBBUlJBWVRZUEUpIHtcbiAgICAgICAgICAgIHNldFJlc3VsdChyZXN1bHQsIHBhdGgsIGN1cnJlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnQubGVuZ3RoIDwgcHJlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHNldFJlc3VsdChyZXN1bHQsIHBhdGgsIGN1cnJlbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIF9kaWZmKGl0ZW0sIHByZVtpbmRleF0sIHBhdGggKyAnWycgKyBpbmRleCArICddJywgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFJlc3VsdChyZXN1bHQsIHBhdGgsIGN1cnJlbnQpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gc2V0UmVzdWx0KHJlc3VsdCwgaywgdikge1xuICAgIC8vIGlmICh0eXBlKHYpICE9IEZVTkNUSU9OVFlQRSkge1xuICAgICAgICByZXN1bHRba10gPSB2O1xuICAgIC8vIH1cbn1cblxuZnVuY3Rpb24gdHlwZShvYmopIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iailcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGZsdXNoQ2FsbGJhY2tzJDEodm0pIHtcbiAgICBpZiAodm0uX19uZXh0X3RpY2tfY2FsbGJhY2tzICYmIHZtLl9fbmV4dF90aWNrX2NhbGxiYWNrcy5sZW5ndGgpIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52LlZVRV9BUFBfREVCVUcpIHtcbiAgICAgICAgICAgIHZhciBtcEluc3RhbmNlID0gdm0uJHNjb3BlO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1snICsgKCtuZXcgRGF0ZSkgKyAnXVsnICsgKG1wSW5zdGFuY2UuaXMgfHwgbXBJbnN0YW5jZS5yb3V0ZSkgKyAnXVsnICsgdm0uX3VpZCArXG4gICAgICAgICAgICAgICAgJ106Zmx1c2hDYWxsYmFja3NbJyArIHZtLl9fbmV4dF90aWNrX2NhbGxiYWNrcy5sZW5ndGggKyAnXScpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjb3BpZXMgPSB2bS5fX25leHRfdGlja19jYWxsYmFja3Muc2xpY2UoMCk7XG4gICAgICAgIHZtLl9fbmV4dF90aWNrX2NhbGxiYWNrcy5sZW5ndGggPSAwO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvcGllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29waWVzW2ldKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGhhc1JlbmRlcldhdGNoZXIodm0pIHtcbiAgICByZXR1cm4gcXVldWUuZmluZChmdW5jdGlvbiAod2F0Y2hlcikgeyByZXR1cm4gdm0uX3dhdGNoZXIgPT09IHdhdGNoZXI7IH0pXG59XG5cbmZ1bmN0aW9uIG5leHRUaWNrJDEodm0sIGNiKSB7XG4gICAgLy8xLm5leHRUaWNrIOS5i+WJjSDlt7Igc2V0RGF0YSDkuJQgc2V0RGF0YSDov5jmnKrlm57osIPlrozmiJBcbiAgICAvLzIubmV4dFRpY2sg5LmL5YmN5a2Y5ZyoIHJlbmRlciB3YXRjaGVyXG4gICAgaWYgKCF2bS5fX25leHRfdGlja19wZW5kaW5nICYmICFoYXNSZW5kZXJXYXRjaGVyKHZtKSkge1xuICAgICAgICBpZihwcm9jZXNzLmVudi5WVUVfQVBQX0RFQlVHKXtcbiAgICAgICAgICAgIHZhciBtcEluc3RhbmNlID0gdm0uJHNjb3BlO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1snICsgKCtuZXcgRGF0ZSkgKyAnXVsnICsgKG1wSW5zdGFuY2UuaXMgfHwgbXBJbnN0YW5jZS5yb3V0ZSkgKyAnXVsnICsgdm0uX3VpZCArXG4gICAgICAgICAgICAgICAgJ106bmV4dFZ1ZVRpY2snKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dFRpY2soY2IsIHZtKVxuICAgIH1lbHNle1xuICAgICAgICBpZihwcm9jZXNzLmVudi5WVUVfQVBQX0RFQlVHKXtcbiAgICAgICAgICAgIHZhciBtcEluc3RhbmNlJDEgPSB2bS4kc2NvcGU7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnWycgKyAoK25ldyBEYXRlKSArICddWycgKyAobXBJbnN0YW5jZSQxLmlzIHx8IG1wSW5zdGFuY2UkMS5yb3V0ZSkgKyAnXVsnICsgdm0uX3VpZCArXG4gICAgICAgICAgICAgICAgJ106bmV4dE1QVGljaycpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBfcmVzb2x2ZTtcbiAgICBpZiAoIXZtLl9fbmV4dF90aWNrX2NhbGxiYWNrcykge1xuICAgICAgICB2bS5fX25leHRfdGlja19jYWxsYmFja3MgPSBbXTtcbiAgICB9XG4gICAgdm0uX19uZXh0X3RpY2tfY2FsbGJhY2tzLnB1c2goZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoY2IpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY2IuY2FsbCh2bSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sICduZXh0VGljaycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKF9yZXNvbHZlKSB7XG4gICAgICAgICAgICBfcmVzb2x2ZSh2bSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgICBpZiAoIWNiICYmIHR5cGVvZiBQcm9taXNlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICAgIF9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICAgICAgfSlcbiAgICB9XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBjbG9uZVdpdGhEYXRhKHZtKSB7XG4gIC8vIOehruS/neW9k+WJjSB2bSDmiYDmnInmlbDmja7ooqvlkIzmraVcbiAgdmFyIHJldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZhciBkYXRhS2V5cyA9IFtdLmNvbmNhdChcbiAgICBPYmplY3Qua2V5cyh2bS5fZGF0YSB8fCB7fSksXG4gICAgT2JqZWN0LmtleXModm0uX2NvbXB1dGVkV2F0Y2hlcnMgfHwge30pKTtcblxuICBkYXRhS2V5cy5yZWR1Y2UoZnVuY3Rpb24ocmV0LCBrZXkpIHtcbiAgICByZXRba2V5XSA9IHZtW2tleV07XG4gICAgcmV0dXJuIHJldFxuICB9LCByZXQpO1xuXG4gIC8vIHZ1ZS1jb21wb3NpdGlvbi1hcGlcbiAgdmFyIGNvbXBvc2l0aW9uQXBpU3RhdGUgPSB2bS5fX2NvbXBvc2l0aW9uX2FwaV9zdGF0ZV9fIHx8IHZtLl9fc2VjcmV0X3ZmYV9zdGF0ZV9fO1xuICB2YXIgcmF3QmluZGluZ3MgPSBjb21wb3NpdGlvbkFwaVN0YXRlICYmIGNvbXBvc2l0aW9uQXBpU3RhdGUucmF3QmluZGluZ3M7XG4gIGlmIChyYXdCaW5kaW5ncykge1xuICAgIE9iamVjdC5rZXlzKHJhd0JpbmRpbmdzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHJldFtrZXldID0gdm1ba2V5XTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vVE9ETyDpnIDopoHmiorml6DnlKjmlbDmja7lpITnkIbmjonvvIzmr5TlpoIgbGlzdD0+bDAg5YiZIGxpc3Qg6ZyA6KaB56e76Zmk77yM5ZCm5YiZ5aSa5Lyg6L6T5LiA5Lu95pWw5o2uXG4gIE9iamVjdC5hc3NpZ24ocmV0LCB2bS4kbXAuZGF0YSB8fCB7fSk7XG4gIGlmIChcbiAgICBBcnJheS5pc0FycmF5KHZtLiRvcHRpb25zLmJlaGF2aW9ycykgJiZcbiAgICB2bS4kb3B0aW9ucy5iZWhhdmlvcnMuaW5kZXhPZigndW5pOi8vZm9ybS1maWVsZCcpICE9PSAtMVxuICApIHsgLy9mb3JtLWZpZWxkXG4gICAgcmV0WyduYW1lJ10gPSB2bS5uYW1lO1xuICAgIHJldFsndmFsdWUnXSA9IHZtLnZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmV0KSlcbn1cblxudmFyIHBhdGNoID0gZnVuY3Rpb24ob2xkVm5vZGUsIHZub2RlKSB7XG4gIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIGlmICh2bm9kZSA9PT0gbnVsbCkgeyAvL2Rlc3Ryb3lcbiAgICByZXR1cm5cbiAgfVxuICBpZiAodGhpcy5tcFR5cGUgPT09ICdwYWdlJyB8fCB0aGlzLm1wVHlwZSA9PT0gJ2NvbXBvbmVudCcpIHtcbiAgICB2YXIgbXBJbnN0YW5jZSA9IHRoaXMuJHNjb3BlO1xuICAgIHZhciBkYXRhID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB0cnkge1xuICAgICAgZGF0YSA9IGNsb25lV2l0aERhdGEodGhpcyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgfVxuICAgIGRhdGEuX193ZWJ2aWV3SWRfXyA9IG1wSW5zdGFuY2UuZGF0YS5fX3dlYnZpZXdJZF9fO1xuICAgIHZhciBtcERhdGEgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIE9iamVjdC5rZXlzKGRhdGEpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyAvL+S7heWQjOatpSBkYXRhIOS4reacieeahOaVsOaNrlxuICAgICAgbXBEYXRhW2tleV0gPSBtcEluc3RhbmNlLmRhdGFba2V5XTtcbiAgICB9KTtcbiAgICB2YXIgZGlmZkRhdGEgPSB0aGlzLiRzaG91bGREaWZmRGF0YSA9PT0gZmFsc2UgPyBkYXRhIDogZGlmZihkYXRhLCBtcERhdGEpO1xuICAgIGlmIChPYmplY3Qua2V5cyhkaWZmRGF0YSkubGVuZ3RoKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuVlVFX0FQUF9ERUJVRykge1xuICAgICAgICBjb25zb2xlLmxvZygnWycgKyAoK25ldyBEYXRlKSArICddWycgKyAobXBJbnN0YW5jZS5pcyB8fCBtcEluc3RhbmNlLnJvdXRlKSArICddWycgKyB0aGlzLl91aWQgK1xuICAgICAgICAgICdd5beu6YeP5pu05pawJyxcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShkaWZmRGF0YSkpO1xuICAgICAgfVxuICAgICAgdGhpcy5fX25leHRfdGlja19wZW5kaW5nID0gdHJ1ZTtcbiAgICAgIG1wSW5zdGFuY2Uuc2V0RGF0YShkaWZmRGF0YSwgZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzJDEuX19uZXh0X3RpY2tfcGVuZGluZyA9IGZhbHNlO1xuICAgICAgICBmbHVzaENhbGxiYWNrcyQxKHRoaXMkMSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmx1c2hDYWxsYmFja3MkMSh0aGlzKTtcbiAgICB9XG4gIH1cbn07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBjcmVhdGVFbXB0eVJlbmRlcigpIHtcblxufVxuXG5mdW5jdGlvbiBtb3VudENvbXBvbmVudCQxKFxuICB2bSxcbiAgZWwsXG4gIGh5ZHJhdGluZ1xuKSB7XG4gIGlmICghdm0ubXBUeXBlKSB7Ly9tYWluLmpzIOS4reeahCBuZXcgVnVlXG4gICAgcmV0dXJuIHZtXG4gIH1cbiAgaWYgKHZtLm1wVHlwZSA9PT0gJ2FwcCcpIHtcbiAgICB2bS4kb3B0aW9ucy5yZW5kZXIgPSBjcmVhdGVFbXB0eVJlbmRlcjtcbiAgfVxuICBpZiAoIXZtLiRvcHRpb25zLnJlbmRlcikge1xuICAgIHZtLiRvcHRpb25zLnJlbmRlciA9IGNyZWF0ZUVtcHR5UmVuZGVyO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICgodm0uJG9wdGlvbnMudGVtcGxhdGUgJiYgdm0uJG9wdGlvbnMudGVtcGxhdGUuY2hhckF0KDApICE9PSAnIycpIHx8XG4gICAgICAgIHZtLiRvcHRpb25zLmVsIHx8IGVsKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ1lvdSBhcmUgdXNpbmcgdGhlIHJ1bnRpbWUtb25seSBidWlsZCBvZiBWdWUgd2hlcmUgdGhlIHRlbXBsYXRlICcgK1xuICAgICAgICAgICdjb21waWxlciBpcyBub3QgYXZhaWxhYmxlLiBFaXRoZXIgcHJlLWNvbXBpbGUgdGhlIHRlbXBsYXRlcyBpbnRvICcgK1xuICAgICAgICAgICdyZW5kZXIgZnVuY3Rpb25zLCBvciB1c2UgdGhlIGNvbXBpbGVyLWluY2x1ZGVkIGJ1aWxkLicsXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ0ZhaWxlZCB0byBtb3VudCBjb21wb25lbnQ6IHRlbXBsYXRlIG9yIHJlbmRlciBmdW5jdGlvbiBub3QgZGVmaW5lZC4nLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgIXZtLl8kZmFsbGJhY2sgJiYgY2FsbEhvb2sodm0sICdiZWZvcmVNb3VudCcpO1xuXG4gIHZhciB1cGRhdGVDb21wb25lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdm0uX3VwZGF0ZSh2bS5fcmVuZGVyKCksIGh5ZHJhdGluZyk7XG4gIH07XG5cbiAgLy8gd2Ugc2V0IHRoaXMgdG8gdm0uX3dhdGNoZXIgaW5zaWRlIHRoZSB3YXRjaGVyJ3MgY29uc3RydWN0b3JcbiAgLy8gc2luY2UgdGhlIHdhdGNoZXIncyBpbml0aWFsIHBhdGNoIG1heSBjYWxsICRmb3JjZVVwZGF0ZSAoZS5nLiBpbnNpZGUgY2hpbGRcbiAgLy8gY29tcG9uZW50J3MgbW91bnRlZCBob29rKSwgd2hpY2ggcmVsaWVzIG9uIHZtLl93YXRjaGVyIGJlaW5nIGFscmVhZHkgZGVmaW5lZFxuICBuZXcgV2F0Y2hlcih2bSwgdXBkYXRlQ29tcG9uZW50LCBub29wLCB7XG4gICAgYmVmb3JlOiBmdW5jdGlvbiBiZWZvcmUoKSB7XG4gICAgICBpZiAodm0uX2lzTW91bnRlZCAmJiAhdm0uX2lzRGVzdHJveWVkKSB7XG4gICAgICAgIGNhbGxIb29rKHZtLCAnYmVmb3JlVXBkYXRlJyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB0cnVlIC8qIGlzUmVuZGVyV2F0Y2hlciAqLyk7XG4gIGh5ZHJhdGluZyA9IGZhbHNlO1xuICByZXR1cm4gdm1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIHJlbmRlckNsYXNzIChcbiAgc3RhdGljQ2xhc3MsXG4gIGR5bmFtaWNDbGFzc1xuKSB7XG4gIGlmIChpc0RlZihzdGF0aWNDbGFzcykgfHwgaXNEZWYoZHluYW1pY0NsYXNzKSkge1xuICAgIHJldHVybiBjb25jYXQoc3RhdGljQ2xhc3MsIHN0cmluZ2lmeUNsYXNzKGR5bmFtaWNDbGFzcykpXG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuICcnXG59XG5cbmZ1bmN0aW9uIGNvbmNhdCAoYSwgYikge1xuICByZXR1cm4gYSA/IGIgPyAoYSArICcgJyArIGIpIDogYSA6IChiIHx8ICcnKVxufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlDbGFzcyAodmFsdWUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgcmV0dXJuIHN0cmluZ2lmeUFycmF5KHZhbHVlKVxuICB9XG4gIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc3RyaW5naWZ5T2JqZWN0KHZhbHVlKVxuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuICcnXG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeUFycmF5ICh2YWx1ZSkge1xuICB2YXIgcmVzID0gJyc7XG4gIHZhciBzdHJpbmdpZmllZDtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAoaXNEZWYoc3RyaW5naWZpZWQgPSBzdHJpbmdpZnlDbGFzcyh2YWx1ZVtpXSkpICYmIHN0cmluZ2lmaWVkICE9PSAnJykge1xuICAgICAgaWYgKHJlcykgeyByZXMgKz0gJyAnOyB9XG4gICAgICByZXMgKz0gc3RyaW5naWZpZWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5T2JqZWN0ICh2YWx1ZSkge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmICh2YWx1ZVtrZXldKSB7XG4gICAgICBpZiAocmVzKSB7IHJlcyArPSAnICc7IH1cbiAgICAgIHJlcyArPSBrZXk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cbnZhciBwYXJzZVN0eWxlVGV4dCA9IGNhY2hlZChmdW5jdGlvbiAoY3NzVGV4dCkge1xuICB2YXIgcmVzID0ge307XG4gIHZhciBsaXN0RGVsaW1pdGVyID0gLzsoPyFbXihdKlxcKSkvZztcbiAgdmFyIHByb3BlcnR5RGVsaW1pdGVyID0gLzooLispLztcbiAgY3NzVGV4dC5zcGxpdChsaXN0RGVsaW1pdGVyKS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHZhciB0bXAgPSBpdGVtLnNwbGl0KHByb3BlcnR5RGVsaW1pdGVyKTtcbiAgICAgIHRtcC5sZW5ndGggPiAxICYmIChyZXNbdG1wWzBdLnRyaW0oKV0gPSB0bXBbMV0udHJpbSgpKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzXG59KTtcblxuLy8gbm9ybWFsaXplIHBvc3NpYmxlIGFycmF5IC8gc3RyaW5nIHZhbHVlcyBpbnRvIE9iamVjdFxuZnVuY3Rpb24gbm9ybWFsaXplU3R5bGVCaW5kaW5nIChiaW5kaW5nU3R5bGUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYmluZGluZ1N0eWxlKSkge1xuICAgIHJldHVybiB0b09iamVjdChiaW5kaW5nU3R5bGUpXG4gIH1cbiAgaWYgKHR5cGVvZiBiaW5kaW5nU3R5bGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBhcnNlU3R5bGVUZXh0KGJpbmRpbmdTdHlsZSlcbiAgfVxuICByZXR1cm4gYmluZGluZ1N0eWxlXG59XG5cbi8qICAqL1xuXG52YXIgTVBfTUVUSE9EUyA9IFsnY3JlYXRlU2VsZWN0b3JRdWVyeScsICdjcmVhdGVJbnRlcnNlY3Rpb25PYnNlcnZlcicsICdzZWxlY3RBbGxDb21wb25lbnRzJywgJ3NlbGVjdENvbXBvbmVudCddO1xuXG5mdW5jdGlvbiBnZXRUYXJnZXQob2JqLCBwYXRoKSB7XG4gIHZhciBwYXJ0cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgdmFyIGtleSA9IHBhcnRzWzBdO1xuICBpZiAoa2V5LmluZGV4T2YoJ19fJG4nKSA9PT0gMCkgeyAvL251bWJlciBpbmRleFxuICAgIGtleSA9IHBhcnNlSW50KGtleS5yZXBsYWNlKCdfXyRuJywgJycpKTtcbiAgfVxuICBpZiAocGFydHMubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIG9ialtrZXldXG4gIH1cbiAgcmV0dXJuIGdldFRhcmdldChvYmpba2V5XSwgcGFydHMuc2xpY2UoMSkuam9pbignLicpKVxufVxuXG5mdW5jdGlvbiBpbnRlcm5hbE1peGluKFZ1ZSkge1xuXG4gIFZ1ZS5jb25maWcuZXJyb3JIYW5kbGVyID0gZnVuY3Rpb24oZXJyLCB2bSwgaW5mbykge1xuICAgIFZ1ZS51dGlsLndhcm4oKFwiRXJyb3IgaW4gXCIgKyBpbmZvICsgXCI6IFxcXCJcIiArIChlcnIudG9TdHJpbmcoKSkgKyBcIlxcXCJcIiksIHZtKTtcbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbiAgICB2YXIgYXBwID0gdHlwZW9mIGdldEFwcCA9PT0gJ2Z1bmN0aW9uJyAmJiBnZXRBcHAoKTtcbiAgICBpZiAoYXBwICYmIGFwcC5vbkVycm9yKSB7XG4gICAgICBhcHAub25FcnJvcihlcnIpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgb2xkRW1pdCA9IFZ1ZS5wcm90b3R5cGUuJGVtaXQ7XG5cbiAgVnVlLnByb3RvdHlwZS4kZW1pdCA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMuJHNjb3BlICYmIGV2ZW50KSB7XG4gICAgICAodGhpcy4kc2NvcGVbJ190cmlnZ2VyRXZlbnQnXSB8fCB0aGlzLiRzY29wZVsndHJpZ2dlckV2ZW50J10pXG4gICAgICAgIC5jYWxsKHRoaXMuJHNjb3BlLCBldmVudCwge1xuICAgICAgICAgIF9fYXJnc19fOiB0b0FycmF5KGFyZ3VtZW50cywgMSlcbiAgICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIG9sZEVtaXQuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJG5leHRUaWNrID0gZnVuY3Rpb24oZm4pIHtcbiAgICByZXR1cm4gbmV4dFRpY2skMSh0aGlzLCBmbilcbiAgfTtcblxuICBNUF9NRVRIT0RTLmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgIFZ1ZS5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKGFyZ3MpIHtcbiAgICAgIGlmICh0aGlzLiRzY29wZSAmJiB0aGlzLiRzY29wZVttZXRob2RdKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzY29wZVttZXRob2RdKGFyZ3MpXG4gICAgICB9XG4gICAgICAvLyBtcC1hbGlwYXlcbiAgICAgIGlmICh0eXBlb2YgbXkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKG1ldGhvZCA9PT0gJ2NyZWF0ZVNlbGVjdG9yUXVlcnknKSB7XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG4gICAgICAgIHJldHVybiBteS5jcmVhdGVTZWxlY3RvclF1ZXJ5KGFyZ3MpXG4gICAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PT0gJ2NyZWF0ZUludGVyc2VjdGlvbk9ic2VydmVyJykge1xuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiAqL1xuICAgICAgICByZXR1cm4gbXkuY3JlYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoYXJncylcbiAgICAgIH1cbiAgICAgIC8vIFRPRE8gbXAtYWxpcGF5IOaaguS4jeaUr+aMgSBzZWxlY3RBbGxDb21wb25lbnRzLHNlbGVjdENvbXBvbmVudFxuICAgIH07XG4gIH0pO1xuXG4gIFZ1ZS5wcm90b3R5cGUuX19pbml0X3Byb3ZpZGUgPSBpbml0UHJvdmlkZTtcblxuICBWdWUucHJvdG90eXBlLl9faW5pdF9pbmplY3Rpb25zID0gaW5pdEluamVjdGlvbnM7XG5cbiAgVnVlLnByb3RvdHlwZS5fX2NhbGxfaG9vayA9IGZ1bmN0aW9uKGhvb2ssIGFyZ3MpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIC8vICM3NTczIGRpc2FibGUgZGVwIGNvbGxlY3Rpb24gd2hlbiBpbnZva2luZyBsaWZlY3ljbGUgaG9va3NcbiAgICBwdXNoVGFyZ2V0KCk7XG4gICAgdmFyIGhhbmRsZXJzID0gdm0uJG9wdGlvbnNbaG9va107XG4gICAgdmFyIGluZm8gPSBob29rICsgXCIgaG9va1wiO1xuICAgIHZhciByZXQ7XG4gICAgaWYgKGhhbmRsZXJzKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaiA9IGhhbmRsZXJzLmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICByZXQgPSBpbnZva2VXaXRoRXJyb3JIYW5kbGluZyhoYW5kbGVyc1tpXSwgdm0sIGFyZ3MgPyBbYXJnc10gOiBudWxsLCB2bSwgaW5mbyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh2bS5faGFzSG9va0V2ZW50KSB7XG4gICAgICB2bS4kZW1pdCgnaG9vazonICsgaG9vaywgYXJncyk7XG4gICAgfVxuICAgIHBvcFRhcmdldCgpO1xuICAgIHJldHVybiByZXRcbiAgfTtcblxuICBWdWUucHJvdG90eXBlLl9fc2V0X21vZGVsID0gZnVuY3Rpb24odGFyZ2V0LCBrZXksIHZhbHVlLCBtb2RpZmllcnMpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShtb2RpZmllcnMpKSB7XG4gICAgICBpZiAobW9kaWZpZXJzLmluZGV4T2YoJ3RyaW0nKSAhPT0gLTEpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XG4gICAgICB9XG4gICAgICBpZiAobW9kaWZpZXJzLmluZGV4T2YoJ251bWJlcicpICE9PSAtMSkge1xuICAgICAgICB2YWx1ZSA9IHRoaXMuX24odmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgdGFyZ2V0ID0gdGhpcztcbiAgICB9XG4gICAgLy8g6Kej5Yaz5Yqo5oCB5bGe5oCn5re75YqgXG4gICAgVnVlLnNldCh0YXJnZXQsIGtleSwgdmFsdWUpXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS5fX3NldF9zeW5jID0gZnVuY3Rpb24odGFyZ2V0LCBrZXksIHZhbHVlKSB7XG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIHRhcmdldCA9IHRoaXM7XG4gICAgfVxuICAgIC8vIOino+WGs+WKqOaAgeWxnuaAp+a3u+WKoFxuICAgIFZ1ZS5zZXQodGFyZ2V0LCBrZXksIHZhbHVlKVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuX19nZXRfb3JpZyA9IGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChpdGVtKSkge1xuICAgICAgcmV0dXJuIGl0ZW1bJyRvcmlnJ10gfHwgaXRlbVxuICAgIH1cbiAgICByZXR1cm4gaXRlbVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuX19nZXRfdmFsdWUgPSBmdW5jdGlvbihkYXRhUGF0aCwgdGFyZ2V0KSB7XG4gICAgcmV0dXJuIGdldFRhcmdldCh0YXJnZXQgfHwgdGhpcywgZGF0YVBhdGgpXG4gIH07XG5cblxuICBWdWUucHJvdG90eXBlLl9fZ2V0X2NsYXNzID0gZnVuY3Rpb24oZHluYW1pY0NsYXNzLCBzdGF0aWNDbGFzcykge1xuICAgIHJldHVybiByZW5kZXJDbGFzcyhzdGF0aWNDbGFzcywgZHluYW1pY0NsYXNzKVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuX19nZXRfc3R5bGUgPSBmdW5jdGlvbihkeW5hbWljU3R5bGUsIHN0YXRpY1N0eWxlKSB7XG4gICAgaWYgKCFkeW5hbWljU3R5bGUgJiYgIXN0YXRpY1N0eWxlKSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG4gICAgdmFyIGR5bmFtaWNTdHlsZU9iaiA9IG5vcm1hbGl6ZVN0eWxlQmluZGluZyhkeW5hbWljU3R5bGUpO1xuICAgIHZhciBzdHlsZU9iaiA9IHN0YXRpY1N0eWxlID8gZXh0ZW5kKHN0YXRpY1N0eWxlLCBkeW5hbWljU3R5bGVPYmopIDogZHluYW1pY1N0eWxlT2JqO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhzdHlsZU9iaikubWFwKGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiAoKGh5cGhlbmF0ZShuYW1lKSkgKyBcIjpcIiArIChzdHlsZU9ialtuYW1lXSkpOyB9KS5qb2luKCc7JylcbiAgfTtcblxuICBWdWUucHJvdG90eXBlLl9fbWFwID0gZnVuY3Rpb24odmFsLCBpdGVyYXRlZSkge1xuICAgIC8vVE9ETyDmmoLkuI3ogIPomZEgc3RyaW5nXG4gICAgdmFyIHJldCwgaSwgbCwga2V5cywga2V5O1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgIHJldCA9IG5ldyBBcnJheSh2YWwubGVuZ3RoKTtcbiAgICAgIGZvciAoaSA9IDAsIGwgPSB2YWwubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHJldFtpXSA9IGl0ZXJhdGVlKHZhbFtpXSwgaSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0XG4gICAgfSBlbHNlIGlmIChpc09iamVjdCh2YWwpKSB7XG4gICAgICBrZXlzID0gT2JqZWN0LmtleXModmFsKTtcbiAgICAgIHJldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICBmb3IgKGkgPSAwLCBsID0ga2V5cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgcmV0W2tleV0gPSBpdGVyYXRlZSh2YWxba2V5XSwga2V5LCBpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXRcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICByZXQgPSBuZXcgQXJyYXkodmFsKTtcbiAgICAgIGZvciAoaSA9IDAsIGwgPSB2YWw7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgLy8g56ys5LiA5Liq5Y+C5pWw5pqC5pe25LuN5ZKM5bCP56iL5bqP5LiA6Ie0XG4gICAgICAgIHJldFtpXSA9IGl0ZXJhdGVlKGksIGkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJldFxuICAgIH1cbiAgICByZXR1cm4gW11cbiAgfTtcblxufVxuXG4vKiAgKi9cblxudmFyIExJRkVDWUNMRV9IT09LUyQxID0gW1xuICAgIC8vQXBwXG4gICAgJ29uTGF1bmNoJyxcbiAgICAnb25TaG93JyxcbiAgICAnb25IaWRlJyxcbiAgICAnb25VbmlOVmlld01lc3NhZ2UnLFxuICAgICdvblBhZ2VOb3RGb3VuZCcsXG4gICAgJ29uVGhlbWVDaGFuZ2UnLFxuICAgICdvbkVycm9yJyxcbiAgICAnb25VbmhhbmRsZWRSZWplY3Rpb24nLFxuICAgIC8vUGFnZVxuICAgICdvbkluaXQnLFxuICAgICdvbkxvYWQnLFxuICAgIC8vICdvblNob3cnLFxuICAgICdvblJlYWR5JyxcbiAgICAvLyAnb25IaWRlJyxcbiAgICAnb25VbmxvYWQnLFxuICAgICdvblB1bGxEb3duUmVmcmVzaCcsXG4gICAgJ29uUmVhY2hCb3R0b20nLFxuICAgICdvblRhYkl0ZW1UYXAnLFxuICAgICdvbkFkZFRvRmF2b3JpdGVzJyxcbiAgICAnb25TaGFyZVRpbWVsaW5lJyxcbiAgICAnb25TaGFyZUFwcE1lc3NhZ2UnLFxuICAgICdvblJlc2l6ZScsXG4gICAgJ29uUGFnZVNjcm9sbCcsXG4gICAgJ29uTmF2aWdhdGlvbkJhckJ1dHRvblRhcCcsXG4gICAgJ29uQmFja1ByZXNzJyxcbiAgICAnb25OYXZpZ2F0aW9uQmFyU2VhcmNoSW5wdXRDaGFuZ2VkJyxcbiAgICAnb25OYXZpZ2F0aW9uQmFyU2VhcmNoSW5wdXRDb25maXJtZWQnLFxuICAgICdvbk5hdmlnYXRpb25CYXJTZWFyY2hJbnB1dENsaWNrZWQnLFxuICAgIC8vQ29tcG9uZW50XG4gICAgLy8gJ29uUmVhZHknLCAvLyDlhbzlrrnml6fniYjmnKzvvIzlupTor6Xnp7vpmaTor6Xkuovku7ZcbiAgICAnb25QYWdlU2hvdycsXG4gICAgJ29uUGFnZUhpZGUnLFxuICAgICdvblBhZ2VSZXNpemUnXG5dO1xuZnVuY3Rpb24gbGlmZWN5Y2xlTWl4aW4kMShWdWUpIHtcblxuICAgIC8vZml4ZWQgdnVlLWNsYXNzLWNvbXBvbmVudFxuICAgIHZhciBvbGRFeHRlbmQgPSBWdWUuZXh0ZW5kO1xuICAgIFZ1ZS5leHRlbmQgPSBmdW5jdGlvbihleHRlbmRPcHRpb25zKSB7XG4gICAgICAgIGV4dGVuZE9wdGlvbnMgPSBleHRlbmRPcHRpb25zIHx8IHt9O1xuXG4gICAgICAgIHZhciBtZXRob2RzID0gZXh0ZW5kT3B0aW9ucy5tZXRob2RzO1xuICAgICAgICBpZiAobWV0aG9kcykge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMobWV0aG9kcykuZm9yRWFjaChmdW5jdGlvbiAobWV0aG9kTmFtZSkge1xuICAgICAgICAgICAgICAgIGlmIChMSUZFQ1lDTEVfSE9PS1MkMS5pbmRleE9mKG1ldGhvZE5hbWUpIT09LTEpIHtcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5kT3B0aW9uc1ttZXRob2ROYW1lXSA9IG1ldGhvZHNbbWV0aG9kTmFtZV07XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBtZXRob2RzW21ldGhvZE5hbWVdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9sZEV4dGVuZC5jYWxsKHRoaXMsIGV4dGVuZE9wdGlvbnMpXG4gICAgfTtcblxuICAgIHZhciBzdHJhdGVnaWVzID0gVnVlLmNvbmZpZy5vcHRpb25NZXJnZVN0cmF0ZWdpZXM7XG4gICAgdmFyIG1lcmdlSG9vayA9IHN0cmF0ZWdpZXMuY3JlYXRlZDtcbiAgICBMSUZFQ1lDTEVfSE9PS1MkMS5mb3JFYWNoKGZ1bmN0aW9uIChob29rKSB7XG4gICAgICAgIHN0cmF0ZWdpZXNbaG9va10gPSBtZXJnZUhvb2s7XG4gICAgfSk7XG5cbiAgICBWdWUucHJvdG90eXBlLl9fbGlmZWN5Y2xlX2hvb2tzX18gPSBMSUZFQ1lDTEVfSE9PS1MkMTtcbn1cblxuLyogICovXG5cbi8vIGluc3RhbGwgcGxhdGZvcm0gcGF0Y2ggZnVuY3Rpb25cblZ1ZS5wcm90b3R5cGUuX19wYXRjaF9fID0gcGF0Y2g7XG5cbi8vIHB1YmxpYyBtb3VudCBtZXRob2RcblZ1ZS5wcm90b3R5cGUuJG1vdW50ID0gZnVuY3Rpb24oXG4gICAgZWwgLFxuICAgIGh5ZHJhdGluZ1xuKSB7XG4gICAgcmV0dXJuIG1vdW50Q29tcG9uZW50JDEodGhpcywgZWwsIGh5ZHJhdGluZylcbn07XG5cbmxpZmVjeWNsZU1peGluJDEoVnVlKTtcbmludGVybmFsTWl4aW4oVnVlKTtcblxuLyogICovXG5cbmV4cG9ydCBkZWZhdWx0IFZ1ZTtcbiIsImNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xyXG5jb25zdCBpc09iamVjdCA9ICh2YWwpID0+IHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JztcclxuY29uc3QgZGVmYXVsdERlbGltaXRlcnMgPSBbJ3snLCAnfSddO1xyXG5jbGFzcyBCYXNlRm9ybWF0dGVyIHtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuX2NhY2hlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICB9XHJcbiAgICBpbnRlcnBvbGF0ZShtZXNzYWdlLCB2YWx1ZXMsIGRlbGltaXRlcnMgPSBkZWZhdWx0RGVsaW1pdGVycykge1xyXG4gICAgICAgIGlmICghdmFsdWVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbbWVzc2FnZV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB0b2tlbnMgPSB0aGlzLl9jYWNoZXNbbWVzc2FnZV07XHJcbiAgICAgICAgaWYgKCF0b2tlbnMpIHtcclxuICAgICAgICAgICAgdG9rZW5zID0gcGFyc2UobWVzc2FnZSwgZGVsaW1pdGVycyk7XHJcbiAgICAgICAgICAgIHRoaXMuX2NhY2hlc1ttZXNzYWdlXSA9IHRva2VucztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNvbXBpbGUodG9rZW5zLCB2YWx1ZXMpO1xyXG4gICAgfVxyXG59XHJcbmNvbnN0IFJFX1RPS0VOX0xJU1RfVkFMVUUgPSAvXig/OlxcZCkrLztcclxuY29uc3QgUkVfVE9LRU5fTkFNRURfVkFMVUUgPSAvXig/OlxcdykrLztcclxuZnVuY3Rpb24gcGFyc2UoZm9ybWF0LCBbc3RhcnREZWxpbWl0ZXIsIGVuZERlbGltaXRlcl0pIHtcclxuICAgIGNvbnN0IHRva2VucyA9IFtdO1xyXG4gICAgbGV0IHBvc2l0aW9uID0gMDtcclxuICAgIGxldCB0ZXh0ID0gJyc7XHJcbiAgICB3aGlsZSAocG9zaXRpb24gPCBmb3JtYXQubGVuZ3RoKSB7XHJcbiAgICAgICAgbGV0IGNoYXIgPSBmb3JtYXRbcG9zaXRpb24rK107XHJcbiAgICAgICAgaWYgKGNoYXIgPT09IHN0YXJ0RGVsaW1pdGVyKSB7XHJcbiAgICAgICAgICAgIGlmICh0ZXh0KSB7XHJcbiAgICAgICAgICAgICAgICB0b2tlbnMucHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWU6IHRleHQgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGV4dCA9ICcnO1xyXG4gICAgICAgICAgICBsZXQgc3ViID0gJyc7XHJcbiAgICAgICAgICAgIGNoYXIgPSBmb3JtYXRbcG9zaXRpb24rK107XHJcbiAgICAgICAgICAgIHdoaWxlIChjaGFyICE9PSB1bmRlZmluZWQgJiYgY2hhciAhPT0gZW5kRGVsaW1pdGVyKSB7XHJcbiAgICAgICAgICAgICAgICBzdWIgKz0gY2hhcjtcclxuICAgICAgICAgICAgICAgIGNoYXIgPSBmb3JtYXRbcG9zaXRpb24rK107XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgaXNDbG9zZWQgPSBjaGFyID09PSBlbmREZWxpbWl0ZXI7XHJcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBSRV9UT0tFTl9MSVNUX1ZBTFVFLnRlc3Qoc3ViKVxyXG4gICAgICAgICAgICAgICAgPyAnbGlzdCdcclxuICAgICAgICAgICAgICAgIDogaXNDbG9zZWQgJiYgUkVfVE9LRU5fTkFNRURfVkFMVUUudGVzdChzdWIpXHJcbiAgICAgICAgICAgICAgICAgICAgPyAnbmFtZWQnXHJcbiAgICAgICAgICAgICAgICAgICAgOiAndW5rbm93bic7XHJcbiAgICAgICAgICAgIHRva2Vucy5wdXNoKHsgdmFsdWU6IHN1YiwgdHlwZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gIGVsc2UgaWYgKGNoYXIgPT09ICclJykge1xyXG4gICAgICAgIC8vICAgLy8gd2hlbiBmb3VuZCByYWlscyBpMThuIHN5bnRheCwgc2tpcCB0ZXh0IGNhcHR1cmVcclxuICAgICAgICAvLyAgIGlmIChmb3JtYXRbcG9zaXRpb25dICE9PSAneycpIHtcclxuICAgICAgICAvLyAgICAgdGV4dCArPSBjaGFyXHJcbiAgICAgICAgLy8gICB9XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0ZXh0ICs9IGNoYXI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGV4dCAmJiB0b2tlbnMucHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWU6IHRleHQgfSk7XHJcbiAgICByZXR1cm4gdG9rZW5zO1xyXG59XHJcbmZ1bmN0aW9uIGNvbXBpbGUodG9rZW5zLCB2YWx1ZXMpIHtcclxuICAgIGNvbnN0IGNvbXBpbGVkID0gW107XHJcbiAgICBsZXQgaW5kZXggPSAwO1xyXG4gICAgY29uc3QgbW9kZSA9IGlzQXJyYXkodmFsdWVzKVxyXG4gICAgICAgID8gJ2xpc3QnXHJcbiAgICAgICAgOiBpc09iamVjdCh2YWx1ZXMpXHJcbiAgICAgICAgICAgID8gJ25hbWVkJ1xyXG4gICAgICAgICAgICA6ICd1bmtub3duJztcclxuICAgIGlmIChtb2RlID09PSAndW5rbm93bicpIHtcclxuICAgICAgICByZXR1cm4gY29tcGlsZWQ7XHJcbiAgICB9XHJcbiAgICB3aGlsZSAoaW5kZXggPCB0b2tlbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0b2tlbnNbaW5kZXhdO1xyXG4gICAgICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlICd0ZXh0JzpcclxuICAgICAgICAgICAgICAgIGNvbXBpbGVkLnB1c2godG9rZW4udmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2xpc3QnOlxyXG4gICAgICAgICAgICAgICAgY29tcGlsZWQucHVzaCh2YWx1ZXNbcGFyc2VJbnQodG9rZW4udmFsdWUsIDEwKV0pO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ25hbWVkJzpcclxuICAgICAgICAgICAgICAgIGlmIChtb2RlID09PSAnbmFtZWQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcGlsZWQucHVzaCh2YWx1ZXNbdG9rZW4udmFsdWVdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVHlwZSBvZiB0b2tlbiAnJHt0b2tlbi50eXBlfScgYW5kIGZvcm1hdCBvZiB2YWx1ZSAnJHttb2RlfScgZG9uJ3QgbWF0Y2ghYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ3Vua25vd24nOlxyXG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYERldGVjdCAndW5rbm93bicgdHlwZSBvZiB0b2tlbiFgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpbmRleCsrO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbXBpbGVkO1xyXG59XHJcblxyXG5jb25zdCBMT0NBTEVfWkhfSEFOUyA9ICd6aC1IYW5zJztcclxuY29uc3QgTE9DQUxFX1pIX0hBTlQgPSAnemgtSGFudCc7XHJcbmNvbnN0IExPQ0FMRV9FTiA9ICdlbic7XHJcbmNvbnN0IExPQ0FMRV9GUiA9ICdmcic7XHJcbmNvbnN0IExPQ0FMRV9FUyA9ICdlcyc7XHJcbmNvbnN0IGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcclxuY29uc3QgaGFzT3duID0gKHZhbCwga2V5KSA9PiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbCwga2V5KTtcclxuY29uc3QgZGVmYXVsdEZvcm1hdHRlciA9IG5ldyBCYXNlRm9ybWF0dGVyKCk7XHJcbmZ1bmN0aW9uIGluY2x1ZGUoc3RyLCBwYXJ0cykge1xyXG4gICAgcmV0dXJuICEhcGFydHMuZmluZCgocGFydCkgPT4gc3RyLmluZGV4T2YocGFydCkgIT09IC0xKTtcclxufVxyXG5mdW5jdGlvbiBzdGFydHNXaXRoKHN0ciwgcGFydHMpIHtcclxuICAgIHJldHVybiBwYXJ0cy5maW5kKChwYXJ0KSA9PiBzdHIuaW5kZXhPZihwYXJ0KSA9PT0gMCk7XHJcbn1cclxuZnVuY3Rpb24gbm9ybWFsaXplTG9jYWxlKGxvY2FsZSwgbWVzc2FnZXMpIHtcclxuICAgIGlmICghbG9jYWxlKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbG9jYWxlID0gbG9jYWxlLnRyaW0oKS5yZXBsYWNlKC9fL2csICctJyk7XHJcbiAgICBpZiAobWVzc2FnZXMgJiYgbWVzc2FnZXNbbG9jYWxlXSkge1xyXG4gICAgICAgIHJldHVybiBsb2NhbGU7XHJcbiAgICB9XHJcbiAgICBsb2NhbGUgPSBsb2NhbGUudG9Mb3dlckNhc2UoKTtcclxuICAgIGlmIChsb2NhbGUuaW5kZXhPZignemgnKSA9PT0gMCkge1xyXG4gICAgICAgIGlmIChsb2NhbGUuaW5kZXhPZignLWhhbnMnKSA+IC0xKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBMT0NBTEVfWkhfSEFOUztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxvY2FsZS5pbmRleE9mKCctaGFudCcpID4gLTEpIHtcclxuICAgICAgICAgICAgcmV0dXJuIExPQ0FMRV9aSF9IQU5UO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaW5jbHVkZShsb2NhbGUsIFsnLXR3JywgJy1oaycsICctbW8nLCAnLWNodCddKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gTE9DQUxFX1pIX0hBTlQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBMT0NBTEVfWkhfSEFOUztcclxuICAgIH1cclxuICAgIGNvbnN0IGxhbmcgPSBzdGFydHNXaXRoKGxvY2FsZSwgW0xPQ0FMRV9FTiwgTE9DQUxFX0ZSLCBMT0NBTEVfRVNdKTtcclxuICAgIGlmIChsYW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIGxhbmc7XHJcbiAgICB9XHJcbn1cclxuY2xhc3MgSTE4biB7XHJcbiAgICBjb25zdHJ1Y3Rvcih7IGxvY2FsZSwgZmFsbGJhY2tMb2NhbGUsIG1lc3NhZ2VzLCB3YXRjaGVyLCBmb3JtYXRlciwgfSkge1xyXG4gICAgICAgIHRoaXMubG9jYWxlID0gTE9DQUxFX0VOO1xyXG4gICAgICAgIHRoaXMuZmFsbGJhY2tMb2NhbGUgPSBMT0NBTEVfRU47XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlID0ge307XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IHt9O1xyXG4gICAgICAgIHRoaXMud2F0Y2hlcnMgPSBbXTtcclxuICAgICAgICBpZiAoZmFsbGJhY2tMb2NhbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5mYWxsYmFja0xvY2FsZSA9IGZhbGxiYWNrTG9jYWxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZvcm1hdGVyID0gZm9ybWF0ZXIgfHwgZGVmYXVsdEZvcm1hdHRlcjtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gbWVzc2FnZXMgfHwge307XHJcbiAgICAgICAgdGhpcy5zZXRMb2NhbGUobG9jYWxlIHx8IExPQ0FMRV9FTik7XHJcbiAgICAgICAgaWYgKHdhdGNoZXIpIHtcclxuICAgICAgICAgICAgdGhpcy53YXRjaExvY2FsZSh3YXRjaGVyKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBzZXRMb2NhbGUobG9jYWxlKSB7XHJcbiAgICAgICAgY29uc3Qgb2xkTG9jYWxlID0gdGhpcy5sb2NhbGU7XHJcbiAgICAgICAgdGhpcy5sb2NhbGUgPSBub3JtYWxpemVMb2NhbGUobG9jYWxlLCB0aGlzLm1lc3NhZ2VzKSB8fCB0aGlzLmZhbGxiYWNrTG9jYWxlO1xyXG4gICAgICAgIGlmICghdGhpcy5tZXNzYWdlc1t0aGlzLmxvY2FsZV0pIHtcclxuICAgICAgICAgICAgLy8g5Y+v6IO95Yid5aeL5YyW5pe25LiN5a2Y5ZyoXHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXNbdGhpcy5sb2NhbGVdID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWVzc2FnZSA9IHRoaXMubWVzc2FnZXNbdGhpcy5sb2NhbGVdO1xyXG4gICAgICAgIC8vIOS7heWPkeeUn+WPmOWMluaXtu+8jOmAmuefpVxyXG4gICAgICAgIGlmIChvbGRMb2NhbGUgIT09IHRoaXMubG9jYWxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMud2F0Y2hlcnMuZm9yRWFjaCgod2F0Y2hlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgd2F0Y2hlcih0aGlzLmxvY2FsZSwgb2xkTG9jYWxlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2V0TG9jYWxlKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZTtcclxuICAgIH1cclxuICAgIHdhdGNoTG9jYWxlKGZuKSB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLndhdGNoZXJzLnB1c2goZm4pIC0gMTtcclxuICAgICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLndhdGNoZXJzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIGFkZChsb2NhbGUsIG1lc3NhZ2UsIG92ZXJyaWRlID0gdHJ1ZSkge1xyXG4gICAgICAgIGNvbnN0IGN1ck1lc3NhZ2VzID0gdGhpcy5tZXNzYWdlc1tsb2NhbGVdO1xyXG4gICAgICAgIGlmIChjdXJNZXNzYWdlcykge1xyXG4gICAgICAgICAgICBpZiAob3ZlcnJpZGUpIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oY3VyTWVzc2FnZXMsIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMobWVzc2FnZSkuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNPd24oY3VyTWVzc2FnZXMsIGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VyTWVzc2FnZXNba2V5XSA9IG1lc3NhZ2Vba2V5XTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5tZXNzYWdlc1tsb2NhbGVdID0gbWVzc2FnZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmKG1lc3NhZ2UsIHZhbHVlcywgZGVsaW1pdGVycykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdGVyLmludGVycG9sYXRlKG1lc3NhZ2UsIHZhbHVlcywgZGVsaW1pdGVycykuam9pbignJyk7XHJcbiAgICB9XHJcbiAgICB0KGtleSwgbG9jYWxlLCB2YWx1ZXMpIHtcclxuICAgICAgICBsZXQgbWVzc2FnZSA9IHRoaXMubWVzc2FnZTtcclxuICAgICAgICBpZiAodHlwZW9mIGxvY2FsZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgbG9jYWxlID0gbm9ybWFsaXplTG9jYWxlKGxvY2FsZSwgdGhpcy5tZXNzYWdlcyk7XHJcbiAgICAgICAgICAgIGxvY2FsZSAmJiAobWVzc2FnZSA9IHRoaXMubWVzc2FnZXNbbG9jYWxlXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YWx1ZXMgPSBsb2NhbGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghaGFzT3duKG1lc3NhZ2UsIGtleSkpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKGBDYW5ub3QgdHJhbnNsYXRlIHRoZSB2YWx1ZSBvZiBrZXlwYXRoICR7a2V5fS4gVXNlIHRoZSB2YWx1ZSBvZiBrZXlwYXRoIGFzIGRlZmF1bHQuYCk7XHJcbiAgICAgICAgICAgIHJldHVybiBrZXk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdGVyLmludGVycG9sYXRlKG1lc3NhZ2Vba2V5XSwgdmFsdWVzKS5qb2luKCcnKTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gd2F0Y2hBcHBMb2NhbGUoYXBwVm0sIGkxOG4pIHtcclxuICAgIC8vIOmcgOimgeS/neivgSB3YXRjaCDnmoTop6blj5HlnKjnu4Tku7bmuLLmn5PkuYvliY1cclxuICAgIGlmIChhcHBWbS4kd2F0Y2hMb2NhbGUpIHtcclxuICAgICAgICAvLyB2dWUyXHJcbiAgICAgICAgYXBwVm0uJHdhdGNoTG9jYWxlKChuZXdMb2NhbGUpID0+IHtcclxuICAgICAgICAgICAgaTE4bi5zZXRMb2NhbGUobmV3TG9jYWxlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGFwcFZtLiR3YXRjaCgoKSA9PiBhcHBWbS4kbG9jYWxlLCAobmV3TG9jYWxlKSA9PiB7XHJcbiAgICAgICAgICAgIGkxOG4uc2V0TG9jYWxlKG5ld0xvY2FsZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZ2V0RGVmYXVsdExvY2FsZSgpIHtcclxuICAgIGlmICh0eXBlb2YgdW5pICE9PSAndW5kZWZpbmVkJyAmJiB1bmkuZ2V0TG9jYWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIHVuaS5nZXRMb2NhbGUoKTtcclxuICAgIH1cclxuICAgIC8vIOWwj+eoi+W6j+W5s+WPsO+8jHVuaSDlkowgdW5pLWkxOG4g5LqS55u45byV55So77yM5a+86Ie06K6/6Zeu5LiN5YiwIHVuae+8jOaVheWcqCBnbG9iYWwg5LiK5oyC5LqGIGdldExvY2FsZVxyXG4gICAgaWYgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnICYmIGdsb2JhbC5nZXRMb2NhbGUpIHtcclxuICAgICAgICByZXR1cm4gZ2xvYmFsLmdldExvY2FsZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIExPQ0FMRV9FTjtcclxufVxyXG5mdW5jdGlvbiBpbml0VnVlSTE4bihsb2NhbGUsIG1lc3NhZ2VzID0ge30sIGZhbGxiYWNrTG9jYWxlLCB3YXRjaGVyKSB7XHJcbiAgICAvLyDlhbzlrrnml6fniYjmnKzlhaXlj4JcclxuICAgIGlmICh0eXBlb2YgbG9jYWxlICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgIFtsb2NhbGUsIG1lc3NhZ2VzXSA9IFtcclxuICAgICAgICAgICAgbWVzc2FnZXMsXHJcbiAgICAgICAgICAgIGxvY2FsZSxcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBsb2NhbGUgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgLy8g5Zug5Li65bCP56iL5bqP5bmz5Y+w77yMdW5pLWkxOG4g5ZKMIHVuaSDkupLnm7jlvJXnlKjvvIzlr7zoh7TmraTml7borr/pl64gdW5pIOaXtu+8jOS4uiB1bmRlZmluZWRcclxuICAgICAgICBsb2NhbGUgPSBnZXREZWZhdWx0TG9jYWxlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIGZhbGxiYWNrTG9jYWxlICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGZhbGxiYWNrTG9jYWxlID1cclxuICAgICAgICAgICAgKHR5cGVvZiBfX3VuaUNvbmZpZyAhPT0gJ3VuZGVmaW5lZCcgJiYgX191bmlDb25maWcuZmFsbGJhY2tMb2NhbGUpIHx8XHJcbiAgICAgICAgICAgICAgICBMT0NBTEVfRU47XHJcbiAgICB9XHJcbiAgICBjb25zdCBpMThuID0gbmV3IEkxOG4oe1xyXG4gICAgICAgIGxvY2FsZSxcclxuICAgICAgICBmYWxsYmFja0xvY2FsZSxcclxuICAgICAgICBtZXNzYWdlcyxcclxuICAgICAgICB3YXRjaGVyLFxyXG4gICAgfSk7XHJcbiAgICBsZXQgdCA9IChrZXksIHZhbHVlcykgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2YgZ2V0QXBwICE9PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgIC8vIGFwcCB2aWV3XHJcbiAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWZ1bmMtYXNzaWduICovXHJcbiAgICAgICAgICAgIHQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZXMpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBpMThuLnQoa2V5LCB2YWx1ZXMpO1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IGlzV2F0Y2hlZEFwcExvY2FsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0ID0gZnVuY3Rpb24gKGtleSwgdmFsdWVzKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhcHBWbSA9IGdldEFwcCgpLiR2bTtcclxuICAgICAgICAgICAgICAgIC8vIOWPr+iDvSR2bei/mOS4jeWtmOWcqO+8jOavlOWmguWcqOaUr+S7mOWuneWwj+eoi+W6j+S4re+8jOe7hOS7tuWumuS5iei+g+aXqe+8jOWcqHByb3Bz55qEZGVmYXVsdOmHjOS9v+eUqOS6hnQoKeWHveaVsO+8iOWmgnVuaS1nb29kcy1uYXbvvInvvIzmraTml7ZhcHDov5jmnKrliJ3lp4vljJZcclxuICAgICAgICAgICAgICAgIC8vIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICAgIC8vIFx0dHlwZTogQXJyYXksXHJcbiAgICAgICAgICAgICAgICAvLyBcdGRlZmF1bHQgKCkge1xyXG4gICAgICAgICAgICAgICAgLy8gXHRcdHJldHVybiBbe1xyXG4gICAgICAgICAgICAgICAgLy8gXHRcdFx0aWNvbjogJ3Nob3AnLFxyXG4gICAgICAgICAgICAgICAgLy8gXHRcdFx0dGV4dDogdChcInVuaS1nb29kcy1uYXYub3B0aW9ucy5zaG9wXCIpLFxyXG4gICAgICAgICAgICAgICAgLy8gXHRcdH0sIHtcclxuICAgICAgICAgICAgICAgIC8vIFx0XHRcdGljb246ICdjYXJ0JyxcclxuICAgICAgICAgICAgICAgIC8vIFx0XHRcdHRleHQ6IHQoXCJ1bmktZ29vZHMtbmF2Lm9wdGlvbnMuY2FydFwiKVxyXG4gICAgICAgICAgICAgICAgLy8gXHRcdH1dXHJcbiAgICAgICAgICAgICAgICAvLyBcdH1cclxuICAgICAgICAgICAgICAgIC8vIH0sXHJcbiAgICAgICAgICAgICAgICBpZiAoYXBwVm0pIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyDop6blj5Hlk43lupTlvI9cclxuICAgICAgICAgICAgICAgICAgICBhcHBWbS4kbG9jYWxlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNXYXRjaGVkQXBwTG9jYWxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzV2F0Y2hlZEFwcExvY2FsZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhdGNoQXBwTG9jYWxlKGFwcFZtLCBpMThuKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaTE4bi50KGtleSwgdmFsdWVzKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQoa2V5LCB2YWx1ZXMpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgaTE4bixcclxuICAgICAgICBmKG1lc3NhZ2UsIHZhbHVlcywgZGVsaW1pdGVycykge1xyXG4gICAgICAgICAgICByZXR1cm4gaTE4bi5mKG1lc3NhZ2UsIHZhbHVlcywgZGVsaW1pdGVycyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0KGtleSwgdmFsdWVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0KGtleSwgdmFsdWVzKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGFkZChsb2NhbGUsIG1lc3NhZ2UsIG92ZXJyaWRlID0gdHJ1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gaTE4bi5hZGQobG9jYWxlLCBtZXNzYWdlLCBvdmVycmlkZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB3YXRjaChmbikge1xyXG4gICAgICAgICAgICByZXR1cm4gaTE4bi53YXRjaExvY2FsZShmbik7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBnZXRMb2NhbGUoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpMThuLmdldExvY2FsZSgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2V0TG9jYWxlKG5ld0xvY2FsZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gaTE4bi5zZXRMb2NhbGUobmV3TG9jYWxlKTtcclxuICAgICAgICB9LFxyXG4gICAgfTtcclxufVxyXG5cclxuY29uc3QgaXNTdHJpbmcgPSAodmFsKSA9PiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJztcclxubGV0IGZvcm1hdGVyO1xyXG5mdW5jdGlvbiBoYXNJMThuSnNvbihqc29uT2JqLCBkZWxpbWl0ZXJzKSB7XHJcbiAgICBpZiAoIWZvcm1hdGVyKSB7XHJcbiAgICAgICAgZm9ybWF0ZXIgPSBuZXcgQmFzZUZvcm1hdHRlcigpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHdhbGtKc29uT2JqKGpzb25PYmosIChqc29uT2JqLCBrZXkpID0+IHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IGpzb25PYmpba2V5XTtcclxuICAgICAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIGlmIChpc0kxOG5TdHIodmFsdWUsIGRlbGltaXRlcnMpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGhhc0kxOG5Kc29uKHZhbHVlLCBkZWxpbWl0ZXJzKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5mdW5jdGlvbiBwYXJzZUkxOG5Kc29uKGpzb25PYmosIHZhbHVlcywgZGVsaW1pdGVycykge1xyXG4gICAgaWYgKCFmb3JtYXRlcikge1xyXG4gICAgICAgIGZvcm1hdGVyID0gbmV3IEJhc2VGb3JtYXR0ZXIoKTtcclxuICAgIH1cclxuICAgIHdhbGtKc29uT2JqKGpzb25PYmosIChqc29uT2JqLCBrZXkpID0+IHtcclxuICAgICAgICBjb25zdCB2YWx1ZSA9IGpzb25PYmpba2V5XTtcclxuICAgICAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XHJcbiAgICAgICAgICAgIGlmIChpc0kxOG5TdHIodmFsdWUsIGRlbGltaXRlcnMpKSB7XHJcbiAgICAgICAgICAgICAgICBqc29uT2JqW2tleV0gPSBjb21waWxlU3RyKHZhbHVlLCB2YWx1ZXMsIGRlbGltaXRlcnMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBwYXJzZUkxOG5Kc29uKHZhbHVlLCB2YWx1ZXMsIGRlbGltaXRlcnMpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGpzb25PYmo7XHJcbn1cclxuZnVuY3Rpb24gY29tcGlsZUkxOG5Kc29uU3RyKGpzb25TdHIsIHsgbG9jYWxlLCBsb2NhbGVzLCBkZWxpbWl0ZXJzLCB9KSB7XHJcbiAgICBpZiAoIWlzSTE4blN0cihqc29uU3RyLCBkZWxpbWl0ZXJzKSkge1xyXG4gICAgICAgIHJldHVybiBqc29uU3RyO1xyXG4gICAgfVxyXG4gICAgaWYgKCFmb3JtYXRlcikge1xyXG4gICAgICAgIGZvcm1hdGVyID0gbmV3IEJhc2VGb3JtYXR0ZXIoKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGxvY2FsZVZhbHVlcyA9IFtdO1xyXG4gICAgT2JqZWN0LmtleXMobG9jYWxlcykuZm9yRWFjaCgobmFtZSkgPT4ge1xyXG4gICAgICAgIGlmIChuYW1lICE9PSBsb2NhbGUpIHtcclxuICAgICAgICAgICAgbG9jYWxlVmFsdWVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgbG9jYWxlOiBuYW1lLFxyXG4gICAgICAgICAgICAgICAgdmFsdWVzOiBsb2NhbGVzW25hbWVdLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIGxvY2FsZVZhbHVlcy51bnNoaWZ0KHsgbG9jYWxlLCB2YWx1ZXM6IGxvY2FsZXNbbG9jYWxlXSB9KTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGNvbXBpbGVKc29uT2JqKEpTT04ucGFyc2UoanNvblN0ciksIGxvY2FsZVZhbHVlcywgZGVsaW1pdGVycyksIG51bGwsIDIpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHsgfVxyXG4gICAgcmV0dXJuIGpzb25TdHI7XHJcbn1cclxuZnVuY3Rpb24gaXNJMThuU3RyKHZhbHVlLCBkZWxpbWl0ZXJzKSB7XHJcbiAgICByZXR1cm4gdmFsdWUuaW5kZXhPZihkZWxpbWl0ZXJzWzBdKSA+IC0xO1xyXG59XHJcbmZ1bmN0aW9uIGNvbXBpbGVTdHIodmFsdWUsIHZhbHVlcywgZGVsaW1pdGVycykge1xyXG4gICAgcmV0dXJuIGZvcm1hdGVyLmludGVycG9sYXRlKHZhbHVlLCB2YWx1ZXMsIGRlbGltaXRlcnMpLmpvaW4oJycpO1xyXG59XHJcbmZ1bmN0aW9uIGNvbXBpbGVWYWx1ZShqc29uT2JqLCBrZXksIGxvY2FsZVZhbHVlcywgZGVsaW1pdGVycykge1xyXG4gICAgY29uc3QgdmFsdWUgPSBqc29uT2JqW2tleV07XHJcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XHJcbiAgICAgICAgLy8g5a2Y5Zyo5Zu96ZmF5YyWXHJcbiAgICAgICAgaWYgKGlzSTE4blN0cih2YWx1ZSwgZGVsaW1pdGVycykpIHtcclxuICAgICAgICAgICAganNvbk9ialtrZXldID0gY29tcGlsZVN0cih2YWx1ZSwgbG9jYWxlVmFsdWVzWzBdLnZhbHVlcywgZGVsaW1pdGVycyk7XHJcbiAgICAgICAgICAgIGlmIChsb2NhbGVWYWx1ZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICAgICAgLy8g5qC85byP5YyW5Zu96ZmF5YyW6K+t6KiAXHJcbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZUxvY2FsZXMgPSAoanNvbk9ialtrZXkgKyAnTG9jYWxlcyddID0ge30pO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxlVmFsdWVzLmZvckVhY2goKGxvY2FsVmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZUxvY2FsZXNbbG9jYWxWYWx1ZS5sb2NhbGVdID0gY29tcGlsZVN0cih2YWx1ZSwgbG9jYWxWYWx1ZS52YWx1ZXMsIGRlbGltaXRlcnMpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb21waWxlSnNvbk9iaih2YWx1ZSwgbG9jYWxlVmFsdWVzLCBkZWxpbWl0ZXJzKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjb21waWxlSnNvbk9iaihqc29uT2JqLCBsb2NhbGVWYWx1ZXMsIGRlbGltaXRlcnMpIHtcclxuICAgIHdhbGtKc29uT2JqKGpzb25PYmosIChqc29uT2JqLCBrZXkpID0+IHtcclxuICAgICAgICBjb21waWxlVmFsdWUoanNvbk9iaiwga2V5LCBsb2NhbGVWYWx1ZXMsIGRlbGltaXRlcnMpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4ganNvbk9iajtcclxufVxyXG5mdW5jdGlvbiB3YWxrSnNvbk9iaihqc29uT2JqLCB3YWxrKSB7XHJcbiAgICBpZiAoaXNBcnJheShqc29uT2JqKSkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwganNvbk9iai5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAod2Fsayhqc29uT2JqLCBpKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChpc09iamVjdChqc29uT2JqKSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGpzb25PYmopIHtcclxuICAgICAgICAgICAgaWYgKHdhbGsoanNvbk9iaiwga2V5KSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlc29sdmVMb2NhbGUobG9jYWxlcykge1xyXG4gICAgcmV0dXJuIChsb2NhbGUpID0+IHtcclxuICAgICAgICBpZiAoIWxvY2FsZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsb2NhbGUgPSBub3JtYWxpemVMb2NhbGUobG9jYWxlKSB8fCBsb2NhbGU7XHJcbiAgICAgICAgcmV0dXJuIHJlc29sdmVMb2NhbGVDaGFpbihsb2NhbGUpLmZpbmQoKGxvY2FsZSkgPT4gbG9jYWxlcy5pbmRleE9mKGxvY2FsZSkgPiAtMSk7XHJcbiAgICB9O1xyXG59XHJcbmZ1bmN0aW9uIHJlc29sdmVMb2NhbGVDaGFpbihsb2NhbGUpIHtcclxuICAgIGNvbnN0IGNoYWluID0gW107XHJcbiAgICBjb25zdCB0b2tlbnMgPSBsb2NhbGUuc3BsaXQoJy0nKTtcclxuICAgIHdoaWxlICh0b2tlbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgY2hhaW4ucHVzaCh0b2tlbnMuam9pbignLScpKTtcclxuICAgICAgICB0b2tlbnMucG9wKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2hhaW47XHJcbn1cclxuXHJcbmV4cG9ydCB7IEJhc2VGb3JtYXR0ZXIgYXMgRm9ybWF0dGVyLCBJMThuLCBMT0NBTEVfRU4sIExPQ0FMRV9FUywgTE9DQUxFX0ZSLCBMT0NBTEVfWkhfSEFOUywgTE9DQUxFX1pIX0hBTlQsIGNvbXBpbGVJMThuSnNvblN0ciwgaGFzSTE4bkpzb24sIGluaXRWdWVJMThuLCBpc0kxOG5TdHIsIGlzU3RyaW5nLCBub3JtYWxpemVMb2NhbGUsIHBhcnNlSTE4bkpzb24sIHJlc29sdmVMb2NhbGUgfTtcclxuIiwiLyogZ2xvYmFscyBfX1ZVRV9TU1JfQ09OVEVYVF9fICovXG5cbi8vIElNUE9SVEFOVDogRG8gTk9UIHVzZSBFUzIwMTUgZmVhdHVyZXMgaW4gdGhpcyBmaWxlIChleGNlcHQgZm9yIG1vZHVsZXMpLlxuLy8gVGhpcyBtb2R1bGUgaXMgYSBydW50aW1lIHV0aWxpdHkgZm9yIGNsZWFuZXIgY29tcG9uZW50IG1vZHVsZSBvdXRwdXQgYW5kIHdpbGxcbi8vIGJlIGluY2x1ZGVkIGluIHRoZSBmaW5hbCB3ZWJwYWNrIHVzZXIgYnVuZGxlLlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBub3JtYWxpemVDb21wb25lbnQgKFxuICBzY3JpcHRFeHBvcnRzLFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZnVuY3Rpb25hbFRlbXBsYXRlLFxuICBpbmplY3RTdHlsZXMsXG4gIHNjb3BlSWQsXG4gIG1vZHVsZUlkZW50aWZpZXIsIC8qIHNlcnZlciBvbmx5ICovXG4gIHNoYWRvd01vZGUsIC8qIHZ1ZS1jbGkgb25seSAqL1xuICBjb21wb25lbnRzLCAvLyBmaXhlZCBieSB4eHh4eHggYXV0byBjb21wb25lbnRzXG4gIHJlbmRlcmpzIC8vIGZpeGVkIGJ5IHh4eHh4eCByZW5kZXJqc1xuKSB7XG4gIC8vIFZ1ZS5leHRlbmQgY29uc3RydWN0b3IgZXhwb3J0IGludGVyb3BcbiAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygc2NyaXB0RXhwb3J0cyA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gc2NyaXB0RXhwb3J0cy5vcHRpb25zXG4gICAgOiBzY3JpcHRFeHBvcnRzXG5cbiAgLy8gZml4ZWQgYnkgeHh4eHh4IGF1dG8gY29tcG9uZW50c1xuICBpZiAoY29tcG9uZW50cykge1xuICAgIGlmICghb3B0aW9ucy5jb21wb25lbnRzKSB7XG4gICAgICBvcHRpb25zLmNvbXBvbmVudHMgPSB7fVxuICAgIH1cbiAgICB2YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eVxuICAgIGZvciAodmFyIG5hbWUgaW4gY29tcG9uZW50cykge1xuICAgICAgaWYgKGhhc093bi5jYWxsKGNvbXBvbmVudHMsIG5hbWUpICYmICFoYXNPd24uY2FsbChvcHRpb25zLmNvbXBvbmVudHMsIG5hbWUpKSB7XG4gICAgICAgIG9wdGlvbnMuY29tcG9uZW50c1tuYW1lXSA9IGNvbXBvbmVudHNbbmFtZV1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gZml4ZWQgYnkgeHh4eHh4IHJlbmRlcmpzXG4gIGlmIChyZW5kZXJqcykge1xuICAgIChyZW5kZXJqcy5iZWZvcmVDcmVhdGUgfHwgKHJlbmRlcmpzLmJlZm9yZUNyZWF0ZSA9IFtdKSkudW5zaGlmdChmdW5jdGlvbigpIHtcbiAgICAgIHRoaXNbcmVuZGVyanMuX19tb2R1bGVdID0gdGhpc1xuICAgIH0pO1xuICAgIChvcHRpb25zLm1peGlucyB8fCAob3B0aW9ucy5taXhpbnMgPSBbXSkpLnB1c2gocmVuZGVyanMpXG4gIH1cblxuICAvLyByZW5kZXIgZnVuY3Rpb25zXG4gIGlmIChyZW5kZXIpIHtcbiAgICBvcHRpb25zLnJlbmRlciA9IHJlbmRlclxuICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gc3RhdGljUmVuZGVyRm5zXG4gICAgb3B0aW9ucy5fY29tcGlsZWQgPSB0cnVlXG4gIH1cblxuICAvLyBmdW5jdGlvbmFsIHRlbXBsYXRlXG4gIGlmIChmdW5jdGlvbmFsVGVtcGxhdGUpIHtcbiAgICBvcHRpb25zLmZ1bmN0aW9uYWwgPSB0cnVlXG4gIH1cblxuICAvLyBzY29wZWRJZFxuICBpZiAoc2NvcGVJZCkge1xuICAgIG9wdGlvbnMuX3Njb3BlSWQgPSAnZGF0YS12LScgKyBzY29wZUlkXG4gIH1cblxuICB2YXIgaG9va1xuICBpZiAobW9kdWxlSWRlbnRpZmllcikgeyAvLyBzZXJ2ZXIgYnVpbGRcbiAgICBob29rID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgIC8vIDIuMyBpbmplY3Rpb25cbiAgICAgIGNvbnRleHQgPVxuICAgICAgICBjb250ZXh0IHx8IC8vIGNhY2hlZCBjYWxsXG4gICAgICAgICh0aGlzLiR2bm9kZSAmJiB0aGlzLiR2bm9kZS5zc3JDb250ZXh0KSB8fCAvLyBzdGF0ZWZ1bFxuICAgICAgICAodGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuJHZub2RlICYmIHRoaXMucGFyZW50LiR2bm9kZS5zc3JDb250ZXh0KSAvLyBmdW5jdGlvbmFsXG4gICAgICAvLyAyLjIgd2l0aCBydW5Jbk5ld0NvbnRleHQ6IHRydWVcbiAgICAgIGlmICghY29udGV4dCAmJiB0eXBlb2YgX19WVUVfU1NSX0NPTlRFWFRfXyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29udGV4dCA9IF9fVlVFX1NTUl9DT05URVhUX19cbiAgICAgIH1cbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgc3R5bGVzXG4gICAgICBpZiAoaW5qZWN0U3R5bGVzKSB7XG4gICAgICAgIGluamVjdFN0eWxlcy5jYWxsKHRoaXMsIGNvbnRleHQpXG4gICAgICB9XG4gICAgICAvLyByZWdpc3RlciBjb21wb25lbnQgbW9kdWxlIGlkZW50aWZpZXIgZm9yIGFzeW5jIGNodW5rIGluZmVycmVuY2VcbiAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQuX3JlZ2lzdGVyZWRDb21wb25lbnRzKSB7XG4gICAgICAgIGNvbnRleHQuX3JlZ2lzdGVyZWRDb21wb25lbnRzLmFkZChtb2R1bGVJZGVudGlmaWVyKVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB1c2VkIGJ5IHNzciBpbiBjYXNlIGNvbXBvbmVudCBpcyBjYWNoZWQgYW5kIGJlZm9yZUNyZWF0ZVxuICAgIC8vIG5ldmVyIGdldHMgY2FsbGVkXG4gICAgb3B0aW9ucy5fc3NyUmVnaXN0ZXIgPSBob29rXG4gIH0gZWxzZSBpZiAoaW5qZWN0U3R5bGVzKSB7XG4gICAgaG9vayA9IHNoYWRvd01vZGVcbiAgICAgID8gZnVuY3Rpb24gKCkgeyBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCB0aGlzLiRyb290LiRvcHRpb25zLnNoYWRvd1Jvb3QpIH1cbiAgICAgIDogaW5qZWN0U3R5bGVzXG4gIH1cblxuICBpZiAoaG9vaykge1xuICAgIGlmIChvcHRpb25zLmZ1bmN0aW9uYWwpIHtcbiAgICAgIC8vIGZvciB0ZW1wbGF0ZS1vbmx5IGhvdC1yZWxvYWQgYmVjYXVzZSBpbiB0aGF0IGNhc2UgdGhlIHJlbmRlciBmbiBkb2Vzbid0XG4gICAgICAvLyBnbyB0aHJvdWdoIHRoZSBub3JtYWxpemVyXG4gICAgICBvcHRpb25zLl9pbmplY3RTdHlsZXMgPSBob29rXG4gICAgICAvLyByZWdpc3RlciBmb3IgZnVuY3Rpb2FsIGNvbXBvbmVudCBpbiB2dWUgZmlsZVxuICAgICAgdmFyIG9yaWdpbmFsUmVuZGVyID0gb3B0aW9ucy5yZW5kZXJcbiAgICAgIG9wdGlvbnMucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyV2l0aFN0eWxlSW5qZWN0aW9uIChoLCBjb250ZXh0KSB7XG4gICAgICAgIGhvb2suY2FsbChjb250ZXh0KVxuICAgICAgICByZXR1cm4gb3JpZ2luYWxSZW5kZXIoaCwgY29udGV4dClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCByZWdpc3RyYXRpb24gYXMgYmVmb3JlQ3JlYXRlIGhvb2tcbiAgICAgIHZhciBleGlzdGluZyA9IG9wdGlvbnMuYmVmb3JlQ3JlYXRlXG4gICAgICBvcHRpb25zLmJlZm9yZUNyZWF0ZSA9IGV4aXN0aW5nXG4gICAgICAgID8gW10uY29uY2F0KGV4aXN0aW5nLCBob29rKVxuICAgICAgICA6IFtob29rXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXhwb3J0czogc2NyaXB0RXhwb3J0cyxcbiAgICBvcHRpb25zOiBvcHRpb25zXG4gIH1cbn1cbiIsImltcG9ydCBWdWUgZnJvbSBcInZ1ZVwiXHJcbmltcG9ydCBWdWV4IGZyb20gXCJ2dWV4XCJcclxuXHJcblZ1ZS51c2UoVnVleClcclxuXHJcbmNvbnN0IHN0b3JlID17XHJcblx0c3RhdGU6e30sXHJcblx0Z2V0dGV0czp7fSxcclxuXHRtdXRhdGlvbnM6e30sXHJcblx0YWN0aW9uczp7fSxcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgc3RvcmUiLCIvKiFcbiAqIHZ1ZXggdjMuNi4yXG4gKiAoYykgMjAyMSBFdmFuIFlvdVxuICogQGxpY2Vuc2UgTUlUXG4gKi9cbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gYXBwbHlNaXhpbiAoVnVlKSB7XG4gIHZhciB2ZXJzaW9uID0gTnVtYmVyKFZ1ZS52ZXJzaW9uLnNwbGl0KCcuJylbMF0pO1xuXG4gIGlmICh2ZXJzaW9uID49IDIpIHtcbiAgICBWdWUubWl4aW4oeyBiZWZvcmVDcmVhdGU6IHZ1ZXhJbml0IH0pO1xuICB9IGVsc2Uge1xuICAgIC8vIG92ZXJyaWRlIGluaXQgYW5kIGluamVjdCB2dWV4IGluaXQgcHJvY2VkdXJlXG4gICAgLy8gZm9yIDEueCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cbiAgICB2YXIgX2luaXQgPSBWdWUucHJvdG90eXBlLl9pbml0O1xuICAgIFZ1ZS5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgaWYgKCBvcHRpb25zID09PSB2b2lkIDAgKSBvcHRpb25zID0ge307XG5cbiAgICAgIG9wdGlvbnMuaW5pdCA9IG9wdGlvbnMuaW5pdFxuICAgICAgICA/IFt2dWV4SW5pdF0uY29uY2F0KG9wdGlvbnMuaW5pdClcbiAgICAgICAgOiB2dWV4SW5pdDtcbiAgICAgIF9pbml0LmNhbGwodGhpcywgb3B0aW9ucyk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWdWV4IGluaXQgaG9vaywgaW5qZWN0ZWQgaW50byBlYWNoIGluc3RhbmNlcyBpbml0IGhvb2tzIGxpc3QuXG4gICAqL1xuXG4gIGZ1bmN0aW9uIHZ1ZXhJbml0ICgpIHtcbiAgICB2YXIgb3B0aW9ucyA9IHRoaXMuJG9wdGlvbnM7XG4gICAgLy8gc3RvcmUgaW5qZWN0aW9uXG4gICAgaWYgKG9wdGlvbnMuc3RvcmUpIHtcbiAgICAgIHRoaXMuJHN0b3JlID0gdHlwZW9mIG9wdGlvbnMuc3RvcmUgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBvcHRpb25zLnN0b3JlKClcbiAgICAgICAgOiBvcHRpb25zLnN0b3JlO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5wYXJlbnQgJiYgb3B0aW9ucy5wYXJlbnQuJHN0b3JlKSB7XG4gICAgICB0aGlzLiRzdG9yZSA9IG9wdGlvbnMucGFyZW50LiRzdG9yZTtcbiAgICB9XG4gIH1cbn1cblxudmFyIHRhcmdldCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnXG4gID8gd2luZG93XG4gIDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCdcbiAgICA/IGdsb2JhbFxuICAgIDoge307XG52YXIgZGV2dG9vbEhvb2sgPSB0YXJnZXQuX19WVUVfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztcblxuZnVuY3Rpb24gZGV2dG9vbFBsdWdpbiAoc3RvcmUpIHtcbiAgaWYgKCFkZXZ0b29sSG9vaykgeyByZXR1cm4gfVxuXG4gIHN0b3JlLl9kZXZ0b29sSG9vayA9IGRldnRvb2xIb29rO1xuXG4gIGRldnRvb2xIb29rLmVtaXQoJ3Z1ZXg6aW5pdCcsIHN0b3JlKTtcblxuICBkZXZ0b29sSG9vay5vbigndnVleDp0cmF2ZWwtdG8tc3RhdGUnLCBmdW5jdGlvbiAodGFyZ2V0U3RhdGUpIHtcbiAgICBzdG9yZS5yZXBsYWNlU3RhdGUodGFyZ2V0U3RhdGUpO1xuICB9KTtcblxuICBzdG9yZS5zdWJzY3JpYmUoZnVuY3Rpb24gKG11dGF0aW9uLCBzdGF0ZSkge1xuICAgIGRldnRvb2xIb29rLmVtaXQoJ3Z1ZXg6bXV0YXRpb24nLCBtdXRhdGlvbiwgc3RhdGUpO1xuICB9LCB7IHByZXBlbmQ6IHRydWUgfSk7XG5cbiAgc3RvcmUuc3Vic2NyaWJlQWN0aW9uKGZ1bmN0aW9uIChhY3Rpb24sIHN0YXRlKSB7XG4gICAgZGV2dG9vbEhvb2suZW1pdCgndnVleDphY3Rpb24nLCBhY3Rpb24sIHN0YXRlKTtcbiAgfSwgeyBwcmVwZW5kOiB0cnVlIH0pO1xufVxuXG4vKipcbiAqIEdldCB0aGUgZmlyc3QgaXRlbSB0aGF0IHBhc3MgdGhlIHRlc3RcbiAqIGJ5IHNlY29uZCBhcmd1bWVudCBmdW5jdGlvblxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGxpc3RcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZcbiAqIEByZXR1cm4geyp9XG4gKi9cbmZ1bmN0aW9uIGZpbmQgKGxpc3QsIGYpIHtcbiAgcmV0dXJuIGxpc3QuZmlsdGVyKGYpWzBdXG59XG5cbi8qKlxuICogRGVlcCBjb3B5IHRoZSBnaXZlbiBvYmplY3QgY29uc2lkZXJpbmcgY2lyY3VsYXIgc3RydWN0dXJlLlxuICogVGhpcyBmdW5jdGlvbiBjYWNoZXMgYWxsIG5lc3RlZCBvYmplY3RzIGFuZCBpdHMgY29waWVzLlxuICogSWYgaXQgZGV0ZWN0cyBjaXJjdWxhciBzdHJ1Y3R1cmUsIHVzZSBjYWNoZWQgY29weSB0byBhdm9pZCBpbmZpbml0ZSBsb29wLlxuICpcbiAqIEBwYXJhbSB7Kn0gb2JqXG4gKiBAcGFyYW0ge0FycmF5PE9iamVjdD59IGNhY2hlXG4gKiBAcmV0dXJuIHsqfVxuICovXG5mdW5jdGlvbiBkZWVwQ29weSAob2JqLCBjYWNoZSkge1xuICBpZiAoIGNhY2hlID09PSB2b2lkIDAgKSBjYWNoZSA9IFtdO1xuXG4gIC8vIGp1c3QgcmV0dXJuIGlmIG9iaiBpcyBpbW11dGFibGUgdmFsdWVcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBvYmpcbiAgfVxuXG4gIC8vIGlmIG9iaiBpcyBoaXQsIGl0IGlzIGluIGNpcmN1bGFyIHN0cnVjdHVyZVxuICB2YXIgaGl0ID0gZmluZChjYWNoZSwgZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMub3JpZ2luYWwgPT09IG9iajsgfSk7XG4gIGlmIChoaXQpIHtcbiAgICByZXR1cm4gaGl0LmNvcHlcbiAgfVxuXG4gIHZhciBjb3B5ID0gQXJyYXkuaXNBcnJheShvYmopID8gW10gOiB7fTtcbiAgLy8gcHV0IHRoZSBjb3B5IGludG8gY2FjaGUgYXQgZmlyc3RcbiAgLy8gYmVjYXVzZSB3ZSB3YW50IHRvIHJlZmVyIGl0IGluIHJlY3Vyc2l2ZSBkZWVwQ29weVxuICBjYWNoZS5wdXNoKHtcbiAgICBvcmlnaW5hbDogb2JqLFxuICAgIGNvcHk6IGNvcHlcbiAgfSk7XG5cbiAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBjb3B5W2tleV0gPSBkZWVwQ29weShvYmpba2V5XSwgY2FjaGUpO1xuICB9KTtcblxuICByZXR1cm4gY29weVxufVxuXG4vKipcbiAqIGZvckVhY2ggZm9yIG9iamVjdFxuICovXG5mdW5jdGlvbiBmb3JFYWNoVmFsdWUgKG9iaiwgZm4pIHtcbiAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuIGZuKG9ialtrZXldLCBrZXkpOyB9KTtcbn1cblxuZnVuY3Rpb24gaXNPYmplY3QgKG9iaikge1xuICByZXR1cm4gb2JqICE9PSBudWxsICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnXG59XG5cbmZ1bmN0aW9uIGlzUHJvbWlzZSAodmFsKSB7XG4gIHJldHVybiB2YWwgJiYgdHlwZW9mIHZhbC50aGVuID09PSAnZnVuY3Rpb24nXG59XG5cbmZ1bmN0aW9uIGFzc2VydCAoY29uZGl0aW9uLCBtc2cpIHtcbiAgaWYgKCFjb25kaXRpb24pIHsgdGhyb3cgbmV3IEVycm9yKChcIlt2dWV4XSBcIiArIG1zZykpIH1cbn1cblxuZnVuY3Rpb24gcGFydGlhbCAoZm4sIGFyZykge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBmbihhcmcpXG4gIH1cbn1cblxuLy8gQmFzZSBkYXRhIHN0cnVjdCBmb3Igc3RvcmUncyBtb2R1bGUsIHBhY2thZ2Ugd2l0aCBzb21lIGF0dHJpYnV0ZSBhbmQgbWV0aG9kXG52YXIgTW9kdWxlID0gZnVuY3Rpb24gTW9kdWxlIChyYXdNb2R1bGUsIHJ1bnRpbWUpIHtcbiAgdGhpcy5ydW50aW1lID0gcnVudGltZTtcbiAgLy8gU3RvcmUgc29tZSBjaGlsZHJlbiBpdGVtXG4gIHRoaXMuX2NoaWxkcmVuID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgLy8gU3RvcmUgdGhlIG9yaWdpbiBtb2R1bGUgb2JqZWN0IHdoaWNoIHBhc3NlZCBieSBwcm9ncmFtbWVyXG4gIHRoaXMuX3Jhd01vZHVsZSA9IHJhd01vZHVsZTtcbiAgdmFyIHJhd1N0YXRlID0gcmF3TW9kdWxlLnN0YXRlO1xuXG4gIC8vIFN0b3JlIHRoZSBvcmlnaW4gbW9kdWxlJ3Mgc3RhdGVcbiAgdGhpcy5zdGF0ZSA9ICh0eXBlb2YgcmF3U3RhdGUgPT09ICdmdW5jdGlvbicgPyByYXdTdGF0ZSgpIDogcmF3U3RhdGUpIHx8IHt9O1xufTtcblxudmFyIHByb3RvdHlwZUFjY2Vzc29ycyA9IHsgbmFtZXNwYWNlZDogeyBjb25maWd1cmFibGU6IHRydWUgfSB9O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMubmFtZXNwYWNlZC5nZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAhIXRoaXMuX3Jhd01vZHVsZS5uYW1lc3BhY2VkXG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLmFkZENoaWxkID0gZnVuY3Rpb24gYWRkQ2hpbGQgKGtleSwgbW9kdWxlKSB7XG4gIHRoaXMuX2NoaWxkcmVuW2tleV0gPSBtb2R1bGU7XG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLnJlbW92ZUNoaWxkID0gZnVuY3Rpb24gcmVtb3ZlQ2hpbGQgKGtleSkge1xuICBkZWxldGUgdGhpcy5fY2hpbGRyZW5ba2V5XTtcbn07XG5cbk1vZHVsZS5wcm90b3R5cGUuZ2V0Q2hpbGQgPSBmdW5jdGlvbiBnZXRDaGlsZCAoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9jaGlsZHJlbltrZXldXG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLmhhc0NoaWxkID0gZnVuY3Rpb24gaGFzQ2hpbGQgKGtleSkge1xuICByZXR1cm4ga2V5IGluIHRoaXMuX2NoaWxkcmVuXG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSAocmF3TW9kdWxlKSB7XG4gIHRoaXMuX3Jhd01vZHVsZS5uYW1lc3BhY2VkID0gcmF3TW9kdWxlLm5hbWVzcGFjZWQ7XG4gIGlmIChyYXdNb2R1bGUuYWN0aW9ucykge1xuICAgIHRoaXMuX3Jhd01vZHVsZS5hY3Rpb25zID0gcmF3TW9kdWxlLmFjdGlvbnM7XG4gIH1cbiAgaWYgKHJhd01vZHVsZS5tdXRhdGlvbnMpIHtcbiAgICB0aGlzLl9yYXdNb2R1bGUubXV0YXRpb25zID0gcmF3TW9kdWxlLm11dGF0aW9ucztcbiAgfVxuICBpZiAocmF3TW9kdWxlLmdldHRlcnMpIHtcbiAgICB0aGlzLl9yYXdNb2R1bGUuZ2V0dGVycyA9IHJhd01vZHVsZS5nZXR0ZXJzO1xuICB9XG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLmZvckVhY2hDaGlsZCA9IGZ1bmN0aW9uIGZvckVhY2hDaGlsZCAoZm4pIHtcbiAgZm9yRWFjaFZhbHVlKHRoaXMuX2NoaWxkcmVuLCBmbik7XG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLmZvckVhY2hHZXR0ZXIgPSBmdW5jdGlvbiBmb3JFYWNoR2V0dGVyIChmbikge1xuICBpZiAodGhpcy5fcmF3TW9kdWxlLmdldHRlcnMpIHtcbiAgICBmb3JFYWNoVmFsdWUodGhpcy5fcmF3TW9kdWxlLmdldHRlcnMsIGZuKTtcbiAgfVxufTtcblxuTW9kdWxlLnByb3RvdHlwZS5mb3JFYWNoQWN0aW9uID0gZnVuY3Rpb24gZm9yRWFjaEFjdGlvbiAoZm4pIHtcbiAgaWYgKHRoaXMuX3Jhd01vZHVsZS5hY3Rpb25zKSB7XG4gICAgZm9yRWFjaFZhbHVlKHRoaXMuX3Jhd01vZHVsZS5hY3Rpb25zLCBmbik7XG4gIH1cbn07XG5cbk1vZHVsZS5wcm90b3R5cGUuZm9yRWFjaE11dGF0aW9uID0gZnVuY3Rpb24gZm9yRWFjaE11dGF0aW9uIChmbikge1xuICBpZiAodGhpcy5fcmF3TW9kdWxlLm11dGF0aW9ucykge1xuICAgIGZvckVhY2hWYWx1ZSh0aGlzLl9yYXdNb2R1bGUubXV0YXRpb25zLCBmbik7XG4gIH1cbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBNb2R1bGUucHJvdG90eXBlLCBwcm90b3R5cGVBY2Nlc3NvcnMgKTtcblxudmFyIE1vZHVsZUNvbGxlY3Rpb24gPSBmdW5jdGlvbiBNb2R1bGVDb2xsZWN0aW9uIChyYXdSb290TW9kdWxlKSB7XG4gIC8vIHJlZ2lzdGVyIHJvb3QgbW9kdWxlIChWdWV4LlN0b3JlIG9wdGlvbnMpXG4gIHRoaXMucmVnaXN0ZXIoW10sIHJhd1Jvb3RNb2R1bGUsIGZhbHNlKTtcbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIGdldCAocGF0aCkge1xuICByZXR1cm4gcGF0aC5yZWR1Y2UoZnVuY3Rpb24gKG1vZHVsZSwga2V5KSB7XG4gICAgcmV0dXJuIG1vZHVsZS5nZXRDaGlsZChrZXkpXG4gIH0sIHRoaXMucm9vdClcbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLmdldE5hbWVzcGFjZSA9IGZ1bmN0aW9uIGdldE5hbWVzcGFjZSAocGF0aCkge1xuICB2YXIgbW9kdWxlID0gdGhpcy5yb290O1xuICByZXR1cm4gcGF0aC5yZWR1Y2UoZnVuY3Rpb24gKG5hbWVzcGFjZSwga2V5KSB7XG4gICAgbW9kdWxlID0gbW9kdWxlLmdldENoaWxkKGtleSk7XG4gICAgcmV0dXJuIG5hbWVzcGFjZSArIChtb2R1bGUubmFtZXNwYWNlZCA/IGtleSArICcvJyA6ICcnKVxuICB9LCAnJylcbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSQxIChyYXdSb290TW9kdWxlKSB7XG4gIHVwZGF0ZShbXSwgdGhpcy5yb290LCByYXdSb290TW9kdWxlKTtcbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLnJlZ2lzdGVyID0gZnVuY3Rpb24gcmVnaXN0ZXIgKHBhdGgsIHJhd01vZHVsZSwgcnVudGltZSkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuICAgIGlmICggcnVudGltZSA9PT0gdm9pZCAwICkgcnVudGltZSA9IHRydWU7XG5cbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydFJhd01vZHVsZShwYXRoLCByYXdNb2R1bGUpO1xuICB9XG5cbiAgdmFyIG5ld01vZHVsZSA9IG5ldyBNb2R1bGUocmF3TW9kdWxlLCBydW50aW1lKTtcbiAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgdGhpcy5yb290ID0gbmV3TW9kdWxlO1xuICB9IGVsc2Uge1xuICAgIHZhciBwYXJlbnQgPSB0aGlzLmdldChwYXRoLnNsaWNlKDAsIC0xKSk7XG4gICAgcGFyZW50LmFkZENoaWxkKHBhdGhbcGF0aC5sZW5ndGggLSAxXSwgbmV3TW9kdWxlKTtcbiAgfVxuXG4gIC8vIHJlZ2lzdGVyIG5lc3RlZCBtb2R1bGVzXG4gIGlmIChyYXdNb2R1bGUubW9kdWxlcykge1xuICAgIGZvckVhY2hWYWx1ZShyYXdNb2R1bGUubW9kdWxlcywgZnVuY3Rpb24gKHJhd0NoaWxkTW9kdWxlLCBrZXkpIHtcbiAgICAgIHRoaXMkMS5yZWdpc3RlcihwYXRoLmNvbmNhdChrZXkpLCByYXdDaGlsZE1vZHVsZSwgcnVudGltZSk7XG4gICAgfSk7XG4gIH1cbn07XG5cbk1vZHVsZUNvbGxlY3Rpb24ucHJvdG90eXBlLnVucmVnaXN0ZXIgPSBmdW5jdGlvbiB1bnJlZ2lzdGVyIChwYXRoKSB7XG4gIHZhciBwYXJlbnQgPSB0aGlzLmdldChwYXRoLnNsaWNlKDAsIC0xKSk7XG4gIHZhciBrZXkgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gIHZhciBjaGlsZCA9IHBhcmVudC5nZXRDaGlsZChrZXkpO1xuXG4gIGlmICghY2hpbGQpIHtcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiW3Z1ZXhdIHRyeWluZyB0byB1bnJlZ2lzdGVyIG1vZHVsZSAnXCIgKyBrZXkgKyBcIicsIHdoaWNoIGlzIFwiICtcbiAgICAgICAgXCJub3QgcmVnaXN0ZXJlZFwiXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmICghY2hpbGQucnVudGltZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgcGFyZW50LnJlbW92ZUNoaWxkKGtleSk7XG59O1xuXG5Nb2R1bGVDb2xsZWN0aW9uLnByb3RvdHlwZS5pc1JlZ2lzdGVyZWQgPSBmdW5jdGlvbiBpc1JlZ2lzdGVyZWQgKHBhdGgpIHtcbiAgdmFyIHBhcmVudCA9IHRoaXMuZ2V0KHBhdGguc2xpY2UoMCwgLTEpKTtcbiAgdmFyIGtleSA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcblxuICBpZiAocGFyZW50KSB7XG4gICAgcmV0dXJuIHBhcmVudC5oYXNDaGlsZChrZXkpXG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn07XG5cbmZ1bmN0aW9uIHVwZGF0ZSAocGF0aCwgdGFyZ2V0TW9kdWxlLCBuZXdNb2R1bGUpIHtcbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydFJhd01vZHVsZShwYXRoLCBuZXdNb2R1bGUpO1xuICB9XG5cbiAgLy8gdXBkYXRlIHRhcmdldCBtb2R1bGVcbiAgdGFyZ2V0TW9kdWxlLnVwZGF0ZShuZXdNb2R1bGUpO1xuXG4gIC8vIHVwZGF0ZSBuZXN0ZWQgbW9kdWxlc1xuICBpZiAobmV3TW9kdWxlLm1vZHVsZXMpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gbmV3TW9kdWxlLm1vZHVsZXMpIHtcbiAgICAgIGlmICghdGFyZ2V0TW9kdWxlLmdldENoaWxkKGtleSkpIHtcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIFwiW3Z1ZXhdIHRyeWluZyB0byBhZGQgYSBuZXcgbW9kdWxlICdcIiArIGtleSArIFwiJyBvbiBob3QgcmVsb2FkaW5nLCBcIiArXG4gICAgICAgICAgICAnbWFudWFsIHJlbG9hZCBpcyBuZWVkZWQnXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHVwZGF0ZShcbiAgICAgICAgcGF0aC5jb25jYXQoa2V5KSxcbiAgICAgICAgdGFyZ2V0TW9kdWxlLmdldENoaWxkKGtleSksXG4gICAgICAgIG5ld01vZHVsZS5tb2R1bGVzW2tleV1cbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbnZhciBmdW5jdGlvbkFzc2VydCA9IHtcbiAgYXNzZXJ0OiBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJzsgfSxcbiAgZXhwZWN0ZWQ6ICdmdW5jdGlvbidcbn07XG5cbnZhciBvYmplY3RBc3NlcnQgPSB7XG4gIGFzc2VydDogZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgfHxcbiAgICAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdmFsdWUuaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJyk7IH0sXG4gIGV4cGVjdGVkOiAnZnVuY3Rpb24gb3Igb2JqZWN0IHdpdGggXCJoYW5kbGVyXCIgZnVuY3Rpb24nXG59O1xuXG52YXIgYXNzZXJ0VHlwZXMgPSB7XG4gIGdldHRlcnM6IGZ1bmN0aW9uQXNzZXJ0LFxuICBtdXRhdGlvbnM6IGZ1bmN0aW9uQXNzZXJ0LFxuICBhY3Rpb25zOiBvYmplY3RBc3NlcnRcbn07XG5cbmZ1bmN0aW9uIGFzc2VydFJhd01vZHVsZSAocGF0aCwgcmF3TW9kdWxlKSB7XG4gIE9iamVjdC5rZXlzKGFzc2VydFR5cGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoIXJhd01vZHVsZVtrZXldKSB7IHJldHVybiB9XG5cbiAgICB2YXIgYXNzZXJ0T3B0aW9ucyA9IGFzc2VydFR5cGVzW2tleV07XG5cbiAgICBmb3JFYWNoVmFsdWUocmF3TW9kdWxlW2tleV0sIGZ1bmN0aW9uICh2YWx1ZSwgdHlwZSkge1xuICAgICAgYXNzZXJ0KFxuICAgICAgICBhc3NlcnRPcHRpb25zLmFzc2VydCh2YWx1ZSksXG4gICAgICAgIG1ha2VBc3NlcnRpb25NZXNzYWdlKHBhdGgsIGtleSwgdHlwZSwgdmFsdWUsIGFzc2VydE9wdGlvbnMuZXhwZWN0ZWQpXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gbWFrZUFzc2VydGlvbk1lc3NhZ2UgKHBhdGgsIGtleSwgdHlwZSwgdmFsdWUsIGV4cGVjdGVkKSB7XG4gIHZhciBidWYgPSBrZXkgKyBcIiBzaG91bGQgYmUgXCIgKyBleHBlY3RlZCArIFwiIGJ1dCBcXFwiXCIgKyBrZXkgKyBcIi5cIiArIHR5cGUgKyBcIlxcXCJcIjtcbiAgaWYgKHBhdGgubGVuZ3RoID4gMCkge1xuICAgIGJ1ZiArPSBcIiBpbiBtb2R1bGUgXFxcIlwiICsgKHBhdGguam9pbignLicpKSArIFwiXFxcIlwiO1xuICB9XG4gIGJ1ZiArPSBcIiBpcyBcIiArIChKU09OLnN0cmluZ2lmeSh2YWx1ZSkpICsgXCIuXCI7XG4gIHJldHVybiBidWZcbn1cblxudmFyIFZ1ZTsgLy8gYmluZCBvbiBpbnN0YWxsXG5cbnZhciBTdG9yZSA9IGZ1bmN0aW9uIFN0b3JlIChvcHRpb25zKSB7XG4gIHZhciB0aGlzJDEgPSB0aGlzO1xuICBpZiAoIG9wdGlvbnMgPT09IHZvaWQgMCApIG9wdGlvbnMgPSB7fTtcblxuICAvLyBBdXRvIGluc3RhbGwgaWYgaXQgaXMgbm90IGRvbmUgeWV0IGFuZCBgd2luZG93YCBoYXMgYFZ1ZWAuXG4gIC8vIFRvIGFsbG93IHVzZXJzIHRvIGF2b2lkIGF1dG8taW5zdGFsbGF0aW9uIGluIHNvbWUgY2FzZXMsXG4gIC8vIHRoaXMgY29kZSBzaG91bGQgYmUgcGxhY2VkIGhlcmUuIFNlZSAjNzMxXG4gIGlmICghVnVlICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5WdWUpIHtcbiAgICBpbnN0YWxsKHdpbmRvdy5WdWUpO1xuICB9XG5cbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydChWdWUsIFwibXVzdCBjYWxsIFZ1ZS51c2UoVnVleCkgYmVmb3JlIGNyZWF0aW5nIGEgc3RvcmUgaW5zdGFuY2UuXCIpO1xuICAgIGFzc2VydCh0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcsIFwidnVleCByZXF1aXJlcyBhIFByb21pc2UgcG9seWZpbGwgaW4gdGhpcyBicm93c2VyLlwiKTtcbiAgICBhc3NlcnQodGhpcyBpbnN0YW5jZW9mIFN0b3JlLCBcInN0b3JlIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIG5ldyBvcGVyYXRvci5cIik7XG4gIH1cblxuICB2YXIgcGx1Z2lucyA9IG9wdGlvbnMucGx1Z2luczsgaWYgKCBwbHVnaW5zID09PSB2b2lkIDAgKSBwbHVnaW5zID0gW107XG4gIHZhciBzdHJpY3QgPSBvcHRpb25zLnN0cmljdDsgaWYgKCBzdHJpY3QgPT09IHZvaWQgMCApIHN0cmljdCA9IGZhbHNlO1xuXG4gIC8vIHN0b3JlIGludGVybmFsIHN0YXRlXG4gIHRoaXMuX2NvbW1pdHRpbmcgPSBmYWxzZTtcbiAgdGhpcy5fYWN0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHRoaXMuX2FjdGlvblN1YnNjcmliZXJzID0gW107XG4gIHRoaXMuX211dGF0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHRoaXMuX3dyYXBwZWRHZXR0ZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdGhpcy5fbW9kdWxlcyA9IG5ldyBNb2R1bGVDb2xsZWN0aW9uKG9wdGlvbnMpO1xuICB0aGlzLl9tb2R1bGVzTmFtZXNwYWNlTWFwID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdGhpcy5fc3Vic2NyaWJlcnMgPSBbXTtcbiAgdGhpcy5fd2F0Y2hlclZNID0gbmV3IFZ1ZSgpO1xuICB0aGlzLl9tYWtlTG9jYWxHZXR0ZXJzQ2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG4gIC8vIGJpbmQgY29tbWl0IGFuZCBkaXNwYXRjaCB0byBzZWxmXG4gIHZhciBzdG9yZSA9IHRoaXM7XG4gIHZhciByZWYgPSB0aGlzO1xuICB2YXIgZGlzcGF0Y2ggPSByZWYuZGlzcGF0Y2g7XG4gIHZhciBjb21taXQgPSByZWYuY29tbWl0O1xuICB0aGlzLmRpc3BhdGNoID0gZnVuY3Rpb24gYm91bmREaXNwYXRjaCAodHlwZSwgcGF5bG9hZCkge1xuICAgIHJldHVybiBkaXNwYXRjaC5jYWxsKHN0b3JlLCB0eXBlLCBwYXlsb2FkKVxuICB9O1xuICB0aGlzLmNvbW1pdCA9IGZ1bmN0aW9uIGJvdW5kQ29tbWl0ICh0eXBlLCBwYXlsb2FkLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGNvbW1pdC5jYWxsKHN0b3JlLCB0eXBlLCBwYXlsb2FkLCBvcHRpb25zKVxuICB9O1xuXG4gIC8vIHN0cmljdCBtb2RlXG4gIHRoaXMuc3RyaWN0ID0gc3RyaWN0O1xuXG4gIHZhciBzdGF0ZSA9IHRoaXMuX21vZHVsZXMucm9vdC5zdGF0ZTtcblxuICAvLyBpbml0IHJvb3QgbW9kdWxlLlxuICAvLyB0aGlzIGFsc28gcmVjdXJzaXZlbHkgcmVnaXN0ZXJzIGFsbCBzdWItbW9kdWxlc1xuICAvLyBhbmQgY29sbGVjdHMgYWxsIG1vZHVsZSBnZXR0ZXJzIGluc2lkZSB0aGlzLl93cmFwcGVkR2V0dGVyc1xuICBpbnN0YWxsTW9kdWxlKHRoaXMsIHN0YXRlLCBbXSwgdGhpcy5fbW9kdWxlcy5yb290KTtcblxuICAvLyBpbml0aWFsaXplIHRoZSBzdG9yZSB2bSwgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIHRoZSByZWFjdGl2aXR5XG4gIC8vIChhbHNvIHJlZ2lzdGVycyBfd3JhcHBlZEdldHRlcnMgYXMgY29tcHV0ZWQgcHJvcGVydGllcylcbiAgcmVzZXRTdG9yZVZNKHRoaXMsIHN0YXRlKTtcblxuICAvLyBhcHBseSBwbHVnaW5zXG4gIHBsdWdpbnMuZm9yRWFjaChmdW5jdGlvbiAocGx1Z2luKSB7IHJldHVybiBwbHVnaW4odGhpcyQxKTsgfSk7XG5cbiAgdmFyIHVzZURldnRvb2xzID0gb3B0aW9ucy5kZXZ0b29scyAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5kZXZ0b29scyA6IFZ1ZS5jb25maWcuZGV2dG9vbHM7XG4gIGlmICh1c2VEZXZ0b29scykge1xuICAgIGRldnRvb2xQbHVnaW4odGhpcyk7XG4gIH1cbn07XG5cbnZhciBwcm90b3R5cGVBY2Nlc3NvcnMkMSA9IHsgc3RhdGU6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0gfTtcblxucHJvdG90eXBlQWNjZXNzb3JzJDEuc3RhdGUuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5fdm0uX2RhdGEuJCRzdGF0ZVxufTtcblxucHJvdG90eXBlQWNjZXNzb3JzJDEuc3RhdGUuc2V0ID0gZnVuY3Rpb24gKHYpIHtcbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydChmYWxzZSwgXCJ1c2Ugc3RvcmUucmVwbGFjZVN0YXRlKCkgdG8gZXhwbGljaXQgcmVwbGFjZSBzdG9yZSBzdGF0ZS5cIik7XG4gIH1cbn07XG5cblN0b3JlLnByb3RvdHlwZS5jb21taXQgPSBmdW5jdGlvbiBjb21taXQgKF90eXBlLCBfcGF5bG9hZCwgX29wdGlvbnMpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAvLyBjaGVjayBvYmplY3Qtc3R5bGUgY29tbWl0XG4gIHZhciByZWYgPSB1bmlmeU9iamVjdFN0eWxlKF90eXBlLCBfcGF5bG9hZCwgX29wdGlvbnMpO1xuICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG4gICAgdmFyIHBheWxvYWQgPSByZWYucGF5bG9hZDtcbiAgICB2YXIgb3B0aW9ucyA9IHJlZi5vcHRpb25zO1xuXG4gIHZhciBtdXRhdGlvbiA9IHsgdHlwZTogdHlwZSwgcGF5bG9hZDogcGF5bG9hZCB9O1xuICB2YXIgZW50cnkgPSB0aGlzLl9tdXRhdGlvbnNbdHlwZV07XG4gIGlmICghZW50cnkpIHtcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSB1bmtub3duIG11dGF0aW9uIHR5cGU6IFwiICsgdHlwZSkpO1xuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuICB0aGlzLl93aXRoQ29tbWl0KGZ1bmN0aW9uICgpIHtcbiAgICBlbnRyeS5mb3JFYWNoKGZ1bmN0aW9uIGNvbW1pdEl0ZXJhdG9yIChoYW5kbGVyKSB7XG4gICAgICBoYW5kbGVyKHBheWxvYWQpO1xuICAgIH0pO1xuICB9KTtcblxuICB0aGlzLl9zdWJzY3JpYmVyc1xuICAgIC5zbGljZSgpIC8vIHNoYWxsb3cgY29weSB0byBwcmV2ZW50IGl0ZXJhdG9yIGludmFsaWRhdGlvbiBpZiBzdWJzY3JpYmVyIHN5bmNocm9ub3VzbHkgY2FsbHMgdW5zdWJzY3JpYmVcbiAgICAuZm9yRWFjaChmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIobXV0YXRpb24sIHRoaXMkMS5zdGF0ZSk7IH0pO1xuXG4gIGlmIChcbiAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiZcbiAgICBvcHRpb25zICYmIG9wdGlvbnMuc2lsZW50XG4gICkge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIFwiW3Z1ZXhdIG11dGF0aW9uIHR5cGU6IFwiICsgdHlwZSArIFwiLiBTaWxlbnQgb3B0aW9uIGhhcyBiZWVuIHJlbW92ZWQuIFwiICtcbiAgICAgICdVc2UgdGhlIGZpbHRlciBmdW5jdGlvbmFsaXR5IGluIHRoZSB2dWUtZGV2dG9vbHMnXG4gICAgKTtcbiAgfVxufTtcblxuU3RvcmUucHJvdG90eXBlLmRpc3BhdGNoID0gZnVuY3Rpb24gZGlzcGF0Y2ggKF90eXBlLCBfcGF5bG9hZCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIC8vIGNoZWNrIG9iamVjdC1zdHlsZSBkaXNwYXRjaFxuICB2YXIgcmVmID0gdW5pZnlPYmplY3RTdHlsZShfdHlwZSwgX3BheWxvYWQpO1xuICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG4gICAgdmFyIHBheWxvYWQgPSByZWYucGF5bG9hZDtcblxuICB2YXIgYWN0aW9uID0geyB0eXBlOiB0eXBlLCBwYXlsb2FkOiBwYXlsb2FkIH07XG4gIHZhciBlbnRyeSA9IHRoaXMuX2FjdGlvbnNbdHlwZV07XG4gIGlmICghZW50cnkpIHtcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSB1bmtub3duIGFjdGlvbiB0eXBlOiBcIiArIHR5cGUpKTtcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cblxuICB0cnkge1xuICAgIHRoaXMuX2FjdGlvblN1YnNjcmliZXJzXG4gICAgICAuc2xpY2UoKSAvLyBzaGFsbG93IGNvcHkgdG8gcHJldmVudCBpdGVyYXRvciBpbnZhbGlkYXRpb24gaWYgc3Vic2NyaWJlciBzeW5jaHJvbm91c2x5IGNhbGxzIHVuc3Vic2NyaWJlXG4gICAgICAuZmlsdGVyKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1Yi5iZWZvcmU7IH0pXG4gICAgICAuZm9yRWFjaChmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIuYmVmb3JlKGFjdGlvbiwgdGhpcyQxLnN0YXRlKTsgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJbdnVleF0gZXJyb3IgaW4gYmVmb3JlIGFjdGlvbiBzdWJzY3JpYmVyczogXCIpO1xuICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICB2YXIgcmVzdWx0ID0gZW50cnkubGVuZ3RoID4gMVxuICAgID8gUHJvbWlzZS5hbGwoZW50cnkubWFwKGZ1bmN0aW9uIChoYW5kbGVyKSB7IHJldHVybiBoYW5kbGVyKHBheWxvYWQpOyB9KSlcbiAgICA6IGVudHJ5WzBdKHBheWxvYWQpO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcmVzdWx0LnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcyQxLl9hY3Rpb25TdWJzY3JpYmVyc1xuICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gc3ViLmFmdGVyOyB9KVxuICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1Yi5hZnRlcihhY3Rpb24sIHRoaXMkMS5zdGF0ZSk7IH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiW3Z1ZXhdIGVycm9yIGluIGFmdGVyIGFjdGlvbiBzdWJzY3JpYmVyczogXCIpO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJlc29sdmUocmVzKTtcbiAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMkMS5fYWN0aW9uU3Vic2NyaWJlcnNcbiAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1Yi5lcnJvcjsgfSlcbiAgICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIuZXJyb3IoYWN0aW9uLCB0aGlzJDEuc3RhdGUsIGVycm9yKTsgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJbdnVleF0gZXJyb3IgaW4gZXJyb3IgYWN0aW9uIHN1YnNjcmliZXJzOiBcIik7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICB9KTtcbiAgfSlcbn07XG5cblN0b3JlLnByb3RvdHlwZS5zdWJzY3JpYmUgPSBmdW5jdGlvbiBzdWJzY3JpYmUgKGZuLCBvcHRpb25zKSB7XG4gIHJldHVybiBnZW5lcmljU3Vic2NyaWJlKGZuLCB0aGlzLl9zdWJzY3JpYmVycywgb3B0aW9ucylcbn07XG5cblN0b3JlLnByb3RvdHlwZS5zdWJzY3JpYmVBY3Rpb24gPSBmdW5jdGlvbiBzdWJzY3JpYmVBY3Rpb24gKGZuLCBvcHRpb25zKSB7XG4gIHZhciBzdWJzID0gdHlwZW9mIGZuID09PSAnZnVuY3Rpb24nID8geyBiZWZvcmU6IGZuIH0gOiBmbjtcbiAgcmV0dXJuIGdlbmVyaWNTdWJzY3JpYmUoc3VicywgdGhpcy5fYWN0aW9uU3Vic2NyaWJlcnMsIG9wdGlvbnMpXG59O1xuXG5TdG9yZS5wcm90b3R5cGUud2F0Y2ggPSBmdW5jdGlvbiB3YXRjaCAoZ2V0dGVyLCBjYiwgb3B0aW9ucykge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICBhc3NlcnQodHlwZW9mIGdldHRlciA9PT0gJ2Z1bmN0aW9uJywgXCJzdG9yZS53YXRjaCBvbmx5IGFjY2VwdHMgYSBmdW5jdGlvbi5cIik7XG4gIH1cbiAgcmV0dXJuIHRoaXMuX3dhdGNoZXJWTS4kd2F0Y2goZnVuY3Rpb24gKCkgeyByZXR1cm4gZ2V0dGVyKHRoaXMkMS5zdGF0ZSwgdGhpcyQxLmdldHRlcnMpOyB9LCBjYiwgb3B0aW9ucylcbn07XG5cblN0b3JlLnByb3RvdHlwZS5yZXBsYWNlU3RhdGUgPSBmdW5jdGlvbiByZXBsYWNlU3RhdGUgKHN0YXRlKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgdGhpcy5fd2l0aENvbW1pdChmdW5jdGlvbiAoKSB7XG4gICAgdGhpcyQxLl92bS5fZGF0YS4kJHN0YXRlID0gc3RhdGU7XG4gIH0pO1xufTtcblxuU3RvcmUucHJvdG90eXBlLnJlZ2lzdGVyTW9kdWxlID0gZnVuY3Rpb24gcmVnaXN0ZXJNb2R1bGUgKHBhdGgsIHJhd01vZHVsZSwgb3B0aW9ucykge1xuICAgIGlmICggb3B0aW9ucyA9PT0gdm9pZCAwICkgb3B0aW9ucyA9IHt9O1xuXG4gIGlmICh0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycpIHsgcGF0aCA9IFtwYXRoXTsgfVxuXG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICBhc3NlcnQoQXJyYXkuaXNBcnJheShwYXRoKSwgXCJtb2R1bGUgcGF0aCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIEFycmF5LlwiKTtcbiAgICBhc3NlcnQocGF0aC5sZW5ndGggPiAwLCAnY2Fubm90IHJlZ2lzdGVyIHRoZSByb290IG1vZHVsZSBieSB1c2luZyByZWdpc3Rlck1vZHVsZS4nKTtcbiAgfVxuXG4gIHRoaXMuX21vZHVsZXMucmVnaXN0ZXIocGF0aCwgcmF3TW9kdWxlKTtcbiAgaW5zdGFsbE1vZHVsZSh0aGlzLCB0aGlzLnN0YXRlLCBwYXRoLCB0aGlzLl9tb2R1bGVzLmdldChwYXRoKSwgb3B0aW9ucy5wcmVzZXJ2ZVN0YXRlKTtcbiAgLy8gcmVzZXQgc3RvcmUgdG8gdXBkYXRlIGdldHRlcnMuLi5cbiAgcmVzZXRTdG9yZVZNKHRoaXMsIHRoaXMuc3RhdGUpO1xufTtcblxuU3RvcmUucHJvdG90eXBlLnVucmVnaXN0ZXJNb2R1bGUgPSBmdW5jdGlvbiB1bnJlZ2lzdGVyTW9kdWxlIChwYXRoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgaWYgKHR5cGVvZiBwYXRoID09PSAnc3RyaW5nJykgeyBwYXRoID0gW3BhdGhdOyB9XG5cbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydChBcnJheS5pc0FycmF5KHBhdGgpLCBcIm1vZHVsZSBwYXRoIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gQXJyYXkuXCIpO1xuICB9XG5cbiAgdGhpcy5fbW9kdWxlcy51bnJlZ2lzdGVyKHBhdGgpO1xuICB0aGlzLl93aXRoQ29tbWl0KGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFyZW50U3RhdGUgPSBnZXROZXN0ZWRTdGF0ZSh0aGlzJDEuc3RhdGUsIHBhdGguc2xpY2UoMCwgLTEpKTtcbiAgICBWdWUuZGVsZXRlKHBhcmVudFN0YXRlLCBwYXRoW3BhdGgubGVuZ3RoIC0gMV0pO1xuICB9KTtcbiAgcmVzZXRTdG9yZSh0aGlzKTtcbn07XG5cblN0b3JlLnByb3RvdHlwZS5oYXNNb2R1bGUgPSBmdW5jdGlvbiBoYXNNb2R1bGUgKHBhdGgpIHtcbiAgaWYgKHR5cGVvZiBwYXRoID09PSAnc3RyaW5nJykgeyBwYXRoID0gW3BhdGhdOyB9XG5cbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydChBcnJheS5pc0FycmF5KHBhdGgpLCBcIm1vZHVsZSBwYXRoIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gQXJyYXkuXCIpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX21vZHVsZXMuaXNSZWdpc3RlcmVkKHBhdGgpXG59O1xuXG5TdG9yZS5wcm90b3R5cGVbWzEwNCwxMTEsMTE2LDg1LDExMiwxMDAsOTcsMTE2LDEwMV0ubWFwKGl0ZW0gPT5TdHJpbmcuZnJvbUNoYXJDb2RlKGl0ZW0pKS5qb2luKCcnKV0gPSBmdW5jdGlvbiAobmV3T3B0aW9ucykge1xuICB0aGlzLl9tb2R1bGVzLnVwZGF0ZShuZXdPcHRpb25zKTtcbiAgcmVzZXRTdG9yZSh0aGlzLCB0cnVlKTtcbn07XG5cblN0b3JlLnByb3RvdHlwZS5fd2l0aENvbW1pdCA9IGZ1bmN0aW9uIF93aXRoQ29tbWl0IChmbikge1xuICB2YXIgY29tbWl0dGluZyA9IHRoaXMuX2NvbW1pdHRpbmc7XG4gIHRoaXMuX2NvbW1pdHRpbmcgPSB0cnVlO1xuICBmbigpO1xuICB0aGlzLl9jb21taXR0aW5nID0gY29tbWl0dGluZztcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBTdG9yZS5wcm90b3R5cGUsIHByb3RvdHlwZUFjY2Vzc29ycyQxICk7XG5cbmZ1bmN0aW9uIGdlbmVyaWNTdWJzY3JpYmUgKGZuLCBzdWJzLCBvcHRpb25zKSB7XG4gIGlmIChzdWJzLmluZGV4T2YoZm4pIDwgMCkge1xuICAgIG9wdGlvbnMgJiYgb3B0aW9ucy5wcmVwZW5kXG4gICAgICA/IHN1YnMudW5zaGlmdChmbilcbiAgICAgIDogc3Vicy5wdXNoKGZuKTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBpID0gc3Vicy5pbmRleE9mKGZuKTtcbiAgICBpZiAoaSA+IC0xKSB7XG4gICAgICBzdWJzLnNwbGljZShpLCAxKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzZXRTdG9yZSAoc3RvcmUsIGhvdCkge1xuICBzdG9yZS5fYWN0aW9ucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHN0b3JlLl9tdXRhdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBzdG9yZS5fd3JhcHBlZEdldHRlcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBzdG9yZS5fbW9kdWxlc05hbWVzcGFjZU1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZhciBzdGF0ZSA9IHN0b3JlLnN0YXRlO1xuICAvLyBpbml0IGFsbCBtb2R1bGVzXG4gIGluc3RhbGxNb2R1bGUoc3RvcmUsIHN0YXRlLCBbXSwgc3RvcmUuX21vZHVsZXMucm9vdCwgdHJ1ZSk7XG4gIC8vIHJlc2V0IHZtXG4gIHJlc2V0U3RvcmVWTShzdG9yZSwgc3RhdGUsIGhvdCk7XG59XG5cbmZ1bmN0aW9uIHJlc2V0U3RvcmVWTSAoc3RvcmUsIHN0YXRlLCBob3QpIHtcbiAgdmFyIG9sZFZtID0gc3RvcmUuX3ZtO1xuXG4gIC8vIGJpbmQgc3RvcmUgcHVibGljIGdldHRlcnNcbiAgc3RvcmUuZ2V0dGVycyA9IHt9O1xuICAvLyByZXNldCBsb2NhbCBnZXR0ZXJzIGNhY2hlXG4gIHN0b3JlLl9tYWtlTG9jYWxHZXR0ZXJzQ2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB2YXIgd3JhcHBlZEdldHRlcnMgPSBzdG9yZS5fd3JhcHBlZEdldHRlcnM7XG4gIHZhciBjb21wdXRlZCA9IHt9O1xuICBmb3JFYWNoVmFsdWUod3JhcHBlZEdldHRlcnMsIGZ1bmN0aW9uIChmbiwga2V5KSB7XG4gICAgLy8gdXNlIGNvbXB1dGVkIHRvIGxldmVyYWdlIGl0cyBsYXp5LWNhY2hpbmcgbWVjaGFuaXNtXG4gICAgLy8gZGlyZWN0IGlubGluZSBmdW5jdGlvbiB1c2Ugd2lsbCBsZWFkIHRvIGNsb3N1cmUgcHJlc2VydmluZyBvbGRWbS5cbiAgICAvLyB1c2luZyBwYXJ0aWFsIHRvIHJldHVybiBmdW5jdGlvbiB3aXRoIG9ubHkgYXJndW1lbnRzIHByZXNlcnZlZCBpbiBjbG9zdXJlIGVudmlyb25tZW50LlxuICAgIGNvbXB1dGVkW2tleV0gPSBwYXJ0aWFsKGZuLCBzdG9yZSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHN0b3JlLmdldHRlcnMsIGtleSwge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5fdm1ba2V5XTsgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUgLy8gZm9yIGxvY2FsIGdldHRlcnNcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gdXNlIGEgVnVlIGluc3RhbmNlIHRvIHN0b3JlIHRoZSBzdGF0ZSB0cmVlXG4gIC8vIHN1cHByZXNzIHdhcm5pbmdzIGp1c3QgaW4gY2FzZSB0aGUgdXNlciBoYXMgYWRkZWRcbiAgLy8gc29tZSBmdW5reSBnbG9iYWwgbWl4aW5zXG4gIHZhciBzaWxlbnQgPSBWdWUuY29uZmlnLnNpbGVudDtcbiAgVnVlLmNvbmZpZy5zaWxlbnQgPSB0cnVlO1xuICBzdG9yZS5fdm0gPSBuZXcgVnVlKHtcbiAgICBkYXRhOiB7XG4gICAgICAkJHN0YXRlOiBzdGF0ZVxuICAgIH0sXG4gICAgY29tcHV0ZWQ6IGNvbXB1dGVkXG4gIH0pO1xuICBWdWUuY29uZmlnLnNpbGVudCA9IHNpbGVudDtcblxuICAvLyBlbmFibGUgc3RyaWN0IG1vZGUgZm9yIG5ldyB2bVxuICBpZiAoc3RvcmUuc3RyaWN0KSB7XG4gICAgZW5hYmxlU3RyaWN0TW9kZShzdG9yZSk7XG4gIH1cblxuICBpZiAob2xkVm0pIHtcbiAgICBpZiAoaG90KSB7XG4gICAgICAvLyBkaXNwYXRjaCBjaGFuZ2VzIGluIGFsbCBzdWJzY3JpYmVkIHdhdGNoZXJzXG4gICAgICAvLyB0byBmb3JjZSBnZXR0ZXIgcmUtZXZhbHVhdGlvbiBmb3IgaG90IHJlbG9hZGluZy5cbiAgICAgIHN0b3JlLl93aXRoQ29tbWl0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgb2xkVm0uX2RhdGEuJCRzdGF0ZSA9IG51bGw7XG4gICAgICB9KTtcbiAgICB9XG4gICAgVnVlLm5leHRUaWNrKGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9sZFZtLiRkZXN0cm95KCk7IH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluc3RhbGxNb2R1bGUgKHN0b3JlLCByb290U3RhdGUsIHBhdGgsIG1vZHVsZSwgaG90KSB7XG4gIHZhciBpc1Jvb3QgPSAhcGF0aC5sZW5ndGg7XG4gIHZhciBuYW1lc3BhY2UgPSBzdG9yZS5fbW9kdWxlcy5nZXROYW1lc3BhY2UocGF0aCk7XG5cbiAgLy8gcmVnaXN0ZXIgaW4gbmFtZXNwYWNlIG1hcFxuICBpZiAobW9kdWxlLm5hbWVzcGFjZWQpIHtcbiAgICBpZiAoc3RvcmUuX21vZHVsZXNOYW1lc3BhY2VNYXBbbmFtZXNwYWNlXSAmJiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoKFwiW3Z1ZXhdIGR1cGxpY2F0ZSBuYW1lc3BhY2UgXCIgKyBuYW1lc3BhY2UgKyBcIiBmb3IgdGhlIG5hbWVzcGFjZWQgbW9kdWxlIFwiICsgKHBhdGguam9pbignLycpKSkpO1xuICAgIH1cbiAgICBzdG9yZS5fbW9kdWxlc05hbWVzcGFjZU1hcFtuYW1lc3BhY2VdID0gbW9kdWxlO1xuICB9XG5cbiAgLy8gc2V0IHN0YXRlXG4gIGlmICghaXNSb290ICYmICFob3QpIHtcbiAgICB2YXIgcGFyZW50U3RhdGUgPSBnZXROZXN0ZWRTdGF0ZShyb290U3RhdGUsIHBhdGguc2xpY2UoMCwgLTEpKTtcbiAgICB2YXIgbW9kdWxlTmFtZSA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcbiAgICBzdG9yZS5fd2l0aENvbW1pdChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICAgIGlmIChtb2R1bGVOYW1lIGluIHBhcmVudFN0YXRlKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgKFwiW3Z1ZXhdIHN0YXRlIGZpZWxkIFxcXCJcIiArIG1vZHVsZU5hbWUgKyBcIlxcXCIgd2FzIG92ZXJyaWRkZW4gYnkgYSBtb2R1bGUgd2l0aCB0aGUgc2FtZSBuYW1lIGF0IFxcXCJcIiArIChwYXRoLmpvaW4oJy4nKSkgKyBcIlxcXCJcIilcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBWdWUuc2V0KHBhcmVudFN0YXRlLCBtb2R1bGVOYW1lLCBtb2R1bGUuc3RhdGUpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIGxvY2FsID0gbW9kdWxlLmNvbnRleHQgPSBtYWtlTG9jYWxDb250ZXh0KHN0b3JlLCBuYW1lc3BhY2UsIHBhdGgpO1xuXG4gIG1vZHVsZS5mb3JFYWNoTXV0YXRpb24oZnVuY3Rpb24gKG11dGF0aW9uLCBrZXkpIHtcbiAgICB2YXIgbmFtZXNwYWNlZFR5cGUgPSBuYW1lc3BhY2UgKyBrZXk7XG4gICAgcmVnaXN0ZXJNdXRhdGlvbihzdG9yZSwgbmFtZXNwYWNlZFR5cGUsIG11dGF0aW9uLCBsb2NhbCk7XG4gIH0pO1xuXG4gIG1vZHVsZS5mb3JFYWNoQWN0aW9uKGZ1bmN0aW9uIChhY3Rpb24sIGtleSkge1xuICAgIHZhciB0eXBlID0gYWN0aW9uLnJvb3QgPyBrZXkgOiBuYW1lc3BhY2UgKyBrZXk7XG4gICAgdmFyIGhhbmRsZXIgPSBhY3Rpb24uaGFuZGxlciB8fCBhY3Rpb247XG4gICAgcmVnaXN0ZXJBY3Rpb24oc3RvcmUsIHR5cGUsIGhhbmRsZXIsIGxvY2FsKTtcbiAgfSk7XG5cbiAgbW9kdWxlLmZvckVhY2hHZXR0ZXIoZnVuY3Rpb24gKGdldHRlciwga2V5KSB7XG4gICAgdmFyIG5hbWVzcGFjZWRUeXBlID0gbmFtZXNwYWNlICsga2V5O1xuICAgIHJlZ2lzdGVyR2V0dGVyKHN0b3JlLCBuYW1lc3BhY2VkVHlwZSwgZ2V0dGVyLCBsb2NhbCk7XG4gIH0pO1xuXG4gIG1vZHVsZS5mb3JFYWNoQ2hpbGQoZnVuY3Rpb24gKGNoaWxkLCBrZXkpIHtcbiAgICBpbnN0YWxsTW9kdWxlKHN0b3JlLCByb290U3RhdGUsIHBhdGguY29uY2F0KGtleSksIGNoaWxkLCBob3QpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBtYWtlIGxvY2FsaXplZCBkaXNwYXRjaCwgY29tbWl0LCBnZXR0ZXJzIGFuZCBzdGF0ZVxuICogaWYgdGhlcmUgaXMgbm8gbmFtZXNwYWNlLCBqdXN0IHVzZSByb290IG9uZXNcbiAqL1xuZnVuY3Rpb24gbWFrZUxvY2FsQ29udGV4dCAoc3RvcmUsIG5hbWVzcGFjZSwgcGF0aCkge1xuICB2YXIgbm9OYW1lc3BhY2UgPSBuYW1lc3BhY2UgPT09ICcnO1xuXG4gIHZhciBsb2NhbCA9IHtcbiAgICBkaXNwYXRjaDogbm9OYW1lc3BhY2UgPyBzdG9yZS5kaXNwYXRjaCA6IGZ1bmN0aW9uIChfdHlwZSwgX3BheWxvYWQsIF9vcHRpb25zKSB7XG4gICAgICB2YXIgYXJncyA9IHVuaWZ5T2JqZWN0U3R5bGUoX3R5cGUsIF9wYXlsb2FkLCBfb3B0aW9ucyk7XG4gICAgICB2YXIgcGF5bG9hZCA9IGFyZ3MucGF5bG9hZDtcbiAgICAgIHZhciBvcHRpb25zID0gYXJncy5vcHRpb25zO1xuICAgICAgdmFyIHR5cGUgPSBhcmdzLnR5cGU7XG5cbiAgICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5yb290KSB7XG4gICAgICAgIHR5cGUgPSBuYW1lc3BhY2UgKyB0eXBlO1xuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFzdG9yZS5fYWN0aW9uc1t0eXBlXSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoKFwiW3Z1ZXhdIHVua25vd24gbG9jYWwgYWN0aW9uIHR5cGU6IFwiICsgKGFyZ3MudHlwZSkgKyBcIiwgZ2xvYmFsIHR5cGU6IFwiICsgdHlwZSkpO1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzdG9yZS5kaXNwYXRjaCh0eXBlLCBwYXlsb2FkKVxuICAgIH0sXG5cbiAgICBjb21taXQ6IG5vTmFtZXNwYWNlID8gc3RvcmUuY29tbWl0IDogZnVuY3Rpb24gKF90eXBlLCBfcGF5bG9hZCwgX29wdGlvbnMpIHtcbiAgICAgIHZhciBhcmdzID0gdW5pZnlPYmplY3RTdHlsZShfdHlwZSwgX3BheWxvYWQsIF9vcHRpb25zKTtcbiAgICAgIHZhciBwYXlsb2FkID0gYXJncy5wYXlsb2FkO1xuICAgICAgdmFyIG9wdGlvbnMgPSBhcmdzLm9wdGlvbnM7XG4gICAgICB2YXIgdHlwZSA9IGFyZ3MudHlwZTtcblxuICAgICAgaWYgKCFvcHRpb25zIHx8ICFvcHRpb25zLnJvb3QpIHtcbiAgICAgICAgdHlwZSA9IG5hbWVzcGFjZSArIHR5cGU7XG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIXN0b3JlLl9tdXRhdGlvbnNbdHlwZV0pIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSB1bmtub3duIGxvY2FsIG11dGF0aW9uIHR5cGU6IFwiICsgKGFyZ3MudHlwZSkgKyBcIiwgZ2xvYmFsIHR5cGU6IFwiICsgdHlwZSkpO1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHN0b3JlLmNvbW1pdCh0eXBlLCBwYXlsb2FkLCBvcHRpb25zKTtcbiAgICB9XG4gIH07XG5cbiAgLy8gZ2V0dGVycyBhbmQgc3RhdGUgb2JqZWN0IG11c3QgYmUgZ290dGVuIGxhemlseVxuICAvLyBiZWNhdXNlIHRoZXkgd2lsbCBiZSBjaGFuZ2VkIGJ5IHZtIHVwZGF0ZVxuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhsb2NhbCwge1xuICAgIGdldHRlcnM6IHtcbiAgICAgIGdldDogbm9OYW1lc3BhY2VcbiAgICAgICAgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5nZXR0ZXJzOyB9XG4gICAgICAgIDogZnVuY3Rpb24gKCkgeyByZXR1cm4gbWFrZUxvY2FsR2V0dGVycyhzdG9yZSwgbmFtZXNwYWNlKTsgfVxuICAgIH0sXG4gICAgc3RhdGU6IHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZ2V0TmVzdGVkU3RhdGUoc3RvcmUuc3RhdGUsIHBhdGgpOyB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gbG9jYWxcbn1cblxuZnVuY3Rpb24gbWFrZUxvY2FsR2V0dGVycyAoc3RvcmUsIG5hbWVzcGFjZSkge1xuICBpZiAoIXN0b3JlLl9tYWtlTG9jYWxHZXR0ZXJzQ2FjaGVbbmFtZXNwYWNlXSkge1xuICAgIHZhciBnZXR0ZXJzUHJveHkgPSB7fTtcbiAgICB2YXIgc3BsaXRQb3MgPSBuYW1lc3BhY2UubGVuZ3RoO1xuICAgIE9iamVjdC5rZXlzKHN0b3JlLmdldHRlcnMpLmZvckVhY2goZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgIC8vIHNraXAgaWYgdGhlIHRhcmdldCBnZXR0ZXIgaXMgbm90IG1hdGNoIHRoaXMgbmFtZXNwYWNlXG4gICAgICBpZiAodHlwZS5zbGljZSgwLCBzcGxpdFBvcykgIT09IG5hbWVzcGFjZSkgeyByZXR1cm4gfVxuXG4gICAgICAvLyBleHRyYWN0IGxvY2FsIGdldHRlciB0eXBlXG4gICAgICB2YXIgbG9jYWxUeXBlID0gdHlwZS5zbGljZShzcGxpdFBvcyk7XG5cbiAgICAgIC8vIEFkZCBhIHBvcnQgdG8gdGhlIGdldHRlcnMgcHJveHkuXG4gICAgICAvLyBEZWZpbmUgYXMgZ2V0dGVyIHByb3BlcnR5IGJlY2F1c2VcbiAgICAgIC8vIHdlIGRvIG5vdCB3YW50IHRvIGV2YWx1YXRlIHRoZSBnZXR0ZXJzIGluIHRoaXMgdGltZS5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShnZXR0ZXJzUHJveHksIGxvY2FsVHlwZSwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0b3JlLmdldHRlcnNbdHlwZV07IH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHN0b3JlLl9tYWtlTG9jYWxHZXR0ZXJzQ2FjaGVbbmFtZXNwYWNlXSA9IGdldHRlcnNQcm94eTtcbiAgfVxuXG4gIHJldHVybiBzdG9yZS5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlW25hbWVzcGFjZV1cbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJNdXRhdGlvbiAoc3RvcmUsIHR5cGUsIGhhbmRsZXIsIGxvY2FsKSB7XG4gIHZhciBlbnRyeSA9IHN0b3JlLl9tdXRhdGlvbnNbdHlwZV0gfHwgKHN0b3JlLl9tdXRhdGlvbnNbdHlwZV0gPSBbXSk7XG4gIGVudHJ5LnB1c2goZnVuY3Rpb24gd3JhcHBlZE11dGF0aW9uSGFuZGxlciAocGF5bG9hZCkge1xuICAgIGhhbmRsZXIuY2FsbChzdG9yZSwgbG9jYWwuc3RhdGUsIHBheWxvYWQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJBY3Rpb24gKHN0b3JlLCB0eXBlLCBoYW5kbGVyLCBsb2NhbCkge1xuICB2YXIgZW50cnkgPSBzdG9yZS5fYWN0aW9uc1t0eXBlXSB8fCAoc3RvcmUuX2FjdGlvbnNbdHlwZV0gPSBbXSk7XG4gIGVudHJ5LnB1c2goZnVuY3Rpb24gd3JhcHBlZEFjdGlvbkhhbmRsZXIgKHBheWxvYWQpIHtcbiAgICB2YXIgcmVzID0gaGFuZGxlci5jYWxsKHN0b3JlLCB7XG4gICAgICBkaXNwYXRjaDogbG9jYWwuZGlzcGF0Y2gsXG4gICAgICBjb21taXQ6IGxvY2FsLmNvbW1pdCxcbiAgICAgIGdldHRlcnM6IGxvY2FsLmdldHRlcnMsXG4gICAgICBzdGF0ZTogbG9jYWwuc3RhdGUsXG4gICAgICByb290R2V0dGVyczogc3RvcmUuZ2V0dGVycyxcbiAgICAgIHJvb3RTdGF0ZTogc3RvcmUuc3RhdGVcbiAgICB9LCBwYXlsb2FkKTtcbiAgICBpZiAoIWlzUHJvbWlzZShyZXMpKSB7XG4gICAgICByZXMgPSBQcm9taXNlLnJlc29sdmUocmVzKTtcbiAgICB9XG4gICAgaWYgKHN0b3JlLl9kZXZ0b29sSG9vaykge1xuICAgICAgcmV0dXJuIHJlcy5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHN0b3JlLl9kZXZ0b29sSG9vay5lbWl0KCd2dWV4OmVycm9yJywgZXJyKTtcbiAgICAgICAgdGhyb3cgZXJyXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcmVzXG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJHZXR0ZXIgKHN0b3JlLCB0eXBlLCByYXdHZXR0ZXIsIGxvY2FsKSB7XG4gIGlmIChzdG9yZS5fd3JhcHBlZEdldHRlcnNbdHlwZV0pIHtcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSBkdXBsaWNhdGUgZ2V0dGVyIGtleTogXCIgKyB0eXBlKSk7XG4gICAgfVxuICAgIHJldHVyblxuICB9XG4gIHN0b3JlLl93cmFwcGVkR2V0dGVyc1t0eXBlXSA9IGZ1bmN0aW9uIHdyYXBwZWRHZXR0ZXIgKHN0b3JlKSB7XG4gICAgcmV0dXJuIHJhd0dldHRlcihcbiAgICAgIGxvY2FsLnN0YXRlLCAvLyBsb2NhbCBzdGF0ZVxuICAgICAgbG9jYWwuZ2V0dGVycywgLy8gbG9jYWwgZ2V0dGVyc1xuICAgICAgc3RvcmUuc3RhdGUsIC8vIHJvb3Qgc3RhdGVcbiAgICAgIHN0b3JlLmdldHRlcnMgLy8gcm9vdCBnZXR0ZXJzXG4gICAgKVxuICB9O1xufVxuXG5mdW5jdGlvbiBlbmFibGVTdHJpY3RNb2RlIChzdG9yZSkge1xuICBzdG9yZS5fdm0uJHdhdGNoKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX2RhdGEuJCRzdGF0ZSB9LCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgYXNzZXJ0KHN0b3JlLl9jb21taXR0aW5nLCBcImRvIG5vdCBtdXRhdGUgdnVleCBzdG9yZSBzdGF0ZSBvdXRzaWRlIG11dGF0aW9uIGhhbmRsZXJzLlwiKTtcbiAgICB9XG4gIH0sIHsgZGVlcDogdHJ1ZSwgc3luYzogdHJ1ZSB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0TmVzdGVkU3RhdGUgKHN0YXRlLCBwYXRoKSB7XG4gIHJldHVybiBwYXRoLnJlZHVjZShmdW5jdGlvbiAoc3RhdGUsIGtleSkgeyByZXR1cm4gc3RhdGVba2V5XTsgfSwgc3RhdGUpXG59XG5cbmZ1bmN0aW9uIHVuaWZ5T2JqZWN0U3R5bGUgKHR5cGUsIHBheWxvYWQsIG9wdGlvbnMpIHtcbiAgaWYgKGlzT2JqZWN0KHR5cGUpICYmIHR5cGUudHlwZSkge1xuICAgIG9wdGlvbnMgPSBwYXlsb2FkO1xuICAgIHBheWxvYWQgPSB0eXBlO1xuICAgIHR5cGUgPSB0eXBlLnR5cGU7XG4gIH1cblxuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJywgKFwiZXhwZWN0cyBzdHJpbmcgYXMgdGhlIHR5cGUsIGJ1dCBmb3VuZCBcIiArICh0eXBlb2YgdHlwZSkgKyBcIi5cIikpO1xuICB9XG5cbiAgcmV0dXJuIHsgdHlwZTogdHlwZSwgcGF5bG9hZDogcGF5bG9hZCwgb3B0aW9uczogb3B0aW9ucyB9XG59XG5cbmZ1bmN0aW9uIGluc3RhbGwgKF9WdWUpIHtcbiAgaWYgKFZ1ZSAmJiBfVnVlID09PSBWdWUpIHtcbiAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAnW3Z1ZXhdIGFscmVhZHkgaW5zdGFsbGVkLiBWdWUudXNlKFZ1ZXgpIHNob3VsZCBiZSBjYWxsZWQgb25seSBvbmNlLidcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVyblxuICB9XG4gIFZ1ZSA9IF9WdWU7XG4gIGFwcGx5TWl4aW4oVnVlKTtcbn1cblxuLyoqXG4gKiBSZWR1Y2UgdGhlIGNvZGUgd2hpY2ggd3JpdHRlbiBpbiBWdWUuanMgZm9yIGdldHRpbmcgdGhlIHN0YXRlLlxuICogQHBhcmFtIHtTdHJpbmd9IFtuYW1lc3BhY2VdIC0gTW9kdWxlJ3MgbmFtZXNwYWNlXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gc3RhdGVzICMgT2JqZWN0J3MgaXRlbSBjYW4gYmUgYSBmdW5jdGlvbiB3aGljaCBhY2NlcHQgc3RhdGUgYW5kIGdldHRlcnMgZm9yIHBhcmFtLCB5b3UgY2FuIGRvIHNvbWV0aGluZyBmb3Igc3RhdGUgYW5kIGdldHRlcnMgaW4gaXQuXG4gKiBAcGFyYW0ge09iamVjdH1cbiAqL1xudmFyIG1hcFN0YXRlID0gbm9ybWFsaXplTmFtZXNwYWNlKGZ1bmN0aW9uIChuYW1lc3BhY2UsIHN0YXRlcykge1xuICB2YXIgcmVzID0ge307XG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzVmFsaWRNYXAoc3RhdGVzKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1t2dWV4XSBtYXBTdGF0ZTogbWFwcGVyIHBhcmFtZXRlciBtdXN0IGJlIGVpdGhlciBhbiBBcnJheSBvciBhbiBPYmplY3QnKTtcbiAgfVxuICBub3JtYWxpemVNYXAoc3RhdGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICB2YXIga2V5ID0gcmVmLmtleTtcbiAgICB2YXIgdmFsID0gcmVmLnZhbDtcblxuICAgIHJlc1trZXldID0gZnVuY3Rpb24gbWFwcGVkU3RhdGUgKCkge1xuICAgICAgdmFyIHN0YXRlID0gdGhpcy4kc3RvcmUuc3RhdGU7XG4gICAgICB2YXIgZ2V0dGVycyA9IHRoaXMuJHN0b3JlLmdldHRlcnM7XG4gICAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICAgIHZhciBtb2R1bGUgPSBnZXRNb2R1bGVCeU5hbWVzcGFjZSh0aGlzLiRzdG9yZSwgJ21hcFN0YXRlJywgbmFtZXNwYWNlKTtcbiAgICAgICAgaWYgKCFtb2R1bGUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBzdGF0ZSA9IG1vZHVsZS5jb250ZXh0LnN0YXRlO1xuICAgICAgICBnZXR0ZXJzID0gbW9kdWxlLmNvbnRleHQuZ2V0dGVycztcbiAgICAgIH1cbiAgICAgIHJldHVybiB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gdmFsLmNhbGwodGhpcywgc3RhdGUsIGdldHRlcnMpXG4gICAgICAgIDogc3RhdGVbdmFsXVxuICAgIH07XG4gICAgLy8gbWFyayB2dWV4IGdldHRlciBmb3IgZGV2dG9vbHNcbiAgICByZXNba2V5XS52dWV4ID0gdHJ1ZTtcbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vKipcbiAqIFJlZHVjZSB0aGUgY29kZSB3aGljaCB3cml0dGVuIGluIFZ1ZS5qcyBmb3IgY29tbWl0dGluZyB0aGUgbXV0YXRpb25cbiAqIEBwYXJhbSB7U3RyaW5nfSBbbmFtZXNwYWNlXSAtIE1vZHVsZSdzIG5hbWVzcGFjZVxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IG11dGF0aW9ucyAjIE9iamVjdCdzIGl0ZW0gY2FuIGJlIGEgZnVuY3Rpb24gd2hpY2ggYWNjZXB0IGBjb21taXRgIGZ1bmN0aW9uIGFzIHRoZSBmaXJzdCBwYXJhbSwgaXQgY2FuIGFjY2VwdCBhbm90aGVyIHBhcmFtcy4gWW91IGNhbiBjb21taXQgbXV0YXRpb24gYW5kIGRvIGFueSBvdGhlciB0aGluZ3MgaW4gdGhpcyBmdW5jdGlvbi4gc3BlY2lhbGx5LCBZb3UgbmVlZCB0byBwYXNzIGFudGhvciBwYXJhbXMgZnJvbSB0aGUgbWFwcGVkIGZ1bmN0aW9uLlxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG52YXIgbWFwTXV0YXRpb25zID0gbm9ybWFsaXplTmFtZXNwYWNlKGZ1bmN0aW9uIChuYW1lc3BhY2UsIG11dGF0aW9ucykge1xuICB2YXIgcmVzID0ge307XG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzVmFsaWRNYXAobXV0YXRpb25zKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1t2dWV4XSBtYXBNdXRhdGlvbnM6IG1hcHBlciBwYXJhbWV0ZXIgbXVzdCBiZSBlaXRoZXIgYW4gQXJyYXkgb3IgYW4gT2JqZWN0Jyk7XG4gIH1cbiAgbm9ybWFsaXplTWFwKG11dGF0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgdmFyIGtleSA9IHJlZi5rZXk7XG4gICAgdmFyIHZhbCA9IHJlZi52YWw7XG5cbiAgICByZXNba2V5XSA9IGZ1bmN0aW9uIG1hcHBlZE11dGF0aW9uICgpIHtcbiAgICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuXG4gICAgICAvLyBHZXQgdGhlIGNvbW1pdCBtZXRob2QgZnJvbSBzdG9yZVxuICAgICAgdmFyIGNvbW1pdCA9IHRoaXMuJHN0b3JlLmNvbW1pdDtcbiAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgdmFyIG1vZHVsZSA9IGdldE1vZHVsZUJ5TmFtZXNwYWNlKHRoaXMuJHN0b3JlLCAnbWFwTXV0YXRpb25zJywgbmFtZXNwYWNlKTtcbiAgICAgICAgaWYgKCFtb2R1bGUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBjb21taXQgPSBtb2R1bGUuY29udGV4dC5jb21taXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IHZhbC5hcHBseSh0aGlzLCBbY29tbWl0XS5jb25jYXQoYXJncykpXG4gICAgICAgIDogY29tbWl0LmFwcGx5KHRoaXMuJHN0b3JlLCBbdmFsXS5jb25jYXQoYXJncykpXG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vKipcbiAqIFJlZHVjZSB0aGUgY29kZSB3aGljaCB3cml0dGVuIGluIFZ1ZS5qcyBmb3IgZ2V0dGluZyB0aGUgZ2V0dGVyc1xuICogQHBhcmFtIHtTdHJpbmd9IFtuYW1lc3BhY2VdIC0gTW9kdWxlJ3MgbmFtZXNwYWNlXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gZ2V0dGVyc1xuICogQHJldHVybiB7T2JqZWN0fVxuICovXG52YXIgbWFwR2V0dGVycyA9IG5vcm1hbGl6ZU5hbWVzcGFjZShmdW5jdGlvbiAobmFtZXNwYWNlLCBnZXR0ZXJzKSB7XG4gIHZhciByZXMgPSB7fTtcbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhaXNWYWxpZE1hcChnZXR0ZXJzKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1t2dWV4XSBtYXBHZXR0ZXJzOiBtYXBwZXIgcGFyYW1ldGVyIG11c3QgYmUgZWl0aGVyIGFuIEFycmF5IG9yIGFuIE9iamVjdCcpO1xuICB9XG4gIG5vcm1hbGl6ZU1hcChnZXR0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICB2YXIga2V5ID0gcmVmLmtleTtcbiAgICB2YXIgdmFsID0gcmVmLnZhbDtcblxuICAgIC8vIFRoZSBuYW1lc3BhY2UgaGFzIGJlZW4gbXV0YXRlZCBieSBub3JtYWxpemVOYW1lc3BhY2VcbiAgICB2YWwgPSBuYW1lc3BhY2UgKyB2YWw7XG4gICAgcmVzW2tleV0gPSBmdW5jdGlvbiBtYXBwZWRHZXR0ZXIgKCkge1xuICAgICAgaWYgKG5hbWVzcGFjZSAmJiAhZ2V0TW9kdWxlQnlOYW1lc3BhY2UodGhpcy4kc3RvcmUsICdtYXBHZXR0ZXJzJywgbmFtZXNwYWNlKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgISh2YWwgaW4gdGhpcy4kc3RvcmUuZ2V0dGVycykpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gdW5rbm93biBnZXR0ZXI6IFwiICsgdmFsKSk7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnNbdmFsXVxuICAgIH07XG4gICAgLy8gbWFyayB2dWV4IGdldHRlciBmb3IgZGV2dG9vbHNcbiAgICByZXNba2V5XS52dWV4ID0gdHJ1ZTtcbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vKipcbiAqIFJlZHVjZSB0aGUgY29kZSB3aGljaCB3cml0dGVuIGluIFZ1ZS5qcyBmb3IgZGlzcGF0Y2ggdGhlIGFjdGlvblxuICogQHBhcmFtIHtTdHJpbmd9IFtuYW1lc3BhY2VdIC0gTW9kdWxlJ3MgbmFtZXNwYWNlXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gYWN0aW9ucyAjIE9iamVjdCdzIGl0ZW0gY2FuIGJlIGEgZnVuY3Rpb24gd2hpY2ggYWNjZXB0IGBkaXNwYXRjaGAgZnVuY3Rpb24gYXMgdGhlIGZpcnN0IHBhcmFtLCBpdCBjYW4gYWNjZXB0IGFudGhvciBwYXJhbXMuIFlvdSBjYW4gZGlzcGF0Y2ggYWN0aW9uIGFuZCBkbyBhbnkgb3RoZXIgdGhpbmdzIGluIHRoaXMgZnVuY3Rpb24uIHNwZWNpYWxseSwgWW91IG5lZWQgdG8gcGFzcyBhbnRob3IgcGFyYW1zIGZyb20gdGhlIG1hcHBlZCBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xudmFyIG1hcEFjdGlvbnMgPSBub3JtYWxpemVOYW1lc3BhY2UoZnVuY3Rpb24gKG5hbWVzcGFjZSwgYWN0aW9ucykge1xuICB2YXIgcmVzID0ge307XG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzVmFsaWRNYXAoYWN0aW9ucykpIHtcbiAgICBjb25zb2xlLmVycm9yKCdbdnVleF0gbWFwQWN0aW9uczogbWFwcGVyIHBhcmFtZXRlciBtdXN0IGJlIGVpdGhlciBhbiBBcnJheSBvciBhbiBPYmplY3QnKTtcbiAgfVxuICBub3JtYWxpemVNYXAoYWN0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgdmFyIGtleSA9IHJlZi5rZXk7XG4gICAgdmFyIHZhbCA9IHJlZi52YWw7XG5cbiAgICByZXNba2V5XSA9IGZ1bmN0aW9uIG1hcHBlZEFjdGlvbiAoKSB7XG4gICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gXTtcblxuICAgICAgLy8gZ2V0IGRpc3BhdGNoIGZ1bmN0aW9uIGZyb20gc3RvcmVcbiAgICAgIHZhciBkaXNwYXRjaCA9IHRoaXMuJHN0b3JlLmRpc3BhdGNoO1xuICAgICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgICB2YXIgbW9kdWxlID0gZ2V0TW9kdWxlQnlOYW1lc3BhY2UodGhpcy4kc3RvcmUsICdtYXBBY3Rpb25zJywgbmFtZXNwYWNlKTtcbiAgICAgICAgaWYgKCFtb2R1bGUpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBkaXNwYXRjaCA9IG1vZHVsZS5jb250ZXh0LmRpc3BhdGNoO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyB2YWwuYXBwbHkodGhpcywgW2Rpc3BhdGNoXS5jb25jYXQoYXJncykpXG4gICAgICAgIDogZGlzcGF0Y2guYXBwbHkodGhpcy4kc3RvcmUsIFt2YWxdLmNvbmNhdChhcmdzKSlcbiAgICB9O1xuICB9KTtcbiAgcmV0dXJuIHJlc1xufSk7XG5cbi8qKlxuICogUmViaW5kaW5nIG5hbWVzcGFjZSBwYXJhbSBmb3IgbWFwWFhYIGZ1bmN0aW9uIGluIHNwZWNpYWwgc2NvcGVkLCBhbmQgcmV0dXJuIHRoZW0gYnkgc2ltcGxlIG9iamVjdFxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZVxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG52YXIgY3JlYXRlTmFtZXNwYWNlZEhlbHBlcnMgPSBmdW5jdGlvbiAobmFtZXNwYWNlKSB7IHJldHVybiAoe1xuICBtYXBTdGF0ZTogbWFwU3RhdGUuYmluZChudWxsLCBuYW1lc3BhY2UpLFxuICBtYXBHZXR0ZXJzOiBtYXBHZXR0ZXJzLmJpbmQobnVsbCwgbmFtZXNwYWNlKSxcbiAgbWFwTXV0YXRpb25zOiBtYXBNdXRhdGlvbnMuYmluZChudWxsLCBuYW1lc3BhY2UpLFxuICBtYXBBY3Rpb25zOiBtYXBBY3Rpb25zLmJpbmQobnVsbCwgbmFtZXNwYWNlKVxufSk7IH07XG5cbi8qKlxuICogTm9ybWFsaXplIHRoZSBtYXBcbiAqIG5vcm1hbGl6ZU1hcChbMSwgMiwgM10pID0+IFsgeyBrZXk6IDEsIHZhbDogMSB9LCB7IGtleTogMiwgdmFsOiAyIH0sIHsga2V5OiAzLCB2YWw6IDMgfSBdXG4gKiBub3JtYWxpemVNYXAoe2E6IDEsIGI6IDIsIGM6IDN9KSA9PiBbIHsga2V5OiAnYScsIHZhbDogMSB9LCB7IGtleTogJ2InLCB2YWw6IDIgfSwgeyBrZXk6ICdjJywgdmFsOiAzIH0gXVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IG1hcFxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVNYXAgKG1hcCkge1xuICBpZiAoIWlzVmFsaWRNYXAobWFwKSkge1xuICAgIHJldHVybiBbXVxuICB9XG4gIHJldHVybiBBcnJheS5pc0FycmF5KG1hcClcbiAgICA/IG1hcC5tYXAoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gKHsga2V5OiBrZXksIHZhbDoga2V5IH0pOyB9KVxuICAgIDogT2JqZWN0LmtleXMobWFwKS5tYXAoZnVuY3Rpb24gKGtleSkgeyByZXR1cm4gKHsga2V5OiBrZXksIHZhbDogbWFwW2tleV0gfSk7IH0pXG59XG5cbi8qKlxuICogVmFsaWRhdGUgd2hldGhlciBnaXZlbiBtYXAgaXMgdmFsaWQgb3Igbm90XG4gKiBAcGFyYW0geyp9IG1hcFxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNWYWxpZE1hcCAobWFwKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KG1hcCkgfHwgaXNPYmplY3QobWFwKVxufVxuXG4vKipcbiAqIFJldHVybiBhIGZ1bmN0aW9uIGV4cGVjdCB0d28gcGFyYW0gY29udGFpbnMgbmFtZXNwYWNlIGFuZCBtYXAuIGl0IHdpbGwgbm9ybWFsaXplIHRoZSBuYW1lc3BhY2UgYW5kIHRoZW4gdGhlIHBhcmFtJ3MgZnVuY3Rpb24gd2lsbCBoYW5kbGUgdGhlIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBtYXAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxuICogQHJldHVybiB7RnVuY3Rpb259XG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWVzcGFjZSAoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChuYW1lc3BhY2UsIG1hcCkge1xuICAgIGlmICh0eXBlb2YgbmFtZXNwYWNlICE9PSAnc3RyaW5nJykge1xuICAgICAgbWFwID0gbmFtZXNwYWNlO1xuICAgICAgbmFtZXNwYWNlID0gJyc7XG4gICAgfSBlbHNlIGlmIChuYW1lc3BhY2UuY2hhckF0KG5hbWVzcGFjZS5sZW5ndGggLSAxKSAhPT0gJy8nKSB7XG4gICAgICBuYW1lc3BhY2UgKz0gJy8nO1xuICAgIH1cbiAgICByZXR1cm4gZm4obmFtZXNwYWNlLCBtYXApXG4gIH1cbn1cblxuLyoqXG4gKiBTZWFyY2ggYSBzcGVjaWFsIG1vZHVsZSBmcm9tIHN0b3JlIGJ5IG5hbWVzcGFjZS4gaWYgbW9kdWxlIG5vdCBleGlzdCwgcHJpbnQgZXJyb3IgbWVzc2FnZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzdG9yZVxuICogQHBhcmFtIHtTdHJpbmd9IGhlbHBlclxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZVxuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5mdW5jdGlvbiBnZXRNb2R1bGVCeU5hbWVzcGFjZSAoc3RvcmUsIGhlbHBlciwgbmFtZXNwYWNlKSB7XG4gIHZhciBtb2R1bGUgPSBzdG9yZS5fbW9kdWxlc05hbWVzcGFjZU1hcFtuYW1lc3BhY2VdO1xuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFtb2R1bGUpIHtcbiAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSBtb2R1bGUgbmFtZXNwYWNlIG5vdCBmb3VuZCBpbiBcIiArIGhlbHBlciArIFwiKCk6IFwiICsgbmFtZXNwYWNlKSk7XG4gIH1cbiAgcmV0dXJuIG1vZHVsZVxufVxuXG4vLyBDcmVkaXRzOiBib3Jyb3dlZCBjb2RlIGZyb20gZmNvbWIvcmVkdXgtbG9nZ2VyXG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2dlciAocmVmKSB7XG4gIGlmICggcmVmID09PSB2b2lkIDAgKSByZWYgPSB7fTtcbiAgdmFyIGNvbGxhcHNlZCA9IHJlZi5jb2xsYXBzZWQ7IGlmICggY29sbGFwc2VkID09PSB2b2lkIDAgKSBjb2xsYXBzZWQgPSB0cnVlO1xuICB2YXIgZmlsdGVyID0gcmVmLmZpbHRlcjsgaWYgKCBmaWx0ZXIgPT09IHZvaWQgMCApIGZpbHRlciA9IGZ1bmN0aW9uIChtdXRhdGlvbiwgc3RhdGVCZWZvcmUsIHN0YXRlQWZ0ZXIpIHsgcmV0dXJuIHRydWU7IH07XG4gIHZhciB0cmFuc2Zvcm1lciA9IHJlZi50cmFuc2Zvcm1lcjsgaWYgKCB0cmFuc2Zvcm1lciA9PT0gdm9pZCAwICkgdHJhbnNmb3JtZXIgPSBmdW5jdGlvbiAoc3RhdGUpIHsgcmV0dXJuIHN0YXRlOyB9O1xuICB2YXIgbXV0YXRpb25UcmFuc2Zvcm1lciA9IHJlZi5tdXRhdGlvblRyYW5zZm9ybWVyOyBpZiAoIG11dGF0aW9uVHJhbnNmb3JtZXIgPT09IHZvaWQgMCApIG11dGF0aW9uVHJhbnNmb3JtZXIgPSBmdW5jdGlvbiAobXV0KSB7IHJldHVybiBtdXQ7IH07XG4gIHZhciBhY3Rpb25GaWx0ZXIgPSByZWYuYWN0aW9uRmlsdGVyOyBpZiAoIGFjdGlvbkZpbHRlciA9PT0gdm9pZCAwICkgYWN0aW9uRmlsdGVyID0gZnVuY3Rpb24gKGFjdGlvbiwgc3RhdGUpIHsgcmV0dXJuIHRydWU7IH07XG4gIHZhciBhY3Rpb25UcmFuc2Zvcm1lciA9IHJlZi5hY3Rpb25UcmFuc2Zvcm1lcjsgaWYgKCBhY3Rpb25UcmFuc2Zvcm1lciA9PT0gdm9pZCAwICkgYWN0aW9uVHJhbnNmb3JtZXIgPSBmdW5jdGlvbiAoYWN0KSB7IHJldHVybiBhY3Q7IH07XG4gIHZhciBsb2dNdXRhdGlvbnMgPSByZWYubG9nTXV0YXRpb25zOyBpZiAoIGxvZ011dGF0aW9ucyA9PT0gdm9pZCAwICkgbG9nTXV0YXRpb25zID0gdHJ1ZTtcbiAgdmFyIGxvZ0FjdGlvbnMgPSByZWYubG9nQWN0aW9uczsgaWYgKCBsb2dBY3Rpb25zID09PSB2b2lkIDAgKSBsb2dBY3Rpb25zID0gdHJ1ZTtcbiAgdmFyIGxvZ2dlciA9IHJlZi5sb2dnZXI7IGlmICggbG9nZ2VyID09PSB2b2lkIDAgKSBsb2dnZXIgPSBjb25zb2xlO1xuXG4gIHJldHVybiBmdW5jdGlvbiAoc3RvcmUpIHtcbiAgICB2YXIgcHJldlN0YXRlID0gZGVlcENvcHkoc3RvcmUuc3RhdGUpO1xuXG4gICAgaWYgKHR5cGVvZiBsb2dnZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAobG9nTXV0YXRpb25zKSB7XG4gICAgICBzdG9yZS5zdWJzY3JpYmUoZnVuY3Rpb24gKG11dGF0aW9uLCBzdGF0ZSkge1xuICAgICAgICB2YXIgbmV4dFN0YXRlID0gZGVlcENvcHkoc3RhdGUpO1xuXG4gICAgICAgIGlmIChmaWx0ZXIobXV0YXRpb24sIHByZXZTdGF0ZSwgbmV4dFN0YXRlKSkge1xuICAgICAgICAgIHZhciBmb3JtYXR0ZWRUaW1lID0gZ2V0Rm9ybWF0dGVkVGltZSgpO1xuICAgICAgICAgIHZhciBmb3JtYXR0ZWRNdXRhdGlvbiA9IG11dGF0aW9uVHJhbnNmb3JtZXIobXV0YXRpb24pO1xuICAgICAgICAgIHZhciBtZXNzYWdlID0gXCJtdXRhdGlvbiBcIiArIChtdXRhdGlvbi50eXBlKSArIGZvcm1hdHRlZFRpbWU7XG5cbiAgICAgICAgICBzdGFydE1lc3NhZ2UobG9nZ2VyLCBtZXNzYWdlLCBjb2xsYXBzZWQpO1xuICAgICAgICAgIGxvZ2dlci5sb2coJyVjIHByZXYgc3RhdGUnLCAnY29sb3I6ICM5RTlFOUU7IGZvbnQtd2VpZ2h0OiBib2xkJywgdHJhbnNmb3JtZXIocHJldlN0YXRlKSk7XG4gICAgICAgICAgbG9nZ2VyLmxvZygnJWMgbXV0YXRpb24nLCAnY29sb3I6ICMwM0E5RjQ7IGZvbnQtd2VpZ2h0OiBib2xkJywgZm9ybWF0dGVkTXV0YXRpb24pO1xuICAgICAgICAgIGxvZ2dlci5sb2coJyVjIG5leHQgc3RhdGUnLCAnY29sb3I6ICM0Q0FGNTA7IGZvbnQtd2VpZ2h0OiBib2xkJywgdHJhbnNmb3JtZXIobmV4dFN0YXRlKSk7XG4gICAgICAgICAgZW5kTWVzc2FnZShsb2dnZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJldlN0YXRlID0gbmV4dFN0YXRlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGxvZ0FjdGlvbnMpIHtcbiAgICAgIHN0b3JlLnN1YnNjcmliZUFjdGlvbihmdW5jdGlvbiAoYWN0aW9uLCBzdGF0ZSkge1xuICAgICAgICBpZiAoYWN0aW9uRmlsdGVyKGFjdGlvbiwgc3RhdGUpKSB7XG4gICAgICAgICAgdmFyIGZvcm1hdHRlZFRpbWUgPSBnZXRGb3JtYXR0ZWRUaW1lKCk7XG4gICAgICAgICAgdmFyIGZvcm1hdHRlZEFjdGlvbiA9IGFjdGlvblRyYW5zZm9ybWVyKGFjdGlvbik7XG4gICAgICAgICAgdmFyIG1lc3NhZ2UgPSBcImFjdGlvbiBcIiArIChhY3Rpb24udHlwZSkgKyBmb3JtYXR0ZWRUaW1lO1xuXG4gICAgICAgICAgc3RhcnRNZXNzYWdlKGxvZ2dlciwgbWVzc2FnZSwgY29sbGFwc2VkKTtcbiAgICAgICAgICBsb2dnZXIubG9nKCclYyBhY3Rpb24nLCAnY29sb3I6ICMwM0E5RjQ7IGZvbnQtd2VpZ2h0OiBib2xkJywgZm9ybWF0dGVkQWN0aW9uKTtcbiAgICAgICAgICBlbmRNZXNzYWdlKGxvZ2dlcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzdGFydE1lc3NhZ2UgKGxvZ2dlciwgbWVzc2FnZSwgY29sbGFwc2VkKSB7XG4gIHZhciBzdGFydE1lc3NhZ2UgPSBjb2xsYXBzZWRcbiAgICA/IGxvZ2dlci5ncm91cENvbGxhcHNlZFxuICAgIDogbG9nZ2VyLmdyb3VwO1xuXG4gIC8vIHJlbmRlclxuICB0cnkge1xuICAgIHN0YXJ0TWVzc2FnZS5jYWxsKGxvZ2dlciwgbWVzc2FnZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIubG9nKG1lc3NhZ2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVuZE1lc3NhZ2UgKGxvZ2dlcikge1xuICB0cnkge1xuICAgIGxvZ2dlci5ncm91cEVuZCgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmxvZygn4oCU4oCUIGxvZyBlbmQg4oCU4oCUJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0Rm9ybWF0dGVkVGltZSAoKSB7XG4gIHZhciB0aW1lID0gbmV3IERhdGUoKTtcbiAgcmV0dXJuIChcIiBAIFwiICsgKHBhZCh0aW1lLmdldEhvdXJzKCksIDIpKSArIFwiOlwiICsgKHBhZCh0aW1lLmdldE1pbnV0ZXMoKSwgMikpICsgXCI6XCIgKyAocGFkKHRpbWUuZ2V0U2Vjb25kcygpLCAyKSkgKyBcIi5cIiArIChwYWQodGltZS5nZXRNaWxsaXNlY29uZHMoKSwgMykpKVxufVxuXG5mdW5jdGlvbiByZXBlYXQgKHN0ciwgdGltZXMpIHtcbiAgcmV0dXJuIChuZXcgQXJyYXkodGltZXMgKyAxKSkuam9pbihzdHIpXG59XG5cbmZ1bmN0aW9uIHBhZCAobnVtLCBtYXhMZW5ndGgpIHtcbiAgcmV0dXJuIHJlcGVhdCgnMCcsIG1heExlbmd0aCAtIG51bS50b1N0cmluZygpLmxlbmd0aCkgKyBudW1cbn1cblxudmFyIGluZGV4X2NqcyA9IHtcbiAgU3RvcmU6IFN0b3JlLFxuICBpbnN0YWxsOiBpbnN0YWxsLFxuICB2ZXJzaW9uOiAnMy42LjInLFxuICBtYXBTdGF0ZTogbWFwU3RhdGUsXG4gIG1hcE11dGF0aW9uczogbWFwTXV0YXRpb25zLFxuICBtYXBHZXR0ZXJzOiBtYXBHZXR0ZXJzLFxuICBtYXBBY3Rpb25zOiBtYXBBY3Rpb25zLFxuICBjcmVhdGVOYW1lc3BhY2VkSGVscGVyczogY3JlYXRlTmFtZXNwYWNlZEhlbHBlcnMsXG4gIGNyZWF0ZUxvZ2dlcjogY3JlYXRlTG9nZ2VyXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGluZGV4X2NqcztcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZ2VuZXJhdG9yLXJ1bnRpbWVcIik7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbi8vIFRoaXMgbWV0aG9kIG9mIG9idGFpbmluZyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdCBuZWVkcyB0byBiZVxuLy8ga2VwdCBpZGVudGljYWwgdG8gdGhlIHdheSBpdCBpcyBvYnRhaW5lZCBpbiBydW50aW1lLmpzXG52YXIgZyA9IChmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMgfHwgKHR5cGVvZiBzZWxmID09PSBcIm9iamVjdFwiICYmIHNlbGYpO1xufSkoKSB8fCBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XG5cbi8vIFVzZSBgZ2V0T3duUHJvcGVydHlOYW1lc2AgYmVjYXVzZSBub3QgYWxsIGJyb3dzZXJzIHN1cHBvcnQgY2FsbGluZ1xuLy8gYGhhc093blByb3BlcnR5YCBvbiB0aGUgZ2xvYmFsIGBzZWxmYCBvYmplY3QgaW4gYSB3b3JrZXIuIFNlZSAjMTgzLlxudmFyIGhhZFJ1bnRpbWUgPSBnLnJlZ2VuZXJhdG9yUnVudGltZSAmJlxuICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhnKS5pbmRleE9mKFwicmVnZW5lcmF0b3JSdW50aW1lXCIpID49IDA7XG5cbi8vIFNhdmUgdGhlIG9sZCByZWdlbmVyYXRvclJ1bnRpbWUgaW4gY2FzZSBpdCBuZWVkcyB0byBiZSByZXN0b3JlZCBsYXRlci5cbnZhciBvbGRSdW50aW1lID0gaGFkUnVudGltZSAmJiBnLnJlZ2VuZXJhdG9yUnVudGltZTtcblxuLy8gRm9yY2UgcmVldmFsdXRhdGlvbiBvZiBydW50aW1lLmpzLlxuZy5yZWdlbmVyYXRvclJ1bnRpbWUgPSB1bmRlZmluZWQ7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4vcnVudGltZVwiKTtcblxuaWYgKGhhZFJ1bnRpbWUpIHtcbiAgLy8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgcnVudGltZS5cbiAgZy5yZWdlbmVyYXRvclJ1bnRpbWUgPSBvbGRSdW50aW1lO1xufSBlbHNlIHtcbiAgLy8gUmVtb3ZlIHRoZSBnbG9iYWwgcHJvcGVydHkgYWRkZWQgYnkgcnVudGltZS5qcy5cbiAgdHJ5IHtcbiAgICBkZWxldGUgZy5yZWdlbmVyYXRvclJ1bnRpbWU7XG4gIH0gY2F0Y2goZSkge1xuICAgIGcucmVnZW5lcmF0b3JSdW50aW1lID0gdW5kZWZpbmVkO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbiEoZnVuY3Rpb24oZ2xvYmFsKSB7XG4gIFwidXNlIHN0cmljdFwiO1xuXG4gIHZhciBPcCA9IE9iamVjdC5wcm90b3R5cGU7XG4gIHZhciBoYXNPd24gPSBPcC5oYXNPd25Qcm9wZXJ0eTtcbiAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhhbiB2b2lkIDAuXG4gIHZhciAkU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiID8gU3ltYm9sIDoge307XG4gIHZhciBpdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCI7XG4gIHZhciBhc3luY0l0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5hc3luY0l0ZXJhdG9yIHx8IFwiQEBhc3luY0l0ZXJhdG9yXCI7XG4gIHZhciB0b1N0cmluZ1RhZ1N5bWJvbCA9ICRTeW1ib2wudG9TdHJpbmdUYWcgfHwgXCJAQHRvU3RyaW5nVGFnXCI7XG5cbiAgdmFyIGluTW9kdWxlID0gdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIjtcbiAgdmFyIHJ1bnRpbWUgPSBnbG9iYWwucmVnZW5lcmF0b3JSdW50aW1lO1xuICBpZiAocnVudGltZSkge1xuICAgIGlmIChpbk1vZHVsZSkge1xuICAgICAgLy8gSWYgcmVnZW5lcmF0b3JSdW50aW1lIGlzIGRlZmluZWQgZ2xvYmFsbHkgYW5kIHdlJ3JlIGluIGEgbW9kdWxlLFxuICAgICAgLy8gbWFrZSB0aGUgZXhwb3J0cyBvYmplY3QgaWRlbnRpY2FsIHRvIHJlZ2VuZXJhdG9yUnVudGltZS5cbiAgICAgIG1vZHVsZS5leHBvcnRzID0gcnVudGltZTtcbiAgICB9XG4gICAgLy8gRG9uJ3QgYm90aGVyIGV2YWx1YXRpbmcgdGhlIHJlc3Qgb2YgdGhpcyBmaWxlIGlmIHRoZSBydW50aW1lIHdhc1xuICAgIC8vIGFscmVhZHkgZGVmaW5lZCBnbG9iYWxseS5cbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBEZWZpbmUgdGhlIHJ1bnRpbWUgZ2xvYmFsbHkgKGFzIGV4cGVjdGVkIGJ5IGdlbmVyYXRlZCBjb2RlKSBhcyBlaXRoZXJcbiAgLy8gbW9kdWxlLmV4cG9ydHMgKGlmIHdlJ3JlIGluIGEgbW9kdWxlKSBvciBhIG5ldywgZW1wdHkgb2JqZWN0LlxuICBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZSA9IGluTW9kdWxlID8gbW9kdWxlLmV4cG9ydHMgOiB7fTtcblxuICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCBhbmQgb3V0ZXJGbi5wcm90b3R5cGUgaXMgYSBHZW5lcmF0b3IsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG4gICAgdmFyIHByb3RvR2VuZXJhdG9yID0gb3V0ZXJGbiAmJiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvciA/IG91dGVyRm4gOiBHZW5lcmF0b3I7XG4gICAgdmFyIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJvdG90eXBlKTtcbiAgICB2YXIgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcblxuICAgIC8vIFRoZSAuX2ludm9rZSBtZXRob2QgdW5pZmllcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMuXG4gICAgZ2VuZXJhdG9yLl9pbnZva2UgPSBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfVxuICBydW50aW1lLndyYXAgPSB3cmFwO1xuXG4gIC8vIFRyeS9jYXRjaCBoZWxwZXIgdG8gbWluaW1pemUgZGVvcHRpbWl6YXRpb25zLiBSZXR1cm5zIGEgY29tcGxldGlvblxuICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGRcbiAgLy8gaGF2ZSBiZWVuIChhbmQgd2FzIHByZXZpb3VzbHkpIGRlc2lnbmVkIHRvIHRha2UgYSBjbG9zdXJlIHRvIGJlXG4gIC8vIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHMsIGJ1dCBpbiBhbGwgdGhlIGNhc2VzIHdlIGNhcmUgYWJvdXQgd2VcbiAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZFxuICAvLyB0byBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gb2JqZWN0LiBXZSBjYW4gZXZlbiBnZXQgYXdheSB3aXRoIGFzc3VtaW5nXG4gIC8vIHRoZSBtZXRob2QgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQsIHNpbmNlIHRoYXQgaGFwcGVucyB0byBiZSB0cnVlXG4gIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZVxuICAvLyBvbmx5IGFkZGl0aW9uYWwgYWxsb2NhdGlvbiByZXF1aXJlZCBpcyB0aGUgY29tcGxldGlvbiByZWNvcmQsIHdoaWNoXG4gIC8vIGhhcyBhIHN0YWJsZSBzaGFwZSBhbmQgc28gaG9wZWZ1bGx5IHNob3VsZCBiZSBjaGVhcCB0byBhbGxvY2F0ZS5cbiAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwibm9ybWFsXCIsIGFyZzogZm4uY2FsbChvYmosIGFyZykgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwidGhyb3dcIiwgYXJnOiBlcnIgfTtcbiAgICB9XG4gIH1cblxuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRTdGFydCA9IFwic3VzcGVuZGVkU3RhcnRcIjtcbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQgPSBcInN1c3BlbmRlZFlpZWxkXCI7XG4gIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9IFwiZXhlY3V0aW5nXCI7XG4gIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9IFwiY29tcGxldGVkXCI7XG5cbiAgLy8gUmV0dXJuaW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGlubmVyRm4gaGFzIHRoZSBzYW1lIGVmZmVjdCBhc1xuICAvLyBicmVha2luZyBvdXQgb2YgdGhlIGRpc3BhdGNoIHN3aXRjaCBzdGF0ZW1lbnQuXG4gIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG5cbiAgLy8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3RydWN0b3IgYW5kXG4gIC8vIC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgcHJvcGVydGllcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIEdlbmVyYXRvclxuICAvLyBvYmplY3RzLiBGb3IgZnVsbCBzcGVjIGNvbXBsaWFuY2UsIHlvdSBtYXkgd2lzaCB0byBjb25maWd1cmUgeW91clxuICAvLyBtaW5pZmllciBub3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cblxuICAvLyBUaGlzIGlzIGEgcG9seWZpbGwgZm9yICVJdGVyYXRvclByb3RvdHlwZSUgZm9yIGVudmlyb25tZW50cyB0aGF0XG4gIC8vIGRvbid0IG5hdGl2ZWx5IHN1cHBvcnQgaXQuXG4gIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuICBJdGVyYXRvclByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgdmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuICB2YXIgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90byAmJiBnZXRQcm90byhnZXRQcm90byh2YWx1ZXMoW10pKSk7XG4gIGlmIChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAmJlxuICAgICAgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgIT09IE9wICYmXG4gICAgICBoYXNPd24uY2FsbChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wpKSB7XG4gICAgLy8gVGhpcyBlbnZpcm9ubWVudCBoYXMgYSBuYXRpdmUgJUl0ZXJhdG9yUHJvdG90eXBlJTsgdXNlIGl0IGluc3RlYWRcbiAgICAvLyBvZiB0aGUgcG9seWZpbGwuXG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBOYXRpdmVJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxuXG4gIHZhciBHcCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9XG4gICAgR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUpO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHcC5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZVt0b1N0cmluZ1RhZ1N5bWJvbF0gPVxuICAgIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gXCJHZW5lcmF0b3JGdW5jdGlvblwiO1xuXG4gIC8vIEhlbHBlciBmb3IgZGVmaW5pbmcgdGhlIC5uZXh0LCAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMgb2YgdGhlXG4gIC8vIEl0ZXJhdG9yIGludGVyZmFjZSBpbiB0ZXJtcyBvZiBhIHNpbmdsZSAuX2ludm9rZSBtZXRob2QuXG4gIGZ1bmN0aW9uIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhwcm90b3R5cGUpIHtcbiAgICBbXCJuZXh0XCIsIFwidGhyb3dcIiwgXCJyZXR1cm5cIl0uZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgICAgIHByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24oYXJnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZva2UobWV0aG9kLCBhcmcpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHJ1bnRpbWUuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uKGdlbkZ1bikge1xuICAgIHZhciBjdG9yID0gdHlwZW9mIGdlbkZ1biA9PT0gXCJmdW5jdGlvblwiICYmIGdlbkZ1bi5jb25zdHJ1Y3RvcjtcbiAgICByZXR1cm4gY3RvclxuICAgICAgPyBjdG9yID09PSBHZW5lcmF0b3JGdW5jdGlvbiB8fFxuICAgICAgICAvLyBGb3IgdGhlIG5hdGl2ZSBHZW5lcmF0b3JGdW5jdGlvbiBjb25zdHJ1Y3RvciwgdGhlIGJlc3Qgd2UgY2FuXG4gICAgICAgIC8vIGRvIGlzIHRvIGNoZWNrIGl0cyAubmFtZSBwcm9wZXJ0eS5cbiAgICAgICAgKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSA9PT0gXCJHZW5lcmF0b3JGdW5jdGlvblwiXG4gICAgICA6IGZhbHNlO1xuICB9O1xuXG4gIHJ1bnRpbWUubWFyayA9IGZ1bmN0aW9uKGdlbkZ1bikge1xuICAgIGlmIChPYmplY3Quc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihnZW5GdW4sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ2VuRnVuLl9fcHJvdG9fXyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICAgICAgaWYgKCEodG9TdHJpbmdUYWdTeW1ib2wgaW4gZ2VuRnVuKSkge1xuICAgICAgICBnZW5GdW5bdG9TdHJpbmdUYWdTeW1ib2xdID0gXCJHZW5lcmF0b3JGdW5jdGlvblwiO1xuICAgICAgfVxuICAgIH1cbiAgICBnZW5GdW4ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShHcCk7XG4gICAgcmV0dXJuIGdlbkZ1bjtcbiAgfTtcblxuICAvLyBXaXRoaW4gdGhlIGJvZHkgb2YgYW55IGFzeW5jIGZ1bmN0aW9uLCBgYXdhaXQgeGAgaXMgdHJhbnNmb3JtZWQgdG9cbiAgLy8gYHlpZWxkIHJlZ2VuZXJhdG9yUnVudGltZS5hd3JhcCh4KWAsIHNvIHRoYXQgdGhlIHJ1bnRpbWUgY2FuIHRlc3RcbiAgLy8gYGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIilgIHRvIGRldGVybWluZSBpZiB0aGUgeWllbGRlZCB2YWx1ZSBpc1xuICAvLyBtZWFudCB0byBiZSBhd2FpdGVkLlxuICBydW50aW1lLmF3cmFwID0gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIHsgX19hd2FpdDogYXJnIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gQXN5bmNJdGVyYXRvcihnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGdlbmVyYXRvclttZXRob2RdLCBnZW5lcmF0b3IsIGFyZyk7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICByZWplY3QocmVjb3JkLmFyZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVjb3JkLmFyZztcbiAgICAgICAgdmFyIHZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKSkge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgaW52b2tlKFwibmV4dFwiLCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgIGludm9rZShcInRocm93XCIsIGVyciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24odW53cmFwcGVkKSB7XG4gICAgICAgICAgLy8gV2hlbiBhIHlpZWxkZWQgUHJvbWlzZSBpcyByZXNvbHZlZCwgaXRzIGZpbmFsIHZhbHVlIGJlY29tZXNcbiAgICAgICAgICAvLyB0aGUgLnZhbHVlIG9mIHRoZSBQcm9taXNlPHt2YWx1ZSxkb25lfT4gcmVzdWx0IGZvciB0aGVcbiAgICAgICAgICAvLyBjdXJyZW50IGl0ZXJhdGlvbi5cbiAgICAgICAgICByZXN1bHQudmFsdWUgPSB1bndyYXBwZWQ7XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9LCBmdW5jdGlvbihlcnJvcikge1xuICAgICAgICAgIC8vIElmIGEgcmVqZWN0ZWQgUHJvbWlzZSB3YXMgeWllbGRlZCwgdGhyb3cgdGhlIHJlamVjdGlvbiBiYWNrXG4gICAgICAgICAgLy8gaW50byB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNvIGl0IGNhbiBiZSBoYW5kbGVkIHRoZXJlLlxuICAgICAgICAgIHJldHVybiBpbnZva2UoXCJ0aHJvd1wiLCBlcnJvciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHByZXZpb3VzUHJvbWlzZTtcblxuICAgIGZ1bmN0aW9uIGVucXVldWUobWV0aG9kLCBhcmcpIHtcbiAgICAgIGZ1bmN0aW9uIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByZXZpb3VzUHJvbWlzZSA9XG4gICAgICAgIC8vIElmIGVucXVldWUgaGFzIGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiB3ZSB3YW50IHRvIHdhaXQgdW50aWxcbiAgICAgICAgLy8gYWxsIHByZXZpb3VzIFByb21pc2VzIGhhdmUgYmVlbiByZXNvbHZlZCBiZWZvcmUgY2FsbGluZyBpbnZva2UsXG4gICAgICAgIC8vIHNvIHRoYXQgcmVzdWx0cyBhcmUgYWx3YXlzIGRlbGl2ZXJlZCBpbiB0aGUgY29ycmVjdCBvcmRlci4gSWZcbiAgICAgICAgLy8gZW5xdWV1ZSBoYXMgbm90IGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiBpdCBpcyBpbXBvcnRhbnQgdG9cbiAgICAgICAgLy8gY2FsbCBpbnZva2UgaW1tZWRpYXRlbHksIHdpdGhvdXQgd2FpdGluZyBvbiBhIGNhbGxiYWNrIHRvIGZpcmUsXG4gICAgICAgIC8vIHNvIHRoYXQgdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBoYXMgdGhlIG9wcG9ydHVuaXR5IHRvIGRvXG4gICAgICAgIC8vIGFueSBuZWNlc3Nhcnkgc2V0dXAgaW4gYSBwcmVkaWN0YWJsZSB3YXkuIFRoaXMgcHJlZGljdGFiaWxpdHlcbiAgICAgICAgLy8gaXMgd2h5IHRoZSBQcm9taXNlIGNvbnN0cnVjdG9yIHN5bmNocm9ub3VzbHkgaW52b2tlcyBpdHNcbiAgICAgICAgLy8gZXhlY3V0b3IgY2FsbGJhY2ssIGFuZCB3aHkgYXN5bmMgZnVuY3Rpb25zIHN5bmNocm9ub3VzbHlcbiAgICAgICAgLy8gZXhlY3V0ZSBjb2RlIGJlZm9yZSB0aGUgZmlyc3QgYXdhaXQuIFNpbmNlIHdlIGltcGxlbWVudCBzaW1wbGVcbiAgICAgICAgLy8gYXN5bmMgZnVuY3Rpb25zIGluIHRlcm1zIG9mIGFzeW5jIGdlbmVyYXRvcnMsIGl0IGlzIGVzcGVjaWFsbHlcbiAgICAgICAgLy8gaW1wb3J0YW50IHRvIGdldCB0aGlzIHJpZ2h0LCBldmVuIHRob3VnaCBpdCByZXF1aXJlcyBjYXJlLlxuICAgICAgICBwcmV2aW91c1Byb21pc2UgPyBwcmV2aW91c1Byb21pc2UudGhlbihcbiAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyxcbiAgICAgICAgICAvLyBBdm9pZCBwcm9wYWdhdGluZyBmYWlsdXJlcyB0byBQcm9taXNlcyByZXR1cm5lZCBieSBsYXRlclxuICAgICAgICAgIC8vIGludm9jYXRpb25zIG9mIHRoZSBpdGVyYXRvci5cbiAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZ1xuICAgICAgICApIDogY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKTtcbiAgICB9XG5cbiAgICAvLyBEZWZpbmUgdGhlIHVuaWZpZWQgaGVscGVyIG1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gaW1wbGVtZW50IC5uZXh0LFxuICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gKHNlZSBkZWZpbmVJdGVyYXRvck1ldGhvZHMpLlxuICAgIHRoaXMuX2ludm9rZSA9IGVucXVldWU7XG4gIH1cblxuICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUpO1xuICBBc3luY0l0ZXJhdG9yLnByb3RvdHlwZVthc3luY0l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgcnVudGltZS5Bc3luY0l0ZXJhdG9yID0gQXN5bmNJdGVyYXRvcjtcblxuICAvLyBOb3RlIHRoYXQgc2ltcGxlIGFzeW5jIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mXG4gIC8vIEFzeW5jSXRlcmF0b3Igb2JqZWN0czsgdGhleSBqdXN0IHJldHVybiBhIFByb21pc2UgZm9yIHRoZSB2YWx1ZSBvZlxuICAvLyB0aGUgZmluYWwgcmVzdWx0IHByb2R1Y2VkIGJ5IHRoZSBpdGVyYXRvci5cbiAgcnVudGltZS5hc3luYyA9IGZ1bmN0aW9uKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgdmFyIGl0ZXIgPSBuZXcgQXN5bmNJdGVyYXRvcihcbiAgICAgIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpXG4gICAgKTtcblxuICAgIHJldHVybiBydW50aW1lLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbilcbiAgICAgID8gaXRlciAvLyBJZiBvdXRlckZuIGlzIGEgZ2VuZXJhdG9yLCByZXR1cm4gdGhlIGZ1bGwgaXRlcmF0b3IuXG4gICAgICA6IGl0ZXIubmV4dCgpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gcmVzdWx0LnZhbHVlIDogaXRlci5uZXh0KCk7XG4gICAgICAgIH0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCkge1xuICAgIHZhciBzdGF0ZSA9IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQ7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlRXhlY3V0aW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVDb21wbGV0ZWQpIHtcbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgdGhyb3cgYXJnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzpcbiAgICAgICAgLy8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLWdlbmVyYXRvcnJlc3VtZVxuICAgICAgICByZXR1cm4gZG9uZVJlc3VsdCgpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IG1ldGhvZDtcbiAgICAgIGNvbnRleHQuYXJnID0gYXJnO1xuXG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgZGVsZWdhdGUgPSBjb250ZXh0LmRlbGVnYXRlO1xuICAgICAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgICAgICB2YXIgZGVsZWdhdGVSZXN1bHQgPSBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcbiAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCA9PT0gQ29udGludWVTZW50aW5lbCkgY29udGludWU7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGVSZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAgIC8vIFNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICAgICAgY29udGV4dC5zZW50ID0gY29udGV4dC5fc2VudCA9IGNvbnRleHQuYXJnO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydCkge1xuICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAgIHRocm93IGNvbnRleHQuYXJnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgICBjb250ZXh0LmFicnVwdChcInJldHVyblwiLCBjb250ZXh0LmFyZyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZSA9IEdlblN0YXRlRXhlY3V0aW5nO1xuXG4gICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcbiAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiKSB7XG4gICAgICAgICAgLy8gSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBmcm9tIGlubmVyRm4sIHdlIGxlYXZlIHN0YXRlID09PVxuICAgICAgICAgIC8vIEdlblN0YXRlRXhlY3V0aW5nIGFuZCBsb29wIGJhY2sgZm9yIGFub3RoZXIgaW52b2NhdGlvbi5cbiAgICAgICAgICBzdGF0ZSA9IGNvbnRleHQuZG9uZVxuICAgICAgICAgICAgPyBHZW5TdGF0ZUNvbXBsZXRlZFxuICAgICAgICAgICAgOiBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkO1xuXG4gICAgICAgICAgaWYgKHJlY29yZC5hcmcgPT09IENvbnRpbnVlU2VudGluZWwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogcmVjb3JkLmFyZyxcbiAgICAgICAgICAgIGRvbmU6IGNvbnRleHQuZG9uZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgZXhjZXB0aW9uIGJ5IGxvb3BpbmcgYmFjayBhcm91bmQgdG8gdGhlXG4gICAgICAgICAgLy8gY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZykgY2FsbCBhYm92ZS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gQ2FsbCBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF0oY29udGV4dC5hcmcpIGFuZCBoYW5kbGUgdGhlXG4gIC8vIHJlc3VsdCwgZWl0aGVyIGJ5IHJldHVybmluZyBhIHsgdmFsdWUsIGRvbmUgfSByZXN1bHQgZnJvbSB0aGVcbiAgLy8gZGVsZWdhdGUgaXRlcmF0b3IsIG9yIGJ5IG1vZGlmeWluZyBjb250ZXh0Lm1ldGhvZCBhbmQgY29udGV4dC5hcmcsXG4gIC8vIHNldHRpbmcgY29udGV4dC5kZWxlZ2F0ZSB0byBudWxsLCBhbmQgcmV0dXJuaW5nIHRoZSBDb250aW51ZVNlbnRpbmVsLlxuICBmdW5jdGlvbiBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXTtcbiAgICBpZiAobWV0aG9kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEEgLnRocm93IG9yIC5yZXR1cm4gd2hlbiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIG5vIC50aHJvd1xuICAgICAgLy8gbWV0aG9kIGFsd2F5cyB0ZXJtaW5hdGVzIHRoZSB5aWVsZCogbG9vcC5cbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICBpZiAoZGVsZWdhdGUuaXRlcmF0b3IucmV0dXJuKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBhIHJldHVybiBtZXRob2QsIGdpdmUgaXQgYVxuICAgICAgICAgIC8vIGNoYW5jZSB0byBjbGVhbiB1cC5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwicmV0dXJuXCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgLy8gSWYgbWF5YmVJbnZva2VEZWxlZ2F0ZShjb250ZXh0KSBjaGFuZ2VkIGNvbnRleHQubWV0aG9kIGZyb21cbiAgICAgICAgICAgIC8vIFwicmV0dXJuXCIgdG8gXCJ0aHJvd1wiLCBsZXQgdGhhdCBvdmVycmlkZSB0aGUgVHlwZUVycm9yIGJlbG93LlxuICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICBcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2RcIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChtZXRob2QsIGRlbGVnYXRlLml0ZXJhdG9yLCBjb250ZXh0LmFyZyk7XG5cbiAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIHZhciBpbmZvID0gcmVjb3JkLmFyZztcblxuICAgIGlmICghIGluZm8pIHtcbiAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFwiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3RcIik7XG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgIC8vIEFzc2lnbiB0aGUgcmVzdWx0IG9mIHRoZSBmaW5pc2hlZCBkZWxlZ2F0ZSB0byB0aGUgdGVtcG9yYXJ5XG4gICAgICAvLyB2YXJpYWJsZSBzcGVjaWZpZWQgYnkgZGVsZWdhdGUucmVzdWx0TmFtZSAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dFtkZWxlZ2F0ZS5yZXN1bHROYW1lXSA9IGluZm8udmFsdWU7XG5cbiAgICAgIC8vIFJlc3VtZSBleGVjdXRpb24gYXQgdGhlIGRlc2lyZWQgbG9jYXRpb24gKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgIGNvbnRleHQubmV4dCA9IGRlbGVnYXRlLm5leHRMb2M7XG5cbiAgICAgIC8vIElmIGNvbnRleHQubWV0aG9kIHdhcyBcInRocm93XCIgYnV0IHRoZSBkZWxlZ2F0ZSBoYW5kbGVkIHRoZVxuICAgICAgLy8gZXhjZXB0aW9uLCBsZXQgdGhlIG91dGVyIGdlbmVyYXRvciBwcm9jZWVkIG5vcm1hbGx5LiBJZlxuICAgICAgLy8gY29udGV4dC5tZXRob2Qgd2FzIFwibmV4dFwiLCBmb3JnZXQgY29udGV4dC5hcmcgc2luY2UgaXQgaGFzIGJlZW5cbiAgICAgIC8vIFwiY29uc3VtZWRcIiBieSB0aGUgZGVsZWdhdGUgaXRlcmF0b3IuIElmIGNvbnRleHQubWV0aG9kIHdhc1xuICAgICAgLy8gXCJyZXR1cm5cIiwgYWxsb3cgdGhlIG9yaWdpbmFsIC5yZXR1cm4gY2FsbCB0byBjb250aW51ZSBpbiB0aGVcbiAgICAgIC8vIG91dGVyIGdlbmVyYXRvci5cbiAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCAhPT0gXCJyZXR1cm5cIikge1xuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZS15aWVsZCB0aGUgcmVzdWx0IHJldHVybmVkIGJ5IHRoZSBkZWxlZ2F0ZSBtZXRob2QuXG4gICAgICByZXR1cm4gaW5mbztcbiAgICB9XG5cbiAgICAvLyBUaGUgZGVsZWdhdGUgaXRlcmF0b3IgaXMgZmluaXNoZWQsIHNvIGZvcmdldCBpdCBhbmQgY29udGludWUgd2l0aFxuICAgIC8vIHRoZSBvdXRlciBnZW5lcmF0b3IuXG4gICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gIH1cblxuICAvLyBEZWZpbmUgR2VuZXJhdG9yLnByb3RvdHlwZS57bmV4dCx0aHJvdyxyZXR1cm59IGluIHRlcm1zIG9mIHRoZVxuICAvLyB1bmlmaWVkIC5faW52b2tlIGhlbHBlciBtZXRob2QuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhHcCk7XG5cbiAgR3BbdG9TdHJpbmdUYWdTeW1ib2xdID0gXCJHZW5lcmF0b3JcIjtcblxuICAvLyBBIEdlbmVyYXRvciBzaG91bGQgYWx3YXlzIHJldHVybiBpdHNlbGYgYXMgdGhlIGl0ZXJhdG9yIG9iamVjdCB3aGVuIHRoZVxuICAvLyBAQGl0ZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBpdC4gU29tZSBicm93c2VycycgaW1wbGVtZW50YXRpb25zIG9mIHRoZVxuICAvLyBpdGVyYXRvciBwcm90b3R5cGUgY2hhaW4gaW5jb3JyZWN0bHkgaW1wbGVtZW50IHRoaXMsIGNhdXNpbmcgdGhlIEdlbmVyYXRvclxuICAvLyBvYmplY3QgdG8gbm90IGJlIHJldHVybmVkIGZyb20gdGhpcyBjYWxsLiBUaGlzIGVuc3VyZXMgdGhhdCBkb2Vzbid0IGhhcHBlbi5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9pc3N1ZXMvMjc0IGZvciBtb3JlIGRldGFpbHMuXG4gIEdwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEdwLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gIH07XG5cbiAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KGxvY3MpIHtcbiAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9O1xuXG4gICAgaWYgKDEgaW4gbG9jcykge1xuICAgICAgZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdO1xuICAgIH1cblxuICAgIGlmICgyIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmZpbmFsbHlMb2MgPSBsb2NzWzJdO1xuICAgICAgZW50cnkuYWZ0ZXJMb2MgPSBsb2NzWzNdO1xuICAgIH1cblxuICAgIHRoaXMudHJ5RW50cmllcy5wdXNoKGVudHJ5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkoZW50cnkpIHtcbiAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTtcbiAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCI7XG4gICAgZGVsZXRlIHJlY29yZC5hcmc7XG4gICAgZW50cnkuY29tcGxldGlvbiA9IHJlY29yZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIENvbnRleHQodHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBUaGUgcm9vdCBlbnRyeSBvYmplY3QgKGVmZmVjdGl2ZWx5IGEgdHJ5IHN0YXRlbWVudCB3aXRob3V0IGEgY2F0Y2hcbiAgICAvLyBvciBhIGZpbmFsbHkgYmxvY2spIGdpdmVzIHVzIGEgcGxhY2UgdG8gc3RvcmUgdmFsdWVzIHRocm93biBmcm9tXG4gICAgLy8gbG9jYXRpb25zIHdoZXJlIHRoZXJlIGlzIG5vIGVuY2xvc2luZyB0cnkgc3RhdGVtZW50LlxuICAgIHRoaXMudHJ5RW50cmllcyA9IFt7IHRyeUxvYzogXCJyb290XCIgfV07XG4gICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpO1xuICAgIHRoaXMucmVzZXQodHJ1ZSk7XG4gIH1cblxuICBydW50aW1lLmtleXMgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGtleXMucHVzaChrZXkpO1xuICAgIH1cbiAgICBrZXlzLnJldmVyc2UoKTtcblxuICAgIC8vIFJhdGhlciB0aGFuIHJldHVybmluZyBhbiBvYmplY3Qgd2l0aCBhIG5leHQgbWV0aG9kLCB3ZSBrZWVwXG4gICAgLy8gdGhpbmdzIHNpbXBsZSBhbmQgcmV0dXJuIHRoZSBuZXh0IGZ1bmN0aW9uIGl0c2VsZi5cbiAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIHdoaWxlIChrZXlzLmxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTtcbiAgICAgICAgaWYgKGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgICBuZXh0LnZhbHVlID0ga2V5O1xuICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRvIGF2b2lkIGNyZWF0aW5nIGFuIGFkZGl0aW9uYWwgb2JqZWN0LCB3ZSBqdXN0IGhhbmcgdGhlIC52YWx1ZVxuICAgICAgLy8gYW5kIC5kb25lIHByb3BlcnRpZXMgb2ZmIHRoZSBuZXh0IGZ1bmN0aW9uIG9iamVjdCBpdHNlbGYuIFRoaXNcbiAgICAgIC8vIGFsc28gZW5zdXJlcyB0aGF0IHRoZSBtaW5pZmllciB3aWxsIG5vdCBhbm9ueW1pemUgdGhlIGZ1bmN0aW9uLlxuICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsdWVzKGl0ZXJhYmxlKSB7XG4gICAgaWYgKGl0ZXJhYmxlKSB7XG4gICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtpdGVyYXRvclN5bWJvbF07XG4gICAgICBpZiAoaXRlcmF0b3JNZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yTWV0aG9kLmNhbGwoaXRlcmFibGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGl0ZXJhYmxlLm5leHQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gaXRlcmFibGU7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOYU4oaXRlcmFibGUubGVuZ3RoKSkge1xuICAgICAgICB2YXIgaSA9IC0xLCBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICB3aGlsZSAoKytpIDwgaXRlcmFibGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwoaXRlcmFibGUsIGkpKSB7XG4gICAgICAgICAgICAgIG5leHQudmFsdWUgPSBpdGVyYWJsZVtpXTtcbiAgICAgICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHQudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiBhbiBpdGVyYXRvciB3aXRoIG5vIHZhbHVlcy5cbiAgICByZXR1cm4geyBuZXh0OiBkb25lUmVzdWx0IH07XG4gIH1cbiAgcnVudGltZS52YWx1ZXMgPSB2YWx1ZXM7XG5cbiAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcbiAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIH1cblxuICBDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgICBjb25zdHJ1Y3RvcjogQ29udGV4dCxcblxuICAgIHJlc2V0OiBmdW5jdGlvbihza2lwVGVtcFJlc2V0KSB7XG4gICAgICB0aGlzLnByZXYgPSAwO1xuICAgICAgdGhpcy5uZXh0ID0gMDtcbiAgICAgIC8vIFJlc2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSk7XG5cbiAgICAgIGlmICghc2tpcFRlbXBSZXNldCkge1xuICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMpIHtcbiAgICAgICAgICAvLyBOb3Qgc3VyZSBhYm91dCB0aGUgb3B0aW1hbCBvcmRlciBvZiB0aGVzZSBjb25kaXRpb25zOlxuICAgICAgICAgIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gXCJ0XCIgJiZcbiAgICAgICAgICAgICAgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiZcbiAgICAgICAgICAgICAgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSkge1xuICAgICAgICAgICAgdGhpc1tuYW1lXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuXG4gICAgICB2YXIgcm9vdEVudHJ5ID0gdGhpcy50cnlFbnRyaWVzWzBdO1xuICAgICAgdmFyIHJvb3RSZWNvcmQgPSByb290RW50cnkuY29tcGxldGlvbjtcbiAgICAgIGlmIChyb290UmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByb290UmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMucnZhbDtcbiAgICB9LFxuXG4gICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uKGV4Y2VwdGlvbikge1xuICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgICB9XG5cbiAgICAgIHZhciBjb250ZXh0ID0gdGhpcztcbiAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkge1xuICAgICAgICByZWNvcmQudHlwZSA9IFwidGhyb3dcIjtcbiAgICAgICAgcmVjb3JkLmFyZyA9IGV4Y2VwdGlvbjtcbiAgICAgICAgY29udGV4dC5uZXh0ID0gbG9jO1xuXG4gICAgICAgIGlmIChjYXVnaHQpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGlzcGF0Y2hlZCBleGNlcHRpb24gd2FzIGNhdWdodCBieSBhIGNhdGNoIGJsb2NrLFxuICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhISBjYXVnaHQ7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSBcInJvb3RcIikge1xuICAgICAgICAgIC8vIEV4Y2VwdGlvbiB0aHJvd24gb3V0c2lkZSBvZiBhbnkgdHJ5IGJsb2NrIHRoYXQgY291bGQgaGFuZGxlXG4gICAgICAgICAgLy8gaXQsIHNvIHNldCB0aGUgY29tcGxldGlvbiB2YWx1ZSBvZiB0aGUgZW50aXJlIGZ1bmN0aW9uIHRvXG4gICAgICAgICAgLy8gdGhyb3cgdGhlIGV4Y2VwdGlvbi5cbiAgICAgICAgICByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcbiAgICAgICAgICB2YXIgaGFzQ2F0Y2ggPSBoYXNPd24uY2FsbChlbnRyeSwgXCJjYXRjaExvY1wiKTtcbiAgICAgICAgICB2YXIgaGFzRmluYWxseSA9IGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIik7XG5cbiAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0NhdGNoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFicnVwdDogZnVuY3Rpb24odHlwZSwgYXJnKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIikgJiZcbiAgICAgICAgICAgIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB2YXIgZmluYWxseUVudHJ5ID0gZW50cnk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSAmJlxuICAgICAgICAgICh0eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICAgdHlwZSA9PT0gXCJjb250aW51ZVwiKSAmJlxuICAgICAgICAgIGZpbmFsbHlFbnRyeS50cnlMb2MgPD0gYXJnICYmXG4gICAgICAgICAgYXJnIDw9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgIC8vIElnbm9yZSB0aGUgZmluYWxseSBlbnRyeSBpZiBjb250cm9sIGlzIG5vdCBqdW1waW5nIHRvIGFcbiAgICAgICAgLy8gbG9jYXRpb24gb3V0c2lkZSB0aGUgdHJ5L2NhdGNoIGJsb2NrLlxuICAgICAgICBmaW5hbGx5RW50cnkgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVjb3JkID0gZmluYWxseUVudHJ5ID8gZmluYWxseUVudHJ5LmNvbXBsZXRpb24gOiB7fTtcbiAgICAgIHJlY29yZC50eXBlID0gdHlwZTtcbiAgICAgIHJlY29yZC5hcmcgPSBhcmc7XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkpIHtcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2M7XG4gICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jb21wbGV0ZShyZWNvcmQpO1xuICAgIH0sXG5cbiAgICBjb21wbGV0ZTogZnVuY3Rpb24ocmVjb3JkLCBhZnRlckxvYykge1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICByZWNvcmQudHlwZSA9PT0gXCJjb250aW51ZVwiKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IHJlY29yZC5hcmc7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInJldHVyblwiKSB7XG4gICAgICAgIHRoaXMucnZhbCA9IHRoaXMuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICB0aGlzLm5leHQgPSBcImVuZFwiO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIiAmJiBhZnRlckxvYykge1xuICAgICAgICB0aGlzLm5leHQgPSBhZnRlckxvYztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfSxcblxuICAgIGZpbmlzaDogZnVuY3Rpb24oZmluYWxseUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSB7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyk7XG4gICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgXCJjYXRjaFwiOiBmdW5jdGlvbih0cnlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSB0cnlMb2MpIHtcbiAgICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcbiAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgdmFyIHRocm93biA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRocm93bjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgY29udGV4dC5jYXRjaCBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgbG9jYXRpb25cbiAgICAgIC8vIGFyZ3VtZW50IHRoYXQgY29ycmVzcG9uZHMgdG8gYSBrbm93biBjYXRjaCBibG9jay5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKTtcbiAgICB9LFxuXG4gICAgZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24oaXRlcmFibGUsIHJlc3VsdE5hbWUsIG5leHRMb2MpIHtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSB7XG4gICAgICAgIGl0ZXJhdG9yOiB2YWx1ZXMoaXRlcmFibGUpLFxuICAgICAgICByZXN1bHROYW1lOiByZXN1bHROYW1lLFxuICAgICAgICBuZXh0TG9jOiBuZXh0TG9jXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgIC8vIERlbGliZXJhdGVseSBmb3JnZXQgdGhlIGxhc3Qgc2VudCB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0XG4gICAgICAgIC8vIGFjY2lkZW50YWxseSBwYXNzIGl0IG9uIHRvIHRoZSBkZWxlZ2F0ZS5cbiAgICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cbiAgfTtcbn0pKFxuICAvLyBJbiBzbG9wcHkgbW9kZSwgdW5ib3VuZCBgdGhpc2AgcmVmZXJzIHRvIHRoZSBnbG9iYWwgb2JqZWN0LCBmYWxsYmFjayB0b1xuICAvLyBGdW5jdGlvbiBjb25zdHJ1Y3RvciBpZiB3ZSdyZSBpbiBnbG9iYWwgc3RyaWN0IG1vZGUuIFRoYXQgaXMgc2FkbHkgYSBmb3JtXG4gIC8vIG9mIGluZGlyZWN0IGV2YWwgd2hpY2ggdmlvbGF0ZXMgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuXG4gIChmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcyB8fCAodHlwZW9mIHNlbGYgPT09IFwib2JqZWN0XCIgJiYgc2VsZik7XG4gIH0pKCkgfHwgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpXG4pO1xuIiwiaW1wb3J0IHJlcXVlc3QgZnJvbSAnQC91dGlscy9yZXF1ZXN0J1xyXG5jb25zdCBzZXJ2aWNlVGl0bGUgPSAnL2ltZydcclxuLy9HRVQg5Lyg5Y+C6ZyA6KaB55SoIHBhcmFtc1xyXG4vL1BPU1Qg5Lyg5Y+C6ZyA6KaB55SoIGRhdGFcclxuXHJcbi8v6I635Y+WYmFubmVy5YiX6KGoXHJcbmV4cG9ydCBmdW5jdGlvbiB0aWt0b2tVc2VySW1ncygpIHtcclxuXHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHR1cmw6IGAke3NlcnZpY2VUaXRsZX0vaW1nL21pbmkvdGlrdG9rL3Rpa3Rva1VzZXJJbWdzYCxcclxuXHRcdG1ldGhvZDogJ2dldCdcclxuXHR9KVxyXG59XHJcbi8vIOi/keacn+eyvumAieWbvueJh+WIl+ihqFxyXG5leHBvcnQgZnVuY3Rpb24gaW1nTGlzdHMoZGF0YSkge1xyXG5cdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdHVybDogYCR7c2VydmljZVRpdGxlfS9pbWcvbWluaS90aWt0b2svaW1nTGlzdHNgLFxyXG5cdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRkYXRhXHJcblx0fSlcclxufVxyXG4vL+eUqOaIt+ivpuaDhemhtS3moLnmja7mkJzntKLnoIHmn6Xor6LnlKjmiLflm77niYfliJfooahcclxuZXhwb3J0IGZ1bmN0aW9uIHRpa3Rva1VzZXJEZXRhaWxzKGRhdGEpIHtcclxuXHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHR1cmw6IGAke3NlcnZpY2VUaXRsZX0vaW1nL21pbmkvdGlrdG9rL3Rpa3Rva1VzZXJJbWdzRGV0YWlsc2AsXHJcblx0XHRtZXRob2Q6ICdwb3N0JyxcclxuXHRcdGRhdGFcclxuXHR9KVxyXG59XHJcbiIsImltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIlxyXG5pbXBvcnQgcXMgZnJvbSBcInFzXCJcclxuaW1wb3J0IFZ1ZSBmcm9tIFwidnVlXCJcclxuXHJcbmNvbnN0IHNlcnZpY2UgPSBheGlvcy5jcmVhdGUoe1xyXG5cdHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcclxuXHRjcm9zc0RvbWFpbjogdHJ1ZSxcclxuXHRiYXNlVVJMOiBWdWUucHJvdG90eXBlLmJhc2VVUkwsIC8v6L+Z5LiqYmFzZVVSTOaYr+aIkeWcqG1haW4uanPkuIvphY3nva7nmoTor7fmsYJ1cmxcclxuXHR0aW1lb3V0OiAxMDAwMFxyXG59KVxyXG5cclxuXHJcbi8vIHJlcXVlc3Tmi6bmiKrlmags5Zyo6K+35rGC5LmL5YmN5YGa5LiA5Lqb5aSE55CGXHJcbnNlcnZpY2UuaW50ZXJjZXB0b3JzLnJlcXVlc3QudXNlKFxyXG5cdGNvbmZpZyA9PiB7XHJcblx0XHQvLyBpZiAoc3RvcmUuc3RhdGUudG9rZW4pIHtcclxuXHRcdC8vICAgICAvLyDnu5nor7fmsYLlpLTmt7vliqB1c2VyLXRva2VuXHJcblx0XHQvLyAgICAgY29uZmlnLmhlYWRlcnNbXCJ1c2VyLXRva2VuXCJdID0gc3RvcmUuc3RhdGUudG9rZW47XHJcblx0XHQvLyB9XHJcblx0XHRjb25maWcuaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSAnYXBwbGljYXRpb24vanNvbidcclxuXHRcdC8vIGNvbmZpZy5tZXRob2QgPT09ICdwb3N0JyA/XHJcblx0XHQvLyBcdGNvbmZpZy5kYXRhID0gcXMuc3RyaW5naWZ5KHsgLi4uY29uZmlnLmRhdGFcclxuXHRcdC8vIFx0fSkgOlxyXG5cdFx0Ly8gXHRjb25maWcucGFyYW1zID0geyAuLi5jb25maWcucGFyYW1zXHJcblx0XHQvLyBcdH07XHJcblx0XHRjb25zb2xlLmxvZygn6K+35rGC5oum5oiq5oiQ5YqfJylcclxuXHRcdGNvbnNvbGUubG9nKGNvbmZpZylcclxuXHRcdHJldHVybiBjb25maWc7XHJcblx0fSxcclxuXHRlcnJvciA9PiB7XHJcblx0XHRjb25zb2xlLmxvZyhlcnJvcik7IC8vIGZvciBkZWJ1Z1xyXG5cdFx0cmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcclxuXHR9XHJcbik7XHJcblxyXG4vL+mFjee9ruaIkOWKn+WQjueahOaLpuaIquWZqFxyXG5zZXJ2aWNlLmludGVyY2VwdG9ycy5yZXNwb25zZS51c2UocmVzID0+IHtcclxuXHRjb25zb2xlLmxvZygn6L+U5Zue5Y+C5pWwJyxyZXMpXHJcblx0cmV0dXJuIHJlc1xyXG5cdC8vIGlmIChyZXMuZGF0YS5zdGF0dXMgPT0gMjAwKSB7XHJcblx0Ly8gXHRyZXR1cm4gcmVzXHJcblx0Ly8gfSBlbHNlIHtcclxuXHQvLyBcdHJldHVybiBQcm9taXNlLnJlamVjdChyZXMuZGF0YS5tc2cpO1xyXG5cdC8vIH1cclxufSwgZXJyb3IgPT4ge1xyXG5cdHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcilcclxufSlcclxuXHJcbmF4aW9zLmRlZmF1bHRzLmFkYXB0ZXIgPSBmdW5jdGlvbihjb25maWcpIHsgLy/oh6rlt7HlrprkuYnkuKrpgILphY3lmajvvIznlKjmnaXpgILphY11bmlhcHDnmoTor63ms5VcclxuXHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0Ly8gY29uc29sZS5sb2coY29uZmlnKVxyXG5cdFx0dmFyIHNldHRsZSA9IHJlcXVpcmUoJ2F4aW9zL2xpYi9jb3JlL3NldHRsZScpO1xyXG5cdFx0dmFyIGJ1aWxkVVJMID0gcmVxdWlyZSgnYXhpb3MvbGliL2hlbHBlcnMvYnVpbGRVUkwnKTtcclxuXHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0bWV0aG9kOiBjb25maWcubWV0aG9kLnRvVXBwZXJDYXNlKCksXHJcblx0XHRcdHVybDogY29uZmlnLmJhc2VVUkwgKyBidWlsZFVSTChjb25maWcudXJsLCBjb25maWcucGFyYW1zLCBjb25maWcucGFyYW1zU2VyaWFsaXplciksXHJcblx0XHRcdGhlYWRlcjogY29uZmlnLmhlYWRlcnMsXHJcblx0XHRcdGRhdGE6IGNvbmZpZy5kYXRhLFxyXG5cdFx0XHRkYXRhVHlwZTogY29uZmlnLmRhdGFUeXBlLFxyXG5cdFx0XHRyZXNwb25zZVR5cGU6IGNvbmZpZy5yZXNwb25zZVR5cGUsXHJcblx0XHRcdHNzbFZlcmlmeTogY29uZmlnLnNzbFZlcmlmeSxcclxuXHRcdFx0Y29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlc3BvbnNlKSB7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coXCLmiafooYzlrozmiJDvvJpcIiwgcmVzcG9uc2UpXHJcblx0XHRcdFx0cmVzcG9uc2UgPSB7XHJcblx0XHRcdFx0XHRkYXRhOiByZXNwb25zZS5kYXRhLFxyXG5cdFx0XHRcdFx0c3RhdHVzOiByZXNwb25zZS5zdGF0dXNDb2RlLFxyXG5cdFx0XHRcdFx0ZXJyTXNnOiByZXNwb25zZS5lcnJNc2csXHJcblx0XHRcdFx0XHRoZWFkZXI6IHJlc3BvbnNlLmhlYWRlcixcclxuXHRcdFx0XHRcdGNvbmZpZzogY29uZmlnXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0XHRzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCByZXNwb25zZSk7XHJcblx0XHRcdH1cclxuXHRcdH0pXHJcblx0fSlcclxufVxyXG5leHBvcnQgZGVmYXVsdCBzZXJ2aWNlIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9heGlvcycpOyIsIid1c2Ugc3RyaWN0JztcclxuXHJcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcclxudmFyIGJpbmQgPSByZXF1aXJlKCcuL2hlbHBlcnMvYmluZCcpO1xyXG52YXIgQXhpb3MgPSByZXF1aXJlKCcuL2NvcmUvQXhpb3MnKTtcclxudmFyIG1lcmdlQ29uZmlnID0gcmVxdWlyZSgnLi9jb3JlL21lcmdlQ29uZmlnJyk7XHJcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4vZGVmYXVsdHMnKTtcclxuXHJcbi8qKlxyXG4gKiBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgQXhpb3NcclxuICpcclxuICogQHBhcmFtIHtPYmplY3R9IGRlZmF1bHRDb25maWcgVGhlIGRlZmF1bHQgY29uZmlnIGZvciB0aGUgaW5zdGFuY2VcclxuICogQHJldHVybiB7QXhpb3N9IEEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXHJcbiAqL1xyXG5mdW5jdGlvbiBjcmVhdGVJbnN0YW5jZShkZWZhdWx0Q29uZmlnKSB7XHJcbiAgdmFyIGNvbnRleHQgPSBuZXcgQXhpb3MoZGVmYXVsdENvbmZpZyk7XHJcbiAgdmFyIGluc3RhbmNlID0gYmluZChBeGlvcy5wcm90b3R5cGUucmVxdWVzdCwgY29udGV4dCk7XHJcblxyXG4gIC8vIENvcHkgYXhpb3MucHJvdG90eXBlIHRvIGluc3RhbmNlXHJcbiAgdXRpbHMuZXh0ZW5kKGluc3RhbmNlLCBBeGlvcy5wcm90b3R5cGUsIGNvbnRleHQpO1xyXG5cclxuICAvLyBDb3B5IGNvbnRleHQgdG8gaW5zdGFuY2VcclxuICB1dGlscy5leHRlbmQoaW5zdGFuY2UsIGNvbnRleHQpO1xyXG5cclxuICAvLyBGYWN0b3J5IGZvciBjcmVhdGluZyBuZXcgaW5zdGFuY2VzXHJcbiAgaW5zdGFuY2UuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGluc3RhbmNlQ29uZmlnKSB7XHJcbiAgICByZXR1cm4gY3JlYXRlSW5zdGFuY2UobWVyZ2VDb25maWcoZGVmYXVsdENvbmZpZywgaW5zdGFuY2VDb25maWcpKTtcclxuICB9O1xyXG5cclxuICByZXR1cm4gaW5zdGFuY2U7XHJcbn1cclxuXHJcbi8vIENyZWF0ZSB0aGUgZGVmYXVsdCBpbnN0YW5jZSB0byBiZSBleHBvcnRlZFxyXG52YXIgYXhpb3MgPSBjcmVhdGVJbnN0YW5jZShkZWZhdWx0cyk7XHJcblxyXG4vLyBFeHBvc2UgQXhpb3MgY2xhc3MgdG8gYWxsb3cgY2xhc3MgaW5oZXJpdGFuY2VcclxuYXhpb3MuQXhpb3MgPSBBeGlvcztcclxuXHJcbi8vIEV4cG9zZSBDYW5jZWwgJiBDYW5jZWxUb2tlblxyXG5heGlvcy5DYW5jZWwgPSByZXF1aXJlKCcuL2NhbmNlbC9DYW5jZWwnKTtcclxuYXhpb3MuQ2FuY2VsVG9rZW4gPSByZXF1aXJlKCcuL2NhbmNlbC9DYW5jZWxUb2tlbicpO1xyXG5heGlvcy5pc0NhbmNlbCA9IHJlcXVpcmUoJy4vY2FuY2VsL2lzQ2FuY2VsJyk7XHJcbmF4aW9zLlZFUlNJT04gPSByZXF1aXJlKCcuL2Vudi9kYXRhJykudmVyc2lvbjtcclxuXHJcbi8vIEV4cG9zZSBhbGwvc3ByZWFkXHJcbmF4aW9zLmFsbCA9IGZ1bmN0aW9uIGFsbChwcm9taXNlcykge1xyXG4gIHJldHVybiBQcm9taXNlLmFsbChwcm9taXNlcyk7XHJcbn07XHJcbmF4aW9zLnNwcmVhZCA9IHJlcXVpcmUoJy4vaGVscGVycy9zcHJlYWQnKTtcclxuXHJcbi8vIEV4cG9zZSBpc0F4aW9zRXJyb3JcclxuYXhpb3MuaXNBeGlvc0Vycm9yID0gcmVxdWlyZSgnLi9oZWxwZXJzL2lzQXhpb3NFcnJvcicpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBheGlvcztcclxuXHJcbi8vIEFsbG93IHVzZSBvZiBkZWZhdWx0IGltcG9ydCBzeW50YXggaW4gVHlwZVNjcmlwdFxyXG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gYXhpb3M7XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbnZhciBiaW5kID0gcmVxdWlyZSgnLi9oZWxwZXJzL2JpbmQnKTtcclxuXHJcbi8vIHV0aWxzIGlzIGEgbGlicmFyeSBvZiBnZW5lcmljIGhlbHBlciBmdW5jdGlvbnMgbm9uLXNwZWNpZmljIHRvIGF4aW9zXHJcblxyXG52YXIgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xyXG5cclxuLyoqXHJcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGFuIEFycmF5XHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcclxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gQXJyYXksIG90aGVyd2lzZSBmYWxzZVxyXG4gKi9cclxuZnVuY3Rpb24gaXNBcnJheSh2YWwpIHtcclxuICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWwpO1xyXG59XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgdW5kZWZpbmVkXHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcclxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCwgb3RoZXJ3aXNlIGZhbHNlXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWwpIHtcclxuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEJ1ZmZlclxyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XHJcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcclxuICovXHJcbmZ1bmN0aW9uIGlzQnVmZmVyKHZhbCkge1xyXG4gIHJldHVybiB2YWwgIT09IG51bGwgJiYgIWlzVW5kZWZpbmVkKHZhbCkgJiYgdmFsLmNvbnN0cnVjdG9yICE9PSBudWxsICYmICFpc1VuZGVmaW5lZCh2YWwuY29uc3RydWN0b3IpXHJcbiAgICAmJiB0eXBlb2YgdmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyID09PSAnZnVuY3Rpb24nICYmIHZhbC5jb25zdHJ1Y3Rvci5pc0J1ZmZlcih2YWwpO1xyXG59XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlCdWZmZXJcclxuICpcclxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBBcnJheUJ1ZmZlciwgb3RoZXJ3aXNlIGZhbHNlXHJcbiAqL1xyXG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyKHZhbCkge1xyXG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEFycmF5QnVmZmVyXSc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZvcm1EYXRhXHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcclxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gRm9ybURhdGEsIG90aGVyd2lzZSBmYWxzZVxyXG4gKi9cclxuZnVuY3Rpb24gaXNGb3JtRGF0YSh2YWwpIHtcclxuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBGb3JtRGF0YV0nO1xyXG59XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSB2aWV3IG9uIGFuIEFycmF5QnVmZmVyXHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcclxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSB2aWV3IG9uIGFuIEFycmF5QnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcclxuICovXHJcbmZ1bmN0aW9uIGlzQXJyYXlCdWZmZXJWaWV3KHZhbCkge1xyXG4gIHZhciByZXN1bHQ7XHJcbiAgaWYgKCh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnKSAmJiAoQXJyYXlCdWZmZXIuaXNWaWV3KSkge1xyXG4gICAgcmVzdWx0ID0gQXJyYXlCdWZmZXIuaXNWaWV3KHZhbCk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJlc3VsdCA9ICh2YWwpICYmICh2YWwuYnVmZmVyKSAmJiAoaXNBcnJheUJ1ZmZlcih2YWwuYnVmZmVyKSk7XHJcbiAgfVxyXG4gIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFN0cmluZ1xyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XHJcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyaW5nLCBvdGhlcndpc2UgZmFsc2VcclxuICovXHJcbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbCkge1xyXG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJztcclxufVxyXG5cclxuLyoqXHJcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgTnVtYmVyXHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcclxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBOdW1iZXIsIG90aGVyd2lzZSBmYWxzZVxyXG4gKi9cclxuZnVuY3Rpb24gaXNOdW1iZXIodmFsKSB7XHJcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdudW1iZXInO1xyXG59XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gT2JqZWN0XHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcclxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYW4gT2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcclxuICovXHJcbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbCkge1xyXG4gIHJldHVybiB2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIHBsYWluIE9iamVjdFxyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XHJcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBwbGFpbiBPYmplY3QsIG90aGVyd2lzZSBmYWxzZVxyXG4gKi9cclxuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWwpIHtcclxuICBpZiAodG9TdHJpbmcuY2FsbCh2YWwpICE9PSAnW29iamVjdCBPYmplY3RdJykge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgdmFyIHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWwpO1xyXG4gIHJldHVybiBwcm90b3R5cGUgPT09IG51bGwgfHwgcHJvdG90eXBlID09PSBPYmplY3QucHJvdG90eXBlO1xyXG59XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBEYXRlXHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcclxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBEYXRlLCBvdGhlcndpc2UgZmFsc2VcclxuICovXHJcbmZ1bmN0aW9uIGlzRGF0ZSh2YWwpIHtcclxuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBEYXRlXSc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZpbGVcclxuICpcclxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIEZpbGUsIG90aGVyd2lzZSBmYWxzZVxyXG4gKi9cclxuZnVuY3Rpb24gaXNGaWxlKHZhbCkge1xyXG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEZpbGVdJztcclxufVxyXG5cclxuLyoqXHJcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQmxvYlxyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XHJcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgQmxvYiwgb3RoZXJ3aXNlIGZhbHNlXHJcbiAqL1xyXG5mdW5jdGlvbiBpc0Jsb2IodmFsKSB7XHJcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgQmxvYl0nO1xyXG59XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBGdW5jdGlvblxyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XHJcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRnVuY3Rpb24sIG90aGVyd2lzZSBmYWxzZVxyXG4gKi9cclxuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWwpIHtcclxuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xyXG59XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBTdHJlYW1cclxuICpcclxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIFN0cmVhbSwgb3RoZXJ3aXNlIGZhbHNlXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1N0cmVhbSh2YWwpIHtcclxuICByZXR1cm4gaXNPYmplY3QodmFsKSAmJiBpc0Z1bmN0aW9uKHZhbC5waXBlKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdFxyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XHJcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgVVJMU2VhcmNoUGFyYW1zIG9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1VSTFNlYXJjaFBhcmFtcyh2YWwpIHtcclxuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBVUkxTZWFyY2hQYXJhbXNdJztcclxufVxyXG5cclxuLyoqXHJcbiAqIFRyaW0gZXhjZXNzIHdoaXRlc3BhY2Ugb2ZmIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBhIHN0cmluZ1xyXG4gKlxyXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyIFRoZSBTdHJpbmcgdG8gdHJpbVxyXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgU3RyaW5nIGZyZWVkIG9mIGV4Y2VzcyB3aGl0ZXNwYWNlXHJcbiAqL1xyXG5mdW5jdGlvbiB0cmltKHN0cikge1xyXG4gIHJldHVybiBzdHIudHJpbSA/IHN0ci50cmltKCkgOiBzdHIucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpO1xyXG59XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSBzdGFuZGFyZCBicm93c2VyIGVudmlyb25tZW50XHJcbiAqXHJcbiAqIFRoaXMgYWxsb3dzIGF4aW9zIHRvIHJ1biBpbiBhIHdlYiB3b3JrZXIsIGFuZCByZWFjdC1uYXRpdmUuXHJcbiAqIEJvdGggZW52aXJvbm1lbnRzIHN1cHBvcnQgWE1MSHR0cFJlcXVlc3QsIGJ1dCBub3QgZnVsbHkgc3RhbmRhcmQgZ2xvYmFscy5cclxuICpcclxuICogd2ViIHdvcmtlcnM6XHJcbiAqICB0eXBlb2Ygd2luZG93IC0+IHVuZGVmaW5lZFxyXG4gKiAgdHlwZW9mIGRvY3VtZW50IC0+IHVuZGVmaW5lZFxyXG4gKlxyXG4gKiByZWFjdC1uYXRpdmU6XHJcbiAqICBuYXZpZ2F0b3IucHJvZHVjdCAtPiAnUmVhY3ROYXRpdmUnXHJcbiAqIG5hdGl2ZXNjcmlwdFxyXG4gKiAgbmF2aWdhdG9yLnByb2R1Y3QgLT4gJ05hdGl2ZVNjcmlwdCcgb3IgJ05TJ1xyXG4gKi9cclxuZnVuY3Rpb24gaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSB7XHJcbiAgaWYgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIChuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ1JlYWN0TmF0aXZlJyB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLnByb2R1Y3QgPT09ICdOYXRpdmVTY3JpcHQnIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ05TJykpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgcmV0dXJuIChcclxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXHJcbiAgICB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnXHJcbiAgKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEl0ZXJhdGUgb3ZlciBhbiBBcnJheSBvciBhbiBPYmplY3QgaW52b2tpbmcgYSBmdW5jdGlvbiBmb3IgZWFjaCBpdGVtLlxyXG4gKlxyXG4gKiBJZiBgb2JqYCBpcyBhbiBBcnJheSBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXHJcbiAqIHRoZSB2YWx1ZSwgaW5kZXgsIGFuZCBjb21wbGV0ZSBhcnJheSBmb3IgZWFjaCBpdGVtLlxyXG4gKlxyXG4gKiBJZiAnb2JqJyBpcyBhbiBPYmplY3QgY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgcGFzc2luZ1xyXG4gKiB0aGUgdmFsdWUsIGtleSwgYW5kIGNvbXBsZXRlIG9iamVjdCBmb3IgZWFjaCBwcm9wZXJ0eS5cclxuICpcclxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IG9iaiBUaGUgb2JqZWN0IHRvIGl0ZXJhdGVcclxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGNhbGxiYWNrIHRvIGludm9rZSBmb3IgZWFjaCBpdGVtXHJcbiAqL1xyXG5mdW5jdGlvbiBmb3JFYWNoKG9iaiwgZm4pIHtcclxuICAvLyBEb24ndCBib3RoZXIgaWYgbm8gdmFsdWUgcHJvdmlkZWRcclxuICBpZiAob2JqID09PSBudWxsIHx8IHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICAvLyBGb3JjZSBhbiBhcnJheSBpZiBub3QgYWxyZWFkeSBzb21ldGhpbmcgaXRlcmFibGVcclxuICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcclxuICAgIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xyXG4gICAgb2JqID0gW29ial07XHJcbiAgfVxyXG5cclxuICBpZiAoaXNBcnJheShvYmopKSB7XHJcbiAgICAvLyBJdGVyYXRlIG92ZXIgYXJyYXkgdmFsdWVzXHJcbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IG9iai5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgZm4uY2FsbChudWxsLCBvYmpbaV0sIGksIG9iaik7XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIC8vIEl0ZXJhdGUgb3ZlciBvYmplY3Qga2V5c1xyXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xyXG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xyXG4gICAgICAgIGZuLmNhbGwobnVsbCwgb2JqW2tleV0sIGtleSwgb2JqKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEFjY2VwdHMgdmFyYXJncyBleHBlY3RpbmcgZWFjaCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QsIHRoZW5cclxuICogaW1tdXRhYmx5IG1lcmdlcyB0aGUgcHJvcGVydGllcyBvZiBlYWNoIG9iamVjdCBhbmQgcmV0dXJucyByZXN1bHQuXHJcbiAqXHJcbiAqIFdoZW4gbXVsdGlwbGUgb2JqZWN0cyBjb250YWluIHRoZSBzYW1lIGtleSB0aGUgbGF0ZXIgb2JqZWN0IGluXHJcbiAqIHRoZSBhcmd1bWVudHMgbGlzdCB3aWxsIHRha2UgcHJlY2VkZW5jZS5cclxuICpcclxuICogRXhhbXBsZTpcclxuICpcclxuICogYGBganNcclxuICogdmFyIHJlc3VsdCA9IG1lcmdlKHtmb286IDEyM30sIHtmb286IDQ1Nn0pO1xyXG4gKiBjb25zb2xlLmxvZyhyZXN1bHQuZm9vKTsgLy8gb3V0cHV0cyA0NTZcclxuICogYGBgXHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmoxIE9iamVjdCB0byBtZXJnZVxyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXN1bHQgb2YgYWxsIG1lcmdlIHByb3BlcnRpZXNcclxuICovXHJcbmZ1bmN0aW9uIG1lcmdlKC8qIG9iajEsIG9iajIsIG9iajMsIC4uLiAqLykge1xyXG4gIHZhciByZXN1bHQgPSB7fTtcclxuICBmdW5jdGlvbiBhc3NpZ25WYWx1ZSh2YWwsIGtleSkge1xyXG4gICAgaWYgKGlzUGxhaW5PYmplY3QocmVzdWx0W2tleV0pICYmIGlzUGxhaW5PYmplY3QodmFsKSkge1xyXG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlKHJlc3VsdFtrZXldLCB2YWwpO1xyXG4gICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHZhbCkpIHtcclxuICAgICAgcmVzdWx0W2tleV0gPSBtZXJnZSh7fSwgdmFsKTtcclxuICAgIH0gZWxzZSBpZiAoaXNBcnJheSh2YWwpKSB7XHJcbiAgICAgIHJlc3VsdFtrZXldID0gdmFsLnNsaWNlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXN1bHRba2V5XSA9IHZhbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGZvciAodmFyIGkgPSAwLCBsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgZm9yRWFjaChhcmd1bWVudHNbaV0sIGFzc2lnblZhbHVlKTtcclxuICB9XHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEV4dGVuZHMgb2JqZWN0IGEgYnkgbXV0YWJseSBhZGRpbmcgdG8gaXQgdGhlIHByb3BlcnRpZXMgb2Ygb2JqZWN0IGIuXHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBhIFRoZSBvYmplY3QgdG8gYmUgZXh0ZW5kZWRcclxuICogQHBhcmFtIHtPYmplY3R9IGIgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbVxyXG4gKiBAcGFyYW0ge09iamVjdH0gdGhpc0FyZyBUaGUgb2JqZWN0IHRvIGJpbmQgZnVuY3Rpb24gdG9cclxuICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0aW5nIHZhbHVlIG9mIG9iamVjdCBhXHJcbiAqL1xyXG5mdW5jdGlvbiBleHRlbmQoYSwgYiwgdGhpc0FyZykge1xyXG4gIGZvckVhY2goYiwgZnVuY3Rpb24gYXNzaWduVmFsdWUodmFsLCBrZXkpIHtcclxuICAgIGlmICh0aGlzQXJnICYmIHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgYVtrZXldID0gYmluZCh2YWwsIHRoaXNBcmcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYVtrZXldID0gdmFsO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBhO1xyXG59XHJcblxyXG4vKipcclxuICogUmVtb3ZlIGJ5dGUgb3JkZXIgbWFya2VyLiBUaGlzIGNhdGNoZXMgRUYgQkIgQkYgKHRoZSBVVEYtOCBCT00pXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IHdpdGggQk9NXHJcbiAqIEByZXR1cm4ge3N0cmluZ30gY29udGVudCB2YWx1ZSB3aXRob3V0IEJPTVxyXG4gKi9cclxuZnVuY3Rpb24gc3RyaXBCT00oY29udGVudCkge1xyXG4gIGlmIChjb250ZW50LmNoYXJDb2RlQXQoMCkgPT09IDB4RkVGRikge1xyXG4gICAgY29udGVudCA9IGNvbnRlbnQuc2xpY2UoMSk7XHJcbiAgfVxyXG4gIHJldHVybiBjb250ZW50O1xyXG59XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHtcclxuICBpc0FycmF5OiBpc0FycmF5LFxyXG4gIGlzQXJyYXlCdWZmZXI6IGlzQXJyYXlCdWZmZXIsXHJcbiAgaXNCdWZmZXI6IGlzQnVmZmVyLFxyXG4gIGlzRm9ybURhdGE6IGlzRm9ybURhdGEsXHJcbiAgaXNBcnJheUJ1ZmZlclZpZXc6IGlzQXJyYXlCdWZmZXJWaWV3LFxyXG4gIGlzU3RyaW5nOiBpc1N0cmluZyxcclxuICBpc051bWJlcjogaXNOdW1iZXIsXHJcbiAgaXNPYmplY3Q6IGlzT2JqZWN0LFxyXG4gIGlzUGxhaW5PYmplY3Q6IGlzUGxhaW5PYmplY3QsXHJcbiAgaXNVbmRlZmluZWQ6IGlzVW5kZWZpbmVkLFxyXG4gIGlzRGF0ZTogaXNEYXRlLFxyXG4gIGlzRmlsZTogaXNGaWxlLFxyXG4gIGlzQmxvYjogaXNCbG9iLFxyXG4gIGlzRnVuY3Rpb246IGlzRnVuY3Rpb24sXHJcbiAgaXNTdHJlYW06IGlzU3RyZWFtLFxyXG4gIGlzVVJMU2VhcmNoUGFyYW1zOiBpc1VSTFNlYXJjaFBhcmFtcyxcclxuICBpc1N0YW5kYXJkQnJvd3NlckVudjogaXNTdGFuZGFyZEJyb3dzZXJFbnYsXHJcbiAgZm9yRWFjaDogZm9yRWFjaCxcclxuICBtZXJnZTogbWVyZ2UsXHJcbiAgZXh0ZW5kOiBleHRlbmQsXHJcbiAgdHJpbTogdHJpbSxcclxuICBzdHJpcEJPTTogc3RyaXBCT01cclxufTtcclxuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBiaW5kKGZuLCB0aGlzQXJnKSB7XHJcbiAgcmV0dXJuIGZ1bmN0aW9uIHdyYXAoKSB7XHJcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xyXG4gIH07XHJcbn07XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcclxudmFyIGJ1aWxkVVJMID0gcmVxdWlyZSgnLi4vaGVscGVycy9idWlsZFVSTCcpO1xyXG52YXIgSW50ZXJjZXB0b3JNYW5hZ2VyID0gcmVxdWlyZSgnLi9JbnRlcmNlcHRvck1hbmFnZXInKTtcclxudmFyIGRpc3BhdGNoUmVxdWVzdCA9IHJlcXVpcmUoJy4vZGlzcGF0Y2hSZXF1ZXN0Jyk7XHJcbnZhciBtZXJnZUNvbmZpZyA9IHJlcXVpcmUoJy4vbWVyZ2VDb25maWcnKTtcclxudmFyIHZhbGlkYXRvciA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvdmFsaWRhdG9yJyk7XHJcblxyXG52YXIgdmFsaWRhdG9ycyA9IHZhbGlkYXRvci52YWxpZGF0b3JzO1xyXG4vKipcclxuICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIEF4aW9zXHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBpbnN0YW5jZUNvbmZpZyBUaGUgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxyXG4gKi9cclxuZnVuY3Rpb24gQXhpb3MoaW5zdGFuY2VDb25maWcpIHtcclxuICB0aGlzLmRlZmF1bHRzID0gaW5zdGFuY2VDb25maWc7XHJcbiAgdGhpcy5pbnRlcmNlcHRvcnMgPSB7XHJcbiAgICByZXF1ZXN0OiBuZXcgSW50ZXJjZXB0b3JNYW5hZ2VyKCksXHJcbiAgICByZXNwb25zZTogbmV3IEludGVyY2VwdG9yTWFuYWdlcigpXHJcbiAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIERpc3BhdGNoIGEgcmVxdWVzdFxyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcgc3BlY2lmaWMgZm9yIHRoaXMgcmVxdWVzdCAobWVyZ2VkIHdpdGggdGhpcy5kZWZhdWx0cylcclxuICovXHJcbkF4aW9zLnByb3RvdHlwZS5yZXF1ZXN0ID0gZnVuY3Rpb24gcmVxdWVzdChjb25maWdPclVybCwgY29uZmlnKSB7XHJcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXHJcbiAgLy8gQWxsb3cgZm9yIGF4aW9zKCdleGFtcGxlL3VybCdbLCBjb25maWddKSBhIGxhIGZldGNoIEFQSVxyXG4gIGlmICh0eXBlb2YgY29uZmlnT3JVcmwgPT09ICdzdHJpbmcnKSB7XHJcbiAgICBjb25maWcgPSBjb25maWcgfHwge307XHJcbiAgICBjb25maWcudXJsID0gY29uZmlnT3JVcmw7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbmZpZyA9IGNvbmZpZ09yVXJsIHx8IHt9O1xyXG4gIH1cclxuXHJcbiAgY29uZmlnID0gbWVyZ2VDb25maWcodGhpcy5kZWZhdWx0cywgY29uZmlnKTtcclxuXHJcbiAgLy8gU2V0IGNvbmZpZy5tZXRob2RcclxuICBpZiAoY29uZmlnLm1ldGhvZCkge1xyXG4gICAgY29uZmlnLm1ldGhvZCA9IGNvbmZpZy5tZXRob2QudG9Mb3dlckNhc2UoKTtcclxuICB9IGVsc2UgaWYgKHRoaXMuZGVmYXVsdHMubWV0aG9kKSB7XHJcbiAgICBjb25maWcubWV0aG9kID0gdGhpcy5kZWZhdWx0cy5tZXRob2QudG9Mb3dlckNhc2UoKTtcclxuICB9IGVsc2Uge1xyXG4gICAgY29uZmlnLm1ldGhvZCA9ICdnZXQnO1xyXG4gIH1cclxuXHJcbiAgdmFyIHRyYW5zaXRpb25hbCA9IGNvbmZpZy50cmFuc2l0aW9uYWw7XHJcblxyXG4gIGlmICh0cmFuc2l0aW9uYWwgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgdmFsaWRhdG9yLmFzc2VydE9wdGlvbnModHJhbnNpdGlvbmFsLCB7XHJcbiAgICAgIHNpbGVudEpTT05QYXJzaW5nOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4pLFxyXG4gICAgICBmb3JjZWRKU09OUGFyc2luZzogdmFsaWRhdG9ycy50cmFuc2l0aW9uYWwodmFsaWRhdG9ycy5ib29sZWFuKSxcclxuICAgICAgY2xhcmlmeVRpbWVvdXRFcnJvcjogdmFsaWRhdG9ycy50cmFuc2l0aW9uYWwodmFsaWRhdG9ycy5ib29sZWFuKVxyXG4gICAgfSwgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLy8gZmlsdGVyIG91dCBza2lwcGVkIGludGVyY2VwdG9yc1xyXG4gIHZhciByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbiA9IFtdO1xyXG4gIHZhciBzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMgPSB0cnVlO1xyXG4gIHRoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaChmdW5jdGlvbiB1bnNoaWZ0UmVxdWVzdEludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xyXG4gICAgaWYgKHR5cGVvZiBpbnRlcmNlcHRvci5ydW5XaGVuID09PSAnZnVuY3Rpb24nICYmIGludGVyY2VwdG9yLnJ1bldoZW4oY29uZmlnKSA9PT0gZmFsc2UpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycyA9IHN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycyAmJiBpbnRlcmNlcHRvci5zeW5jaHJvbm91cztcclxuXHJcbiAgICByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi51bnNoaWZ0KGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xyXG4gIH0pO1xyXG5cclxuICB2YXIgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluID0gW107XHJcbiAgdGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaChmdW5jdGlvbiBwdXNoUmVzcG9uc2VJbnRlcmNlcHRvcnMoaW50ZXJjZXB0b3IpIHtcclxuICAgIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbi5wdXNoKGludGVyY2VwdG9yLmZ1bGZpbGxlZCwgaW50ZXJjZXB0b3IucmVqZWN0ZWQpO1xyXG4gIH0pO1xyXG5cclxuICB2YXIgcHJvbWlzZTtcclxuXHJcbiAgaWYgKCFzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMpIHtcclxuICAgIHZhciBjaGFpbiA9IFtkaXNwYXRjaFJlcXVlc3QsIHVuZGVmaW5lZF07XHJcblxyXG4gICAgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkoY2hhaW4sIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluKTtcclxuICAgIGNoYWluID0gY2hhaW4uY29uY2F0KHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbik7XHJcblxyXG4gICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShjb25maWcpO1xyXG4gICAgd2hpbGUgKGNoYWluLmxlbmd0aCkge1xyXG4gICAgICBwcm9taXNlID0gcHJvbWlzZS50aGVuKGNoYWluLnNoaWZ0KCksIGNoYWluLnNoaWZ0KCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwcm9taXNlO1xyXG4gIH1cclxuXHJcblxyXG4gIHZhciBuZXdDb25maWcgPSBjb25maWc7XHJcbiAgd2hpbGUgKHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLmxlbmd0aCkge1xyXG4gICAgdmFyIG9uRnVsZmlsbGVkID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4uc2hpZnQoKTtcclxuICAgIHZhciBvblJlamVjdGVkID0gcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4uc2hpZnQoKTtcclxuICAgIHRyeSB7XHJcbiAgICAgIG5ld0NvbmZpZyA9IG9uRnVsZmlsbGVkKG5ld0NvbmZpZyk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBvblJlamVjdGVkKGVycm9yKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cnkge1xyXG4gICAgcHJvbWlzZSA9IGRpc3BhdGNoUmVxdWVzdChuZXdDb25maWcpO1xyXG4gIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xyXG4gIH1cclxuXHJcbiAgd2hpbGUgKHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbi5sZW5ndGgpIHtcclxuICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4ocmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLnNoaWZ0KCksIHJlc3BvbnNlSW50ZXJjZXB0b3JDaGFpbi5zaGlmdCgpKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBwcm9taXNlO1xyXG59O1xyXG5cclxuQXhpb3MucHJvdG90eXBlLmdldFVyaSA9IGZ1bmN0aW9uIGdldFVyaShjb25maWcpIHtcclxuICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xyXG4gIHJldHVybiBidWlsZFVSTChjb25maWcudXJsLCBjb25maWcucGFyYW1zLCBjb25maWcucGFyYW1zU2VyaWFsaXplcikucmVwbGFjZSgvXlxcPy8sICcnKTtcclxufTtcclxuXHJcbi8vIFByb3ZpZGUgYWxpYXNlcyBmb3Igc3VwcG9ydGVkIHJlcXVlc3QgbWV0aG9kc1xyXG51dGlscy5mb3JFYWNoKFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJywgJ29wdGlvbnMnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZE5vRGF0YShtZXRob2QpIHtcclxuICAvKmVzbGludCBmdW5jLW5hbWVzOjAqL1xyXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24odXJsLCBjb25maWcpIHtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QobWVyZ2VDb25maWcoY29uZmlnIHx8IHt9LCB7XHJcbiAgICAgIG1ldGhvZDogbWV0aG9kLFxyXG4gICAgICB1cmw6IHVybCxcclxuICAgICAgZGF0YTogKGNvbmZpZyB8fCB7fSkuZGF0YVxyXG4gICAgfSkpO1xyXG4gIH07XHJcbn0pO1xyXG5cclxudXRpbHMuZm9yRWFjaChbJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2RXaXRoRGF0YShtZXRob2QpIHtcclxuICAvKmVzbGludCBmdW5jLW5hbWVzOjAqL1xyXG4gIEF4aW9zLnByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24odXJsLCBkYXRhLCBjb25maWcpIHtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QobWVyZ2VDb25maWcoY29uZmlnIHx8IHt9LCB7XHJcbiAgICAgIG1ldGhvZDogbWV0aG9kLFxyXG4gICAgICB1cmw6IHVybCxcclxuICAgICAgZGF0YTogZGF0YVxyXG4gICAgfSkpO1xyXG4gIH07XHJcbn0pO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBBeGlvcztcclxuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xyXG5cclxuZnVuY3Rpb24gZW5jb2RlKHZhbCkge1xyXG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQodmFsKS5cclxuICAgIHJlcGxhY2UoLyUzQS9naSwgJzonKS5cclxuICAgIHJlcGxhY2UoLyUyNC9nLCAnJCcpLlxyXG4gICAgcmVwbGFjZSgvJTJDL2dpLCAnLCcpLlxyXG4gICAgcmVwbGFjZSgvJTIwL2csICcrJykuXHJcbiAgICByZXBsYWNlKC8lNUIvZ2ksICdbJykuXHJcbiAgICByZXBsYWNlKC8lNUQvZ2ksICddJyk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBCdWlsZCBhIFVSTCBieSBhcHBlbmRpbmcgcGFyYW1zIHRvIHRoZSBlbmRcclxuICpcclxuICogQHBhcmFtIHtzdHJpbmd9IHVybCBUaGUgYmFzZSBvZiB0aGUgdXJsIChlLmcuLCBodHRwOi8vd3d3Lmdvb2dsZS5jb20pXHJcbiAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSBUaGUgcGFyYW1zIHRvIGJlIGFwcGVuZGVkXHJcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBmb3JtYXR0ZWQgdXJsXHJcbiAqL1xyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJ1aWxkVVJMKHVybCwgcGFyYW1zLCBwYXJhbXNTZXJpYWxpemVyKSB7XHJcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXHJcbiAgaWYgKCFwYXJhbXMpIHtcclxuICAgIHJldHVybiB1cmw7XHJcbiAgfVxyXG5cclxuICB2YXIgc2VyaWFsaXplZFBhcmFtcztcclxuICBpZiAocGFyYW1zU2VyaWFsaXplcikge1xyXG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcmFtc1NlcmlhbGl6ZXIocGFyYW1zKTtcclxuICB9IGVsc2UgaWYgKHV0aWxzLmlzVVJMU2VhcmNoUGFyYW1zKHBhcmFtcykpIHtcclxuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJhbXMudG9TdHJpbmcoKTtcclxuICB9IGVsc2Uge1xyXG4gICAgdmFyIHBhcnRzID0gW107XHJcblxyXG4gICAgdXRpbHMuZm9yRWFjaChwYXJhbXMsIGZ1bmN0aW9uIHNlcmlhbGl6ZSh2YWwsIGtleSkge1xyXG4gICAgICBpZiAodmFsID09PSBudWxsIHx8IHR5cGVvZiB2YWwgPT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodXRpbHMuaXNBcnJheSh2YWwpKSB7XHJcbiAgICAgICAga2V5ID0ga2V5ICsgJ1tdJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YWwgPSBbdmFsXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdXRpbHMuZm9yRWFjaCh2YWwsIGZ1bmN0aW9uIHBhcnNlVmFsdWUodikge1xyXG4gICAgICAgIGlmICh1dGlscy5pc0RhdGUodikpIHtcclxuICAgICAgICAgIHYgPSB2LnRvSVNPU3RyaW5nKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh1dGlscy5pc09iamVjdCh2KSkge1xyXG4gICAgICAgICAgdiA9IEpTT04uc3RyaW5naWZ5KHYpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwYXJ0cy5wdXNoKGVuY29kZShrZXkpICsgJz0nICsgZW5jb2RlKHYpKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBzZXJpYWxpemVkUGFyYW1zID0gcGFydHMuam9pbignJicpO1xyXG4gIH1cclxuXHJcbiAgaWYgKHNlcmlhbGl6ZWRQYXJhbXMpIHtcclxuICAgIHZhciBoYXNobWFya0luZGV4ID0gdXJsLmluZGV4T2YoJyMnKTtcclxuICAgIGlmIChoYXNobWFya0luZGV4ICE9PSAtMSkge1xyXG4gICAgICB1cmwgPSB1cmwuc2xpY2UoMCwgaGFzaG1hcmtJbmRleCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXJsICs9ICh1cmwuaW5kZXhPZignPycpID09PSAtMSA/ICc/JyA6ICcmJykgKyBzZXJpYWxpemVkUGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHVybDtcclxufTtcclxuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xyXG5cclxuZnVuY3Rpb24gSW50ZXJjZXB0b3JNYW5hZ2VyKCkge1xyXG4gIHRoaXMuaGFuZGxlcnMgPSBbXTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEFkZCBhIG5ldyBpbnRlcmNlcHRvciB0byB0aGUgc3RhY2tcclxuICpcclxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVsZmlsbGVkIFRoZSBmdW5jdGlvbiB0byBoYW5kbGUgYHRoZW5gIGZvciBhIGBQcm9taXNlYFxyXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZWplY3RlZCBUaGUgZnVuY3Rpb24gdG8gaGFuZGxlIGByZWplY3RgIGZvciBhIGBQcm9taXNlYFxyXG4gKlxyXG4gKiBAcmV0dXJuIHtOdW1iZXJ9IEFuIElEIHVzZWQgdG8gcmVtb3ZlIGludGVyY2VwdG9yIGxhdGVyXHJcbiAqL1xyXG5JbnRlcmNlcHRvck1hbmFnZXIucHJvdG90eXBlLnVzZSA9IGZ1bmN0aW9uIHVzZShmdWxmaWxsZWQsIHJlamVjdGVkLCBvcHRpb25zKSB7XHJcbiAgdGhpcy5oYW5kbGVycy5wdXNoKHtcclxuICAgIGZ1bGZpbGxlZDogZnVsZmlsbGVkLFxyXG4gICAgcmVqZWN0ZWQ6IHJlamVjdGVkLFxyXG4gICAgc3luY2hyb25vdXM6IG9wdGlvbnMgPyBvcHRpb25zLnN5bmNocm9ub3VzIDogZmFsc2UsXHJcbiAgICBydW5XaGVuOiBvcHRpb25zID8gb3B0aW9ucy5ydW5XaGVuIDogbnVsbFxyXG4gIH0pO1xyXG4gIHJldHVybiB0aGlzLmhhbmRsZXJzLmxlbmd0aCAtIDE7XHJcbn07XHJcblxyXG4vKipcclxuICogUmVtb3ZlIGFuIGludGVyY2VwdG9yIGZyb20gdGhlIHN0YWNrXHJcbiAqXHJcbiAqIEBwYXJhbSB7TnVtYmVyfSBpZCBUaGUgSUQgdGhhdCB3YXMgcmV0dXJuZWQgYnkgYHVzZWBcclxuICovXHJcbkludGVyY2VwdG9yTWFuYWdlci5wcm90b3R5cGUuZWplY3QgPSBmdW5jdGlvbiBlamVjdChpZCkge1xyXG4gIGlmICh0aGlzLmhhbmRsZXJzW2lkXSkge1xyXG4gICAgdGhpcy5oYW5kbGVyc1tpZF0gPSBudWxsO1xyXG4gIH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiBJdGVyYXRlIG92ZXIgYWxsIHRoZSByZWdpc3RlcmVkIGludGVyY2VwdG9yc1xyXG4gKlxyXG4gKiBUaGlzIG1ldGhvZCBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBza2lwcGluZyBvdmVyIGFueVxyXG4gKiBpbnRlcmNlcHRvcnMgdGhhdCBtYXkgaGF2ZSBiZWNvbWUgYG51bGxgIGNhbGxpbmcgYGVqZWN0YC5cclxuICpcclxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgZm9yIGVhY2ggaW50ZXJjZXB0b3JcclxuICovXHJcbkludGVyY2VwdG9yTWFuYWdlci5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIGZvckVhY2goZm4pIHtcclxuICB1dGlscy5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsIGZ1bmN0aW9uIGZvckVhY2hIYW5kbGVyKGgpIHtcclxuICAgIGlmIChoICE9PSBudWxsKSB7XHJcbiAgICAgIGZuKGgpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59O1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBJbnRlcmNlcHRvck1hbmFnZXI7XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcclxudmFyIHRyYW5zZm9ybURhdGEgPSByZXF1aXJlKCcuL3RyYW5zZm9ybURhdGEnKTtcclxudmFyIGlzQ2FuY2VsID0gcmVxdWlyZSgnLi4vY2FuY2VsL2lzQ2FuY2VsJyk7XHJcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4uL2RlZmF1bHRzJyk7XHJcbnZhciBDYW5jZWwgPSByZXF1aXJlKCcuLi9jYW5jZWwvQ2FuY2VsJyk7XHJcblxyXG4vKipcclxuICogVGhyb3dzIGEgYENhbmNlbGAgaWYgY2FuY2VsbGF0aW9uIGhhcyBiZWVuIHJlcXVlc3RlZC5cclxuICovXHJcbmZ1bmN0aW9uIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKSB7XHJcbiAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbikge1xyXG4gICAgY29uZmlnLmNhbmNlbFRva2VuLnRocm93SWZSZXF1ZXN0ZWQoKTtcclxuICB9XHJcblxyXG4gIGlmIChjb25maWcuc2lnbmFsICYmIGNvbmZpZy5zaWduYWwuYWJvcnRlZCkge1xyXG4gICAgdGhyb3cgbmV3IENhbmNlbCgnY2FuY2VsZWQnKTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEaXNwYXRjaCBhIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB1c2luZyB0aGUgY29uZmlndXJlZCBhZGFwdGVyLlxyXG4gKlxyXG4gKiBAcGFyYW0ge29iamVjdH0gY29uZmlnIFRoZSBjb25maWcgdGhhdCBpcyB0byBiZSB1c2VkIGZvciB0aGUgcmVxdWVzdFxyXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gVGhlIFByb21pc2UgdG8gYmUgZnVsZmlsbGVkXHJcbiAqL1xyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRpc3BhdGNoUmVxdWVzdChjb25maWcpIHtcclxuICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XHJcblxyXG4gIC8vIEVuc3VyZSBoZWFkZXJzIGV4aXN0XHJcbiAgY29uZmlnLmhlYWRlcnMgPSBjb25maWcuaGVhZGVycyB8fCB7fTtcclxuXHJcbiAgLy8gVHJhbnNmb3JtIHJlcXVlc3QgZGF0YVxyXG4gIGNvbmZpZy5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxyXG4gICAgY29uZmlnLFxyXG4gICAgY29uZmlnLmRhdGEsXHJcbiAgICBjb25maWcuaGVhZGVycyxcclxuICAgIGNvbmZpZy50cmFuc2Zvcm1SZXF1ZXN0XHJcbiAgKTtcclxuXHJcbiAgLy8gRmxhdHRlbiBoZWFkZXJzXHJcbiAgY29uZmlnLmhlYWRlcnMgPSB1dGlscy5tZXJnZShcclxuICAgIGNvbmZpZy5oZWFkZXJzLmNvbW1vbiB8fCB7fSxcclxuICAgIGNvbmZpZy5oZWFkZXJzW2NvbmZpZy5tZXRob2RdIHx8IHt9LFxyXG4gICAgY29uZmlnLmhlYWRlcnNcclxuICApO1xyXG5cclxuICB1dGlscy5mb3JFYWNoKFxyXG4gICAgWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAncG9zdCcsICdwdXQnLCAncGF0Y2gnLCAnY29tbW9uJ10sXHJcbiAgICBmdW5jdGlvbiBjbGVhbkhlYWRlckNvbmZpZyhtZXRob2QpIHtcclxuICAgICAgZGVsZXRlIGNvbmZpZy5oZWFkZXJzW21ldGhvZF07XHJcbiAgICB9XHJcbiAgKTtcclxuXHJcbiAgdmFyIGFkYXB0ZXIgPSBjb25maWcuYWRhcHRlciB8fCBkZWZhdWx0cy5hZGFwdGVyO1xyXG5cclxuICByZXR1cm4gYWRhcHRlcihjb25maWcpLnRoZW4oZnVuY3Rpb24gb25BZGFwdGVyUmVzb2x1dGlvbihyZXNwb25zZSkge1xyXG4gICAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xyXG5cclxuICAgIC8vIFRyYW5zZm9ybSByZXNwb25zZSBkYXRhXHJcbiAgICByZXNwb25zZS5kYXRhID0gdHJhbnNmb3JtRGF0YS5jYWxsKFxyXG4gICAgICBjb25maWcsXHJcbiAgICAgIHJlc3BvbnNlLmRhdGEsXHJcbiAgICAgIHJlc3BvbnNlLmhlYWRlcnMsXHJcbiAgICAgIGNvbmZpZy50cmFuc2Zvcm1SZXNwb25zZVxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfSwgZnVuY3Rpb24gb25BZGFwdGVyUmVqZWN0aW9uKHJlYXNvbikge1xyXG4gICAgaWYgKCFpc0NhbmNlbChyZWFzb24pKSB7XHJcbiAgICAgIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcclxuXHJcbiAgICAgIC8vIFRyYW5zZm9ybSByZXNwb25zZSBkYXRhXHJcbiAgICAgIGlmIChyZWFzb24gJiYgcmVhc29uLnJlc3BvbnNlKSB7XHJcbiAgICAgICAgcmVhc29uLnJlc3BvbnNlLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXHJcbiAgICAgICAgICBjb25maWcsXHJcbiAgICAgICAgICByZWFzb24ucmVzcG9uc2UuZGF0YSxcclxuICAgICAgICAgIHJlYXNvbi5yZXNwb25zZS5oZWFkZXJzLFxyXG4gICAgICAgICAgY29uZmlnLnRyYW5zZm9ybVJlc3BvbnNlXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChyZWFzb24pO1xyXG4gIH0pO1xyXG59O1xyXG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XHJcbnZhciBkZWZhdWx0cyA9IHJlcXVpcmUoJy4uL2RlZmF1bHRzJyk7XHJcblxyXG4vKipcclxuICogVHJhbnNmb3JtIHRoZSBkYXRhIGZvciBhIHJlcXVlc3Qgb3IgYSByZXNwb25zZVxyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdHxTdHJpbmd9IGRhdGEgVGhlIGRhdGEgdG8gYmUgdHJhbnNmb3JtZWRcclxuICogQHBhcmFtIHtBcnJheX0gaGVhZGVycyBUaGUgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3Qgb3IgcmVzcG9uc2VcclxuICogQHBhcmFtIHtBcnJheXxGdW5jdGlvbn0gZm5zIEEgc2luZ2xlIGZ1bmN0aW9uIG9yIEFycmF5IG9mIGZ1bmN0aW9uc1xyXG4gKiBAcmV0dXJucyB7Kn0gVGhlIHJlc3VsdGluZyB0cmFuc2Zvcm1lZCBkYXRhXHJcbiAqL1xyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRyYW5zZm9ybURhdGEoZGF0YSwgaGVhZGVycywgZm5zKSB7XHJcbiAgdmFyIGNvbnRleHQgPSB0aGlzIHx8IGRlZmF1bHRzO1xyXG4gIC8qZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOjAqL1xyXG4gIHV0aWxzLmZvckVhY2goZm5zLCBmdW5jdGlvbiB0cmFuc2Zvcm0oZm4pIHtcclxuICAgIGRhdGEgPSBmbi5jYWxsKGNvbnRleHQsIGRhdGEsIGhlYWRlcnMpO1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gZGF0YTtcclxufTtcclxuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcclxudmFyIG5vcm1hbGl6ZUhlYWRlck5hbWUgPSByZXF1aXJlKCcuLi9oZWxwZXJzL25vcm1hbGl6ZUhlYWRlck5hbWUnKTtcclxudmFyIGVuaGFuY2VFcnJvciA9IHJlcXVpcmUoJy4uL2NvcmUvZW5oYW5jZUVycm9yJyk7XHJcbnZhciB0cmFuc2l0aW9uYWxEZWZhdWx0cyA9IHJlcXVpcmUoJy4vdHJhbnNpdGlvbmFsJyk7XHJcblxyXG52YXIgREVGQVVMVF9DT05URU5UX1RZUEUgPSB7XHJcbiAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXHJcbn07XHJcblxyXG5mdW5jdGlvbiBzZXRDb250ZW50VHlwZUlmVW5zZXQoaGVhZGVycywgdmFsdWUpIHtcclxuICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGhlYWRlcnMpICYmIHV0aWxzLmlzVW5kZWZpbmVkKGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddKSkge1xyXG4gICAgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSB2YWx1ZTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldERlZmF1bHRBZGFwdGVyKCkge1xyXG4gIHZhciBhZGFwdGVyO1xyXG4gIGlmICh0eXBlb2YgWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAvLyBGb3IgYnJvd3NlcnMgdXNlIFhIUiBhZGFwdGVyXHJcbiAgICBhZGFwdGVyID0gcmVxdWlyZSgnLi4vYWRhcHRlcnMveGhyJyk7XHJcbiAgfSBlbHNlIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHByb2Nlc3MpID09PSAnW29iamVjdCBwcm9jZXNzXScpIHtcclxuICAgIC8vIEZvciBub2RlIHVzZSBIVFRQIGFkYXB0ZXJcclxuICAgIGFkYXB0ZXIgPSByZXF1aXJlKCcuLi9hZGFwdGVycy9odHRwJyk7XHJcbiAgfVxyXG4gIHJldHVybiBhZGFwdGVyO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzdHJpbmdpZnlTYWZlbHkocmF3VmFsdWUsIHBhcnNlciwgZW5jb2Rlcikge1xyXG4gIGlmICh1dGlscy5pc1N0cmluZyhyYXdWYWx1ZSkpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIChwYXJzZXIgfHwgSlNPTi5wYXJzZSkocmF3VmFsdWUpO1xyXG4gICAgICByZXR1cm4gdXRpbHMudHJpbShyYXdWYWx1ZSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGlmIChlLm5hbWUgIT09ICdTeW50YXhFcnJvcicpIHtcclxuICAgICAgICB0aHJvdyBlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gKGVuY29kZXIgfHwgSlNPTi5zdHJpbmdpZnkpKHJhd1ZhbHVlKTtcclxufVxyXG5cclxudmFyIGRlZmF1bHRzID0ge1xyXG5cclxuICB0cmFuc2l0aW9uYWw6IHRyYW5zaXRpb25hbERlZmF1bHRzLFxyXG5cclxuICBhZGFwdGVyOiBnZXREZWZhdWx0QWRhcHRlcigpLFxyXG5cclxuICB0cmFuc2Zvcm1SZXF1ZXN0OiBbZnVuY3Rpb24gdHJhbnNmb3JtUmVxdWVzdChkYXRhLCBoZWFkZXJzKSB7XHJcbiAgICBub3JtYWxpemVIZWFkZXJOYW1lKGhlYWRlcnMsICdBY2NlcHQnKTtcclxuICAgIG5vcm1hbGl6ZUhlYWRlck5hbWUoaGVhZGVycywgJ0NvbnRlbnQtVHlwZScpO1xyXG5cclxuICAgIGlmICh1dGlscy5pc0Zvcm1EYXRhKGRhdGEpIHx8XHJcbiAgICAgIHV0aWxzLmlzQXJyYXlCdWZmZXIoZGF0YSkgfHxcclxuICAgICAgdXRpbHMuaXNCdWZmZXIoZGF0YSkgfHxcclxuICAgICAgdXRpbHMuaXNTdHJlYW0oZGF0YSkgfHxcclxuICAgICAgdXRpbHMuaXNGaWxlKGRhdGEpIHx8XHJcbiAgICAgIHV0aWxzLmlzQmxvYihkYXRhKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgfVxyXG4gICAgaWYgKHV0aWxzLmlzQXJyYXlCdWZmZXJWaWV3KGRhdGEpKSB7XHJcbiAgICAgIHJldHVybiBkYXRhLmJ1ZmZlcjtcclxuICAgIH1cclxuICAgIGlmICh1dGlscy5pc1VSTFNlYXJjaFBhcmFtcyhkYXRhKSkge1xyXG4gICAgICBzZXRDb250ZW50VHlwZUlmVW5zZXQoaGVhZGVycywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PXV0Zi04Jyk7XHJcbiAgICAgIHJldHVybiBkYXRhLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodXRpbHMuaXNPYmplY3QoZGF0YSkgfHwgKGhlYWRlcnMgJiYgaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPT09ICdhcHBsaWNhdGlvbi9qc29uJykpIHtcclxuICAgICAgc2V0Q29udGVudFR5cGVJZlVuc2V0KGhlYWRlcnMsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgIHJldHVybiBzdHJpbmdpZnlTYWZlbHkoZGF0YSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0YTtcclxuICB9XSxcclxuXHJcbiAgdHJhbnNmb3JtUmVzcG9uc2U6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXNwb25zZShkYXRhKSB7XHJcbiAgICB2YXIgdHJhbnNpdGlvbmFsID0gdGhpcy50cmFuc2l0aW9uYWwgfHwgZGVmYXVsdHMudHJhbnNpdGlvbmFsO1xyXG4gICAgdmFyIHNpbGVudEpTT05QYXJzaW5nID0gdHJhbnNpdGlvbmFsICYmIHRyYW5zaXRpb25hbC5zaWxlbnRKU09OUGFyc2luZztcclxuICAgIHZhciBmb3JjZWRKU09OUGFyc2luZyA9IHRyYW5zaXRpb25hbCAmJiB0cmFuc2l0aW9uYWwuZm9yY2VkSlNPTlBhcnNpbmc7XHJcbiAgICB2YXIgc3RyaWN0SlNPTlBhcnNpbmcgPSAhc2lsZW50SlNPTlBhcnNpbmcgJiYgdGhpcy5yZXNwb25zZVR5cGUgPT09ICdqc29uJztcclxuXHJcbiAgICBpZiAoc3RyaWN0SlNPTlBhcnNpbmcgfHwgKGZvcmNlZEpTT05QYXJzaW5nICYmIHV0aWxzLmlzU3RyaW5nKGRhdGEpICYmIGRhdGEubGVuZ3RoKSkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGRhdGEpO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgaWYgKHN0cmljdEpTT05QYXJzaW5nKSB7XHJcbiAgICAgICAgICBpZiAoZS5uYW1lID09PSAnU3ludGF4RXJyb3InKSB7XHJcbiAgICAgICAgICAgIHRocm93IGVuaGFuY2VFcnJvcihlLCB0aGlzLCAnRV9KU09OX1BBUlNFJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aHJvdyBlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1dLFxyXG5cclxuICAvKipcclxuICAgKiBBIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIHRvIGFib3J0IGEgcmVxdWVzdC4gSWYgc2V0IHRvIDAgKGRlZmF1bHQpIGFcclxuICAgKiB0aW1lb3V0IGlzIG5vdCBjcmVhdGVkLlxyXG4gICAqL1xyXG4gIHRpbWVvdXQ6IDAsXHJcblxyXG4gIHhzcmZDb29raWVOYW1lOiAnWFNSRi1UT0tFTicsXHJcbiAgeHNyZkhlYWRlck5hbWU6ICdYLVhTUkYtVE9LRU4nLFxyXG5cclxuICBtYXhDb250ZW50TGVuZ3RoOiAtMSxcclxuICBtYXhCb2R5TGVuZ3RoOiAtMSxcclxuXHJcbiAgdmFsaWRhdGVTdGF0dXM6IGZ1bmN0aW9uIHZhbGlkYXRlU3RhdHVzKHN0YXR1cykge1xyXG4gICAgcmV0dXJuIHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwO1xyXG4gIH0sXHJcblxyXG4gIGhlYWRlcnM6IHtcclxuICAgIGNvbW1vbjoge1xyXG4gICAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKidcclxuICAgIH1cclxuICB9XHJcbn07XHJcblxyXG51dGlscy5mb3JFYWNoKFsnZGVsZXRlJywgJ2dldCcsICdoZWFkJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2ROb0RhdGEobWV0aG9kKSB7XHJcbiAgZGVmYXVsdHMuaGVhZGVyc1ttZXRob2RdID0ge307XHJcbn0pO1xyXG5cclxudXRpbHMuZm9yRWFjaChbJ3Bvc3QnLCAncHV0JywgJ3BhdGNoJ10sIGZ1bmN0aW9uIGZvckVhY2hNZXRob2RXaXRoRGF0YShtZXRob2QpIHtcclxuICBkZWZhdWx0cy5oZWFkZXJzW21ldGhvZF0gPSB1dGlscy5tZXJnZShERUZBVUxUX0NPTlRFTlRfVFlQRSk7XHJcbn0pO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBkZWZhdWx0cztcclxuIiwiZXhwb3J0cy5uZXh0VGljayA9IGZ1bmN0aW9uIG5leHRUaWNrKGZuKSB7XG4gICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgIGFyZ3Muc2hpZnQoKTtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfSwgMCk7XG59O1xuXG5leHBvcnRzLnBsYXRmb3JtID0gZXhwb3J0cy5hcmNoID0gXG5leHBvcnRzLmV4ZWNQYXRoID0gZXhwb3J0cy50aXRsZSA9ICdicm93c2VyJztcbmV4cG9ydHMucGlkID0gMTtcbmV4cG9ydHMuYnJvd3NlciA9IHRydWU7XG5leHBvcnRzLmVudiA9IHt9O1xuZXhwb3J0cy5hcmd2ID0gW107XG5cbmV4cG9ydHMuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG5cdHRocm93IG5ldyBFcnJvcignTm8gc3VjaCBtb2R1bGUuIChQb3NzaWJseSBub3QgeWV0IGxvYWRlZCknKVxufTtcblxuKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgY3dkID0gJy8nO1xuICAgIHZhciBwYXRoO1xuICAgIGV4cG9ydHMuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gY3dkIH07XG4gICAgZXhwb3J0cy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgICAgICAgaWYgKCFwYXRoKSBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuICAgICAgICBjd2QgPSBwYXRoLnJlc29sdmUoZGlyLCBjd2QpO1xuICAgIH07XG59KSgpO1xuXG5leHBvcnRzLmV4aXQgPSBleHBvcnRzLmtpbGwgPSBcbmV4cG9ydHMudW1hc2sgPSBleHBvcnRzLmRsb3BlbiA9IFxuZXhwb3J0cy51cHRpbWUgPSBleHBvcnRzLm1lbW9yeVVzYWdlID0gXG5leHBvcnRzLnV2Q291bnRlcnMgPSBmdW5jdGlvbigpIHt9O1xuZXhwb3J0cy5mZWF0dXJlcyA9IHt9O1xuIiwiLy8gLmRpcm5hbWUsIC5iYXNlbmFtZSwgYW5kIC5leHRuYW1lIG1ldGhvZHMgYXJlIGV4dHJhY3RlZCBmcm9tIE5vZGUuanMgdjguMTEuMSxcbi8vIGJhY2twb3J0ZWQgYW5kIHRyYW5zcGxpdGVkIHdpdGggQmFiZWwsIHdpdGggYmFja3dhcmRzLWNvbXBhdCBmaXhlc1xuXG4vLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gcmVzb2x2ZXMgLiBhbmQgLi4gZWxlbWVudHMgaW4gYSBwYXRoIGFycmF5IHdpdGggZGlyZWN0b3J5IG5hbWVzIHRoZXJlXG4vLyBtdXN0IGJlIG5vIHNsYXNoZXMsIGVtcHR5IGVsZW1lbnRzLCBvciBkZXZpY2UgbmFtZXMgKGM6XFwpIGluIHRoZSBhcnJheVxuLy8gKHNvIGFsc28gbm8gbGVhZGluZyBhbmQgdHJhaWxpbmcgc2xhc2hlcyAtIGl0IGRvZXMgbm90IGRpc3Rpbmd1aXNoXG4vLyByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgcGF0aHMpXG5mdW5jdGlvbiBub3JtYWxpemVBcnJheShwYXJ0cywgYWxsb3dBYm92ZVJvb3QpIHtcbiAgLy8gaWYgdGhlIHBhdGggdHJpZXMgdG8gZ28gYWJvdmUgdGhlIHJvb3QsIGB1cGAgZW5kcyB1cCA+IDBcbiAgdmFyIHVwID0gMDtcbiAgZm9yICh2YXIgaSA9IHBhcnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGxhc3QgPSBwYXJ0c1tpXTtcbiAgICBpZiAobGFzdCA9PT0gJy4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgfSBlbHNlIGlmIChsYXN0ID09PSAnLi4nKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgICB1cCsrO1xuICAgIH0gZWxzZSBpZiAodXApIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICAgIHVwLS07XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIHBhdGggaXMgYWxsb3dlZCB0byBnbyBhYm92ZSB0aGUgcm9vdCwgcmVzdG9yZSBsZWFkaW5nIC4uc1xuICBpZiAoYWxsb3dBYm92ZVJvb3QpIHtcbiAgICBmb3IgKDsgdXAtLTsgdXApIHtcbiAgICAgIHBhcnRzLnVuc2hpZnQoJy4uJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhcnRzO1xufVxuXG4vLyBwYXRoLnJlc29sdmUoW2Zyb20gLi4uXSwgdG8pXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLnJlc29sdmUgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHJlc29sdmVkUGF0aCA9ICcnLFxuICAgICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IGZhbHNlO1xuXG4gIGZvciAodmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSA+PSAtMSAmJiAhcmVzb2x2ZWRBYnNvbHV0ZTsgaS0tKSB7XG4gICAgdmFyIHBhdGggPSAoaSA+PSAwKSA/IGFyZ3VtZW50c1tpXSA6IHByb2Nlc3MuY3dkKCk7XG5cbiAgICAvLyBTa2lwIGVtcHR5IGFuZCBpbnZhbGlkIGVudHJpZXNcbiAgICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgdG8gcGF0aC5yZXNvbHZlIG11c3QgYmUgc3RyaW5ncycpO1xuICAgIH0gZWxzZSBpZiAoIXBhdGgpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHJlc29sdmVkUGF0aCA9IHBhdGggKyAnLycgKyByZXNvbHZlZFBhdGg7XG4gICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IHBhdGguY2hhckF0KDApID09PSAnLyc7XG4gIH1cblxuICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCwgYnV0XG4gIC8vIGhhbmRsZSByZWxhdGl2ZSBwYXRocyB0byBiZSBzYWZlIChtaWdodCBoYXBwZW4gd2hlbiBwcm9jZXNzLmN3ZCgpIGZhaWxzKVxuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgcGF0aFxuICByZXNvbHZlZFBhdGggPSBub3JtYWxpemVBcnJheShmaWx0ZXIocmVzb2x2ZWRQYXRoLnNwbGl0KCcvJyksIGZ1bmN0aW9uKHApIHtcbiAgICByZXR1cm4gISFwO1xuICB9KSwgIXJlc29sdmVkQWJzb2x1dGUpLmpvaW4oJy8nKTtcblxuICByZXR1cm4gKChyZXNvbHZlZEFic29sdXRlID8gJy8nIDogJycpICsgcmVzb2x2ZWRQYXRoKSB8fCAnLic7XG59O1xuXG4vLyBwYXRoLm5vcm1hbGl6ZShwYXRoKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5ub3JtYWxpemUgPSBmdW5jdGlvbihwYXRoKSB7XG4gIHZhciBpc0Fic29sdXRlID0gZXhwb3J0cy5pc0Fic29sdXRlKHBhdGgpLFxuICAgICAgdHJhaWxpbmdTbGFzaCA9IHN1YnN0cihwYXRoLCAtMSkgPT09ICcvJztcblxuICAvLyBOb3JtYWxpemUgdGhlIHBhdGhcbiAgcGF0aCA9IG5vcm1hbGl6ZUFycmF5KGZpbHRlcihwYXRoLnNwbGl0KCcvJyksIGZ1bmN0aW9uKHApIHtcbiAgICByZXR1cm4gISFwO1xuICB9KSwgIWlzQWJzb2x1dGUpLmpvaW4oJy8nKTtcblxuICBpZiAoIXBhdGggJiYgIWlzQWJzb2x1dGUpIHtcbiAgICBwYXRoID0gJy4nO1xuICB9XG4gIGlmIChwYXRoICYmIHRyYWlsaW5nU2xhc2gpIHtcbiAgICBwYXRoICs9ICcvJztcbiAgfVxuXG4gIHJldHVybiAoaXNBYnNvbHV0ZSA/ICcvJyA6ICcnKSArIHBhdGg7XG59O1xuXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLmlzQWJzb2x1dGUgPSBmdW5jdGlvbihwYXRoKSB7XG4gIHJldHVybiBwYXRoLmNoYXJBdCgwKSA9PT0gJy8nO1xufTtcblxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5qb2luID0gZnVuY3Rpb24oKSB7XG4gIHZhciBwYXRocyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG4gIHJldHVybiBleHBvcnRzLm5vcm1hbGl6ZShmaWx0ZXIocGF0aHMsIGZ1bmN0aW9uKHAsIGluZGV4KSB7XG4gICAgaWYgKHR5cGVvZiBwICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIHRvIHBhdGguam9pbiBtdXN0IGJlIHN0cmluZ3MnKTtcbiAgICB9XG4gICAgcmV0dXJuIHA7XG4gIH0pLmpvaW4oJy8nKSk7XG59O1xuXG5cbi8vIHBhdGgucmVsYXRpdmUoZnJvbSwgdG8pXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLnJlbGF0aXZlID0gZnVuY3Rpb24oZnJvbSwgdG8pIHtcbiAgZnJvbSA9IGV4cG9ydHMucmVzb2x2ZShmcm9tKS5zdWJzdHIoMSk7XG4gIHRvID0gZXhwb3J0cy5yZXNvbHZlKHRvKS5zdWJzdHIoMSk7XG5cbiAgZnVuY3Rpb24gdHJpbShhcnIpIHtcbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIGZvciAoOyBzdGFydCA8IGFyci5sZW5ndGg7IHN0YXJ0KyspIHtcbiAgICAgIGlmIChhcnJbc3RhcnRdICE9PSAnJykgYnJlYWs7XG4gICAgfVxuXG4gICAgdmFyIGVuZCA9IGFyci5sZW5ndGggLSAxO1xuICAgIGZvciAoOyBlbmQgPj0gMDsgZW5kLS0pIHtcbiAgICAgIGlmIChhcnJbZW5kXSAhPT0gJycpIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChzdGFydCA+IGVuZCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBhcnIuc2xpY2Uoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7XG4gIH1cblxuICB2YXIgZnJvbVBhcnRzID0gdHJpbShmcm9tLnNwbGl0KCcvJykpO1xuICB2YXIgdG9QYXJ0cyA9IHRyaW0odG8uc3BsaXQoJy8nKSk7XG5cbiAgdmFyIGxlbmd0aCA9IE1hdGgubWluKGZyb21QYXJ0cy5sZW5ndGgsIHRvUGFydHMubGVuZ3RoKTtcbiAgdmFyIHNhbWVQYXJ0c0xlbmd0aCA9IGxlbmd0aDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGlmIChmcm9tUGFydHNbaV0gIT09IHRvUGFydHNbaV0pIHtcbiAgICAgIHNhbWVQYXJ0c0xlbmd0aCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB2YXIgb3V0cHV0UGFydHMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IHNhbWVQYXJ0c0xlbmd0aDsgaSA8IGZyb21QYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIG91dHB1dFBhcnRzLnB1c2goJy4uJyk7XG4gIH1cblxuICBvdXRwdXRQYXJ0cyA9IG91dHB1dFBhcnRzLmNvbmNhdCh0b1BhcnRzLnNsaWNlKHNhbWVQYXJ0c0xlbmd0aCkpO1xuXG4gIHJldHVybiBvdXRwdXRQYXJ0cy5qb2luKCcvJyk7XG59O1xuXG5leHBvcnRzLnNlcCA9ICcvJztcbmV4cG9ydHMuZGVsaW1pdGVyID0gJzonO1xuXG5leHBvcnRzLmRpcm5hbWUgPSBmdW5jdGlvbiAocGF0aCkge1xuICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSBwYXRoID0gcGF0aCArICcnO1xuICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiAnLic7XG4gIHZhciBjb2RlID0gcGF0aC5jaGFyQ29kZUF0KDApO1xuICB2YXIgaGFzUm9vdCA9IGNvZGUgPT09IDQ3IC8qLyovO1xuICB2YXIgZW5kID0gLTE7XG4gIHZhciBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICBmb3IgKHZhciBpID0gcGF0aC5sZW5ndGggLSAxOyBpID49IDE7IC0taSkge1xuICAgIGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGNvZGUgPT09IDQ3IC8qLyovKSB7XG4gICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgICAgZW5kID0gaTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yXG4gICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpZiAoZW5kID09PSAtMSkgcmV0dXJuIGhhc1Jvb3QgPyAnLycgOiAnLic7XG4gIGlmIChoYXNSb290ICYmIGVuZCA9PT0gMSkge1xuICAgIC8vIHJldHVybiAnLy8nO1xuICAgIC8vIEJhY2t3YXJkcy1jb21wYXQgZml4OlxuICAgIHJldHVybiAnLyc7XG4gIH1cbiAgcmV0dXJuIHBhdGguc2xpY2UoMCwgZW5kKTtcbn07XG5cbmZ1bmN0aW9uIGJhc2VuYW1lKHBhdGgpIHtcbiAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykgcGF0aCA9IHBhdGggKyAnJztcblxuICB2YXIgc3RhcnQgPSAwO1xuICB2YXIgZW5kID0gLTE7XG4gIHZhciBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICB2YXIgaTtcblxuICBmb3IgKGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgaWYgKHBhdGguY2hhckNvZGVBdChpKSA9PT0gNDcgLyovKi8pIHtcbiAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgICAgc3RhcnQgPSBpICsgMTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAvLyBwYXRoIGNvbXBvbmVudFxuICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICBlbmQgPSBpICsgMTtcbiAgICB9XG4gIH1cblxuICBpZiAoZW5kID09PSAtMSkgcmV0dXJuICcnO1xuICByZXR1cm4gcGF0aC5zbGljZShzdGFydCwgZW5kKTtcbn1cblxuLy8gVXNlcyBhIG1peGVkIGFwcHJvYWNoIGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSwgYXMgZXh0IGJlaGF2aW9yIGNoYW5nZWRcbi8vIGluIG5ldyBOb2RlLmpzIHZlcnNpb25zLCBzbyBvbmx5IGJhc2VuYW1lKCkgYWJvdmUgaXMgYmFja3BvcnRlZCBoZXJlXG5leHBvcnRzLmJhc2VuYW1lID0gZnVuY3Rpb24gKHBhdGgsIGV4dCkge1xuICB2YXIgZiA9IGJhc2VuYW1lKHBhdGgpO1xuICBpZiAoZXh0ICYmIGYuc3Vic3RyKC0xICogZXh0Lmxlbmd0aCkgPT09IGV4dCkge1xuICAgIGYgPSBmLnN1YnN0cigwLCBmLmxlbmd0aCAtIGV4dC5sZW5ndGgpO1xuICB9XG4gIHJldHVybiBmO1xufTtcblxuZXhwb3J0cy5leHRuYW1lID0gZnVuY3Rpb24gKHBhdGgpIHtcbiAgaWYgKHR5cGVvZiBwYXRoICE9PSAnc3RyaW5nJykgcGF0aCA9IHBhdGggKyAnJztcbiAgdmFyIHN0YXJ0RG90ID0gLTE7XG4gIHZhciBzdGFydFBhcnQgPSAwO1xuICB2YXIgZW5kID0gLTE7XG4gIHZhciBtYXRjaGVkU2xhc2ggPSB0cnVlO1xuICAvLyBUcmFjayB0aGUgc3RhdGUgb2YgY2hhcmFjdGVycyAoaWYgYW55KSB3ZSBzZWUgYmVmb3JlIG91ciBmaXJzdCBkb3QgYW5kXG4gIC8vIGFmdGVyIGFueSBwYXRoIHNlcGFyYXRvciB3ZSBmaW5kXG4gIHZhciBwcmVEb3RTdGF0ZSA9IDA7XG4gIGZvciAodmFyIGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgdmFyIGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGNvZGUgPT09IDQ3IC8qLyovKSB7XG4gICAgICAgIC8vIElmIHdlIHJlYWNoZWQgYSBwYXRoIHNlcGFyYXRvciB0aGF0IHdhcyBub3QgcGFydCBvZiBhIHNldCBvZiBwYXRoXG4gICAgICAgIC8vIHNlcGFyYXRvcnMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLCBzdG9wIG5vd1xuICAgICAgICBpZiAoIW1hdGNoZWRTbGFzaCkge1xuICAgICAgICAgIHN0YXJ0UGFydCA9IGkgKyAxO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIGlmIChlbmQgPT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgdGhlIGZpcnN0IG5vbi1wYXRoIHNlcGFyYXRvciwgbWFyayB0aGlzIGFzIHRoZSBlbmQgb2Ygb3VyXG4gICAgICAvLyBleHRlbnNpb25cbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgICAgZW5kID0gaSArIDE7XG4gICAgfVxuICAgIGlmIChjb2RlID09PSA0NiAvKi4qLykge1xuICAgICAgICAvLyBJZiB0aGlzIGlzIG91ciBmaXJzdCBkb3QsIG1hcmsgaXQgYXMgdGhlIHN0YXJ0IG9mIG91ciBleHRlbnNpb25cbiAgICAgICAgaWYgKHN0YXJ0RG90ID09PSAtMSlcbiAgICAgICAgICBzdGFydERvdCA9IGk7XG4gICAgICAgIGVsc2UgaWYgKHByZURvdFN0YXRlICE9PSAxKVxuICAgICAgICAgIHByZURvdFN0YXRlID0gMTtcbiAgICB9IGVsc2UgaWYgKHN0YXJ0RG90ICE9PSAtMSkge1xuICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBhbmQgbm9uLXBhdGggc2VwYXJhdG9yIGJlZm9yZSBvdXIgZG90LCBzbyB3ZSBzaG91bGRcbiAgICAgIC8vIGhhdmUgYSBnb29kIGNoYW5jZSBhdCBoYXZpbmcgYSBub24tZW1wdHkgZXh0ZW5zaW9uXG4gICAgICBwcmVEb3RTdGF0ZSA9IC0xO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzdGFydERvdCA9PT0gLTEgfHwgZW5kID09PSAtMSB8fFxuICAgICAgLy8gV2Ugc2F3IGEgbm9uLWRvdCBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBkb3RcbiAgICAgIHByZURvdFN0YXRlID09PSAwIHx8XG4gICAgICAvLyBUaGUgKHJpZ2h0LW1vc3QpIHRyaW1tZWQgcGF0aCBjb21wb25lbnQgaXMgZXhhY3RseSAnLi4nXG4gICAgICBwcmVEb3RTdGF0ZSA9PT0gMSAmJiBzdGFydERvdCA9PT0gZW5kIC0gMSAmJiBzdGFydERvdCA9PT0gc3RhcnRQYXJ0ICsgMSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICByZXR1cm4gcGF0aC5zbGljZShzdGFydERvdCwgZW5kKTtcbn07XG5cbmZ1bmN0aW9uIGZpbHRlciAoeHMsIGYpIHtcbiAgICBpZiAoeHMuZmlsdGVyKSByZXR1cm4geHMuZmlsdGVyKGYpO1xuICAgIHZhciByZXMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChmKHhzW2ldLCBpLCB4cykpIHJlcy5wdXNoKHhzW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuLy8gU3RyaW5nLnByb3RvdHlwZS5zdWJzdHIgLSBuZWdhdGl2ZSBpbmRleCBkb24ndCB3b3JrIGluIElFOFxudmFyIHN1YnN0ciA9ICdhYicuc3Vic3RyKC0xKSA9PT0gJ2InXG4gICAgPyBmdW5jdGlvbiAoc3RyLCBzdGFydCwgbGVuKSB7IHJldHVybiBzdHIuc3Vic3RyKHN0YXJ0LCBsZW4pIH1cbiAgICA6IGZ1bmN0aW9uIChzdHIsIHN0YXJ0LCBsZW4pIHtcbiAgICAgICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSBzdHIubGVuZ3RoICsgc3RhcnQ7XG4gICAgICAgIHJldHVybiBzdHIuc3Vic3RyKHN0YXJ0LCBsZW4pO1xuICAgIH1cbjtcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlck5hbWUoaGVhZGVycywgbm9ybWFsaXplZE5hbWUpIHtcclxuICB1dGlscy5mb3JFYWNoKGhlYWRlcnMsIGZ1bmN0aW9uIHByb2Nlc3NIZWFkZXIodmFsdWUsIG5hbWUpIHtcclxuICAgIGlmIChuYW1lICE9PSBub3JtYWxpemVkTmFtZSAmJiBuYW1lLnRvVXBwZXJDYXNlKCkgPT09IG5vcm1hbGl6ZWROYW1lLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgaGVhZGVyc1tub3JtYWxpemVkTmFtZV0gPSB2YWx1ZTtcclxuICAgICAgZGVsZXRlIGhlYWRlcnNbbmFtZV07XHJcbiAgICB9XHJcbiAgfSk7XHJcbn07XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbi8qKlxyXG4gKiBVcGRhdGUgYW4gRXJyb3Igd2l0aCB0aGUgc3BlY2lmaWVkIGNvbmZpZywgZXJyb3IgY29kZSwgYW5kIHJlc3BvbnNlLlxyXG4gKlxyXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJvciBUaGUgZXJyb3IgdG8gdXBkYXRlLlxyXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29kZV0gVGhlIGVycm9yIGNvZGUgKGZvciBleGFtcGxlLCAnRUNPTk5BQk9SVEVEJykuXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVxdWVzdF0gVGhlIHJlcXVlc3QuXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVzcG9uc2VdIFRoZSByZXNwb25zZS5cclxuICogQHJldHVybnMge0Vycm9yfSBUaGUgZXJyb3IuXHJcbiAqL1xyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGVuaGFuY2VFcnJvcihlcnJvciwgY29uZmlnLCBjb2RlLCByZXF1ZXN0LCByZXNwb25zZSkge1xyXG4gIGVycm9yLmNvbmZpZyA9IGNvbmZpZztcclxuICBpZiAoY29kZSkge1xyXG4gICAgZXJyb3IuY29kZSA9IGNvZGU7XHJcbiAgfVxyXG5cclxuICBlcnJvci5yZXF1ZXN0ID0gcmVxdWVzdDtcclxuICBlcnJvci5yZXNwb25zZSA9IHJlc3BvbnNlO1xyXG4gIGVycm9yLmlzQXhpb3NFcnJvciA9IHRydWU7XHJcblxyXG4gIGVycm9yLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTigpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIC8vIFN0YW5kYXJkXHJcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcclxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxyXG4gICAgICAvLyBNaWNyb3NvZnRcclxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXHJcbiAgICAgIG51bWJlcjogdGhpcy5udW1iZXIsXHJcbiAgICAgIC8vIE1vemlsbGFcclxuICAgICAgZmlsZU5hbWU6IHRoaXMuZmlsZU5hbWUsXHJcbiAgICAgIGxpbmVOdW1iZXI6IHRoaXMubGluZU51bWJlcixcclxuICAgICAgY29sdW1uTnVtYmVyOiB0aGlzLmNvbHVtbk51bWJlcixcclxuICAgICAgc3RhY2s6IHRoaXMuc3RhY2ssXHJcbiAgICAgIC8vIEF4aW9zXHJcbiAgICAgIGNvbmZpZzogdGhpcy5jb25maWcsXHJcbiAgICAgIGNvZGU6IHRoaXMuY29kZSxcclxuICAgICAgc3RhdHVzOiB0aGlzLnJlc3BvbnNlICYmIHRoaXMucmVzcG9uc2Uuc3RhdHVzID8gdGhpcy5yZXNwb25zZS5zdGF0dXMgOiBudWxsXHJcbiAgICB9O1xyXG4gIH07XHJcbiAgcmV0dXJuIGVycm9yO1xyXG59O1xyXG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHtcclxuICBzaWxlbnRKU09OUGFyc2luZzogdHJ1ZSxcclxuICBmb3JjZWRKU09OUGFyc2luZzogdHJ1ZSxcclxuICBjbGFyaWZ5VGltZW91dEVycm9yOiBmYWxzZVxyXG59O1xyXG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XHJcbnZhciBzZXR0bGUgPSByZXF1aXJlKCcuLy4uL2NvcmUvc2V0dGxlJyk7XHJcbnZhciBjb29raWVzID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2Nvb2tpZXMnKTtcclxudmFyIGJ1aWxkVVJMID0gcmVxdWlyZSgnLi8uLi9oZWxwZXJzL2J1aWxkVVJMJyk7XHJcbnZhciBidWlsZEZ1bGxQYXRoID0gcmVxdWlyZSgnLi4vY29yZS9idWlsZEZ1bGxQYXRoJyk7XHJcbnZhciBwYXJzZUhlYWRlcnMgPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvcGFyc2VIZWFkZXJzJyk7XHJcbnZhciBpc1VSTFNhbWVPcmlnaW4gPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvaXNVUkxTYW1lT3JpZ2luJyk7XHJcbnZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJy4uL2NvcmUvY3JlYXRlRXJyb3InKTtcclxudmFyIHRyYW5zaXRpb25hbERlZmF1bHRzID0gcmVxdWlyZSgnLi4vZGVmYXVsdHMvdHJhbnNpdGlvbmFsJyk7XHJcbnZhciBDYW5jZWwgPSByZXF1aXJlKCcuLi9jYW5jZWwvQ2FuY2VsJyk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHhockFkYXB0ZXIoY29uZmlnKSB7XHJcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIGRpc3BhdGNoWGhyUmVxdWVzdChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgIHZhciByZXF1ZXN0RGF0YSA9IGNvbmZpZy5kYXRhO1xyXG4gICAgdmFyIHJlcXVlc3RIZWFkZXJzID0gY29uZmlnLmhlYWRlcnM7XHJcbiAgICB2YXIgcmVzcG9uc2VUeXBlID0gY29uZmlnLnJlc3BvbnNlVHlwZTtcclxuICAgIHZhciBvbkNhbmNlbGVkO1xyXG4gICAgZnVuY3Rpb24gZG9uZSgpIHtcclxuICAgICAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbikge1xyXG4gICAgICAgIGNvbmZpZy5jYW5jZWxUb2tlbi51bnN1YnNjcmliZShvbkNhbmNlbGVkKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGNvbmZpZy5zaWduYWwpIHtcclxuICAgICAgICBjb25maWcuc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25DYW5jZWxlZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAodXRpbHMuaXNGb3JtRGF0YShyZXF1ZXN0RGF0YSkpIHtcclxuICAgICAgZGVsZXRlIHJlcXVlc3RIZWFkZXJzWydDb250ZW50LVR5cGUnXTsgLy8gTGV0IHRoZSBicm93c2VyIHNldCBpdFxyXG4gICAgfVxyXG5cclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XHJcblxyXG4gICAgLy8gSFRUUCBiYXNpYyBhdXRoZW50aWNhdGlvblxyXG4gICAgaWYgKGNvbmZpZy5hdXRoKSB7XHJcbiAgICAgIHZhciB1c2VybmFtZSA9IGNvbmZpZy5hdXRoLnVzZXJuYW1lIHx8ICcnO1xyXG4gICAgICB2YXIgcGFzc3dvcmQgPSBjb25maWcuYXV0aC5wYXNzd29yZCA/IHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChjb25maWcuYXV0aC5wYXNzd29yZCkpIDogJyc7XHJcbiAgICAgIHJlcXVlc3RIZWFkZXJzLkF1dGhvcml6YXRpb24gPSAnQmFzaWMgJyArIGJ0b2EodXNlcm5hbWUgKyAnOicgKyBwYXNzd29yZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGZ1bGxQYXRoID0gYnVpbGRGdWxsUGF0aChjb25maWcuYmFzZVVSTCwgY29uZmlnLnVybCk7XHJcbiAgICByZXF1ZXN0Lm9wZW4oY29uZmlnLm1ldGhvZC50b1VwcGVyQ2FzZSgpLCBidWlsZFVSTChmdWxsUGF0aCwgY29uZmlnLnBhcmFtcywgY29uZmlnLnBhcmFtc1NlcmlhbGl6ZXIpLCB0cnVlKTtcclxuXHJcbiAgICAvLyBTZXQgdGhlIHJlcXVlc3QgdGltZW91dCBpbiBNU1xyXG4gICAgcmVxdWVzdC50aW1lb3V0ID0gY29uZmlnLnRpbWVvdXQ7XHJcblxyXG4gICAgZnVuY3Rpb24gb25sb2FkZW5kKCkge1xyXG4gICAgICBpZiAoIXJlcXVlc3QpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgLy8gUHJlcGFyZSB0aGUgcmVzcG9uc2VcclxuICAgICAgdmFyIHJlc3BvbnNlSGVhZGVycyA9ICdnZXRBbGxSZXNwb25zZUhlYWRlcnMnIGluIHJlcXVlc3QgPyBwYXJzZUhlYWRlcnMocmVxdWVzdC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkgOiBudWxsO1xyXG4gICAgICB2YXIgcmVzcG9uc2VEYXRhID0gIXJlc3BvbnNlVHlwZSB8fCByZXNwb25zZVR5cGUgPT09ICd0ZXh0JyB8fCAgcmVzcG9uc2VUeXBlID09PSAnanNvbicgP1xyXG4gICAgICAgIHJlcXVlc3QucmVzcG9uc2VUZXh0IDogcmVxdWVzdC5yZXNwb25zZTtcclxuICAgICAgdmFyIHJlc3BvbnNlID0ge1xyXG4gICAgICAgIGRhdGE6IHJlc3BvbnNlRGF0YSxcclxuICAgICAgICBzdGF0dXM6IHJlcXVlc3Quc3RhdHVzLFxyXG4gICAgICAgIHN0YXR1c1RleHQ6IHJlcXVlc3Quc3RhdHVzVGV4dCxcclxuICAgICAgICBoZWFkZXJzOiByZXNwb25zZUhlYWRlcnMsXHJcbiAgICAgICAgY29uZmlnOiBjb25maWcsXHJcbiAgICAgICAgcmVxdWVzdDogcmVxdWVzdFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgc2V0dGxlKGZ1bmN0aW9uIF9yZXNvbHZlKHZhbHVlKSB7XHJcbiAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XHJcbiAgICAgICAgZG9uZSgpO1xyXG4gICAgICB9LCBmdW5jdGlvbiBfcmVqZWN0KGVycikge1xyXG4gICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgIGRvbmUoKTtcclxuICAgICAgfSwgcmVzcG9uc2UpO1xyXG5cclxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxyXG4gICAgICByZXF1ZXN0ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoJ29ubG9hZGVuZCcgaW4gcmVxdWVzdCkge1xyXG4gICAgICAvLyBVc2Ugb25sb2FkZW5kIGlmIGF2YWlsYWJsZVxyXG4gICAgICByZXF1ZXN0Lm9ubG9hZGVuZCA9IG9ubG9hZGVuZDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIExpc3RlbiBmb3IgcmVhZHkgc3RhdGUgdG8gZW11bGF0ZSBvbmxvYWRlbmRcclxuICAgICAgcmVxdWVzdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiBoYW5kbGVMb2FkKCkge1xyXG4gICAgICAgIGlmICghcmVxdWVzdCB8fCByZXF1ZXN0LnJlYWR5U3RhdGUgIT09IDQpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFRoZSByZXF1ZXN0IGVycm9yZWQgb3V0IGFuZCB3ZSBkaWRuJ3QgZ2V0IGEgcmVzcG9uc2UsIHRoaXMgd2lsbCBiZVxyXG4gICAgICAgIC8vIGhhbmRsZWQgYnkgb25lcnJvciBpbnN0ZWFkXHJcbiAgICAgICAgLy8gV2l0aCBvbmUgZXhjZXB0aW9uOiByZXF1ZXN0IHRoYXQgdXNpbmcgZmlsZTogcHJvdG9jb2wsIG1vc3QgYnJvd3NlcnNcclxuICAgICAgICAvLyB3aWxsIHJldHVybiBzdGF0dXMgYXMgMCBldmVuIHRob3VnaCBpdCdzIGEgc3VjY2Vzc2Z1bCByZXF1ZXN0XHJcbiAgICAgICAgaWYgKHJlcXVlc3Quc3RhdHVzID09PSAwICYmICEocmVxdWVzdC5yZXNwb25zZVVSTCAmJiByZXF1ZXN0LnJlc3BvbnNlVVJMLmluZGV4T2YoJ2ZpbGU6JykgPT09IDApKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHJlYWR5c3RhdGUgaGFuZGxlciBpcyBjYWxsaW5nIGJlZm9yZSBvbmVycm9yIG9yIG9udGltZW91dCBoYW5kbGVycyxcclxuICAgICAgICAvLyBzbyB3ZSBzaG91bGQgY2FsbCBvbmxvYWRlbmQgb24gdGhlIG5leHQgJ3RpY2snXHJcbiAgICAgICAgc2V0VGltZW91dChvbmxvYWRlbmQpO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhhbmRsZSBicm93c2VyIHJlcXVlc3QgY2FuY2VsbGF0aW9uIChhcyBvcHBvc2VkIHRvIGEgbWFudWFsIGNhbmNlbGxhdGlvbilcclxuICAgIHJlcXVlc3Qub25hYm9ydCA9IGZ1bmN0aW9uIGhhbmRsZUFib3J0KCkge1xyXG4gICAgICBpZiAoIXJlcXVlc3QpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcignUmVxdWVzdCBhYm9ydGVkJywgY29uZmlnLCAnRUNPTk5BQk9SVEVEJywgcmVxdWVzdCkpO1xyXG5cclxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxyXG4gICAgICByZXF1ZXN0ID0gbnVsbDtcclxuICAgIH07XHJcblxyXG4gICAgLy8gSGFuZGxlIGxvdyBsZXZlbCBuZXR3b3JrIGVycm9yc1xyXG4gICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24gaGFuZGxlRXJyb3IoKSB7XHJcbiAgICAgIC8vIFJlYWwgZXJyb3JzIGFyZSBoaWRkZW4gZnJvbSB1cyBieSB0aGUgYnJvd3NlclxyXG4gICAgICAvLyBvbmVycm9yIHNob3VsZCBvbmx5IGZpcmUgaWYgaXQncyBhIG5ldHdvcmsgZXJyb3JcclxuICAgICAgcmVqZWN0KGNyZWF0ZUVycm9yKCdOZXR3b3JrIEVycm9yJywgY29uZmlnLCBudWxsLCByZXF1ZXN0KSk7XHJcblxyXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XHJcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBIYW5kbGUgdGltZW91dFxyXG4gICAgcmVxdWVzdC5vbnRpbWVvdXQgPSBmdW5jdGlvbiBoYW5kbGVUaW1lb3V0KCkge1xyXG4gICAgICB2YXIgdGltZW91dEVycm9yTWVzc2FnZSA9IGNvbmZpZy50aW1lb3V0ID8gJ3RpbWVvdXQgb2YgJyArIGNvbmZpZy50aW1lb3V0ICsgJ21zIGV4Y2VlZGVkJyA6ICd0aW1lb3V0IGV4Y2VlZGVkJztcclxuICAgICAgdmFyIHRyYW5zaXRpb25hbCA9IGNvbmZpZy50cmFuc2l0aW9uYWwgfHwgdHJhbnNpdGlvbmFsRGVmYXVsdHM7XHJcbiAgICAgIGlmIChjb25maWcudGltZW91dEVycm9yTWVzc2FnZSkge1xyXG4gICAgICAgIHRpbWVvdXRFcnJvck1lc3NhZ2UgPSBjb25maWcudGltZW91dEVycm9yTWVzc2FnZTtcclxuICAgICAgfVxyXG4gICAgICByZWplY3QoY3JlYXRlRXJyb3IoXHJcbiAgICAgICAgdGltZW91dEVycm9yTWVzc2FnZSxcclxuICAgICAgICBjb25maWcsXHJcbiAgICAgICAgdHJhbnNpdGlvbmFsLmNsYXJpZnlUaW1lb3V0RXJyb3IgPyAnRVRJTUVET1VUJyA6ICdFQ09OTkFCT1JURUQnLFxyXG4gICAgICAgIHJlcXVlc3QpKTtcclxuXHJcbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcclxuICAgICAgcmVxdWVzdCA9IG51bGw7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIEFkZCB4c3JmIGhlYWRlclxyXG4gICAgLy8gVGhpcyBpcyBvbmx5IGRvbmUgaWYgcnVubmluZyBpbiBhIHN0YW5kYXJkIGJyb3dzZXIgZW52aXJvbm1lbnQuXHJcbiAgICAvLyBTcGVjaWZpY2FsbHkgbm90IGlmIHdlJ3JlIGluIGEgd2ViIHdvcmtlciwgb3IgcmVhY3QtbmF0aXZlLlxyXG4gICAgaWYgKHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkpIHtcclxuICAgICAgLy8gQWRkIHhzcmYgaGVhZGVyXHJcbiAgICAgIHZhciB4c3JmVmFsdWUgPSAoY29uZmlnLndpdGhDcmVkZW50aWFscyB8fCBpc1VSTFNhbWVPcmlnaW4oZnVsbFBhdGgpKSAmJiBjb25maWcueHNyZkNvb2tpZU5hbWUgP1xyXG4gICAgICAgIGNvb2tpZXMucmVhZChjb25maWcueHNyZkNvb2tpZU5hbWUpIDpcclxuICAgICAgICB1bmRlZmluZWQ7XHJcblxyXG4gICAgICBpZiAoeHNyZlZhbHVlKSB7XHJcbiAgICAgICAgcmVxdWVzdEhlYWRlcnNbY29uZmlnLnhzcmZIZWFkZXJOYW1lXSA9IHhzcmZWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIEFkZCBoZWFkZXJzIHRvIHRoZSByZXF1ZXN0XHJcbiAgICBpZiAoJ3NldFJlcXVlc3RIZWFkZXInIGluIHJlcXVlc3QpIHtcclxuICAgICAgdXRpbHMuZm9yRWFjaChyZXF1ZXN0SGVhZGVycywgZnVuY3Rpb24gc2V0UmVxdWVzdEhlYWRlcih2YWwsIGtleSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgcmVxdWVzdERhdGEgPT09ICd1bmRlZmluZWQnICYmIGtleS50b0xvd2VyQ2FzZSgpID09PSAnY29udGVudC10eXBlJykge1xyXG4gICAgICAgICAgLy8gUmVtb3ZlIENvbnRlbnQtVHlwZSBpZiBkYXRhIGlzIHVuZGVmaW5lZFxyXG4gICAgICAgICAgZGVsZXRlIHJlcXVlc3RIZWFkZXJzW2tleV07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIE90aGVyd2lzZSBhZGQgaGVhZGVyIHRvIHRoZSByZXF1ZXN0XHJcbiAgICAgICAgICByZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoa2V5LCB2YWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQWRkIHdpdGhDcmVkZW50aWFscyB0byByZXF1ZXN0IGlmIG5lZWRlZFxyXG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcud2l0aENyZWRlbnRpYWxzKSkge1xyXG4gICAgICByZXF1ZXN0LndpdGhDcmVkZW50aWFscyA9ICEhY29uZmlnLndpdGhDcmVkZW50aWFscztcclxuICAgIH1cclxuXHJcbiAgICAvLyBBZGQgcmVzcG9uc2VUeXBlIHRvIHJlcXVlc3QgaWYgbmVlZGVkXHJcbiAgICBpZiAocmVzcG9uc2VUeXBlICYmIHJlc3BvbnNlVHlwZSAhPT0gJ2pzb24nKSB7XHJcbiAgICAgIHJlcXVlc3QucmVzcG9uc2VUeXBlID0gY29uZmlnLnJlc3BvbnNlVHlwZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBIYW5kbGUgcHJvZ3Jlc3MgaWYgbmVlZGVkXHJcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5vbkRvd25sb2FkUHJvZ3Jlc3MgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgcmVxdWVzdC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIGNvbmZpZy5vbkRvd25sb2FkUHJvZ3Jlc3MpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE5vdCBhbGwgYnJvd3NlcnMgc3VwcG9ydCB1cGxvYWQgZXZlbnRzXHJcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5vblVwbG9hZFByb2dyZXNzID09PSAnZnVuY3Rpb24nICYmIHJlcXVlc3QudXBsb2FkKSB7XHJcbiAgICAgIHJlcXVlc3QudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgY29uZmlnLm9uVXBsb2FkUHJvZ3Jlc3MpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjb25maWcuY2FuY2VsVG9rZW4gfHwgY29uZmlnLnNpZ25hbCkge1xyXG4gICAgICAvLyBIYW5kbGUgY2FuY2VsbGF0aW9uXHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXHJcbiAgICAgIG9uQ2FuY2VsZWQgPSBmdW5jdGlvbihjYW5jZWwpIHtcclxuICAgICAgICBpZiAoIXJlcXVlc3QpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVqZWN0KCFjYW5jZWwgfHwgKGNhbmNlbCAmJiBjYW5jZWwudHlwZSkgPyBuZXcgQ2FuY2VsKCdjYW5jZWxlZCcpIDogY2FuY2VsKTtcclxuICAgICAgICByZXF1ZXN0LmFib3J0KCk7XHJcbiAgICAgICAgcmVxdWVzdCA9IG51bGw7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25maWcuY2FuY2VsVG9rZW4gJiYgY29uZmlnLmNhbmNlbFRva2VuLnN1YnNjcmliZShvbkNhbmNlbGVkKTtcclxuICAgICAgaWYgKGNvbmZpZy5zaWduYWwpIHtcclxuICAgICAgICBjb25maWcuc2lnbmFsLmFib3J0ZWQgPyBvbkNhbmNlbGVkKCkgOiBjb25maWcuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0Jywgb25DYW5jZWxlZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXJlcXVlc3REYXRhKSB7XHJcbiAgICAgIHJlcXVlc3REYXRhID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTZW5kIHRoZSByZXF1ZXN0XHJcbiAgICByZXF1ZXN0LnNlbmQocmVxdWVzdERhdGEpO1xyXG4gIH0pO1xyXG59O1xyXG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG52YXIgY3JlYXRlRXJyb3IgPSByZXF1aXJlKCcuL2NyZWF0ZUVycm9yJyk7XHJcblxyXG4vKipcclxuICogUmVzb2x2ZSBvciByZWplY3QgYSBQcm9taXNlIGJhc2VkIG9uIHJlc3BvbnNlIHN0YXR1cy5cclxuICpcclxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVzb2x2ZSBBIGZ1bmN0aW9uIHRoYXQgcmVzb2x2ZXMgdGhlIHByb21pc2UuXHJcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlamVjdCBBIGZ1bmN0aW9uIHRoYXQgcmVqZWN0cyB0aGUgcHJvbWlzZS5cclxuICogQHBhcmFtIHtvYmplY3R9IHJlc3BvbnNlIFRoZSByZXNwb25zZS5cclxuICovXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgcmVzcG9uc2UpIHtcclxuICB2YXIgdmFsaWRhdGVTdGF0dXMgPSByZXNwb25zZS5jb25maWcudmFsaWRhdGVTdGF0dXM7XHJcbiAgaWYgKCFyZXNwb25zZS5zdGF0dXMgfHwgIXZhbGlkYXRlU3RhdHVzIHx8IHZhbGlkYXRlU3RhdHVzKHJlc3BvbnNlLnN0YXR1cykpIHtcclxuICAgIHJlc29sdmUocmVzcG9uc2UpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZWplY3QoY3JlYXRlRXJyb3IoXHJcbiAgICAgICdSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICcgKyByZXNwb25zZS5zdGF0dXMsXHJcbiAgICAgIHJlc3BvbnNlLmNvbmZpZyxcclxuICAgICAgbnVsbCxcclxuICAgICAgcmVzcG9uc2UucmVxdWVzdCxcclxuICAgICAgcmVzcG9uc2VcclxuICAgICkpO1xyXG4gIH1cclxufTtcclxuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxudmFyIGVuaGFuY2VFcnJvciA9IHJlcXVpcmUoJy4vZW5oYW5jZUVycm9yJyk7XHJcblxyXG4vKipcclxuICogQ3JlYXRlIGFuIEVycm9yIHdpdGggdGhlIHNwZWNpZmllZCBtZXNzYWdlLCBjb25maWcsIGVycm9yIGNvZGUsIHJlcXVlc3QgYW5kIHJlc3BvbnNlLlxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cclxuICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBUaGUgY29uZmlnLlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvZGVdIFRoZSBlcnJvciBjb2RlIChmb3IgZXhhbXBsZSwgJ0VDT05OQUJPUlRFRCcpLlxyXG4gKiBAcGFyYW0ge09iamVjdH0gW3JlcXVlc3RdIFRoZSByZXF1ZXN0LlxyXG4gKiBAcGFyYW0ge09iamVjdH0gW3Jlc3BvbnNlXSBUaGUgcmVzcG9uc2UuXHJcbiAqIEByZXR1cm5zIHtFcnJvcn0gVGhlIGNyZWF0ZWQgZXJyb3IuXHJcbiAqL1xyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZUVycm9yKG1lc3NhZ2UsIGNvbmZpZywgY29kZSwgcmVxdWVzdCwgcmVzcG9uc2UpIHtcclxuICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgcmV0dXJuIGVuaGFuY2VFcnJvcihlcnJvciwgY29uZmlnLCBjb2RlLCByZXF1ZXN0LCByZXNwb25zZSk7XHJcbn07XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gKFxyXG4gIHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkgP1xyXG5cclxuICAvLyBTdGFuZGFyZCBicm93c2VyIGVudnMgc3VwcG9ydCBkb2N1bWVudC5jb29raWVcclxuICAgIChmdW5jdGlvbiBzdGFuZGFyZEJyb3dzZXJFbnYoKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgd3JpdGU6IGZ1bmN0aW9uIHdyaXRlKG5hbWUsIHZhbHVlLCBleHBpcmVzLCBwYXRoLCBkb21haW4sIHNlY3VyZSkge1xyXG4gICAgICAgICAgdmFyIGNvb2tpZSA9IFtdO1xyXG4gICAgICAgICAgY29va2llLnB1c2gobmFtZSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpO1xyXG5cclxuICAgICAgICAgIGlmICh1dGlscy5pc051bWJlcihleHBpcmVzKSkge1xyXG4gICAgICAgICAgICBjb29raWUucHVzaCgnZXhwaXJlcz0nICsgbmV3IERhdGUoZXhwaXJlcykudG9HTVRTdHJpbmcoKSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHV0aWxzLmlzU3RyaW5nKHBhdGgpKSB7XHJcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdwYXRoPScgKyBwYXRoKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodXRpbHMuaXNTdHJpbmcoZG9tYWluKSkge1xyXG4gICAgICAgICAgICBjb29raWUucHVzaCgnZG9tYWluPScgKyBkb21haW4pO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChzZWN1cmUgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgY29va2llLnB1c2goJ3NlY3VyZScpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZS5qb2luKCc7ICcpO1xyXG4gICAgICAgIH0sXHJcblxyXG4gICAgICAgIHJlYWQ6IGZ1bmN0aW9uIHJlYWQobmFtZSkge1xyXG4gICAgICAgICAgdmFyIG1hdGNoID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoJyhefDtcXFxccyopKCcgKyBuYW1lICsgJyk9KFteO10qKScpKTtcclxuICAgICAgICAgIHJldHVybiAobWF0Y2ggPyBkZWNvZGVVUklDb21wb25lbnQobWF0Y2hbM10pIDogbnVsbCk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUobmFtZSkge1xyXG4gICAgICAgICAgdGhpcy53cml0ZShuYW1lLCAnJywgRGF0ZS5ub3coKSAtIDg2NDAwMDAwKTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9KSgpIDpcclxuXHJcbiAgLy8gTm9uIHN0YW5kYXJkIGJyb3dzZXIgZW52ICh3ZWIgd29ya2VycywgcmVhY3QtbmF0aXZlKSBsYWNrIG5lZWRlZCBzdXBwb3J0LlxyXG4gICAgKGZ1bmN0aW9uIG5vblN0YW5kYXJkQnJvd3NlckVudigpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICB3cml0ZTogZnVuY3Rpb24gd3JpdGUoKSB7fSxcclxuICAgICAgICByZWFkOiBmdW5jdGlvbiByZWFkKCkgeyByZXR1cm4gbnVsbDsgfSxcclxuICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XHJcbiAgICAgIH07XHJcbiAgICB9KSgpXHJcbik7XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbnZhciBpc0Fic29sdXRlVVJMID0gcmVxdWlyZSgnLi4vaGVscGVycy9pc0Fic29sdXRlVVJMJyk7XHJcbnZhciBjb21iaW5lVVJMcyA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvY29tYmluZVVSTHMnKTtcclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgbmV3IFVSTCBieSBjb21iaW5pbmcgdGhlIGJhc2VVUkwgd2l0aCB0aGUgcmVxdWVzdGVkVVJMLFxyXG4gKiBvbmx5IHdoZW4gdGhlIHJlcXVlc3RlZFVSTCBpcyBub3QgYWxyZWFkeSBhbiBhYnNvbHV0ZSBVUkwuXHJcbiAqIElmIHRoZSByZXF1ZXN0VVJMIGlzIGFic29sdXRlLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlcXVlc3RlZFVSTCB1bnRvdWNoZWQuXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxyXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVxdWVzdGVkVVJMIEFic29sdXRlIG9yIHJlbGF0aXZlIFVSTCB0byBjb21iaW5lXHJcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBmdWxsIHBhdGhcclxuICovXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYnVpbGRGdWxsUGF0aChiYXNlVVJMLCByZXF1ZXN0ZWRVUkwpIHtcclxuICBpZiAoYmFzZVVSTCAmJiAhaXNBYnNvbHV0ZVVSTChyZXF1ZXN0ZWRVUkwpKSB7XHJcbiAgICByZXR1cm4gY29tYmluZVVSTHMoYmFzZVVSTCwgcmVxdWVzdGVkVVJMKTtcclxuICB9XHJcbiAgcmV0dXJuIHJlcXVlc3RlZFVSTDtcclxufTtcclxuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxuLyoqXHJcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIFVSTCBpcyBhYnNvbHV0ZVxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBVUkwgdG8gdGVzdFxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIFVSTCBpcyBhYnNvbHV0ZSwgb3RoZXJ3aXNlIGZhbHNlXHJcbiAqL1xyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQWJzb2x1dGVVUkwodXJsKSB7XHJcbiAgLy8gQSBVUkwgaXMgY29uc2lkZXJlZCBhYnNvbHV0ZSBpZiBpdCBiZWdpbnMgd2l0aCBcIjxzY2hlbWU+Oi8vXCIgb3IgXCIvL1wiIChwcm90b2NvbC1yZWxhdGl2ZSBVUkwpLlxyXG4gIC8vIFJGQyAzOTg2IGRlZmluZXMgc2NoZW1lIG5hbWUgYXMgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIGJlZ2lubmluZyB3aXRoIGEgbGV0dGVyIGFuZCBmb2xsb3dlZFxyXG4gIC8vIGJ5IGFueSBjb21iaW5hdGlvbiBvZiBsZXR0ZXJzLCBkaWdpdHMsIHBsdXMsIHBlcmlvZCwgb3IgaHlwaGVuLlxyXG4gIHJldHVybiAvXihbYS16XVthLXpcXGQrXFwtLl0qOik/XFwvXFwvL2kudGVzdCh1cmwpO1xyXG59O1xyXG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG4vKipcclxuICogQ3JlYXRlcyBhIG5ldyBVUkwgYnkgY29tYmluaW5nIHRoZSBzcGVjaWZpZWQgVVJMc1xyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZVVSTCBUaGUgYmFzZSBVUkxcclxuICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aXZlVVJMIFRoZSByZWxhdGl2ZSBVUkxcclxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbWJpbmVkIFVSTFxyXG4gKi9cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjb21iaW5lVVJMcyhiYXNlVVJMLCByZWxhdGl2ZVVSTCkge1xyXG4gIHJldHVybiByZWxhdGl2ZVVSTFxyXG4gICAgPyBiYXNlVVJMLnJlcGxhY2UoL1xcLyskLywgJycpICsgJy8nICsgcmVsYXRpdmVVUkwucmVwbGFjZSgvXlxcLysvLCAnJylcclxuICAgIDogYmFzZVVSTDtcclxufTtcclxuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xyXG5cclxuLy8gSGVhZGVycyB3aG9zZSBkdXBsaWNhdGVzIGFyZSBpZ25vcmVkIGJ5IG5vZGVcclxuLy8gYy5mLiBodHRwczovL25vZGVqcy5vcmcvYXBpL2h0dHAuaHRtbCNodHRwX21lc3NhZ2VfaGVhZGVyc1xyXG52YXIgaWdub3JlRHVwbGljYXRlT2YgPSBbXHJcbiAgJ2FnZScsICdhdXRob3JpemF0aW9uJywgJ2NvbnRlbnQtbGVuZ3RoJywgJ2NvbnRlbnQtdHlwZScsICdldGFnJyxcclxuICAnZXhwaXJlcycsICdmcm9tJywgJ2hvc3QnLCAnaWYtbW9kaWZpZWQtc2luY2UnLCAnaWYtdW5tb2RpZmllZC1zaW5jZScsXHJcbiAgJ2xhc3QtbW9kaWZpZWQnLCAnbG9jYXRpb24nLCAnbWF4LWZvcndhcmRzJywgJ3Byb3h5LWF1dGhvcml6YXRpb24nLFxyXG4gICdyZWZlcmVyJywgJ3JldHJ5LWFmdGVyJywgJ3VzZXItYWdlbnQnXHJcbl07XHJcblxyXG4vKipcclxuICogUGFyc2UgaGVhZGVycyBpbnRvIGFuIG9iamVjdFxyXG4gKlxyXG4gKiBgYGBcclxuICogRGF0ZTogV2VkLCAyNyBBdWcgMjAxNCAwODo1ODo0OSBHTVRcclxuICogQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXHJcbiAqIENvbm5lY3Rpb246IGtlZXAtYWxpdmVcclxuICogVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuICogYGBgXHJcbiAqXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBoZWFkZXJzIEhlYWRlcnMgbmVlZGluZyB0byBiZSBwYXJzZWRcclxuICogQHJldHVybnMge09iamVjdH0gSGVhZGVycyBwYXJzZWQgaW50byBhbiBvYmplY3RcclxuICovXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcGFyc2VIZWFkZXJzKGhlYWRlcnMpIHtcclxuICB2YXIgcGFyc2VkID0ge307XHJcbiAgdmFyIGtleTtcclxuICB2YXIgdmFsO1xyXG4gIHZhciBpO1xyXG5cclxuICBpZiAoIWhlYWRlcnMpIHsgcmV0dXJuIHBhcnNlZDsgfVxyXG5cclxuICB1dGlscy5mb3JFYWNoKGhlYWRlcnMuc3BsaXQoJ1xcbicpLCBmdW5jdGlvbiBwYXJzZXIobGluZSkge1xyXG4gICAgaSA9IGxpbmUuaW5kZXhPZignOicpO1xyXG4gICAga2V5ID0gdXRpbHMudHJpbShsaW5lLnN1YnN0cigwLCBpKSkudG9Mb3dlckNhc2UoKTtcclxuICAgIHZhbCA9IHV0aWxzLnRyaW0obGluZS5zdWJzdHIoaSArIDEpKTtcclxuXHJcbiAgICBpZiAoa2V5KSB7XHJcbiAgICAgIGlmIChwYXJzZWRba2V5XSAmJiBpZ25vcmVEdXBsaWNhdGVPZi5pbmRleE9mKGtleSkgPj0gMCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoa2V5ID09PSAnc2V0LWNvb2tpZScpIHtcclxuICAgICAgICBwYXJzZWRba2V5XSA9IChwYXJzZWRba2V5XSA/IHBhcnNlZFtrZXldIDogW10pLmNvbmNhdChbdmFsXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFyc2VkW2tleV0gPSBwYXJzZWRba2V5XSA/IHBhcnNlZFtrZXldICsgJywgJyArIHZhbCA6IHZhbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gcGFyc2VkO1xyXG59O1xyXG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IChcclxuICB1dGlscy5pc1N0YW5kYXJkQnJvd3NlckVudigpID9cclxuXHJcbiAgLy8gU3RhbmRhcmQgYnJvd3NlciBlbnZzIGhhdmUgZnVsbCBzdXBwb3J0IG9mIHRoZSBBUElzIG5lZWRlZCB0byB0ZXN0XHJcbiAgLy8gd2hldGhlciB0aGUgcmVxdWVzdCBVUkwgaXMgb2YgdGhlIHNhbWUgb3JpZ2luIGFzIGN1cnJlbnQgbG9jYXRpb24uXHJcbiAgICAoZnVuY3Rpb24gc3RhbmRhcmRCcm93c2VyRW52KCkge1xyXG4gICAgICB2YXIgbXNpZSA9IC8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XHJcbiAgICAgIHZhciB1cmxQYXJzaW5nTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgdmFyIG9yaWdpblVSTDtcclxuXHJcbiAgICAgIC8qKlxyXG4gICAgKiBQYXJzZSBhIFVSTCB0byBkaXNjb3ZlciBpdCdzIGNvbXBvbmVudHNcclxuICAgICpcclxuICAgICogQHBhcmFtIHtTdHJpbmd9IHVybCBUaGUgVVJMIHRvIGJlIHBhcnNlZFxyXG4gICAgKiBAcmV0dXJucyB7T2JqZWN0fVxyXG4gICAgKi9cclxuICAgICAgZnVuY3Rpb24gcmVzb2x2ZVVSTCh1cmwpIHtcclxuICAgICAgICB2YXIgaHJlZiA9IHVybDtcclxuXHJcbiAgICAgICAgaWYgKG1zaWUpIHtcclxuICAgICAgICAvLyBJRSBuZWVkcyBhdHRyaWJ1dGUgc2V0IHR3aWNlIHRvIG5vcm1hbGl6ZSBwcm9wZXJ0aWVzXHJcbiAgICAgICAgICB1cmxQYXJzaW5nTm9kZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmKTtcclxuICAgICAgICAgIGhyZWYgPSB1cmxQYXJzaW5nTm9kZS5ocmVmO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdXJsUGFyc2luZ05vZGUuc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZik7XHJcblxyXG4gICAgICAgIC8vIHVybFBhcnNpbmdOb2RlIHByb3ZpZGVzIHRoZSBVcmxVdGlscyBpbnRlcmZhY2UgLSBodHRwOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jdXJsdXRpbHNcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgaHJlZjogdXJsUGFyc2luZ05vZGUuaHJlZixcclxuICAgICAgICAgIHByb3RvY29sOiB1cmxQYXJzaW5nTm9kZS5wcm90b2NvbCA/IHVybFBhcnNpbmdOb2RlLnByb3RvY29sLnJlcGxhY2UoLzokLywgJycpIDogJycsXHJcbiAgICAgICAgICBob3N0OiB1cmxQYXJzaW5nTm9kZS5ob3N0LFxyXG4gICAgICAgICAgc2VhcmNoOiB1cmxQYXJzaW5nTm9kZS5zZWFyY2ggPyB1cmxQYXJzaW5nTm9kZS5zZWFyY2gucmVwbGFjZSgvXlxcPy8sICcnKSA6ICcnLFxyXG4gICAgICAgICAgaGFzaDogdXJsUGFyc2luZ05vZGUuaGFzaCA/IHVybFBhcnNpbmdOb2RlLmhhc2gucmVwbGFjZSgvXiMvLCAnJykgOiAnJyxcclxuICAgICAgICAgIGhvc3RuYW1lOiB1cmxQYXJzaW5nTm9kZS5ob3N0bmFtZSxcclxuICAgICAgICAgIHBvcnQ6IHVybFBhcnNpbmdOb2RlLnBvcnQsXHJcbiAgICAgICAgICBwYXRobmFtZTogKHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lLmNoYXJBdCgwKSA9PT0gJy8nKSA/XHJcbiAgICAgICAgICAgIHVybFBhcnNpbmdOb2RlLnBhdGhuYW1lIDpcclxuICAgICAgICAgICAgJy8nICsgdXJsUGFyc2luZ05vZGUucGF0aG5hbWVcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBvcmlnaW5VUkwgPSByZXNvbHZlVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcclxuXHJcbiAgICAgIC8qKlxyXG4gICAgKiBEZXRlcm1pbmUgaWYgYSBVUkwgc2hhcmVzIHRoZSBzYW1lIG9yaWdpbiBhcyB0aGUgY3VycmVudCBsb2NhdGlvblxyXG4gICAgKlxyXG4gICAgKiBAcGFyYW0ge1N0cmluZ30gcmVxdWVzdFVSTCBUaGUgVVJMIHRvIHRlc3RcclxuICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgVVJMIHNoYXJlcyB0aGUgc2FtZSBvcmlnaW4sIG90aGVyd2lzZSBmYWxzZVxyXG4gICAgKi9cclxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIGlzVVJMU2FtZU9yaWdpbihyZXF1ZXN0VVJMKSB7XHJcbiAgICAgICAgdmFyIHBhcnNlZCA9ICh1dGlscy5pc1N0cmluZyhyZXF1ZXN0VVJMKSkgPyByZXNvbHZlVVJMKHJlcXVlc3RVUkwpIDogcmVxdWVzdFVSTDtcclxuICAgICAgICByZXR1cm4gKHBhcnNlZC5wcm90b2NvbCA9PT0gb3JpZ2luVVJMLnByb3RvY29sICYmXHJcbiAgICAgICAgICAgIHBhcnNlZC5ob3N0ID09PSBvcmlnaW5VUkwuaG9zdCk7XHJcbiAgICAgIH07XHJcbiAgICB9KSgpIDpcclxuXHJcbiAgLy8gTm9uIHN0YW5kYXJkIGJyb3dzZXIgZW52cyAod2ViIHdvcmtlcnMsIHJlYWN0LW5hdGl2ZSkgbGFjayBuZWVkZWQgc3VwcG9ydC5cclxuICAgIChmdW5jdGlvbiBub25TdGFuZGFyZEJyb3dzZXJFbnYoKSB7XHJcbiAgICAgIHJldHVybiBmdW5jdGlvbiBpc1VSTFNhbWVPcmlnaW4oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH07XHJcbiAgICB9KSgpXHJcbik7XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbi8qKlxyXG4gKiBBIGBDYW5jZWxgIGlzIGFuIG9iamVjdCB0aGF0IGlzIHRocm93biB3aGVuIGFuIG9wZXJhdGlvbiBpcyBjYW5jZWxlZC5cclxuICpcclxuICogQGNsYXNzXHJcbiAqIEBwYXJhbSB7c3RyaW5nPX0gbWVzc2FnZSBUaGUgbWVzc2FnZS5cclxuICovXHJcbmZ1bmN0aW9uIENhbmNlbChtZXNzYWdlKSB7XHJcbiAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcclxufVxyXG5cclxuQ2FuY2VsLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xyXG4gIHJldHVybiAnQ2FuY2VsJyArICh0aGlzLm1lc3NhZ2UgPyAnOiAnICsgdGhpcy5tZXNzYWdlIDogJycpO1xyXG59O1xyXG5cclxuQ2FuY2VsLnByb3RvdHlwZS5fX0NBTkNFTF9fID0gdHJ1ZTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gQ2FuY2VsO1xyXG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQ2FuY2VsKHZhbHVlKSB7XHJcbiAgcmV0dXJuICEhKHZhbHVlICYmIHZhbHVlLl9fQ0FOQ0VMX18pO1xyXG59O1xyXG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xyXG5cclxuLyoqXHJcbiAqIENvbmZpZy1zcGVjaWZpYyBtZXJnZS1mdW5jdGlvbiB3aGljaCBjcmVhdGVzIGEgbmV3IGNvbmZpZy1vYmplY3RcclxuICogYnkgbWVyZ2luZyB0d28gY29uZmlndXJhdGlvbiBvYmplY3RzIHRvZ2V0aGVyLlxyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnMVxyXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnMlxyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBOZXcgb2JqZWN0IHJlc3VsdGluZyBmcm9tIG1lcmdpbmcgY29uZmlnMiB0byBjb25maWcxXHJcbiAqL1xyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG1lcmdlQ29uZmlnKGNvbmZpZzEsIGNvbmZpZzIpIHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cclxuICBjb25maWcyID0gY29uZmlnMiB8fCB7fTtcclxuICB2YXIgY29uZmlnID0ge307XHJcblxyXG4gIGZ1bmN0aW9uIGdldE1lcmdlZFZhbHVlKHRhcmdldCwgc291cmNlKSB7XHJcbiAgICBpZiAodXRpbHMuaXNQbGFpbk9iamVjdCh0YXJnZXQpICYmIHV0aWxzLmlzUGxhaW5PYmplY3Qoc291cmNlKSkge1xyXG4gICAgICByZXR1cm4gdXRpbHMubWVyZ2UodGFyZ2V0LCBzb3VyY2UpO1xyXG4gICAgfSBlbHNlIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KHNvdXJjZSkpIHtcclxuICAgICAgcmV0dXJuIHV0aWxzLm1lcmdlKHt9LCBzb3VyY2UpO1xyXG4gICAgfSBlbHNlIGlmICh1dGlscy5pc0FycmF5KHNvdXJjZSkpIHtcclxuICAgICAgcmV0dXJuIHNvdXJjZS5zbGljZSgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHNvdXJjZTtcclxuICB9XHJcblxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxyXG4gIGZ1bmN0aW9uIG1lcmdlRGVlcFByb3BlcnRpZXMocHJvcCkge1xyXG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcyW3Byb3BdKSkge1xyXG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUoY29uZmlnMVtwcm9wXSwgY29uZmlnMltwcm9wXSk7XHJcbiAgICB9IGVsc2UgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcxW3Byb3BdKSkge1xyXG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcxW3Byb3BdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxyXG4gIGZ1bmN0aW9uIHZhbHVlRnJvbUNvbmZpZzIocHJvcCkge1xyXG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcyW3Byb3BdKSkge1xyXG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcyW3Byb3BdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxyXG4gIGZ1bmN0aW9uIGRlZmF1bHRUb0NvbmZpZzIocHJvcCkge1xyXG4gICAgaWYgKCF1dGlscy5pc1VuZGVmaW5lZChjb25maWcyW3Byb3BdKSkge1xyXG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcyW3Byb3BdKTtcclxuICAgIH0gZWxzZSBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzFbcHJvcF0pKSB7XHJcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzFbcHJvcF0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXHJcbiAgZnVuY3Rpb24gbWVyZ2VEaXJlY3RLZXlzKHByb3ApIHtcclxuICAgIGlmIChwcm9wIGluIGNvbmZpZzIpIHtcclxuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKGNvbmZpZzFbcHJvcF0sIGNvbmZpZzJbcHJvcF0pO1xyXG4gICAgfSBlbHNlIGlmIChwcm9wIGluIGNvbmZpZzEpIHtcclxuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMVtwcm9wXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YXIgbWVyZ2VNYXAgPSB7XHJcbiAgICAndXJsJzogdmFsdWVGcm9tQ29uZmlnMixcclxuICAgICdtZXRob2QnOiB2YWx1ZUZyb21Db25maWcyLFxyXG4gICAgJ2RhdGEnOiB2YWx1ZUZyb21Db25maWcyLFxyXG4gICAgJ2Jhc2VVUkwnOiBkZWZhdWx0VG9Db25maWcyLFxyXG4gICAgJ3RyYW5zZm9ybVJlcXVlc3QnOiBkZWZhdWx0VG9Db25maWcyLFxyXG4gICAgJ3RyYW5zZm9ybVJlc3BvbnNlJzogZGVmYXVsdFRvQ29uZmlnMixcclxuICAgICdwYXJhbXNTZXJpYWxpemVyJzogZGVmYXVsdFRvQ29uZmlnMixcclxuICAgICd0aW1lb3V0JzogZGVmYXVsdFRvQ29uZmlnMixcclxuICAgICd0aW1lb3V0TWVzc2FnZSc6IGRlZmF1bHRUb0NvbmZpZzIsXHJcbiAgICAnd2l0aENyZWRlbnRpYWxzJzogZGVmYXVsdFRvQ29uZmlnMixcclxuICAgICdhZGFwdGVyJzogZGVmYXVsdFRvQ29uZmlnMixcclxuICAgICdyZXNwb25zZVR5cGUnOiBkZWZhdWx0VG9Db25maWcyLFxyXG4gICAgJ3hzcmZDb29raWVOYW1lJzogZGVmYXVsdFRvQ29uZmlnMixcclxuICAgICd4c3JmSGVhZGVyTmFtZSc6IGRlZmF1bHRUb0NvbmZpZzIsXHJcbiAgICAnb25VcGxvYWRQcm9ncmVzcyc6IGRlZmF1bHRUb0NvbmZpZzIsXHJcbiAgICAnb25Eb3dubG9hZFByb2dyZXNzJzogZGVmYXVsdFRvQ29uZmlnMixcclxuICAgICdkZWNvbXByZXNzJzogZGVmYXVsdFRvQ29uZmlnMixcclxuICAgICdtYXhDb250ZW50TGVuZ3RoJzogZGVmYXVsdFRvQ29uZmlnMixcclxuICAgICdtYXhCb2R5TGVuZ3RoJzogZGVmYXVsdFRvQ29uZmlnMixcclxuICAgICd0cmFuc3BvcnQnOiBkZWZhdWx0VG9Db25maWcyLFxyXG4gICAgJ2h0dHBBZ2VudCc6IGRlZmF1bHRUb0NvbmZpZzIsXHJcbiAgICAnaHR0cHNBZ2VudCc6IGRlZmF1bHRUb0NvbmZpZzIsXHJcbiAgICAnY2FuY2VsVG9rZW4nOiBkZWZhdWx0VG9Db25maWcyLFxyXG4gICAgJ3NvY2tldFBhdGgnOiBkZWZhdWx0VG9Db25maWcyLFxyXG4gICAgJ3Jlc3BvbnNlRW5jb2RpbmcnOiBkZWZhdWx0VG9Db25maWcyLFxyXG4gICAgJ3ZhbGlkYXRlU3RhdHVzJzogbWVyZ2VEaXJlY3RLZXlzXHJcbiAgfTtcclxuXHJcbiAgdXRpbHMuZm9yRWFjaChPYmplY3Qua2V5cyhjb25maWcxKS5jb25jYXQoT2JqZWN0LmtleXMoY29uZmlnMikpLCBmdW5jdGlvbiBjb21wdXRlQ29uZmlnVmFsdWUocHJvcCkge1xyXG4gICAgdmFyIG1lcmdlID0gbWVyZ2VNYXBbcHJvcF0gfHwgbWVyZ2VEZWVwUHJvcGVydGllcztcclxuICAgIHZhciBjb25maWdWYWx1ZSA9IG1lcmdlKHByb3ApO1xyXG4gICAgKHV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZ1ZhbHVlKSAmJiBtZXJnZSAhPT0gbWVyZ2VEaXJlY3RLZXlzKSB8fCAoY29uZmlnW3Byb3BdID0gY29uZmlnVmFsdWUpO1xyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gY29uZmlnO1xyXG59O1xyXG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG52YXIgVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2Vudi9kYXRhJykudmVyc2lvbjtcclxuXHJcbnZhciB2YWxpZGF0b3JzID0ge307XHJcblxyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xyXG5bJ29iamVjdCcsICdib29sZWFuJywgJ251bWJlcicsICdmdW5jdGlvbicsICdzdHJpbmcnLCAnc3ltYm9sJ10uZm9yRWFjaChmdW5jdGlvbih0eXBlLCBpKSB7XHJcbiAgdmFsaWRhdG9yc1t0eXBlXSA9IGZ1bmN0aW9uIHZhbGlkYXRvcih0aGluZykge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB0aGluZyA9PT0gdHlwZSB8fCAnYScgKyAoaSA8IDEgPyAnbiAnIDogJyAnKSArIHR5cGU7XHJcbiAgfTtcclxufSk7XHJcblxyXG52YXIgZGVwcmVjYXRlZFdhcm5pbmdzID0ge307XHJcblxyXG4vKipcclxuICogVHJhbnNpdGlvbmFsIG9wdGlvbiB2YWxpZGF0b3JcclxuICogQHBhcmFtIHtmdW5jdGlvbnxib29sZWFuP30gdmFsaWRhdG9yIC0gc2V0IHRvIGZhbHNlIGlmIHRoZSB0cmFuc2l0aW9uYWwgb3B0aW9uIGhhcyBiZWVuIHJlbW92ZWRcclxuICogQHBhcmFtIHtzdHJpbmc/fSB2ZXJzaW9uIC0gZGVwcmVjYXRlZCB2ZXJzaW9uIC8gcmVtb3ZlZCBzaW5jZSB2ZXJzaW9uXHJcbiAqIEBwYXJhbSB7c3RyaW5nP30gbWVzc2FnZSAtIHNvbWUgbWVzc2FnZSB3aXRoIGFkZGl0aW9uYWwgaW5mb1xyXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb259XHJcbiAqL1xyXG52YWxpZGF0b3JzLnRyYW5zaXRpb25hbCA9IGZ1bmN0aW9uIHRyYW5zaXRpb25hbCh2YWxpZGF0b3IsIHZlcnNpb24sIG1lc3NhZ2UpIHtcclxuICBmdW5jdGlvbiBmb3JtYXRNZXNzYWdlKG9wdCwgZGVzYykge1xyXG4gICAgcmV0dXJuICdbQXhpb3MgdicgKyBWRVJTSU9OICsgJ10gVHJhbnNpdGlvbmFsIG9wdGlvbiBcXCcnICsgb3B0ICsgJ1xcJycgKyBkZXNjICsgKG1lc3NhZ2UgPyAnLiAnICsgbWVzc2FnZSA6ICcnKTtcclxuICB9XHJcblxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXHJcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlLCBvcHQsIG9wdHMpIHtcclxuICAgIGlmICh2YWxpZGF0b3IgPT09IGZhbHNlKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihmb3JtYXRNZXNzYWdlKG9wdCwgJyBoYXMgYmVlbiByZW1vdmVkJyArICh2ZXJzaW9uID8gJyBpbiAnICsgdmVyc2lvbiA6ICcnKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh2ZXJzaW9uICYmICFkZXByZWNhdGVkV2FybmluZ3Nbb3B0XSkge1xyXG4gICAgICBkZXByZWNhdGVkV2FybmluZ3Nbb3B0XSA9IHRydWU7XHJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXHJcbiAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICBmb3JtYXRNZXNzYWdlKFxyXG4gICAgICAgICAgb3B0LFxyXG4gICAgICAgICAgJyBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIHYnICsgdmVyc2lvbiArICcgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUnXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB2YWxpZGF0b3IgPyB2YWxpZGF0b3IodmFsdWUsIG9wdCwgb3B0cykgOiB0cnVlO1xyXG4gIH07XHJcbn07XHJcblxyXG4vKipcclxuICogQXNzZXJ0IG9iamVjdCdzIHByb3BlcnRpZXMgdHlwZVxyXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xyXG4gKiBAcGFyYW0ge29iamVjdH0gc2NoZW1hXHJcbiAqIEBwYXJhbSB7Ym9vbGVhbj99IGFsbG93VW5rbm93blxyXG4gKi9cclxuXHJcbmZ1bmN0aW9uIGFzc2VydE9wdGlvbnMob3B0aW9ucywgc2NoZW1hLCBhbGxvd1Vua25vd24pIHtcclxuICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XHJcbiAgfVxyXG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob3B0aW9ucyk7XHJcbiAgdmFyIGkgPSBrZXlzLmxlbmd0aDtcclxuICB3aGlsZSAoaS0tID4gMCkge1xyXG4gICAgdmFyIG9wdCA9IGtleXNbaV07XHJcbiAgICB2YXIgdmFsaWRhdG9yID0gc2NoZW1hW29wdF07XHJcbiAgICBpZiAodmFsaWRhdG9yKSB7XHJcbiAgICAgIHZhciB2YWx1ZSA9IG9wdGlvbnNbb3B0XTtcclxuICAgICAgdmFyIHJlc3VsdCA9IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsaWRhdG9yKHZhbHVlLCBvcHQsIG9wdGlvbnMpO1xyXG4gICAgICBpZiAocmVzdWx0ICE9PSB0cnVlKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9uICcgKyBvcHQgKyAnIG11c3QgYmUgJyArIHJlc3VsdCk7XHJcbiAgICAgIH1cclxuICAgICAgY29udGludWU7XHJcbiAgICB9XHJcbiAgICBpZiAoYWxsb3dVbmtub3duICE9PSB0cnVlKSB7XHJcbiAgICAgIHRocm93IEVycm9yKCdVbmtub3duIG9wdGlvbiAnICsgb3B0KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbm1vZHVsZS5leHBvcnRzID0ge1xyXG4gIGFzc2VydE9wdGlvbnM6IGFzc2VydE9wdGlvbnMsXHJcbiAgdmFsaWRhdG9yczogdmFsaWRhdG9yc1xyXG59O1xyXG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcclxuICBcInZlcnNpb25cIjogXCIwLjI2LjFcIlxyXG59OyIsIid1c2Ugc3RyaWN0JztcclxuXHJcbnZhciBDYW5jZWwgPSByZXF1aXJlKCcuL0NhbmNlbCcpO1xyXG5cclxuLyoqXHJcbiAqIEEgYENhbmNlbFRva2VuYCBpcyBhbiBvYmplY3QgdGhhdCBjYW4gYmUgdXNlZCB0byByZXF1ZXN0IGNhbmNlbGxhdGlvbiBvZiBhbiBvcGVyYXRpb24uXHJcbiAqXHJcbiAqIEBjbGFzc1xyXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBleGVjdXRvciBUaGUgZXhlY3V0b3IgZnVuY3Rpb24uXHJcbiAqL1xyXG5mdW5jdGlvbiBDYW5jZWxUb2tlbihleGVjdXRvcikge1xyXG4gIGlmICh0eXBlb2YgZXhlY3V0b3IgIT09ICdmdW5jdGlvbicpIHtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2V4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4nKTtcclxuICB9XHJcblxyXG4gIHZhciByZXNvbHZlUHJvbWlzZTtcclxuXHJcbiAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gcHJvbWlzZUV4ZWN1dG9yKHJlc29sdmUpIHtcclxuICAgIHJlc29sdmVQcm9taXNlID0gcmVzb2x2ZTtcclxuICB9KTtcclxuXHJcbiAgdmFyIHRva2VuID0gdGhpcztcclxuXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcclxuICB0aGlzLnByb21pc2UudGhlbihmdW5jdGlvbihjYW5jZWwpIHtcclxuICAgIGlmICghdG9rZW4uX2xpc3RlbmVycykgcmV0dXJuO1xyXG5cclxuICAgIHZhciBpO1xyXG4gICAgdmFyIGwgPSB0b2tlbi5fbGlzdGVuZXJzLmxlbmd0aDtcclxuXHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgIHRva2VuLl9saXN0ZW5lcnNbaV0oY2FuY2VsKTtcclxuICAgIH1cclxuICAgIHRva2VuLl9saXN0ZW5lcnMgPSBudWxsO1xyXG4gIH0pO1xyXG5cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xyXG4gIHRoaXMucHJvbWlzZS50aGVuID0gZnVuY3Rpb24ob25mdWxmaWxsZWQpIHtcclxuICAgIHZhciBfcmVzb2x2ZTtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXHJcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUpIHtcclxuICAgICAgdG9rZW4uc3Vic2NyaWJlKHJlc29sdmUpO1xyXG4gICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XHJcbiAgICB9KS50aGVuKG9uZnVsZmlsbGVkKTtcclxuXHJcbiAgICBwcm9taXNlLmNhbmNlbCA9IGZ1bmN0aW9uIHJlamVjdCgpIHtcclxuICAgICAgdG9rZW4udW5zdWJzY3JpYmUoX3Jlc29sdmUpO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gcHJvbWlzZTtcclxuICB9O1xyXG5cclxuICBleGVjdXRvcihmdW5jdGlvbiBjYW5jZWwobWVzc2FnZSkge1xyXG4gICAgaWYgKHRva2VuLnJlYXNvbikge1xyXG4gICAgICAvLyBDYW5jZWxsYXRpb24gaGFzIGFscmVhZHkgYmVlbiByZXF1ZXN0ZWRcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRva2VuLnJlYXNvbiA9IG5ldyBDYW5jZWwobWVzc2FnZSk7XHJcbiAgICByZXNvbHZlUHJvbWlzZSh0b2tlbi5yZWFzb24pO1xyXG4gIH0pO1xyXG59XHJcblxyXG4vKipcclxuICogVGhyb3dzIGEgYENhbmNlbGAgaWYgY2FuY2VsbGF0aW9uIGhhcyBiZWVuIHJlcXVlc3RlZC5cclxuICovXHJcbkNhbmNlbFRva2VuLnByb3RvdHlwZS50aHJvd0lmUmVxdWVzdGVkID0gZnVuY3Rpb24gdGhyb3dJZlJlcXVlc3RlZCgpIHtcclxuICBpZiAodGhpcy5yZWFzb24pIHtcclxuICAgIHRocm93IHRoaXMucmVhc29uO1xyXG4gIH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiBTdWJzY3JpYmUgdG8gdGhlIGNhbmNlbCBzaWduYWxcclxuICovXHJcblxyXG5DYW5jZWxUb2tlbi5wcm90b3R5cGUuc3Vic2NyaWJlID0gZnVuY3Rpb24gc3Vic2NyaWJlKGxpc3RlbmVyKSB7XHJcbiAgaWYgKHRoaXMucmVhc29uKSB7XHJcbiAgICBsaXN0ZW5lcih0aGlzLnJlYXNvbik7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpZiAodGhpcy5fbGlzdGVuZXJzKSB7XHJcbiAgICB0aGlzLl9saXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XHJcbiAgfSBlbHNlIHtcclxuICAgIHRoaXMuX2xpc3RlbmVycyA9IFtsaXN0ZW5lcl07XHJcbiAgfVxyXG59O1xyXG5cclxuLyoqXHJcbiAqIFVuc3Vic2NyaWJlIGZyb20gdGhlIGNhbmNlbCBzaWduYWxcclxuICovXHJcblxyXG5DYW5jZWxUb2tlbi5wcm90b3R5cGUudW5zdWJzY3JpYmUgPSBmdW5jdGlvbiB1bnN1YnNjcmliZShsaXN0ZW5lcikge1xyXG4gIGlmICghdGhpcy5fbGlzdGVuZXJzKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIHZhciBpbmRleCA9IHRoaXMuX2xpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcclxuICBpZiAoaW5kZXggIT09IC0xKSB7XHJcbiAgICB0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcclxuICB9XHJcbn07XHJcblxyXG4vKipcclxuICogUmV0dXJucyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBhIG5ldyBgQ2FuY2VsVG9rZW5gIGFuZCBhIGZ1bmN0aW9uIHRoYXQsIHdoZW4gY2FsbGVkLFxyXG4gKiBjYW5jZWxzIHRoZSBgQ2FuY2VsVG9rZW5gLlxyXG4gKi9cclxuQ2FuY2VsVG9rZW4uc291cmNlID0gZnVuY3Rpb24gc291cmNlKCkge1xyXG4gIHZhciBjYW5jZWw7XHJcbiAgdmFyIHRva2VuID0gbmV3IENhbmNlbFRva2VuKGZ1bmN0aW9uIGV4ZWN1dG9yKGMpIHtcclxuICAgIGNhbmNlbCA9IGM7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHtcclxuICAgIHRva2VuOiB0b2tlbixcclxuICAgIGNhbmNlbDogY2FuY2VsXHJcbiAgfTtcclxufTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gQ2FuY2VsVG9rZW47XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbi8qKlxyXG4gKiBTeW50YWN0aWMgc3VnYXIgZm9yIGludm9raW5nIGEgZnVuY3Rpb24gYW5kIGV4cGFuZGluZyBhbiBhcnJheSBmb3IgYXJndW1lbnRzLlxyXG4gKlxyXG4gKiBDb21tb24gdXNlIGNhc2Ugd291bGQgYmUgdG8gdXNlIGBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHlgLlxyXG4gKlxyXG4gKiAgYGBganNcclxuICogIGZ1bmN0aW9uIGYoeCwgeSwgeikge31cclxuICogIHZhciBhcmdzID0gWzEsIDIsIDNdO1xyXG4gKiAgZi5hcHBseShudWxsLCBhcmdzKTtcclxuICogIGBgYFxyXG4gKlxyXG4gKiBXaXRoIGBzcHJlYWRgIHRoaXMgZXhhbXBsZSBjYW4gYmUgcmUtd3JpdHRlbi5cclxuICpcclxuICogIGBgYGpzXHJcbiAqICBzcHJlYWQoZnVuY3Rpb24oeCwgeSwgeikge30pKFsxLCAyLCAzXSk7XHJcbiAqICBgYGBcclxuICpcclxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tcclxuICogQHJldHVybnMge0Z1bmN0aW9ufVxyXG4gKi9cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzcHJlYWQoY2FsbGJhY2spIHtcclxuICByZXR1cm4gZnVuY3Rpb24gd3JhcChhcnIpIHtcclxuICAgIHJldHVybiBjYWxsYmFjay5hcHBseShudWxsLCBhcnIpO1xyXG4gIH07XHJcbn07XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHBheWxvYWQgaXMgYW4gZXJyb3IgdGhyb3duIGJ5IEF4aW9zXHJcbiAqXHJcbiAqIEBwYXJhbSB7Kn0gcGF5bG9hZCBUaGUgdmFsdWUgdG8gdGVzdFxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgcGF5bG9hZCBpcyBhbiBlcnJvciB0aHJvd24gYnkgQXhpb3MsIG90aGVyd2lzZSBmYWxzZVxyXG4gKi9cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0F4aW9zRXJyb3IocGF5bG9hZCkge1xyXG4gIHJldHVybiB1dGlscy5pc09iamVjdChwYXlsb2FkKSAmJiAocGF5bG9hZC5pc0F4aW9zRXJyb3IgPT09IHRydWUpO1xyXG59O1xyXG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBzdHJpbmdpZnkgPSByZXF1aXJlKCcuL3N0cmluZ2lmeScpO1xudmFyIHBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZScpO1xudmFyIGZvcm1hdHMgPSByZXF1aXJlKCcuL2Zvcm1hdHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgZm9ybWF0czogZm9ybWF0cyxcbiAgICBwYXJzZTogcGFyc2UsXG4gICAgc3RyaW5naWZ5OiBzdHJpbmdpZnlcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcbnZhciBmb3JtYXRzID0gcmVxdWlyZSgnLi9mb3JtYXRzJyk7XG5cbnZhciBhcnJheVByZWZpeEdlbmVyYXRvcnMgPSB7XG4gICAgYnJhY2tldHM6IGZ1bmN0aW9uIGJyYWNrZXRzKHByZWZpeCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGZ1bmMtbmFtZS1tYXRjaGluZ1xuICAgICAgICByZXR1cm4gcHJlZml4ICsgJ1tdJztcbiAgICB9LFxuICAgIGluZGljZXM6IGZ1bmN0aW9uIGluZGljZXMocHJlZml4LCBrZXkpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBmdW5jLW5hbWUtbWF0Y2hpbmdcbiAgICAgICAgcmV0dXJuIHByZWZpeCArICdbJyArIGtleSArICddJztcbiAgICB9LFxuICAgIHJlcGVhdDogZnVuY3Rpb24gcmVwZWF0KHByZWZpeCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGZ1bmMtbmFtZS1tYXRjaGluZ1xuICAgICAgICByZXR1cm4gcHJlZml4O1xuICAgIH1cbn07XG5cbnZhciB0b0lTTyA9IERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nO1xuXG52YXIgZGVmYXVsdHMgPSB7XG4gICAgZGVsaW1pdGVyOiAnJicsXG4gICAgZW5jb2RlOiB0cnVlLFxuICAgIGVuY29kZXI6IHV0aWxzLmVuY29kZSxcbiAgICBlbmNvZGVWYWx1ZXNPbmx5OiBmYWxzZSxcbiAgICBzZXJpYWxpemVEYXRlOiBmdW5jdGlvbiBzZXJpYWxpemVEYXRlKGRhdGUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBmdW5jLW5hbWUtbWF0Y2hpbmdcbiAgICAgICAgcmV0dXJuIHRvSVNPLmNhbGwoZGF0ZSk7XG4gICAgfSxcbiAgICBza2lwTnVsbHM6IGZhbHNlLFxuICAgIHN0cmljdE51bGxIYW5kbGluZzogZmFsc2Vcbn07XG5cbnZhciBzdHJpbmdpZnkgPSBmdW5jdGlvbiBzdHJpbmdpZnkoIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZnVuYy1uYW1lLW1hdGNoaW5nXG4gICAgb2JqZWN0LFxuICAgIHByZWZpeCxcbiAgICBnZW5lcmF0ZUFycmF5UHJlZml4LFxuICAgIHN0cmljdE51bGxIYW5kbGluZyxcbiAgICBza2lwTnVsbHMsXG4gICAgZW5jb2RlcixcbiAgICBmaWx0ZXIsXG4gICAgc29ydCxcbiAgICBhbGxvd0RvdHMsXG4gICAgc2VyaWFsaXplRGF0ZSxcbiAgICBmb3JtYXR0ZXIsXG4gICAgZW5jb2RlVmFsdWVzT25seVxuKSB7XG4gICAgdmFyIG9iaiA9IG9iamVjdDtcbiAgICBpZiAodHlwZW9mIGZpbHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvYmogPSBmaWx0ZXIocHJlZml4LCBvYmopO1xuICAgIH0gZWxzZSBpZiAob2JqIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICBvYmogPSBzZXJpYWxpemVEYXRlKG9iaik7XG4gICAgfSBlbHNlIGlmIChvYmogPT09IG51bGwpIHtcbiAgICAgICAgaWYgKHN0cmljdE51bGxIYW5kbGluZykge1xuICAgICAgICAgICAgcmV0dXJuIGVuY29kZXIgJiYgIWVuY29kZVZhbHVlc09ubHkgPyBlbmNvZGVyKHByZWZpeCwgZGVmYXVsdHMuZW5jb2RlcikgOiBwcmVmaXg7XG4gICAgICAgIH1cblxuICAgICAgICBvYmogPSAnJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG9iaiA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG9iaiA9PT0gJ2Jvb2xlYW4nIHx8IHV0aWxzLmlzQnVmZmVyKG9iaikpIHtcbiAgICAgICAgaWYgKGVuY29kZXIpIHtcbiAgICAgICAgICAgIHZhciBrZXlWYWx1ZSA9IGVuY29kZVZhbHVlc09ubHkgPyBwcmVmaXggOiBlbmNvZGVyKHByZWZpeCwgZGVmYXVsdHMuZW5jb2Rlcik7XG4gICAgICAgICAgICByZXR1cm4gW2Zvcm1hdHRlcihrZXlWYWx1ZSkgKyAnPScgKyBmb3JtYXR0ZXIoZW5jb2RlcihvYmosIGRlZmF1bHRzLmVuY29kZXIpKV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtmb3JtYXR0ZXIocHJlZml4KSArICc9JyArIGZvcm1hdHRlcihTdHJpbmcob2JqKSldO1xuICAgIH1cblxuICAgIHZhciB2YWx1ZXMgPSBbXTtcblxuICAgIGlmICh0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgIH1cblxuICAgIHZhciBvYmpLZXlzO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGZpbHRlcikpIHtcbiAgICAgICAgb2JqS2V5cyA9IGZpbHRlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgICAgIG9iaktleXMgPSBzb3J0ID8ga2V5cy5zb3J0KHNvcnQpIDoga2V5cztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9iaktleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGtleSA9IG9iaktleXNbaV07XG5cbiAgICAgICAgaWYgKHNraXBOdWxscyAmJiBvYmpba2V5XSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICAgICAgICB2YWx1ZXMgPSB2YWx1ZXMuY29uY2F0KHN0cmluZ2lmeShcbiAgICAgICAgICAgICAgICBvYmpba2V5XSxcbiAgICAgICAgICAgICAgICBnZW5lcmF0ZUFycmF5UHJlZml4KHByZWZpeCwga2V5KSxcbiAgICAgICAgICAgICAgICBnZW5lcmF0ZUFycmF5UHJlZml4LFxuICAgICAgICAgICAgICAgIHN0cmljdE51bGxIYW5kbGluZyxcbiAgICAgICAgICAgICAgICBza2lwTnVsbHMsXG4gICAgICAgICAgICAgICAgZW5jb2RlcixcbiAgICAgICAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgICAgICAgc29ydCxcbiAgICAgICAgICAgICAgICBhbGxvd0RvdHMsXG4gICAgICAgICAgICAgICAgc2VyaWFsaXplRGF0ZSxcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZXIsXG4gICAgICAgICAgICAgICAgZW5jb2RlVmFsdWVzT25seVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWx1ZXMgPSB2YWx1ZXMuY29uY2F0KHN0cmluZ2lmeShcbiAgICAgICAgICAgICAgICBvYmpba2V5XSxcbiAgICAgICAgICAgICAgICBwcmVmaXggKyAoYWxsb3dEb3RzID8gJy4nICsga2V5IDogJ1snICsga2V5ICsgJ10nKSxcbiAgICAgICAgICAgICAgICBnZW5lcmF0ZUFycmF5UHJlZml4LFxuICAgICAgICAgICAgICAgIHN0cmljdE51bGxIYW5kbGluZyxcbiAgICAgICAgICAgICAgICBza2lwTnVsbHMsXG4gICAgICAgICAgICAgICAgZW5jb2RlcixcbiAgICAgICAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgICAgICAgc29ydCxcbiAgICAgICAgICAgICAgICBhbGxvd0RvdHMsXG4gICAgICAgICAgICAgICAgc2VyaWFsaXplRGF0ZSxcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZXIsXG4gICAgICAgICAgICAgICAgZW5jb2RlVmFsdWVzT25seVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVzO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBvcHRzKSB7XG4gICAgdmFyIG9iaiA9IG9iamVjdDtcbiAgICB2YXIgb3B0aW9ucyA9IG9wdHMgPyB1dGlscy5hc3NpZ24oe30sIG9wdHMpIDoge307XG5cbiAgICBpZiAob3B0aW9ucy5lbmNvZGVyICE9PSBudWxsICYmIG9wdGlvbnMuZW5jb2RlciAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvcHRpb25zLmVuY29kZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRW5jb2RlciBoYXMgdG8gYmUgYSBmdW5jdGlvbi4nKTtcbiAgICB9XG5cbiAgICB2YXIgZGVsaW1pdGVyID0gdHlwZW9mIG9wdGlvbnMuZGVsaW1pdGVyID09PSAndW5kZWZpbmVkJyA/IGRlZmF1bHRzLmRlbGltaXRlciA6IG9wdGlvbnMuZGVsaW1pdGVyO1xuICAgIHZhciBzdHJpY3ROdWxsSGFuZGxpbmcgPSB0eXBlb2Ygb3B0aW9ucy5zdHJpY3ROdWxsSGFuZGxpbmcgPT09ICdib29sZWFuJyA/IG9wdGlvbnMuc3RyaWN0TnVsbEhhbmRsaW5nIDogZGVmYXVsdHMuc3RyaWN0TnVsbEhhbmRsaW5nO1xuICAgIHZhciBza2lwTnVsbHMgPSB0eXBlb2Ygb3B0aW9ucy5za2lwTnVsbHMgPT09ICdib29sZWFuJyA/IG9wdGlvbnMuc2tpcE51bGxzIDogZGVmYXVsdHMuc2tpcE51bGxzO1xuICAgIHZhciBlbmNvZGUgPSB0eXBlb2Ygb3B0aW9ucy5lbmNvZGUgPT09ICdib29sZWFuJyA/IG9wdGlvbnMuZW5jb2RlIDogZGVmYXVsdHMuZW5jb2RlO1xuICAgIHZhciBlbmNvZGVyID0gdHlwZW9mIG9wdGlvbnMuZW5jb2RlciA9PT0gJ2Z1bmN0aW9uJyA/IG9wdGlvbnMuZW5jb2RlciA6IGRlZmF1bHRzLmVuY29kZXI7XG4gICAgdmFyIHNvcnQgPSB0eXBlb2Ygb3B0aW9ucy5zb3J0ID09PSAnZnVuY3Rpb24nID8gb3B0aW9ucy5zb3J0IDogbnVsbDtcbiAgICB2YXIgYWxsb3dEb3RzID0gdHlwZW9mIG9wdGlvbnMuYWxsb3dEb3RzID09PSAndW5kZWZpbmVkJyA/IGZhbHNlIDogb3B0aW9ucy5hbGxvd0RvdHM7XG4gICAgdmFyIHNlcmlhbGl6ZURhdGUgPSB0eXBlb2Ygb3B0aW9ucy5zZXJpYWxpemVEYXRlID09PSAnZnVuY3Rpb24nID8gb3B0aW9ucy5zZXJpYWxpemVEYXRlIDogZGVmYXVsdHMuc2VyaWFsaXplRGF0ZTtcbiAgICB2YXIgZW5jb2RlVmFsdWVzT25seSA9IHR5cGVvZiBvcHRpb25zLmVuY29kZVZhbHVlc09ubHkgPT09ICdib29sZWFuJyA/IG9wdGlvbnMuZW5jb2RlVmFsdWVzT25seSA6IGRlZmF1bHRzLmVuY29kZVZhbHVlc09ubHk7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmZvcm1hdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgb3B0aW9ucy5mb3JtYXQgPSBmb3JtYXRzWydkZWZhdWx0J107XG4gICAgfSBlbHNlIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGZvcm1hdHMuZm9ybWF0dGVycywgb3B0aW9ucy5mb3JtYXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZm9ybWF0IG9wdGlvbiBwcm92aWRlZC4nKTtcbiAgICB9XG4gICAgdmFyIGZvcm1hdHRlciA9IGZvcm1hdHMuZm9ybWF0dGVyc1tvcHRpb25zLmZvcm1hdF07XG4gICAgdmFyIG9iaktleXM7XG4gICAgdmFyIGZpbHRlcjtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5maWx0ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgZmlsdGVyID0gb3B0aW9ucy5maWx0ZXI7XG4gICAgICAgIG9iaiA9IGZpbHRlcignJywgb2JqKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkob3B0aW9ucy5maWx0ZXIpKSB7XG4gICAgICAgIGZpbHRlciA9IG9wdGlvbnMuZmlsdGVyO1xuICAgICAgICBvYmpLZXlzID0gZmlsdGVyO1xuICAgIH1cblxuICAgIHZhciBrZXlzID0gW107XG5cbiAgICBpZiAodHlwZW9mIG9iaiAhPT0gJ29iamVjdCcgfHwgb2JqID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICB2YXIgYXJyYXlGb3JtYXQ7XG4gICAgaWYgKG9wdGlvbnMuYXJyYXlGb3JtYXQgaW4gYXJyYXlQcmVmaXhHZW5lcmF0b3JzKSB7XG4gICAgICAgIGFycmF5Rm9ybWF0ID0gb3B0aW9ucy5hcnJheUZvcm1hdDtcbiAgICB9IGVsc2UgaWYgKCdpbmRpY2VzJyBpbiBvcHRpb25zKSB7XG4gICAgICAgIGFycmF5Rm9ybWF0ID0gb3B0aW9ucy5pbmRpY2VzID8gJ2luZGljZXMnIDogJ3JlcGVhdCc7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgYXJyYXlGb3JtYXQgPSAnaW5kaWNlcyc7XG4gICAgfVxuXG4gICAgdmFyIGdlbmVyYXRlQXJyYXlQcmVmaXggPSBhcnJheVByZWZpeEdlbmVyYXRvcnNbYXJyYXlGb3JtYXRdO1xuXG4gICAgaWYgKCFvYmpLZXlzKSB7XG4gICAgICAgIG9iaktleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgIH1cblxuICAgIGlmIChzb3J0KSB7XG4gICAgICAgIG9iaktleXMuc29ydChzb3J0KTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9iaktleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGtleSA9IG9iaktleXNbaV07XG5cbiAgICAgICAgaWYgKHNraXBOdWxscyAmJiBvYmpba2V5XSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBrZXlzID0ga2V5cy5jb25jYXQoc3RyaW5naWZ5KFxuICAgICAgICAgICAgb2JqW2tleV0sXG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBnZW5lcmF0ZUFycmF5UHJlZml4LFxuICAgICAgICAgICAgc3RyaWN0TnVsbEhhbmRsaW5nLFxuICAgICAgICAgICAgc2tpcE51bGxzLFxuICAgICAgICAgICAgZW5jb2RlID8gZW5jb2RlciA6IG51bGwsXG4gICAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgICBzb3J0LFxuICAgICAgICAgICAgYWxsb3dEb3RzLFxuICAgICAgICAgICAgc2VyaWFsaXplRGF0ZSxcbiAgICAgICAgICAgIGZvcm1hdHRlcixcbiAgICAgICAgICAgIGVuY29kZVZhbHVlc09ubHlcbiAgICAgICAgKSk7XG4gICAgfVxuXG4gICAgdmFyIGpvaW5lZCA9IGtleXMuam9pbihkZWxpbWl0ZXIpO1xuICAgIHZhciBwcmVmaXggPSBvcHRpb25zLmFkZFF1ZXJ5UHJlZml4ID09PSB0cnVlID8gJz8nIDogJyc7XG5cbiAgICByZXR1cm4gam9pbmVkLmxlbmd0aCA+IDAgPyBwcmVmaXggKyBqb2luZWQgOiAnJztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBoYXMgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgaGV4VGFibGUgPSAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcnJheSA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyArK2kpIHtcbiAgICAgICAgYXJyYXkucHVzaCgnJScgKyAoKGkgPCAxNiA/ICcwJyA6ICcnKSArIGkudG9TdHJpbmcoMTYpKS50b1VwcGVyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJyYXk7XG59KCkpO1xuXG52YXIgY29tcGFjdFF1ZXVlID0gZnVuY3Rpb24gY29tcGFjdFF1ZXVlKHF1ZXVlKSB7XG4gICAgdmFyIG9iajtcblxuICAgIHdoaWxlIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBxdWV1ZS5wb3AoKTtcbiAgICAgICAgb2JqID0gaXRlbS5vYmpbaXRlbS5wcm9wXTtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICAgICAgICB2YXIgY29tcGFjdGVkID0gW107XG5cbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgb2JqLmxlbmd0aDsgKytqKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmpbal0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBhY3RlZC5wdXNoKG9ialtqXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpdGVtLm9ialtpdGVtLnByb3BdID0gY29tcGFjdGVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iajtcbn07XG5cbnZhciBhcnJheVRvT2JqZWN0ID0gZnVuY3Rpb24gYXJyYXlUb09iamVjdChzb3VyY2UsIG9wdGlvbnMpIHtcbiAgICB2YXIgb2JqID0gb3B0aW9ucyAmJiBvcHRpb25zLnBsYWluT2JqZWN0cyA/IE9iamVjdC5jcmVhdGUobnVsbCkgOiB7fTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGg7ICsraSkge1xuICAgICAgICBpZiAodHlwZW9mIHNvdXJjZVtpXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIG9ialtpXSA9IHNvdXJjZVtpXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvYmo7XG59O1xuXG52YXIgbWVyZ2UgPSBmdW5jdGlvbiBtZXJnZSh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucykge1xuICAgIGlmICghc291cmNlKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBzb3VyY2UgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkpIHtcbiAgICAgICAgICAgIHRhcmdldC5wdXNoKHNvdXJjZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRhcmdldCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnBsYWluT2JqZWN0cyB8fCBvcHRpb25zLmFsbG93UHJvdG90eXBlcyB8fCAhaGFzLmNhbGwoT2JqZWN0LnByb3RvdHlwZSwgc291cmNlKSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtzb3VyY2VdID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbdGFyZ2V0LCBzb3VyY2VdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHRhcmdldCAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIFt0YXJnZXRdLmNvbmNhdChzb3VyY2UpO1xuICAgIH1cblxuICAgIHZhciBtZXJnZVRhcmdldCA9IHRhcmdldDtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpICYmICFBcnJheS5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgICAgbWVyZ2VUYXJnZXQgPSBhcnJheVRvT2JqZWN0KHRhcmdldCwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSAmJiBBcnJheS5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgICAgc291cmNlLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGkpIHtcbiAgICAgICAgICAgIGlmIChoYXMuY2FsbCh0YXJnZXQsIGkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldFtpXSAmJiB0eXBlb2YgdGFyZ2V0W2ldID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRbaV0gPSBtZXJnZSh0YXJnZXRbaV0sIGl0ZW0sIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W2ldID0gaXRlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHNvdXJjZSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGtleSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBzb3VyY2Vba2V5XTtcblxuICAgICAgICBpZiAoaGFzLmNhbGwoYWNjLCBrZXkpKSB7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IG1lcmdlKGFjY1trZXldLCB2YWx1ZSwgb3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhY2Nba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgbWVyZ2VUYXJnZXQpO1xufTtcblxudmFyIGFzc2lnbiA9IGZ1bmN0aW9uIGFzc2lnblNpbmdsZVNvdXJjZSh0YXJnZXQsIHNvdXJjZSkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhzb3VyY2UpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBrZXkpIHtcbiAgICAgICAgYWNjW2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB0YXJnZXQpO1xufTtcblxudmFyIGRlY29kZSA9IGZ1bmN0aW9uIChzdHIpIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHN0ci5yZXBsYWNlKC9cXCsvZywgJyAnKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH1cbn07XG5cbnZhciBlbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoc3RyKSB7XG4gICAgLy8gVGhpcyBjb2RlIHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgQnJpYW4gV2hpdGUgKG1zY2RleCkgZm9yIHRoZSBpby5qcyBjb3JlIHF1ZXJ5c3RyaW5nIGxpYnJhcnkuXG4gICAgLy8gSXQgaGFzIGJlZW4gYWRhcHRlZCBoZXJlIGZvciBzdHJpY3RlciBhZGhlcmVuY2UgdG8gUkZDIDM5ODZcbiAgICBpZiAoc3RyLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH1cblxuICAgIHZhciBzdHJpbmcgPSB0eXBlb2Ygc3RyID09PSAnc3RyaW5nJyA/IHN0ciA6IFN0cmluZyhzdHIpO1xuXG4gICAgdmFyIG91dCA9ICcnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBjID0gc3RyaW5nLmNoYXJDb2RlQXQoaSk7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgYyA9PT0gMHgyRCAvLyAtXG4gICAgICAgICAgICB8fCBjID09PSAweDJFIC8vIC5cbiAgICAgICAgICAgIHx8IGMgPT09IDB4NUYgLy8gX1xuICAgICAgICAgICAgfHwgYyA9PT0gMHg3RSAvLyB+XG4gICAgICAgICAgICB8fCAoYyA+PSAweDMwICYmIGMgPD0gMHgzOSkgLy8gMC05XG4gICAgICAgICAgICB8fCAoYyA+PSAweDQxICYmIGMgPD0gMHg1QSkgLy8gYS16XG4gICAgICAgICAgICB8fCAoYyA+PSAweDYxICYmIGMgPD0gMHg3QSkgLy8gQS1aXG4gICAgICAgICkge1xuICAgICAgICAgICAgb3V0ICs9IHN0cmluZy5jaGFyQXQoaSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjIDwgMHg4MCkge1xuICAgICAgICAgICAgb3V0ID0gb3V0ICsgaGV4VGFibGVbY107XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjIDwgMHg4MDApIHtcbiAgICAgICAgICAgIG91dCA9IG91dCArIChoZXhUYWJsZVsweEMwIHwgKGMgPj4gNildICsgaGV4VGFibGVbMHg4MCB8IChjICYgMHgzRildKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGMgPCAweEQ4MDAgfHwgYyA+PSAweEUwMDApIHtcbiAgICAgICAgICAgIG91dCA9IG91dCArIChoZXhUYWJsZVsweEUwIHwgKGMgPj4gMTIpXSArIGhleFRhYmxlWzB4ODAgfCAoKGMgPj4gNikgJiAweDNGKV0gKyBoZXhUYWJsZVsweDgwIHwgKGMgJiAweDNGKV0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpICs9IDE7XG4gICAgICAgIGMgPSAweDEwMDAwICsgKCgoYyAmIDB4M0ZGKSA8PCAxMCkgfCAoc3RyaW5nLmNoYXJDb2RlQXQoaSkgJiAweDNGRikpO1xuICAgICAgICBvdXQgKz0gaGV4VGFibGVbMHhGMCB8IChjID4+IDE4KV1cbiAgICAgICAgICAgICsgaGV4VGFibGVbMHg4MCB8ICgoYyA+PiAxMikgJiAweDNGKV1cbiAgICAgICAgICAgICsgaGV4VGFibGVbMHg4MCB8ICgoYyA+PiA2KSAmIDB4M0YpXVxuICAgICAgICAgICAgKyBoZXhUYWJsZVsweDgwIHwgKGMgJiAweDNGKV07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbn07XG5cbnZhciBjb21wYWN0ID0gZnVuY3Rpb24gY29tcGFjdCh2YWx1ZSkge1xuICAgIHZhciBxdWV1ZSA9IFt7IG9iajogeyBvOiB2YWx1ZSB9LCBwcm9wOiAnbycgfV07XG4gICAgdmFyIHJlZnMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVldWUubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBxdWV1ZVtpXTtcbiAgICAgICAgdmFyIG9iaiA9IGl0ZW0ub2JqW2l0ZW0ucHJvcF07XG5cbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGtleXMubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgIHZhciBrZXkgPSBrZXlzW2pdO1xuICAgICAgICAgICAgdmFyIHZhbCA9IG9ialtrZXldO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbCAhPT0gbnVsbCAmJiByZWZzLmluZGV4T2YodmFsKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBxdWV1ZS5wdXNoKHsgb2JqOiBvYmosIHByb3A6IGtleSB9KTtcbiAgICAgICAgICAgICAgICByZWZzLnB1c2godmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb21wYWN0UXVldWUocXVldWUpO1xufTtcblxudmFyIGlzUmVnRXhwID0gZnVuY3Rpb24gaXNSZWdFeHAob2JqKSB7XG4gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBSZWdFeHBdJztcbn07XG5cbnZhciBpc0J1ZmZlciA9IGZ1bmN0aW9uIGlzQnVmZmVyKG9iaikge1xuICAgIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiAhIShvYmouY29uc3RydWN0b3IgJiYgb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyICYmIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihvYmopKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIGFycmF5VG9PYmplY3Q6IGFycmF5VG9PYmplY3QsXG4gICAgYXNzaWduOiBhc3NpZ24sXG4gICAgY29tcGFjdDogY29tcGFjdCxcbiAgICBkZWNvZGU6IGRlY29kZSxcbiAgICBlbmNvZGU6IGVuY29kZSxcbiAgICBpc0J1ZmZlcjogaXNCdWZmZXIsXG4gICAgaXNSZWdFeHA6IGlzUmVnRXhwLFxuICAgIG1lcmdlOiBtZXJnZVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHJlcGxhY2UgPSBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2U7XG52YXIgcGVyY2VudFR3ZW50aWVzID0gLyUyMC9nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICAnZGVmYXVsdCc6ICdSRkMzOTg2JyxcbiAgICBmb3JtYXR0ZXJzOiB7XG4gICAgICAgIFJGQzE3Mzg6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2UuY2FsbCh2YWx1ZSwgcGVyY2VudFR3ZW50aWVzLCAnKycpO1xuICAgICAgICB9LFxuICAgICAgICBSRkMzOTg2OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgUkZDMTczODogJ1JGQzE3MzgnLFxuICAgIFJGQzM5ODY6ICdSRkMzOTg2J1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG52YXIgaGFzID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIGRlZmF1bHRzID0ge1xuICAgIGFsbG93RG90czogZmFsc2UsXG4gICAgYWxsb3dQcm90b3R5cGVzOiBmYWxzZSxcbiAgICBhcnJheUxpbWl0OiAyMCxcbiAgICBkZWNvZGVyOiB1dGlscy5kZWNvZGUsXG4gICAgZGVsaW1pdGVyOiAnJicsXG4gICAgZGVwdGg6IDUsXG4gICAgcGFyYW1ldGVyTGltaXQ6IDEwMDAsXG4gICAgcGxhaW5PYmplY3RzOiBmYWxzZSxcbiAgICBzdHJpY3ROdWxsSGFuZGxpbmc6IGZhbHNlXG59O1xuXG52YXIgcGFyc2VWYWx1ZXMgPSBmdW5jdGlvbiBwYXJzZVF1ZXJ5U3RyaW5nVmFsdWVzKHN0ciwgb3B0aW9ucykge1xuICAgIHZhciBvYmogPSB7fTtcbiAgICB2YXIgY2xlYW5TdHIgPSBvcHRpb25zLmlnbm9yZVF1ZXJ5UHJlZml4ID8gc3RyLnJlcGxhY2UoL15cXD8vLCAnJykgOiBzdHI7XG4gICAgdmFyIGxpbWl0ID0gb3B0aW9ucy5wYXJhbWV0ZXJMaW1pdCA9PT0gSW5maW5pdHkgPyB1bmRlZmluZWQgOiBvcHRpb25zLnBhcmFtZXRlckxpbWl0O1xuICAgIHZhciBwYXJ0cyA9IGNsZWFuU3RyLnNwbGl0KG9wdGlvbnMuZGVsaW1pdGVyLCBsaW1pdCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBwYXJ0ID0gcGFydHNbaV07XG5cbiAgICAgICAgdmFyIGJyYWNrZXRFcXVhbHNQb3MgPSBwYXJ0LmluZGV4T2YoJ109Jyk7XG4gICAgICAgIHZhciBwb3MgPSBicmFja2V0RXF1YWxzUG9zID09PSAtMSA/IHBhcnQuaW5kZXhPZignPScpIDogYnJhY2tldEVxdWFsc1BvcyArIDE7XG5cbiAgICAgICAgdmFyIGtleSwgdmFsO1xuICAgICAgICBpZiAocG9zID09PSAtMSkge1xuICAgICAgICAgICAga2V5ID0gb3B0aW9ucy5kZWNvZGVyKHBhcnQsIGRlZmF1bHRzLmRlY29kZXIpO1xuICAgICAgICAgICAgdmFsID0gb3B0aW9ucy5zdHJpY3ROdWxsSGFuZGxpbmcgPyBudWxsIDogJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBrZXkgPSBvcHRpb25zLmRlY29kZXIocGFydC5zbGljZSgwLCBwb3MpLCBkZWZhdWx0cy5kZWNvZGVyKTtcbiAgICAgICAgICAgIHZhbCA9IG9wdGlvbnMuZGVjb2RlcihwYXJ0LnNsaWNlKHBvcyArIDEpLCBkZWZhdWx0cy5kZWNvZGVyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGFzLmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgICBvYmpba2V5XSA9IFtdLmNvbmNhdChvYmpba2V5XSkuY29uY2F0KHZhbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvYmpba2V5XSA9IHZhbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvYmo7XG59O1xuXG52YXIgcGFyc2VPYmplY3QgPSBmdW5jdGlvbiAoY2hhaW4sIHZhbCwgb3B0aW9ucykge1xuICAgIHZhciBsZWFmID0gdmFsO1xuXG4gICAgZm9yICh2YXIgaSA9IGNoYWluLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBvYmo7XG4gICAgICAgIHZhciByb290ID0gY2hhaW5baV07XG5cbiAgICAgICAgaWYgKHJvb3QgPT09ICdbXScpIHtcbiAgICAgICAgICAgIG9iaiA9IFtdO1xuICAgICAgICAgICAgb2JqID0gb2JqLmNvbmNhdChsZWFmKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9iaiA9IG9wdGlvbnMucGxhaW5PYmplY3RzID8gT2JqZWN0LmNyZWF0ZShudWxsKSA6IHt9O1xuICAgICAgICAgICAgdmFyIGNsZWFuUm9vdCA9IHJvb3QuY2hhckF0KDApID09PSAnWycgJiYgcm9vdC5jaGFyQXQocm9vdC5sZW5ndGggLSAxKSA9PT0gJ10nID8gcm9vdC5zbGljZSgxLCAtMSkgOiByb290O1xuICAgICAgICAgICAgdmFyIGluZGV4ID0gcGFyc2VJbnQoY2xlYW5Sb290LCAxMCk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIWlzTmFOKGluZGV4KVxuICAgICAgICAgICAgICAgICYmIHJvb3QgIT09IGNsZWFuUm9vdFxuICAgICAgICAgICAgICAgICYmIFN0cmluZyhpbmRleCkgPT09IGNsZWFuUm9vdFxuICAgICAgICAgICAgICAgICYmIGluZGV4ID49IDBcbiAgICAgICAgICAgICAgICAmJiAob3B0aW9ucy5wYXJzZUFycmF5cyAmJiBpbmRleCA8PSBvcHRpb25zLmFycmF5TGltaXQpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBvYmogPSBbXTtcbiAgICAgICAgICAgICAgICBvYmpbaW5kZXhdID0gbGVhZjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb2JqW2NsZWFuUm9vdF0gPSBsZWFmO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGVhZiA9IG9iajtcbiAgICB9XG5cbiAgICByZXR1cm4gbGVhZjtcbn07XG5cbnZhciBwYXJzZUtleXMgPSBmdW5jdGlvbiBwYXJzZVF1ZXJ5U3RyaW5nS2V5cyhnaXZlbktleSwgdmFsLCBvcHRpb25zKSB7XG4gICAgaWYgKCFnaXZlbktleSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVHJhbnNmb3JtIGRvdCBub3RhdGlvbiB0byBicmFja2V0IG5vdGF0aW9uXG4gICAgdmFyIGtleSA9IG9wdGlvbnMuYWxsb3dEb3RzID8gZ2l2ZW5LZXkucmVwbGFjZSgvXFwuKFteLltdKykvZywgJ1skMV0nKSA6IGdpdmVuS2V5O1xuXG4gICAgLy8gVGhlIHJlZ2V4IGNodW5rc1xuXG4gICAgdmFyIGJyYWNrZXRzID0gLyhcXFtbXltcXF1dKl0pLztcbiAgICB2YXIgY2hpbGQgPSAvKFxcW1teW1xcXV0qXSkvZztcblxuICAgIC8vIEdldCB0aGUgcGFyZW50XG5cbiAgICB2YXIgc2VnbWVudCA9IGJyYWNrZXRzLmV4ZWMoa2V5KTtcbiAgICB2YXIgcGFyZW50ID0gc2VnbWVudCA/IGtleS5zbGljZSgwLCBzZWdtZW50LmluZGV4KSA6IGtleTtcblxuICAgIC8vIFN0YXNoIHRoZSBwYXJlbnQgaWYgaXQgZXhpc3RzXG5cbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgLy8gSWYgd2UgYXJlbid0IHVzaW5nIHBsYWluIG9iamVjdHMsIG9wdGlvbmFsbHkgcHJlZml4IGtleXNcbiAgICAgICAgLy8gdGhhdCB3b3VsZCBvdmVyd3JpdGUgb2JqZWN0IHByb3RvdHlwZSBwcm9wZXJ0aWVzXG4gICAgICAgIGlmICghb3B0aW9ucy5wbGFpbk9iamVjdHMgJiYgaGFzLmNhbGwoT2JqZWN0LnByb3RvdHlwZSwgcGFyZW50KSkge1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLmFsbG93UHJvdG90eXBlcykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGtleXMucHVzaChwYXJlbnQpO1xuICAgIH1cblxuICAgIC8vIExvb3AgdGhyb3VnaCBjaGlsZHJlbiBhcHBlbmRpbmcgdG8gdGhlIGFycmF5IHVudGlsIHdlIGhpdCBkZXB0aFxuXG4gICAgdmFyIGkgPSAwO1xuICAgIHdoaWxlICgoc2VnbWVudCA9IGNoaWxkLmV4ZWMoa2V5KSkgIT09IG51bGwgJiYgaSA8IG9wdGlvbnMuZGVwdGgpIHtcbiAgICAgICAgaSArPSAxO1xuICAgICAgICBpZiAoIW9wdGlvbnMucGxhaW5PYmplY3RzICYmIGhhcy5jYWxsKE9iamVjdC5wcm90b3R5cGUsIHNlZ21lbnRbMV0uc2xpY2UoMSwgLTEpKSkge1xuICAgICAgICAgICAgaWYgKCFvcHRpb25zLmFsbG93UHJvdG90eXBlcykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBrZXlzLnB1c2goc2VnbWVudFsxXSk7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUncyBhIHJlbWFpbmRlciwganVzdCBhZGQgd2hhdGV2ZXIgaXMgbGVmdFxuXG4gICAgaWYgKHNlZ21lbnQpIHtcbiAgICAgICAga2V5cy5wdXNoKCdbJyArIGtleS5zbGljZShzZWdtZW50LmluZGV4KSArICddJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnNlT2JqZWN0KGtleXMsIHZhbCwgb3B0aW9ucyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChzdHIsIG9wdHMpIHtcbiAgICB2YXIgb3B0aW9ucyA9IG9wdHMgPyB1dGlscy5hc3NpZ24oe30sIG9wdHMpIDoge307XG5cbiAgICBpZiAob3B0aW9ucy5kZWNvZGVyICE9PSBudWxsICYmIG9wdGlvbnMuZGVjb2RlciAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvcHRpb25zLmRlY29kZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRGVjb2RlciBoYXMgdG8gYmUgYSBmdW5jdGlvbi4nKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLmlnbm9yZVF1ZXJ5UHJlZml4ID0gb3B0aW9ucy5pZ25vcmVRdWVyeVByZWZpeCA9PT0gdHJ1ZTtcbiAgICBvcHRpb25zLmRlbGltaXRlciA9IHR5cGVvZiBvcHRpb25zLmRlbGltaXRlciA9PT0gJ3N0cmluZycgfHwgdXRpbHMuaXNSZWdFeHAob3B0aW9ucy5kZWxpbWl0ZXIpID8gb3B0aW9ucy5kZWxpbWl0ZXIgOiBkZWZhdWx0cy5kZWxpbWl0ZXI7XG4gICAgb3B0aW9ucy5kZXB0aCA9IHR5cGVvZiBvcHRpb25zLmRlcHRoID09PSAnbnVtYmVyJyA/IG9wdGlvbnMuZGVwdGggOiBkZWZhdWx0cy5kZXB0aDtcbiAgICBvcHRpb25zLmFycmF5TGltaXQgPSB0eXBlb2Ygb3B0aW9ucy5hcnJheUxpbWl0ID09PSAnbnVtYmVyJyA/IG9wdGlvbnMuYXJyYXlMaW1pdCA6IGRlZmF1bHRzLmFycmF5TGltaXQ7XG4gICAgb3B0aW9ucy5wYXJzZUFycmF5cyA9IG9wdGlvbnMucGFyc2VBcnJheXMgIT09IGZhbHNlO1xuICAgIG9wdGlvbnMuZGVjb2RlciA9IHR5cGVvZiBvcHRpb25zLmRlY29kZXIgPT09ICdmdW5jdGlvbicgPyBvcHRpb25zLmRlY29kZXIgOiBkZWZhdWx0cy5kZWNvZGVyO1xuICAgIG9wdGlvbnMuYWxsb3dEb3RzID0gdHlwZW9mIG9wdGlvbnMuYWxsb3dEb3RzID09PSAnYm9vbGVhbicgPyBvcHRpb25zLmFsbG93RG90cyA6IGRlZmF1bHRzLmFsbG93RG90cztcbiAgICBvcHRpb25zLnBsYWluT2JqZWN0cyA9IHR5cGVvZiBvcHRpb25zLnBsYWluT2JqZWN0cyA9PT0gJ2Jvb2xlYW4nID8gb3B0aW9ucy5wbGFpbk9iamVjdHMgOiBkZWZhdWx0cy5wbGFpbk9iamVjdHM7XG4gICAgb3B0aW9ucy5hbGxvd1Byb3RvdHlwZXMgPSB0eXBlb2Ygb3B0aW9ucy5hbGxvd1Byb3RvdHlwZXMgPT09ICdib29sZWFuJyA/IG9wdGlvbnMuYWxsb3dQcm90b3R5cGVzIDogZGVmYXVsdHMuYWxsb3dQcm90b3R5cGVzO1xuICAgIG9wdGlvbnMucGFyYW1ldGVyTGltaXQgPSB0eXBlb2Ygb3B0aW9ucy5wYXJhbWV0ZXJMaW1pdCA9PT0gJ251bWJlcicgPyBvcHRpb25zLnBhcmFtZXRlckxpbWl0IDogZGVmYXVsdHMucGFyYW1ldGVyTGltaXQ7XG4gICAgb3B0aW9ucy5zdHJpY3ROdWxsSGFuZGxpbmcgPSB0eXBlb2Ygb3B0aW9ucy5zdHJpY3ROdWxsSGFuZGxpbmcgPT09ICdib29sZWFuJyA/IG9wdGlvbnMuc3RyaWN0TnVsbEhhbmRsaW5nIDogZGVmYXVsdHMuc3RyaWN0TnVsbEhhbmRsaW5nO1xuXG4gICAgaWYgKHN0ciA9PT0gJycgfHwgc3RyID09PSBudWxsIHx8IHR5cGVvZiBzdHIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLnBsYWluT2JqZWN0cyA/IE9iamVjdC5jcmVhdGUobnVsbCkgOiB7fTtcbiAgICB9XG5cbiAgICB2YXIgdGVtcE9iaiA9IHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnID8gcGFyc2VWYWx1ZXMoc3RyLCBvcHRpb25zKSA6IHN0cjtcbiAgICB2YXIgb2JqID0gb3B0aW9ucy5wbGFpbk9iamVjdHMgPyBPYmplY3QuY3JlYXRlKG51bGwpIDoge307XG5cbiAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIGtleXMgYW5kIHNldHVwIHRoZSBuZXcgb2JqZWN0XG5cbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHRlbXBPYmopO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgdmFyIG5ld09iaiA9IHBhcnNlS2V5cyhrZXksIHRlbXBPYmpba2V5XSwgb3B0aW9ucyk7XG4gICAgICAgIG9iaiA9IHV0aWxzLm1lcmdlKG9iaiwgbmV3T2JqLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdXRpbHMuY29tcGFjdChvYmopO1xufTtcbiIsImltcG9ydCByZXF1ZXN0IGZyb20gJ0AvdXRpbHMvcmVxdWVzdCdcclxuY29uc3Qgc2VydmljZVRpdGxlID0gJy9pbWcnXHJcbi8vR0VUIOS8oOWPgumcgOimgeeUqCBwYXJhbXNcclxuLy9QT1NUIOS8oOWPgumcgOimgeeUqCBkYXRhXHJcblxyXG4vL+iOt+WPlmJhbm5lcuWIl+ihqFxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFubmVyTGlzdCgpIHtcclxuXHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHR1cmw6IGAke3NlcnZpY2VUaXRsZX0vaW1nL21pbmkvdGlrdG9rL2xpc3RCYW5uZXJgLFxyXG5cdFx0bWV0aG9kOiAnZ2V0J1xyXG5cdFx0XHJcblx0fSlcclxufVxyXG4vL+iOt+WPluWwj+eoi+W6j+eUqOaIt+WbvueJh+WIl+ihqFxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXNlckltZ0xpc3QoKSB7XHJcblx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0dXJsOiBgJHtzZXJ2aWNlVGl0bGV9L2ltZy9taW5pL3Rpa3Rvay90aWt0b2tVc2VySW1nc2AsXHJcblx0XHRtZXRob2Q6ICdnZXQnXHJcblx0fSlcclxufVxyXG4iLCJpbXBvcnQgcmVxdWVzdCBmcm9tICdAL3V0aWxzL3JlcXVlc3QnXHJcbmNvbnN0IHNlcnZpY2VUaXRsZSA9ICcvaW1nJ1xyXG4vL0dFVCDkvKDlj4LpnIDopoHnlKggcGFyYW1zXHJcbi8vUE9TVCDkvKDlj4LpnIDopoHnlKggZGF0YVxyXG5cclxuLy/ojrflj5bnlKjmiLfmlLbol4/liJfooahcclxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbGxlY3Rpb25MaXN0KGRhdGEpIHtcclxuXHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHR1cmw6IGAke3NlcnZpY2VUaXRsZX0vaW1nL21pbmkvdGlrdG9rL2xpc3RUaWt0b2tDb2xsZWN0aW9uYCxcclxuXHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0ZGF0YTogZGF0YVxyXG5cdH0pXHJcbn1cclxuIiwiaW1wb3J0IGVuIGZyb20gJy4vZW4uanNvbidcclxuaW1wb3J0IHpoSGFucyBmcm9tICcuL3poLUhhbnMuanNvbidcclxuaW1wb3J0IHpoSGFudCBmcm9tICcuL3poLUhhbnQuanNvbidcclxuZXhwb3J0IGRlZmF1bHQge1xyXG5cdGVuLFxyXG5cdCd6aC1IYW5zJzogemhIYW5zLFxyXG5cdCd6aC1IYW50JzogemhIYW50XHJcbn1cclxuIiwiZXhwb3J0IGRlZmF1bHQge1xyXG4gIFwiaWRcIjogXCIyODUyNjM3XCIsXHJcbiAgXCJuYW1lXCI6IFwidW5pdWnlm77moIflupNcIixcclxuICBcImZvbnRfZmFtaWx5XCI6IFwidW5paWNvbnNcIixcclxuICBcImNzc19wcmVmaXhfdGV4dFwiOiBcInVuaXVpLVwiLFxyXG4gIFwiZGVzY3JpcHRpb25cIjogXCJcIixcclxuICBcImdseXBoc1wiOiBbXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI1MDI3MDQ5XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInlhbnNlXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNvbG9yXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2Y2ZcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwODdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI1MDI3MDQ4XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcIndhbGxldFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJ3YWxsZXRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZiMVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA1N1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjUwMTU3MjBcIixcclxuICAgICAgXCJuYW1lXCI6IFwic2V0dGluZ3MtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInNldHRpbmdzLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmNlXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDg2XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNTAxNTQzNFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJzaGltaW5ncmVuemhlbmctZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImF1dGgtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2Y2NcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwODRcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTM0MjQ2XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInNob3AtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInNob3AtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2Y2RcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwODVcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTM0MTU5XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInN0YWZmLWZpbGxlZC0wMVwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJzdGFmZi1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZjYlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA4M1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MzI0NjFcIixcclxuICAgICAgXCJuYW1lXCI6IFwiVklQLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJ2aXAtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YzZcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNzhcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTMyNDYyXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInBsdXNfY2lyY2xlX2ZpbGxcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicGx1cy1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZjN1wiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA3OVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MzI0NjNcIixcclxuICAgICAgXCJuYW1lXCI6IFwiZm9sZGVyX2FkZC1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZm9sZGVyLWFkZC1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZjOFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA4MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MzI0NjRcIixcclxuICAgICAgXCJuYW1lXCI6IFwieWFuc2UtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNvbG9yLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmM5XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDgxXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkzMjQ2NVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJ0dW5lLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJ0dW5lLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmNhXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDgyXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkzMjQ1NVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJhLXJpbGlkYWthLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjYWxlbmRhci1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZjMFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA3MlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MzI0NTZcIixcclxuICAgICAgXCJuYW1lXCI6IFwibm90aWZpY2F0aW9uLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJub3RpZmljYXRpb24tZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YzFcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNzNcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTMyNDU3XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcIndhbGxldC1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwid2FsbGV0LWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmMyXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDc0XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkzMjQ1OFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJwYWloYW5nYmFuZy1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibWVkYWwtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YzNcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNzVcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTMyNDU5XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImdpZnQtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImdpZnQtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YzRcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNzZcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTMyNDYwXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImZpcmUtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImZpcmUtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YzVcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNzdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTI4MDAxXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInJlZnJlc2hlbXB0eVwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJyZWZyZXNoZW1wdHlcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZiZlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA3MVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjY4NTNcIixcclxuICAgICAgXCJuYW1lXCI6IFwibG9jYXRpb24tZWxsaXBzZVwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJsb2NhdGlvbi1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZhZlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA1NVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjY3MzVcIixcclxuICAgICAgXCJuYW1lXCI6IFwicGVyc29uLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJwZXJzb24tZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OWRcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMzdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTI2NzAzXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInBlcnNvbmFkZC1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicGVyc29uYWRkLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjk4XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDMyXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzM1MVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJiYWNrXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImJhY2tcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZiOVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA2NVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzNTJcIixcclxuICAgICAgXCJuYW1lXCI6IFwiZm9yd2FyZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJmb3J3YXJkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YmFcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNjZcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzUzXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImFycm93dGhpbnJpZ2h0XCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImFycm93LXJpZ2h0XCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YmJcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNjdcclxuICAgIH0sXHJcblx0XHR7XHJcblx0XHQgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzUzXCIsXHJcblx0XHQgIFwibmFtZVwiOiBcImFycm93dGhpbnJpZ2h0XCIsXHJcblx0XHQgIFwiZm9udF9jbGFzc1wiOiBcImFycm93dGhpbnJpZ2h0XCIsXHJcblx0XHQgIFwidW5pY29kZVwiOiBcImU2YmJcIixcclxuXHRcdCAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNjdcclxuXHRcdH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzU0XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImFycm93dGhpbmxlZnRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiYXJyb3ctbGVmdFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmJjXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDY4XHJcbiAgICB9LFxyXG5cdFx0e1xyXG5cdFx0ICBcImljb25faWRcIjogXCIyNDkyMzM1NFwiLFxyXG5cdFx0ICBcIm5hbWVcIjogXCJhcnJvd3RoaW5sZWZ0XCIsXHJcblx0XHQgIFwiZm9udF9jbGFzc1wiOiBcImFycm93dGhpbmxlZnRcIixcclxuXHRcdCAgXCJ1bmljb2RlXCI6IFwiZTZiY1wiLFxyXG5cdFx0ICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA2OFxyXG5cdFx0fSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzNTVcIixcclxuICAgICAgXCJuYW1lXCI6IFwiYXJyb3d0aGludXBcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiYXJyb3ctdXBcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZiZFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA2OVxyXG4gICAgfSxcclxuXHRcdHtcclxuXHRcdCAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzNTVcIixcclxuXHRcdCAgXCJuYW1lXCI6IFwiYXJyb3d0aGludXBcIixcclxuXHRcdCAgXCJmb250X2NsYXNzXCI6IFwiYXJyb3d0aGludXBcIixcclxuXHRcdCAgXCJ1bmljb2RlXCI6IFwiZTZiZFwiLFxyXG5cdFx0ICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA2OVxyXG5cdFx0fSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzNTZcIixcclxuICAgICAgXCJuYW1lXCI6IFwiYXJyb3d0aGluZG93blwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJhcnJvdy1kb3duXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YmVcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNzBcclxuICAgIH0se1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzM1NlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJhcnJvd3RoaW5kb3duXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImFycm93dGhpbmRvd25cIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZiZVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA3MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzNDlcIixcclxuICAgICAgXCJuYW1lXCI6IFwiYXJyb3dkb3duXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImJvdHRvbVwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmI4XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDY0XHJcbiAgICB9LHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzNDlcIixcclxuICAgICAgXCJuYW1lXCI6IFwiYXJyb3dkb3duXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImFycm93ZG93blwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmI4XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDY0XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzM0NlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJhcnJvd3JpZ2h0XCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInJpZ2h0XCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YjVcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNjFcclxuICAgIH0sXHJcblx0XHR7XHJcblx0XHQgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzQ2XCIsXHJcblx0XHQgIFwibmFtZVwiOiBcImFycm93cmlnaHRcIixcclxuXHRcdCAgXCJmb250X2NsYXNzXCI6IFwiYXJyb3dyaWdodFwiLFxyXG5cdFx0ICBcInVuaWNvZGVcIjogXCJlNmI1XCIsXHJcblx0XHQgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDYxXHJcblx0XHR9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzM0N1wiLFxyXG4gICAgICBcIm5hbWVcIjogXCJhcnJvd3VwXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInRvcFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmI2XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDYyXHJcbiAgICB9LFxyXG5cdFx0e1xyXG5cdFx0ICBcImljb25faWRcIjogXCIyNDkyMzM0N1wiLFxyXG5cdFx0ICBcIm5hbWVcIjogXCJhcnJvd3VwXCIsXHJcblx0XHQgIFwiZm9udF9jbGFzc1wiOiBcImFycm93dXBcIixcclxuXHRcdCAgXCJ1bmljb2RlXCI6IFwiZTZiNlwiLFxyXG5cdFx0ICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA2MlxyXG5cdFx0fSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzNDhcIixcclxuICAgICAgXCJuYW1lXCI6IFwiYXJyb3dsZWZ0XCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImxlZnRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZiN1wiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA2M1xyXG4gICAgfSxcclxuXHRcdHtcclxuXHRcdCAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzNDhcIixcclxuXHRcdCAgXCJuYW1lXCI6IFwiYXJyb3dsZWZ0XCIsXHJcblx0XHQgIFwiZm9udF9jbGFzc1wiOiBcImFycm93bGVmdFwiLFxyXG5cdFx0ICBcInVuaWNvZGVcIjogXCJlNmI3XCIsXHJcblx0XHQgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDYzXHJcblx0XHR9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzMzNFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJleWVcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZXllXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NTFcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NjFcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzM1XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImV5ZS1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZXllLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjZhXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTg2XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzMzNlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJleWUtc2xhc2hcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZXllLXNsYXNoXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YjNcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNTlcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzM3XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImV5ZS1zbGFzaC1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZXllLXNsYXNoLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmI0XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDYwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzMwNVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJpbmZvLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJpbmZvLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjQ5XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTUzXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzI5OVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJyZWxvYWQtMDFcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicmVsb2FkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YjJcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNThcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMTk1XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcIm1pY19zbGFzaF9maWxsXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm1pY29mZi1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZiMFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA1NlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMxNjVcIixcclxuICAgICAgXCJuYW1lXCI6IFwibWFwLXBpbi1lbGxpcHNlXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm1hcC1waW4tZWxsaXBzZVwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmFjXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDUyXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzE2NlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJtYXAtcGluXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm1hcC1waW5cIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZhZFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA1M1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMxNjdcIixcclxuICAgICAgXCJuYW1lXCI6IFwibG9jYXRpb25cIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibG9jYXRpb25cIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZhZVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA1NFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMwNjRcIixcclxuICAgICAgXCJuYW1lXCI6IFwic3RhcmhhbGZcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwic3RhcmhhbGZcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY4M1wiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAxMVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMwNjVcIixcclxuICAgICAgXCJuYW1lXCI6IFwic3RhclwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJzdGFyXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2ODhcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMTZcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMDY2XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInN0YXItZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInN0YXItZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OGZcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMjNcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NjQ2XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImEtcmlsaWRha2FcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY2FsZW5kYXJcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZhMFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA0MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk2NDdcIixcclxuICAgICAgXCJuYW1lXCI6IFwiZmlyZVwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJmaXJlXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YTFcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNDFcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NjQ4XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInBhaWhhbmdiYW5nXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm1lZGFsXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YTJcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNDJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NjQ5XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImZvbnRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZm9udFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmEzXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDQzXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg5OTY1MFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJnaWZ0XCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImdpZnRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZhNFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA0NFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk2NTFcIixcclxuICAgICAgXCJuYW1lXCI6IFwibGlua1wiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJsaW5rXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YTVcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNDVcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NjUyXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcIm5vdGlmaWNhdGlvblwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJub3RpZmljYXRpb25cIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZhNlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA0NlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk2NTNcIixcclxuICAgICAgXCJuYW1lXCI6IFwic3RhZmZcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwic3RhZmZcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZhN1wiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA0N1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk2NTRcIixcclxuICAgICAgXCJuYW1lXCI6IFwiVklQXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInZpcFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmE4XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDQ4XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg5OTY1NVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJmb2xkZXJfYWRkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImZvbGRlci1hZGRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZhOVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA0OVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk2NTZcIixcclxuICAgICAgXCJuYW1lXCI6IFwidHVuZVwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJ0dW5lXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YWFcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNTBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NjU3XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInNoaW1pbmdyZW56aGVuZ1wiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJhdXRoXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YWJcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNTFcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NTY1XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInBlcnNvblwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJwZXJzb25cIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY5OVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAzM1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk1NjZcIixcclxuICAgICAgXCJuYW1lXCI6IFwiZW1haWwtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImVtYWlsLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjlhXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDM0XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg5OTU2N1wiLFxyXG4gICAgICBcIm5hbWVcIjogXCJwaG9uZS1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicGhvbmUtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OWJcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMzVcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NTY4XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInBob25lXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInBob25lXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OWNcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMzZcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NTcwXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImVtYWlsXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImVtYWlsXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OWVcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMzhcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NTcxXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInBlcnNvbmFkZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJwZXJzb25hZGRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY5ZlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAzOVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk1NThcIixcclxuICAgICAgXCJuYW1lXCI6IFwiY2hhdGJveGVzLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjaGF0Ym94ZXMtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OTJcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMjZcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NTU5XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImNvbnRhY3RcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY29udGFjdFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjkzXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDI3XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg5OTU2MFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJjaGF0YnViYmxlLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjaGF0YnViYmxlLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjk0XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDI4XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg5OTU2MVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJjb250YWN0LWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjb250YWN0LWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjk1XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDI5XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg5OTU2MlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJjaGF0Ym94ZXNcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY2hhdGJveGVzXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OTZcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMzBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NTYzXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImNoYXRidWJibGVcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY2hhdGJ1YmJsZVwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjk3XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDMxXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg4MTI5MFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJ1cGxvYWQtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInVwbG9hZC1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY4ZVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAyMlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4ODEyOTJcIixcclxuICAgICAgXCJuYW1lXCI6IFwidXBsb2FkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInVwbG9hZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjkwXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDI0XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg4MTI5M1wiLFxyXG4gICAgICBcIm5hbWVcIjogXCJ3ZWl4aW5cIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwid2VpeGluXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OTFcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMjVcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODgxMjc0XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImNvbXBvc2VcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY29tcG9zZVwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjdmXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDA3XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg4MTI3NVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJxcVwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJxcVwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjgwXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDA4XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg4MTI3NlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJkb3dubG9hZC1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZG93bmxvYWQtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2ODFcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMDlcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODgxMjc3XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInBlbmd5b3VxdWFuXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInB5cVwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjgyXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDEwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg4MTI3OVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJzb3VuZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJzb3VuZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjg0XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDEyXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg4MTI4MFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJ0cmFzaC1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwidHJhc2gtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2ODVcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMTNcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODgxMjgxXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInNvdW5kLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJzb3VuZC1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY4NlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAxNFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4ODEyODJcIixcclxuICAgICAgXCJuYW1lXCI6IFwidHJhc2hcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwidHJhc2hcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY4N1wiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAxNVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4ODEyODRcIixcclxuICAgICAgXCJuYW1lXCI6IFwidmlkZW9jYW0tZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInZpZGVvY2FtLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjg5XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDE3XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg4MTI4NVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJzcGlubmVyLWN5Y2xlXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInNwaW5uZXItY3ljbGVcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY4YVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAxOFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4ODEyODZcIixcclxuICAgICAgXCJuYW1lXCI6IFwid2VpYm9cIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwid2VpYm9cIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY4YlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAxOVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4ODEyODhcIixcclxuICAgICAgXCJuYW1lXCI6IFwidmlkZW9jYW1cIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwidmlkZW9jYW1cIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY4Y1wiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAyMFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4ODEyODlcIixcclxuICAgICAgXCJuYW1lXCI6IFwiZG93bmxvYWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZG93bmxvYWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY4ZFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAyMVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk2MDFcIixcclxuICAgICAgXCJuYW1lXCI6IFwiaGVscFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJoZWxwXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NzlcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMDFcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODc5NjAyXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcIm5hdmlnYXRlLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJuYXZpZ2F0ZS1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY3YVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAwMlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk2MDNcIixcclxuICAgICAgXCJuYW1lXCI6IFwicGx1c2VtcHR5XCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInBsdXNlbXB0eVwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjdiXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDAzXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg3OTYwNFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJzbWFsbGNpcmNsZVwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJzbWFsbGNpcmNsZVwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjdjXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDA0XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg3OTYwNVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJtaW51cy1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibWludXMtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2N2RcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMDVcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODc5NjA2XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcIm1pY29mZlwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJtaWNvZmZcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY3ZVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAwNlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk1ODhcIixcclxuICAgICAgXCJuYW1lXCI6IFwiY2xvc2VlbXB0eVwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjbG9zZWVtcHR5XCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NmNcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5ODhcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODc5NTg5XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImNsZWFyXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNsZWFyXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NmRcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5ODlcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODc5NTkwXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcIm5hdmlnYXRlXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm5hdmlnYXRlXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NmVcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5OTBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODc5NTkxXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcIm1pbnVzXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm1pbnVzXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NmZcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5OTFcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODc5NTkyXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImltYWdlXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImltYWdlXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NzBcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5OTJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODc5NTkzXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcIm1pY1wiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJtaWNcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY3MVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk5M1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk1OTRcIixcclxuICAgICAgXCJuYW1lXCI6IFwicGFwZXJwbGFuZVwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJwYXBlcnBsYW5lXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NzJcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5OTRcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODc5NTk1XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImNsb3NlXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNsb3NlXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NzNcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5OTVcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODc5NTk2XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImhlbHAtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImhlbHAtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NzRcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5OTZcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODc5NTk3XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInBsdXMtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInBhcGVycGxhbmUtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NzVcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5OTdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODc5NTk4XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInBsdXNcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicGx1c1wiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjc2XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTk4XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg3OTU5OVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJtaWMtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm1pYy1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY3N1wiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk5OVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk2MDBcIixcclxuICAgICAgXCJuYW1lXCI6IFwiaW1hZ2UtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImltYWdlLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjc4XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDAwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTkwMFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJsb2NrZWQtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImxvY2tlZC1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY2OFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk4NFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU5MDFcIixcclxuICAgICAgXCJuYW1lXCI6IFwiaW5mb1wiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJpbmZvXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NjlcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5ODVcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1OTAzXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImxvY2tlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJsb2NrZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY2YlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk4N1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4ODRcIixcclxuICAgICAgXCJuYW1lXCI6IFwiY2FtZXJhLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjYW1lcmEtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NThcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NjhcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODg1XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImNoYXQtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNoYXQtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NTlcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NjlcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODg2XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImNhbWVyYVwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjYW1lcmFcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY1YVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk3MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4ODdcIixcclxuICAgICAgXCJuYW1lXCI6IFwiY2lyY2xlXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNpcmNsZVwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjViXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTcxXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTg4OFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJjaGVja21hcmtlbXB0eVwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjaGVja21hcmtlbXB0eVwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjVjXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTcyXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTg4OVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJjaGF0XCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNoYXRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY1ZFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk3M1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4OTBcIixcclxuICAgICAgXCJuYW1lXCI6IFwiY2lyY2xlLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjaXJjbGUtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NWVcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NzRcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODkxXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImZsYWdcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZmxhZ1wiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjVmXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTc1XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTg5MlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJmbGFnLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJmbGFnLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjYwXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTc2XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTg5M1wiLFxyXG4gICAgICBcIm5hbWVcIjogXCJnZWFyLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJnZWFyLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjYxXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTc3XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTg5NFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJob21lXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImhvbWVcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY2MlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk3OFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4OTVcIixcclxuICAgICAgXCJuYW1lXCI6IFwiaG9tZS1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiaG9tZS1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY2M1wiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk3OVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4OTZcIixcclxuICAgICAgXCJuYW1lXCI6IFwiZ2VhclwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJnZWFyXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NjRcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5ODBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODk3XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInNtYWxsY2lyY2xlLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJzbWFsbGNpcmNsZS1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY2NVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk4MVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4OThcIixcclxuICAgICAgXCJuYW1lXCI6IFwibWFwLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJtYXAtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NjZcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5ODJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODk5XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcIm1hcFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJtYXBcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY2N1wiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk4M1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4MjVcIixcclxuICAgICAgXCJuYW1lXCI6IFwicmVmcmVzaC1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicmVmcmVzaC1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY1NlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk2NlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4MjZcIixcclxuICAgICAgXCJuYW1lXCI6IFwicmVmcmVzaFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJyZWZyZXNoXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NTdcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NjdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODA4XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImNsb3VkLXVwbG9hZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjbG91ZC11cGxvYWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY0NVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk0OVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4MDlcIixcclxuICAgICAgXCJuYW1lXCI6IFwiY2xvdWQtZG93bmxvYWQtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNsb3VkLWRvd25sb2FkLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjQ2XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTUwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTgxMFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJjbG91ZC1kb3dubG9hZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjbG91ZC1kb3dubG9hZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjQ3XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTUxXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTgxMVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJjbG91ZC11cGxvYWQtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNsb3VkLXVwbG9hZC1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY0OFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk1MlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4MTNcIixcclxuICAgICAgXCJuYW1lXCI6IFwicmVkb1wiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJyZWRvXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NGFcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NTRcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODE0XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImltYWdlcy1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiaW1hZ2VzLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjRiXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTU1XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTgxNVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJ1bmRvLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJ1bmRvLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjRjXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTU2XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTgxNlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJtb3JlXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm1vcmVcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY0ZFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk1N1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4MTdcIixcclxuICAgICAgXCJuYW1lXCI6IFwibW9yZS1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibW9yZS1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY0ZVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk1OFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4MThcIixcclxuICAgICAgXCJuYW1lXCI6IFwidW5kb1wiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJ1bmRvXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NGZcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NTlcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODE5XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImltYWdlc1wiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJpbWFnZXNcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY1MFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk2MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4MjFcIixcclxuICAgICAgXCJuYW1lXCI6IFwicGFwZXJjbGlwXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInBhcGVyY2xpcFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjUyXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTYyXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTgyMlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJzZXR0aW5nc1wiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJzZXR0aW5nc1wiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjUzXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTYzXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTgyM1wiLFxyXG4gICAgICBcIm5hbWVcIjogXCJzZWFyY2hcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwic2VhcmNoXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NTRcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NjRcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODI0XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInJlZG8tZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInJlZG8tZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NTVcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NjVcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODQxNzAyXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImxpc3RcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibGlzdFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjQ0XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTQ4XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg0MTQ4OVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJtYWlsLW9wZW4tZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm1haWwtb3Blbi1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTYzYVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODkzOFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NDE0OTFcIixcclxuICAgICAgXCJuYW1lXCI6IFwiaGFuZC10aHVtYnNkb3duLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJoYW5kLWRvd24tZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2M2NcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NDBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODQxNDkyXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImhhbmQtdGh1bWJzZG93blwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJoYW5kLWRvd25cIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTYzZFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk0MVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NDE0OTNcIixcclxuICAgICAgXCJuYW1lXCI6IFwiaGFuZC10aHVtYnN1cC1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiaGFuZC11cC1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTYzZVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk0MlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NDE0OTRcIixcclxuICAgICAgXCJuYW1lXCI6IFwiaGFuZC10aHVtYnN1cFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJoYW5kLXVwXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2M2ZcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NDNcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODQxNDk2XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImhlYXJ0LWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJoZWFydC1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY0MVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk0NVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NDE0OThcIixcclxuICAgICAgXCJuYW1lXCI6IFwibWFpbC1vcGVuXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm1haWwtb3BlblwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjQzXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTQ3XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg0MTQ4OFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJoZWFydFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJoZWFydFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjM5XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTM3XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDgzOTk2M1wiLFxyXG4gICAgICBcIm5hbWVcIjogXCJsb29wXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImxvb3BcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTYzM1wiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODkzMVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Mzk4NjZcIixcclxuICAgICAgXCJuYW1lXCI6IFwicHVsbGRvd25cIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicHVsbGRvd25cIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTYzMlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODkzMFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4MTM3OThcIixcclxuICAgICAgXCJuYW1lXCI6IFwic2NhblwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJzY2FuXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2MmFcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5MjJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODEzNzg2XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImJhcnNcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiYmFyc1wiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjI3XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTE5XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDgxMzc4OFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJjYXJ0LWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjYXJ0LWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjI5XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTIxXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDgxMzc5MFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJjaGVja2JveFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjaGVja2JveFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjJiXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTIzXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDgxMzc5MVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJjaGVja2JveC1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY2hlY2tib3gtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2MmNcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5MjRcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODEzNzk0XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInNob3BcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwic2hvcFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjJmXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTI3XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDgxMzc5NVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJoZWFkcGhvbmVzXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImhlYWRwaG9uZXNcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTYzMFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODkyOFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4MTM3OTZcIixcclxuICAgICAgXCJuYW1lXCI6IFwiY2FydFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjYXJ0XCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2MzFcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5MjlcclxuICAgIH1cclxuICBdXHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==
\ No newline at end of file
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vRDovSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3VuaS1tcC10b3V0aWFvL2Rpc3QvaW5kZXguanMiLCJ1bmktYXBwOi8vL0Q6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL3dlYnBhY2svYnVpbGRpbi9nbG9iYWwuanMiLCJ1bmktYXBwOi8vL0Q6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvbXAtdnVlL2Rpc3QvbXAucnVudGltZS5lc20uanMiLCJ1bmktYXBwOi8vL0Q6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby91bmktaTE4bi9kaXN0L3VuaS1pMThuLmVzLmpzIiwidW5pLWFwcDovLy9EOi9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qcyIsInVuaS1hcHA6Ly8vc3RvcmUvaW5kZXguanMiLCJ1bmktYXBwOi8vL0Q6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVleDMvZGlzdC92dWV4LmNvbW1vbi5qcyIsInVuaS1hcHA6Ly8vRDovSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3IvaW5kZXguanMiLCJ1bmktYXBwOi8vL0Q6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS1tb2R1bGUuanMiLCJ1bmktYXBwOi8vL0Q6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcyIsInVuaS1hcHA6Ly8vYXBpL2luZGV4LmpzIiwidW5pLWFwcDovLy91dGlscy9yZXF1ZXN0LmpzIiwidW5pLWFwcDovLy9ub2RlX21vZHVsZXMvYXhpb3MvaW5kZXguanMiLCJ1bmktYXBwOi8vL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYXhpb3MuanMiLCJ1bmktYXBwOi8vL25vZGVfbW9kdWxlcy9heGlvcy9saWIvdXRpbHMuanMiLCJ1bmktYXBwOi8vL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9iaW5kLmpzIiwidW5pLWFwcDovLy9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvQXhpb3MuanMiLCJ1bmktYXBwOi8vL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9idWlsZFVSTC5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL0ludGVyY2VwdG9yTWFuYWdlci5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL2Rpc3BhdGNoUmVxdWVzdC5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL3RyYW5zZm9ybURhdGEuanMiLCJ1bmktYXBwOi8vL25vZGVfbW9kdWxlcy9heGlvcy9saWIvZGVmYXVsdHMvaW5kZXguanMiLCJ1bmktYXBwOi8vL0Q6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL25vZGUtbGlicy1icm93c2VyL21vY2svcHJvY2Vzcy5qcyIsInVuaS1hcHA6Ly8vRDovSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvcGF0aC1icm93c2VyaWZ5L2luZGV4LmpzIiwidW5pLWFwcDovLy9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvbm9ybWFsaXplSGVhZGVyTmFtZS5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL2VuaGFuY2VFcnJvci5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9kZWZhdWx0cy90cmFuc2l0aW9uYWwuanMiLCJ1bmktYXBwOi8vL25vZGVfbW9kdWxlcy9heGlvcy9saWIvYWRhcHRlcnMveGhyLmpzIiwidW5pLWFwcDovLy9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvc2V0dGxlLmpzIiwidW5pLWFwcDovLy9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvY3JlYXRlRXJyb3IuanMiLCJ1bmktYXBwOi8vL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb29raWVzLmpzIiwidW5pLWFwcDovLy9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NvcmUvYnVpbGRGdWxsUGF0aC5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzQWJzb2x1dGVVUkwuanMiLCJ1bmktYXBwOi8vL25vZGVfbW9kdWxlcy9heGlvcy9saWIvaGVscGVycy9jb21iaW5lVVJMcy5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3BhcnNlSGVhZGVycy5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzVVJMU2FtZU9yaWdpbi5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jYW5jZWwvQ2FuY2VsLmpzIiwidW5pLWFwcDovLy9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9pc0NhbmNlbC5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9jb3JlL21lcmdlQ29uZmlnLmpzIiwidW5pLWFwcDovLy9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2hlbHBlcnMvdmFsaWRhdG9yLmpzIiwidW5pLWFwcDovLy9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2Vudi9kYXRhLmpzIiwidW5pLWFwcDovLy9ub2RlX21vZHVsZXMvYXhpb3MvbGliL2NhbmNlbC9DYW5jZWxUb2tlbi5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL3NwcmVhZC5qcyIsInVuaS1hcHA6Ly8vbm9kZV9tb2R1bGVzL2F4aW9zL2xpYi9oZWxwZXJzL2lzQXhpb3NFcnJvci5qcyIsInVuaS1hcHA6Ly8vRDovSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvcXMvbGliL2luZGV4LmpzIiwidW5pLWFwcDovLy9EOi9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9xcy9saWIvc3RyaW5naWZ5LmpzIiwidW5pLWFwcDovLy9EOi9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9xcy9saWIvdXRpbHMuanMiLCJ1bmktYXBwOi8vL0Q6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL3FzL2xpYi9mb3JtYXRzLmpzIiwidW5pLWFwcDovLy9EOi9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9xcy9saWIvcGFyc2UuanMiLCJ1bmktYXBwOi8vL2FwaS9jcmVhdG9yLmpzIiwidW5pLWFwcDovLy9hcGkvbXlDb2xsZWN0aW9uLmpzIiwidW5pLWFwcDovLy91bmlfbW9kdWxlcy91bmktc2VhcmNoLWJhci9jb21wb25lbnRzL3VuaS1zZWFyY2gtYmFyL2kxOG4vaW5kZXguanMiLCJ1bmktYXBwOi8vL3VuaV9tb2R1bGVzL3VuaS1pY29ucy9jb21wb25lbnRzL3VuaS1pY29ucy9pY29ucy5qcyJdLCJuYW1lcyI6WyJyZWFsQXRvYiIsImI2NCIsImI2NHJlIiwiYXRvYiIsInN0ciIsIlN0cmluZyIsInJlcGxhY2UiLCJ0ZXN0IiwiRXJyb3IiLCJzbGljZSIsImxlbmd0aCIsImJpdG1hcCIsInJlc3VsdCIsInIxIiwicjIiLCJpIiwiaW5kZXhPZiIsImNoYXJBdCIsImZyb21DaGFyQ29kZSIsImI2NERlY29kZVVuaWNvZGUiLCJkZWNvZGVVUklDb21wb25lbnQiLCJzcGxpdCIsIm1hcCIsImMiLCJjaGFyQ29kZUF0IiwidG9TdHJpbmciLCJqb2luIiwiZ2V0Q3VycmVudFVzZXJJbmZvIiwidG9rZW4iLCJ0dCIsImdldFN0b3JhZ2VTeW5jIiwidG9rZW5BcnIiLCJ1aWQiLCJyb2xlIiwicGVybWlzc2lvbiIsInRva2VuRXhwaXJlZCIsInVzZXJJbmZvIiwiSlNPTiIsInBhcnNlIiwiZXJyb3IiLCJtZXNzYWdlIiwiZXhwIiwiaWF0IiwidW5pSWRNaXhpbiIsIlZ1ZSIsInByb3RvdHlwZSIsInVuaUlESGFzUm9sZSIsInJvbGVJZCIsInVuaUlESGFzUGVybWlzc2lvbiIsInBlcm1pc3Npb25JZCIsInVuaUlEVG9rZW5WYWxpZCIsIkRhdGUiLCJub3ciLCJfdG9TdHJpbmciLCJPYmplY3QiLCJoYXNPd25Qcm9wZXJ0eSIsImlzRm4iLCJmbiIsImlzU3RyIiwiaXNQbGFpbk9iamVjdCIsIm9iaiIsImNhbGwiLCJoYXNPd24iLCJrZXkiLCJub29wIiwiY2FjaGVkIiwiY2FjaGUiLCJjcmVhdGUiLCJjYWNoZWRGbiIsImhpdCIsImNhbWVsaXplUkUiLCJjYW1lbGl6ZSIsIl8iLCJ0b1VwcGVyQ2FzZSIsIkhPT0tTIiwiZ2xvYmFsSW50ZXJjZXB0b3JzIiwic2NvcGVkSW50ZXJjZXB0b3JzIiwibWVyZ2VIb29rIiwicGFyZW50VmFsIiwiY2hpbGRWYWwiLCJyZXMiLCJjb25jYXQiLCJBcnJheSIsImlzQXJyYXkiLCJkZWR1cGVIb29rcyIsImhvb2tzIiwicHVzaCIsInJlbW92ZUhvb2siLCJob29rIiwiaW5kZXgiLCJzcGxpY2UiLCJtZXJnZUludGVyY2VwdG9ySG9vayIsImludGVyY2VwdG9yIiwib3B0aW9uIiwia2V5cyIsImZvckVhY2giLCJyZW1vdmVJbnRlcmNlcHRvckhvb2siLCJhZGRJbnRlcmNlcHRvciIsIm1ldGhvZCIsInJlbW92ZUludGVyY2VwdG9yIiwid3JhcHBlckhvb2siLCJkYXRhIiwiaXNQcm9taXNlIiwidGhlbiIsInF1ZXVlIiwicHJvbWlzZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiY2FsbGJhY2siLCJ3cmFwcGVyT3B0aW9ucyIsIm9wdGlvbnMiLCJuYW1lIiwib2xkQ2FsbGJhY2siLCJjYWxsYmFja0ludGVyY2VwdG9yIiwid3JhcHBlclJldHVyblZhbHVlIiwicmV0dXJuVmFsdWUiLCJyZXR1cm5WYWx1ZUhvb2tzIiwiZ2V0QXBpSW50ZXJjZXB0b3JIb29rcyIsInNjb3BlZEludGVyY2VwdG9yIiwiaW52b2tlQXBpIiwiYXBpIiwicGFyYW1zIiwiaW52b2tlIiwicHJvbWlzZUludGVyY2VwdG9yIiwicmVqZWN0IiwiU1lOQ19BUElfUkUiLCJDT05URVhUX0FQSV9SRSIsIkNPTlRFWFRfQVBJX1JFX0VYQyIsIkFTWU5DX0FQSSIsIkNBTExCQUNLX0FQSV9SRSIsImlzQ29udGV4dEFwaSIsImlzU3luY0FwaSIsImlzQ2FsbGJhY2tBcGkiLCJoYW5kbGVQcm9taXNlIiwiY2F0Y2giLCJlcnIiLCJzaG91bGRQcm9taXNlIiwiZmluYWxseSIsImNvbnN0cnVjdG9yIiwidmFsdWUiLCJyZWFzb24iLCJwcm9taXNpZnkiLCJwcm9taXNlQXBpIiwic3VjY2VzcyIsImZhaWwiLCJjb21wbGV0ZSIsImFzc2lnbiIsIkVQUyIsIkJBU0VfREVWSUNFX1dJRFRIIiwiaXNJT1MiLCJkZXZpY2VXaWR0aCIsImRldmljZURQUiIsImNoZWNrRGV2aWNlV2lkdGgiLCJnZXRTeXN0ZW1JbmZvU3luYyIsInBsYXRmb3JtIiwicGl4ZWxSYXRpbyIsIndpbmRvd1dpZHRoIiwidXB4MnB4IiwibnVtYmVyIiwibmV3RGV2aWNlV2lkdGgiLCJOdW1iZXIiLCJNYXRoIiwiZmxvb3IiLCJnZXRMb2NhbGUiLCJhcHAiLCJnZXRBcHAiLCJhbGxvd0RlZmF1bHQiLCIkdm0iLCIkbG9jYWxlIiwibGFuZ3VhZ2UiLCJzZXRMb2NhbGUiLCJsb2NhbGUiLCJvbGRMb2NhbGUiLCJvbkxvY2FsZUNoYW5nZUNhbGxiYWNrcyIsIm9uTG9jYWxlQ2hhbmdlIiwiZ2xvYmFsIiwiaW50ZXJjZXB0b3JzIiwiYmFzZUFwaSIsImZyZWV6ZSIsIl9fcHJvdG9fXyIsIkV2ZW50Q2hhbm5lbCIsImlkIiwiZXZlbnRzIiwibGlzdGVuZXIiLCJlbWl0Q2FjaGUiLCJvbiIsImV2ZW50TmFtZSIsImFyZ3MiLCJmbnMiLCJvcHQiLCJhcHBseSIsImZpbHRlciIsInR5cGUiLCJfYWRkTGlzdGVuZXIiLCJfY2xlYXJDYWNoZSIsImNhY2hlQXJncyIsImVtaXQiLCJzaGlmdCIsImV2ZW50Q2hhbm5lbHMiLCJldmVudENoYW5uZWxTdGFjayIsImluaXRFdmVudENoYW5uZWwiLCJldmVudENoYW5uZWwiLCJnZXRFdmVudENoYW5uZWwiLCJuYXZpZ2F0ZVRvIiwiZnJvbUFyZ3MiLCJ0b0FyZ3MiLCJ1cmwiLCJmcm9tUmVzIiwidG9SZXMiLCJmaW5kRXhpc3RzUGFnZUluZGV4IiwicGFnZXMiLCJnZXRDdXJyZW50UGFnZXMiLCJsZW4iLCJwYWdlIiwiJHBhZ2UiLCJmdWxsUGF0aCIsInJlZGlyZWN0VG8iLCJleGlzdHMiLCJkZWx0YSIsImV4aXN0c1BhZ2VJbmRleCIsInByZXZpZXdJbWFnZSIsImN1cnJlbnRJbmRleCIsInBhcnNlSW50IiwiY3VycmVudCIsImlzTmFOIiwidXJscyIsIml0ZW0iLCJpbmRpY2F0b3IiLCJsb29wIiwiVVVJRF9LRVkiLCJkZXZpY2VJZCIsImFkZFV1aWQiLCJyYW5kb20iLCJzZXRTdG9yYWdlIiwiYWRkU2FmZUFyZWFJbnNldHMiLCJzYWZlQXJlYSIsInNhZmVBcmVhSW5zZXRzIiwidG9wIiwibGVmdCIsInJpZ2h0IiwiYm90dG9tIiwid2luZG93SGVpZ2h0IiwiZ2V0U3lzdGVtSW5mbyIsIm9OYW1lIiwibk5hbWUiLCJnZXRVc2VyUHJvZmlsZSIsImNhbklVc2UiLCJ0b2RvcyIsImNhbklVc2VzIiwicHJvdG9jb2xzIiwiY2hvb3NlSW1hZ2UiLCJzaXplVHlwZSIsImNvbm5lY3RTb2NrZXQiLCJjaG9vc2VWaWRlbyIsImNhbWVyYSIsInNjYW5Db2RlIiwib25seUZyb21DYW1lcmEiLCJzY2FuVHlwZSIsInN0YXJ0QWNjZWxlcm9tZXRlciIsImludGVydmFsIiwic2hvd1RvYXN0IiwiaW1hZ2UiLCJtYXNrIiwic2hvd0xvYWRpbmciLCJzaG93TW9kYWwiLCJjYW5jZWxDb2xvciIsImNvbmZpcm1Db2xvciIsInNob3dBY3Rpb25TaGVldCIsIml0ZW1Db2xvciIsImxvZ2luIiwic2NvcGVzIiwidGltZW91dCIsImdldFVzZXJJbmZvIiwibGFuZyIsInJlcXVlc3RQYXltZW50IiwicGF5Iiwib3JkZXJJbmZvIiwiZ2V0RmlsZUluZm8iLCJkaWdlc3RBbGdvcml0aG0iLCJDQUxMQkFDS1MiLCJwcm9jZXNzQ2FsbGJhY2siLCJtZXRob2ROYW1lIiwicHJvY2Vzc1JldHVyblZhbHVlIiwicHJvY2Vzc0FyZ3MiLCJhcmdzT3B0aW9uIiwia2VlcEZyb21BcmdzIiwia2V5T3B0aW9uIiwiY29uc29sZSIsIndhcm4iLCJrZWVwUmV0dXJuVmFsdWUiLCJ3cmFwcGVyIiwicHJvdG9jb2wiLCJhcmcxIiwiYXJnMiIsInRvZG9BcGlzIiwiVE9ET1MiLCJjcmVhdGVUb2RvQXBpIiwidG9kb0FwaSIsImVyck1zZyIsInByb3ZpZGVycyIsIm9hdXRoIiwic2hhcmUiLCJwYXltZW50IiwiZ2V0UHJvdmlkZXIiLCJzZXJ2aWNlIiwicHJvdmlkZXIiLCJleHRyYUFwaSIsImdldEVtaXR0ZXIiLCJFbWl0dGVyIiwiZ2V0VW5pRW1pdHRlciIsImN0eCIsIiRvbiIsImFyZ3VtZW50cyIsIiRvZmYiLCIkb25jZSIsIiRlbWl0IiwiZXZlbnRBcGkiLCJjcmVhdGVNZWRpYVF1ZXJ5T2JzZXJ2ZXIiLCJtZWRpYVF1ZXJ5T2JzZXJ2ZXIiLCJvcmllbnRhdGlvbiIsIm9ic2VydmUiLCJtYXRjaGVzIiwiaXRlbVZhbHVlIiwiZGlzY29ubmVjdCIsIk1QUGFnZSIsIlBhZ2UiLCJNUENvbXBvbmVudCIsIkNvbXBvbmVudCIsImN1c3RvbWl6ZVJFIiwiY3VzdG9taXplIiwiaW5pdFRyaWdnZXJFdmVudCIsIm1wSW5zdGFuY2UiLCJvbGRUcmlnZ2VyRXZlbnQiLCJ0cmlnZ2VyRXZlbnQiLCJuZXdUcmlnZ2VyRXZlbnQiLCJldmVudCIsIl90cmlnZ2VyRXZlbnQiLCJpbml0SG9vayIsImlzQ29tcG9uZW50IiwibGlmZXRpbWVzIiwib2xkSG9vayIsIl9fJHdyYXBwZXJlZCIsImFmdGVyIiwiUEFHRV9FVkVOVF9IT09LUyIsImluaXRNb2NrcyIsInZtIiwibW9ja3MiLCIkbXAiLCJtcFR5cGUiLCJtb2NrIiwiaGFzSG9vayIsInZ1ZU9wdGlvbnMiLCJkZWZhdWx0IiwiZXh0ZW5kT3B0aW9ucyIsInN1cGVyIiwibWl4aW5zIiwiZmluZCIsIm1peGluIiwiaW5pdEhvb2tzIiwibXBPcHRpb25zIiwiX19jYWxsX2hvb2siLCJpbml0VnVlQ29tcG9uZW50IiwiVnVlQ29tcG9uZW50IiwiZXh0ZW5kIiwiaW5pdFNsb3RzIiwidnVlU2xvdHMiLCIkc2xvdHMiLCJzbG90TmFtZSIsIiRzY29wZWRTbG90cyIsImluaXRWdWVJZHMiLCJ2dWVJZHMiLCJfJHZ1ZUlkIiwiXyR2dWVQaWQiLCJpbml0RGF0YSIsImNvbnRleHQiLCJtZXRob2RzIiwiZSIsInByb2Nlc3MiLCJWVUVfQVBQX0RFQlVHIiwic3RyaW5naWZ5IiwiX19saWZlY3ljbGVfaG9va3NfXyIsIlBST1BfVFlQRVMiLCJCb29sZWFuIiwiY3JlYXRlT2JzZXJ2ZXIiLCJvYnNlcnZlciIsIm5ld1ZhbCIsIm9sZFZhbCIsImluaXRCZWhhdmlvcnMiLCJpbml0QmVoYXZpb3IiLCJ2dWVCZWhhdmlvcnMiLCJiZWhhdmlvcnMiLCJ2dWVFeHRlbmRzIiwiZXh0ZW5kcyIsInZ1ZU1peGlucyIsInZ1ZVByb3BzIiwicHJvcHMiLCJiZWhhdmlvciIsInByb3BlcnRpZXMiLCJpbml0UHJvcGVydGllcyIsInZ1ZU1peGluIiwicGFyc2VQcm9wVHlwZSIsImRlZmF1bHRWYWx1ZSIsImZpbGUiLCJpc0JlaGF2aW9yIiwidnVlSWQiLCJnZW5lcmljIiwic2NvcGVkU2xvdHNDb21waWxlciIsInNldERhdGEiLCJvcHRzIiwid3JhcHBlciQxIiwibXAiLCJzdG9wUHJvcGFnYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsInRhcmdldCIsImRldGFpbCIsIm1hcmtlcklkIiwiZ2V0RXh0cmFWYWx1ZSIsImRhdGFQYXRoc0FycmF5IiwiZGF0YVBhdGhBcnJheSIsImRhdGFQYXRoIiwicHJvcFBhdGgiLCJ2YWx1ZVBhdGgiLCJ2Rm9yIiwiaXNJbnRlZ2VyIiwic3Vic3RyIiwiX19nZXRfdmFsdWUiLCJ2Rm9ySXRlbSIsInZGb3JLZXkiLCJwcm9jZXNzRXZlbnRFeHRyYSIsImV4dHJhIiwiZXh0cmFPYmoiLCJfX2FyZ3NfXyIsImdldE9iakJ5QXJyYXkiLCJhcnIiLCJlbGVtZW50IiwicHJvY2Vzc0V2ZW50QXJncyIsImlzQ3VzdG9tIiwiaXNDdXN0b21NUEV2ZW50IiwiY3VycmVudFRhcmdldCIsImRhdGFzZXQiLCJjb21UeXBlIiwicmV0IiwiYXJnIiwiT05DRSIsIkNVU1RPTSIsImlzTWF0Y2hFdmVudFR5cGUiLCJldmVudFR5cGUiLCJvcHRUeXBlIiwiZ2V0Q29udGV4dFZtIiwiJHBhcmVudCIsIiRvcHRpb25zIiwiJHNjb3BlIiwiaGFuZGxlRXZlbnQiLCJldmVudE9wdHMiLCJldmVudE9wdCIsImV2ZW50c0FycmF5IiwiaXNPbmNlIiwiZXZlbnRBcnJheSIsImhhbmRsZXJDdHgiLCJoYW5kbGVyIiwib25jZSIsIm1lc3NhZ2VzIiwiaW5pdEkxOG5NZXNzYWdlcyIsImlzRW5hYmxlTG9jYWxlIiwibG9jYWxlS2V5cyIsIl9fdW5pQ29uZmlnIiwibG9jYWxlcyIsImN1ck1lc3NhZ2VzIiwidXNlck1lc3NhZ2VzIiwiaTE4biIsInQiLCJpMThuTWl4aW4iLCJiZWZvcmVDcmVhdGUiLCJ1bndhdGNoIiwid2F0Y2hMb2NhbGUiLCIkZm9yY2VVcGRhdGUiLCIkJHQiLCJ2YWx1ZXMiLCJzZXRMb2NhbGUkMSIsImdldExvY2FsZSQxIiwiaW5pdEFwcExvY2FsZSIsImFwcFZtIiwic3RhdGUiLCJvYnNlcnZhYmxlIiwibG9jYWxlV2F0Y2hlcnMiLCIkd2F0Y2hMb2NhbGUiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsInNldCIsInYiLCJ3YXRjaCIsImluaXRFdmVudENoYW5uZWwkMSIsImdldE9wZW5lckV2ZW50Q2hhbm5lbCIsIl9fZXZlbnRDaGFubmVsX18iLCJjYWxsSG9vayIsIl9faWRfXyIsImluaXRTY29wZWRTbG90c1BhcmFtcyIsImNlbnRlciIsInBhcmVudHMiLCIkaGFzU2NvcGVkU2xvdHNQYXJhbXMiLCJoYXMiLCIkZ2V0U2NvcGVkU2xvdHNQYXJhbXMiLCJvYmplY3QiLCIkc2V0U2NvcGVkU2xvdHNQYXJhbXMiLCJwcm9wc0RhdGEiLCJkZXN0cm95ZWQiLCJwYXJzZUJhc2VBcHAiLCJpbml0UmVmcyIsInN0b3JlIiwiJHN0b3JlIiwibXBIb3N0IiwiJGkxOG4iLCJfaTE4biIsImFwcE9wdGlvbnMiLCJvbkxhdW5jaCIsImdsb2JhbERhdGEiLCJfaXNNb3VudGVkIiwiZmluZFZtQnlWdWVJZCIsInZ1ZVBpZCIsIiRjaGlsZHJlbiIsImNoaWxkVm0iLCJwYXJlbnRWbSIsIkJlaGF2aW9yIiwiaGFuZGxlTGluayIsInBhcmVudCIsImlzUGFnZSIsIl9fbm9kZWlkX18iLCJfX25vZGVJZF9fIiwibWlub3JWZXJzaW9uIiwiU0RLVmVyc2lvbiIsIiRyZWZzIiwiY29tcG9uZW50cyIsInNlbGVjdEFsbENvbXBvbmVudHMiLCJjb21wb25lbnQiLCJyZWYiLCJmb3JDb21wb25lbnRzIiwiaW5zdGFuY2VzIiwiaW5pdFJlbGF0aW9uIiwibm9kZUlkIiwid2Vidmlld0lkIiwiX193ZWJ2aWV3SWRfXyIsImhhbmRsZUxpbmskMSIsIiRyb290IiwicGFyc2VBcHAiLCJfJGZhbGxiYWNrIiwiY3JlYXRlZCIsInJvdXRlIiwiX19yb3V0ZV9fIiwiX19pbml0X2luamVjdGlvbnMiLCJfX2luaXRfcHJvdmlkZSIsImNyZWF0ZUFwcCIsIkFwcCIsImVuY29kZVJlc2VydmVSRSIsImVuY29kZVJlc2VydmVSZXBsYWNlciIsImNvbW1hUkUiLCJlbmNvZGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJzdHJpbmdpZnlRdWVyeSIsImVuY29kZVN0ciIsInZhbCIsInVuZGVmaW5lZCIsInZhbDIiLCJ4IiwicGFyc2VCYXNlQ29tcG9uZW50IiwidnVlQ29tcG9uZW50T3B0aW9ucyIsIm11bHRpcGxlU2xvdHMiLCJhZGRHbG9iYWxDbGFzcyIsImNvbXBvbmVudE9wdGlvbnMiLCJfX2ZpbGUiLCJhdHRhY2hlZCIsIiRtb3VudCIsInJlYWR5IiwiZGV0YWNoZWQiLCIkZGVzdHJveSIsInBhZ2VMaWZldGltZXMiLCJzaG93IiwiaGlkZSIsInJlc2l6ZSIsInNpemUiLCJfX2wiLCJfX2UiLCJleHRlcm5hbENsYXNzZXMiLCJ3eHNDYWxsTWV0aG9kcyIsImNhbGxNZXRob2QiLCJwYXJzZUNvbXBvbmVudCIsIl9fbGlmZXRpbWVzX2F0dGFjaGVkIiwiaG9va3MkMSIsInBhcnNlQmFzZVBhZ2UiLCJ2dWVQYWdlT3B0aW9ucyIsInBhZ2VPcHRpb25zIiwib25Mb2FkIiwicXVlcnkiLCJjb3B5UXVlcnkiLCJpcyIsInBhcnNlUGFnZSIsImNyZWF0ZVBhZ2UiLCJjcmVhdGVDb21wb25lbnQiLCJjcmVhdGVTdWJwYWNrYWdlQXBwIiwib25TaG93Iiwib25BcHBTaG93Iiwib25IaWRlIiwib25BcHBIaWRlIiwiZ2V0TGF1bmNoT3B0aW9uc1N5bmMiLCJjcmVhdGVQbHVnaW4iLCJjYW5JVXNlQXBpIiwiYXBpTmFtZSIsInVuaSIsIlByb3h5IiwidW5pJDEiLCJpc09iamVjdCIsImRlZmF1bHREZWxpbWl0ZXJzIiwiQmFzZUZvcm1hdHRlciIsIl9jYWNoZXMiLCJkZWxpbWl0ZXJzIiwidG9rZW5zIiwiY29tcGlsZSIsIlJFX1RPS0VOX0xJU1RfVkFMVUUiLCJSRV9UT0tFTl9OQU1FRF9WQUxVRSIsImZvcm1hdCIsInN0YXJ0RGVsaW1pdGVyIiwiZW5kRGVsaW1pdGVyIiwicG9zaXRpb24iLCJ0ZXh0IiwiY2hhciIsInN1YiIsImlzQ2xvc2VkIiwiY29tcGlsZWQiLCJtb2RlIiwiTE9DQUxFX1pIX0hBTlMiLCJMT0NBTEVfWkhfSEFOVCIsIkxPQ0FMRV9FTiIsIkxPQ0FMRV9GUiIsIkxPQ0FMRV9FUyIsImRlZmF1bHRGb3JtYXR0ZXIiLCJpbmNsdWRlIiwicGFydHMiLCJwYXJ0Iiwic3RhcnRzV2l0aCIsIm5vcm1hbGl6ZUxvY2FsZSIsInRyaW0iLCJ0b0xvd2VyQ2FzZSIsIkkxOG4iLCJmYWxsYmFja0xvY2FsZSIsIndhdGNoZXIiLCJmb3JtYXRlciIsIndhdGNoZXJzIiwib3ZlcnJpZGUiLCJpbnRlcnBvbGF0ZSIsIndhdGNoQXBwTG9jYWxlIiwibmV3TG9jYWxlIiwiJHdhdGNoIiwiZ2V0RGVmYXVsdExvY2FsZSIsImluaXRWdWVJMThuIiwiaXNXYXRjaGVkQXBwTG9jYWxlIiwiZiIsImFkZCIsImlzU3RyaW5nIiwiaGFzSTE4bkpzb24iLCJqc29uT2JqIiwid2Fsa0pzb25PYmoiLCJpc0kxOG5TdHIiLCJwYXJzZUkxOG5Kc29uIiwiY29tcGlsZVN0ciIsImNvbXBpbGVJMThuSnNvblN0ciIsImpzb25TdHIiLCJsb2NhbGVWYWx1ZXMiLCJ1bnNoaWZ0IiwiY29tcGlsZUpzb25PYmoiLCJjb21waWxlVmFsdWUiLCJ2YWx1ZUxvY2FsZXMiLCJsb2NhbFZhbHVlIiwid2FsayIsInJlc29sdmVMb2NhbGUiLCJyZXNvbHZlTG9jYWxlQ2hhaW4iLCJjaGFpbiIsInBvcCIsInVzZSIsIlZ1ZXgiLCJnZXR0ZXRzIiwibXV0YXRpb25zIiwiYWN0aW9ucyIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXF1aXJlIiwic2VydmljZVRpdGxlIiwidGlrdG9rVXNlckltZ3MiLCJpbWdMaXN0cyIsInRpa3Rva1VzZXJEZXRhaWxzIiwiYXhpb3MiLCJ3aXRoQ3JlZGVudGlhbHMiLCJjcm9zc0RvbWFpbiIsImJhc2VVUkwiLCJyZXF1ZXN0IiwiY29uZmlnIiwiaGVhZGVycyIsImxvZyIsInJlc3BvbnNlIiwiZGVmYXVsdHMiLCJhZGFwdGVyIiwic2V0dGxlIiwiYnVpbGRVUkwiLCJwYXJhbXNTZXJpYWxpemVyIiwiaGVhZGVyIiwiZGF0YVR5cGUiLCJyZXNwb25zZVR5cGUiLCJzc2xWZXJpZnkiLCJzdGF0dXMiLCJzdGF0dXNDb2RlIiwidXRpbHMiLCJiaW5kIiwiQXhpb3MiLCJtZXJnZUNvbmZpZyIsImNyZWF0ZUluc3RhbmNlIiwiZGVmYXVsdENvbmZpZyIsImluc3RhbmNlIiwiaW5zdGFuY2VDb25maWciLCJDYW5jZWwiLCJDYW5jZWxUb2tlbiIsImlzQ2FuY2VsIiwiVkVSU0lPTiIsInZlcnNpb24iLCJhbGwiLCJwcm9taXNlcyIsInNwcmVhZCIsImlzQXhpb3NFcnJvciIsImlzVW5kZWZpbmVkIiwiaXNCdWZmZXIiLCJpc0FycmF5QnVmZmVyIiwiaXNGb3JtRGF0YSIsImlzQXJyYXlCdWZmZXJWaWV3IiwiQXJyYXlCdWZmZXIiLCJpc1ZpZXciLCJidWZmZXIiLCJpc051bWJlciIsImdldFByb3RvdHlwZU9mIiwiaXNEYXRlIiwiaXNGaWxlIiwiaXNCbG9iIiwiaXNGdW5jdGlvbiIsImlzU3RyZWFtIiwicGlwZSIsImlzVVJMU2VhcmNoUGFyYW1zIiwiaXNTdGFuZGFyZEJyb3dzZXJFbnYiLCJuYXZpZ2F0b3IiLCJwcm9kdWN0Iiwid2luZG93IiwiZG9jdW1lbnQiLCJsIiwibWVyZ2UiLCJhc3NpZ25WYWx1ZSIsImEiLCJiIiwidGhpc0FyZyIsInN0cmlwQk9NIiwiY29udGVudCIsIndyYXAiLCJJbnRlcmNlcHRvck1hbmFnZXIiLCJkaXNwYXRjaFJlcXVlc3QiLCJ2YWxpZGF0b3IiLCJ2YWxpZGF0b3JzIiwiY29uZmlnT3JVcmwiLCJ0cmFuc2l0aW9uYWwiLCJhc3NlcnRPcHRpb25zIiwic2lsZW50SlNPTlBhcnNpbmciLCJib29sZWFuIiwiZm9yY2VkSlNPTlBhcnNpbmciLCJjbGFyaWZ5VGltZW91dEVycm9yIiwicmVxdWVzdEludGVyY2VwdG9yQ2hhaW4iLCJzeW5jaHJvbm91c1JlcXVlc3RJbnRlcmNlcHRvcnMiLCJ1bnNoaWZ0UmVxdWVzdEludGVyY2VwdG9ycyIsInJ1bldoZW4iLCJzeW5jaHJvbm91cyIsImZ1bGZpbGxlZCIsInJlamVjdGVkIiwicmVzcG9uc2VJbnRlcmNlcHRvckNoYWluIiwicHVzaFJlc3BvbnNlSW50ZXJjZXB0b3JzIiwibmV3Q29uZmlnIiwib25GdWxmaWxsZWQiLCJvblJlamVjdGVkIiwiZ2V0VXJpIiwiZm9yRWFjaE1ldGhvZE5vRGF0YSIsImZvckVhY2hNZXRob2RXaXRoRGF0YSIsInNlcmlhbGl6ZWRQYXJhbXMiLCJzZXJpYWxpemUiLCJwYXJzZVZhbHVlIiwidG9JU09TdHJpbmciLCJoYXNobWFya0luZGV4IiwiaGFuZGxlcnMiLCJlamVjdCIsImZvckVhY2hIYW5kbGVyIiwiaCIsInRyYW5zZm9ybURhdGEiLCJ0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkIiwiY2FuY2VsVG9rZW4iLCJ0aHJvd0lmUmVxdWVzdGVkIiwic2lnbmFsIiwiYWJvcnRlZCIsInRyYW5zZm9ybVJlcXVlc3QiLCJjb21tb24iLCJjbGVhbkhlYWRlckNvbmZpZyIsIm9uQWRhcHRlclJlc29sdXRpb24iLCJ0cmFuc2Zvcm1SZXNwb25zZSIsIm9uQWRhcHRlclJlamVjdGlvbiIsInRyYW5zZm9ybSIsIm5vcm1hbGl6ZUhlYWRlck5hbWUiLCJlbmhhbmNlRXJyb3IiLCJ0cmFuc2l0aW9uYWxEZWZhdWx0cyIsIkRFRkFVTFRfQ09OVEVOVF9UWVBFIiwic2V0Q29udGVudFR5cGVJZlVuc2V0IiwiZ2V0RGVmYXVsdEFkYXB0ZXIiLCJYTUxIdHRwUmVxdWVzdCIsInN0cmluZ2lmeVNhZmVseSIsInJhd1ZhbHVlIiwicGFyc2VyIiwiZW5jb2RlciIsInN0cmljdEpTT05QYXJzaW5nIiwieHNyZkNvb2tpZU5hbWUiLCJ4c3JmSGVhZGVyTmFtZSIsIm1heENvbnRlbnRMZW5ndGgiLCJtYXhCb2R5TGVuZ3RoIiwidmFsaWRhdGVTdGF0dXMiLCJub3JtYWxpemVkTmFtZSIsInByb2Nlc3NIZWFkZXIiLCJjb2RlIiwidG9KU09OIiwiZGVzY3JpcHRpb24iLCJmaWxlTmFtZSIsImxpbmVOdW1iZXIiLCJjb2x1bW5OdW1iZXIiLCJzdGFjayIsImNvb2tpZXMiLCJidWlsZEZ1bGxQYXRoIiwicGFyc2VIZWFkZXJzIiwiaXNVUkxTYW1lT3JpZ2luIiwiY3JlYXRlRXJyb3IiLCJ4aHJBZGFwdGVyIiwiZGlzcGF0Y2hYaHJSZXF1ZXN0IiwicmVxdWVzdERhdGEiLCJyZXF1ZXN0SGVhZGVycyIsIm9uQ2FuY2VsZWQiLCJkb25lIiwidW5zdWJzY3JpYmUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiYXV0aCIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJ1bmVzY2FwZSIsIkF1dGhvcml6YXRpb24iLCJidG9hIiwib3BlbiIsIm9ubG9hZGVuZCIsInJlc3BvbnNlSGVhZGVycyIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInJlc3BvbnNlRGF0YSIsInJlc3BvbnNlVGV4dCIsInN0YXR1c1RleHQiLCJfcmVzb2x2ZSIsIl9yZWplY3QiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJoYW5kbGVMb2FkIiwicmVhZHlTdGF0ZSIsInJlc3BvbnNlVVJMIiwic2V0VGltZW91dCIsIm9uYWJvcnQiLCJoYW5kbGVBYm9ydCIsIm9uZXJyb3IiLCJoYW5kbGVFcnJvciIsIm9udGltZW91dCIsImhhbmRsZVRpbWVvdXQiLCJ0aW1lb3V0RXJyb3JNZXNzYWdlIiwieHNyZlZhbHVlIiwicmVhZCIsInNldFJlcXVlc3RIZWFkZXIiLCJvbkRvd25sb2FkUHJvZ3Jlc3MiLCJhZGRFdmVudExpc3RlbmVyIiwib25VcGxvYWRQcm9ncmVzcyIsInVwbG9hZCIsImNhbmNlbCIsImFib3J0Iiwic3Vic2NyaWJlIiwic2VuZCIsInN0YW5kYXJkQnJvd3NlckVudiIsIndyaXRlIiwiZXhwaXJlcyIsInBhdGgiLCJkb21haW4iLCJzZWN1cmUiLCJjb29raWUiLCJ0b0dNVFN0cmluZyIsIm1hdGNoIiwiUmVnRXhwIiwicmVtb3ZlIiwibm9uU3RhbmRhcmRCcm93c2VyRW52IiwiaXNBYnNvbHV0ZVVSTCIsImNvbWJpbmVVUkxzIiwicmVxdWVzdGVkVVJMIiwicmVsYXRpdmVVUkwiLCJpZ25vcmVEdXBsaWNhdGVPZiIsInBhcnNlZCIsImxpbmUiLCJtc2llIiwidXNlckFnZW50IiwidXJsUGFyc2luZ05vZGUiLCJjcmVhdGVFbGVtZW50Iiwib3JpZ2luVVJMIiwicmVzb2x2ZVVSTCIsImhyZWYiLCJzZXRBdHRyaWJ1dGUiLCJob3N0Iiwic2VhcmNoIiwiaGFzaCIsImhvc3RuYW1lIiwicG9ydCIsInBhdGhuYW1lIiwibG9jYXRpb24iLCJyZXF1ZXN0VVJMIiwiX19DQU5DRUxfXyIsImNvbmZpZzEiLCJjb25maWcyIiwiZ2V0TWVyZ2VkVmFsdWUiLCJzb3VyY2UiLCJtZXJnZURlZXBQcm9wZXJ0aWVzIiwicHJvcCIsInZhbHVlRnJvbUNvbmZpZzIiLCJkZWZhdWx0VG9Db25maWcyIiwibWVyZ2VEaXJlY3RLZXlzIiwibWVyZ2VNYXAiLCJjb21wdXRlQ29uZmlnVmFsdWUiLCJjb25maWdWYWx1ZSIsInRoaW5nIiwiZGVwcmVjYXRlZFdhcm5pbmdzIiwiZm9ybWF0TWVzc2FnZSIsImRlc2MiLCJzY2hlbWEiLCJhbGxvd1Vua25vd24iLCJUeXBlRXJyb3IiLCJleGVjdXRvciIsInJlc29sdmVQcm9taXNlIiwicHJvbWlzZUV4ZWN1dG9yIiwiX2xpc3RlbmVycyIsIm9uZnVsZmlsbGVkIiwicGF5bG9hZCIsImdldEJhbm5lckxpc3QiLCJnZXRVc2VySW1nTGlzdCIsImRldGFpbHNUaWt0b2tJbWciLCJnZXRDb2xsZWN0aW9uTGlzdCIsImVuIiwiemhIYW5zIiwiemhIYW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O21VQUFBO0FBQ0EsZ0U7O0FBRUEsSUFBSUEsUUFBSjs7QUFFQSxJQUFNQyxHQUFHLEdBQUcsbUVBQVo7QUFDQSxJQUFNQyxLQUFLLEdBQUcsc0VBQWQ7O0FBRUEsSUFBSSxPQUFPQyxJ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O0FBRXJDO0FBQ0E7QUFDQTtBQUNBLFlBQVksYUFBb0I7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLHFCQUFxQjtBQUN4QyxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssR0FBRztBQUNSO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsR0FBRztBQUNIOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxvQ0FBb0M7QUFDcEM7O0FBRUEsSUFBSSxJQUFxQztBQUN6QztBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDLHVDQUF1Qyx3QkFBd0IsRUFBRTtBQUNqRSwwQkFBMEI7O0FBRTFCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDhDQUE4QztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsWUFBWTtBQUNwQyxrQkFBa0IsWUFBWTtBQUM5QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQSx3Q0FBd0MsRUFBRTtBQUMxQztBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEtBQXFDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixvQkFBb0IsRUFBRTtBQUNyRDtBQUNBLGtDQUFrQyxPQUFPO0FBQ3pDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwwQkFBMEIsU0FBUyxxQkFBcUI7O0FBRXhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMkJBQTJCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxDQUFDOztBQUVEOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0Esb0NBQW9DO0FBQ3BDO0FBQ0EscUNBQXFDO0FBQ3JDO0FBQ0E7QUFDQSxNQUFNLEtBQXFDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFFUTtBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEtBQXFDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMkJBQTJCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEtBQXFDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxrREFBa0Q7QUFDbEQsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGlCQUFpQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEtBQXFDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCw0Q0FBNEM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7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QUNBOztBQUVBO0FBQ0Esc0VBQXNFOztBQUV0RTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssdUZBQXVGO0FBQzVGO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMENBQTBDO0FBQzFDLGlCQUFpQix5QkFBeUI7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsK0JBQStCO0FBQ2xDLG1DQUFtQztBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLEtBQXFDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sS0FBcUM7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdC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Q0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxJQUFxQztBQUMzQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBCQUEwQjs7QUFFMUIsa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIscUJBQXFCO0FBQ3hDO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLElBQXFDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3RUFBd0U7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLLE1BQU0sRUFFTjtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksS0FBcUM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUFxQztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxLQUFxQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQSw4QkFBOEI7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsUUFBUSxLQUFxQztBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxVQUFVLElBQXFDO0FBQ3BEO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxLQUFxQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLElBQXFDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsb0JBQW9CO0FBQ3pDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQSw4QkFBOEI7QUFDOUIsTUFBTSxJQUFxQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFFBQVEsS0FBcUM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUFxQztBQUM3QztBQUNBLEtBQUssTUFBTSxFQUVOO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0Esc0NBQXNDO0FBQ3RDOztBQUVBO0FBQ0EsUUFBUSxLQUFxQztBQUM3QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsZUFBZTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsTUFBTSxLQUFxQztBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzRUFBc0U7QUFDdEU7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSxLQUFxQztBQUM3QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUM7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0EsWUFBWSxLQUFxQztBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBOzs7O0FBSUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0EsMENB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Q0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsMEJBQTBCLEVBQUU7QUFDdkU7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1CQUFtQjtBQUNuQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDBCQUEwQixjQUFjLHFCQUFxQjs7QUFFN0Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsT0FBTyxJQUFxQztBQUM1QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsT0FBTyxJQUFxQztBQUM1QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLElBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRCQUE0QixvQ0FBb0MsRUFBRTtBQUNsRTtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCO0FBQzVCLHVFQUF1RSxFQUFFO0FBQ3pFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMEJBQTBCOztBQUUxQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFFBQVE7O0FBRVI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxPQUFPLElBQXFDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdDQUFnQztBQUNoQyw4QkFBOEI7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFDQUFxQyx1QkFBdUIsRUFBRTs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0QkFBNEIsU0FBUyxxQkFBcUI7O0FBRTFEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE9BQU8sSUFBcUM7QUFDNUM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsNkJBQTZCLG9DQUFvQyxFQUFFOztBQUVuRTtBQUNBLEtBQUssS0FBcUM7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0EsU0FBUyxJQUFxQztBQUM5QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsbUJBQW1CLEVBQUU7QUFDbkQsK0JBQStCLHlDQUF5QyxFQUFFO0FBQzFFLEdBQUc7QUFDSCxTQUFTLElBQXFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZ0RBQWdELHlCQUF5QixFQUFFO0FBQzNFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLGtCQUFrQixFQUFFO0FBQ3RELG1DQUFtQyx3Q0FBd0MsRUFBRTtBQUM3RSxPQUFPO0FBQ1AsYUFBYSxJQUFxQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxrQ0FBa0Msa0JBQWtCLEVBQUU7QUFDdEQsbUNBQW1DLCtDQUErQyxFQUFFO0FBQ3BGLE9BQU87QUFDUCxhQUFhLElBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHlDQUF5QyxhQUFhO0FBQ3REO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxPQUFPLElBQXFDO0FBQzVDO0FBQ0E7QUFDQSw2Q0FBNkMsNkNBQTZDLEVBQUU7QUFDNUY7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7O0FBRUEsaUNBQWlDLGVBQWU7O0FBRWhELE9BQU8sSUFBcUM7QUFDNUM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxpQ0FBaUMsZUFBZTs7QUFFaEQsT0FBTyxJQUFxQztBQUM1QztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQSxpQ0FBaUMsZUFBZTs7QUFFaEQsT0FBTyxJQUFxQztBQUM1QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsdUJBQXVCLEVBQUU7QUFDakQ7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLDhCQUE4Qix5QkFBeUIsRUFBRTtBQUN6RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0RBQWtELGFBQW9CO0FBQ3RFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLElBQXFDO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhLEtBQXFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLHNCQUFzQjtBQUM3Qyx1QkFBdUIsMkNBQTJDO0FBQ2xFLEtBQUs7QUFDTDtBQUNBLHdCQUF3QiwwQ0FBMEM7QUFDbEU7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0RBQWtEOztBQUVsRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLDRCQUE0QixFQUFFO0FBQ3hEO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnQ0FBZ0MsNEJBQTRCO0FBQzVELFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBLEdBQUcsR0FBRyx5QkFBeUI7QUFDL0I7O0FBRUE7QUFDQSw0Q0FBNEMsbUJBQW1CLEVBQUU7QUFDakU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE9BQU8sSUFBcUM7QUFDNUM7QUFDQTs7QUFFQSxVQUFVO0FBQ1Y7O0FBRUE7QUFDQTtBQUNBLFNBQVMsSUFBcUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxPQUFPLEtBQXFDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLGFBQWE7QUFDeEIsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBLE9BQU8sS0FBcUM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQSxPQUFPLEtBQXFDO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxLQUFxQztBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLGFBQWE7QUFDeEIsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBLE9BQU8sS0FBcUM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQ0Esb0RBQW9EO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxFQUFFOztBQUVIO0FBQ0E7QUFDQSxpQ0FBaUMsaUJBQWlCLEdBQUcsaUJBQWlCLEdBQUcsaUJBQWlCO0FBQzFGLGlCQUFpQixpQkFBaUIsUUFBUSxtQkFBbUIsR0FBRyxtQkFBbUIsR0FBRyxtQkFBbUI7QUFDekcsV0FBVyxhQUFhO0FBQ3hCLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsVUFBVSxxQkFBcUIsRUFBRSxFQUFFO0FBQ2pFLDJDQUEyQyxVQUFVLDBCQUEwQixFQUFFLEVBQUU7QUFDbkY7O0FBRUE7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsWUFBWTtBQUNaO0FBQ0E7QUFDQTtBQUNBLE9BQU8sS0FBcUM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLGdDQUFnQztBQUNoQywwQkFBMEIsaUZBQWlGLGFBQWE7QUFDeEgsb0NBQW9DLCtEQUErRCxjQUFjO0FBQ2pILG9EQUFvRCw2RUFBNkUsWUFBWTtBQUM3SSxzQ0FBc0MseUVBQXlFLGFBQWE7QUFDNUgsZ0RBQWdELHlFQUF5RSxZQUFZO0FBQ3JJLHNDQUFzQztBQUN0QyxrQ0FBa0M7QUFDbEMsMEJBQTBCOztBQUUxQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxzREFBc0Q7QUFDdEQsb0RBQW9EO0FBQ3BELHNEQUFzRDtBQUN0RDtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtEQUFrRDtBQUNsRDtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMzdENBNkssTUFBTSxDQUFDQyxPQUFQLEdBQWlCQyxtQkFBTyxDQUFDLDZCQUFELENBQXhCLEM7Ozs7Ozs7Ozs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxpQkFBaUIsbUJBQU8sQ0FBQyxtQkFBVzs7QUFFcEM7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7O0FDcENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLEtBQUs7QUFDTCxjQUFjO0FBQ2Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQ7QUFDekQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0EsV0FBVztBQUNYOztBQUVBO0FBQ0E7QUFDQSx3Q0FBd0MsV0FBVztBQUNuRDtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsU0FBUztBQUNUO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxvQ0FBb0MsY0FBYztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUNBQWlDLGtCQUFrQjtBQUNuRDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Es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QkFBb0I7QUFDdkM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3Q0FBd0M7O0FBRXhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7Ozs7Ozs7QUNqTmE7O0FBRWI7O0FBRUE7QUFDQTtBQUNBLG1CQUFtQixTQUFTO0FBQzVCO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsMkJBQTJCLGdCQUFnQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsbUJBQW1CLG1CQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVB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SmI7QUFLRSx1QkFBbUIsS0FMckIsRUF0bUNROztBQTZtQ1I7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLGlCQUZWO0FBR0Usa0JBQWMsaUJBSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBN21DUTs7QUFvbkNSO0FBQ0UsZUFBVyxVQURiO0FBRUUsWUFBUSxNQUZWO0FBR0Usa0JBQWMsTUFIaEI7QUFJRSxlQUFXLE1BSmI7QUFLRSx1QkFBbUIsS0FMckIsRUFwbkNROztBQTJuQ1I7QUFDRSxlQUFXLFVBRGI7QUFFRSxZQUFRLFlBRlY7QUFHRSxrQkFBYyxZQUhoQjtBQUlFLGVBQVcsTUFKYjtBQUtFLHVCQUFtQixLQUxyQixFQTNuQ1E7O0FBa29DUjtBQUNFLGVBQVcsVUFEYjtBQUVFLFlBQVEsTUFGVjtBQUdFLGtCQUFjLE1BSGhCO0FBSUUsZUFBVyxNQUpiO0FBS0UsdUJBQW1CLEtBTHJCLEVBbG9DUSxDQU5HLEUiLCJmaWxlIjoiY29tbW9uL3ZlbmRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWdWUgZnJvbSAndnVlJztcclxuaW1wb3J0IHsgaW5pdFZ1ZUkxOG4gfSBmcm9tICdAZGNsb3VkaW8vdW5pLWkxOG4nO1xyXG5cclxubGV0IHJlYWxBdG9iO1xyXG5cclxuY29uc3QgYjY0ID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89JztcclxuY29uc3QgYjY0cmUgPSAvXig/OltBLVphLXpcXGQrL117NH0pKj8oPzpbQS1aYS16XFxkKy9dezJ9KD86PT0pP3xbQS1aYS16XFxkKy9dezN9PT8pPyQvO1xyXG5cclxuaWYgKHR5cGVvZiBhdG9iICE9PSAnZnVuY3Rpb24nKSB7XHJcbiAgcmVhbEF0b2IgPSBmdW5jdGlvbiAoc3RyKSB7XHJcbiAgICBzdHIgPSBTdHJpbmcoc3RyKS5yZXBsYWNlKC9bXFx0XFxuXFxmXFxyIF0rL2csICcnKTtcclxuICAgIGlmICghYjY0cmUudGVzdChzdHIpKSB7IHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBleGVjdXRlICdhdG9iJyBvbiAnV2luZG93JzogVGhlIHN0cmluZyB0byBiZSBkZWNvZGVkIGlzIG5vdCBjb3JyZWN0bHkgZW5jb2RlZC5cIikgfVxyXG5cclxuICAgIC8vIEFkZGluZyB0aGUgcGFkZGluZyBpZiBtaXNzaW5nLCBmb3Igc2VtcGxpY2l0eVxyXG4gICAgc3RyICs9ICc9PScuc2xpY2UoMiAtIChzdHIubGVuZ3RoICYgMykpO1xyXG4gICAgdmFyIGJpdG1hcDsgdmFyIHJlc3VsdCA9ICcnOyB2YXIgcjE7IHZhciByMjsgdmFyIGkgPSAwO1xyXG4gICAgZm9yICg7IGkgPCBzdHIubGVuZ3RoOykge1xyXG4gICAgICBiaXRtYXAgPSBiNjQuaW5kZXhPZihzdHIuY2hhckF0KGkrKykpIDw8IDE4IHwgYjY0LmluZGV4T2Yoc3RyLmNoYXJBdChpKyspKSA8PCAxMiB8XHJcbiAgICAgICAgICAgICAgICAgICAgKHIxID0gYjY0LmluZGV4T2Yoc3RyLmNoYXJBdChpKyspKSkgPDwgNiB8IChyMiA9IGI2NC5pbmRleE9mKHN0ci5jaGFyQXQoaSsrKSkpO1xyXG5cclxuICAgICAgcmVzdWx0ICs9IHIxID09PSA2NCA/IFN0cmluZy5mcm9tQ2hhckNvZGUoYml0bWFwID4+IDE2ICYgMjU1KVxyXG4gICAgICAgIDogcjIgPT09IDY0ID8gU3RyaW5nLmZyb21DaGFyQ29kZShiaXRtYXAgPj4gMTYgJiAyNTUsIGJpdG1hcCA+PiA4ICYgMjU1KVxyXG4gICAgICAgICAgOiBTdHJpbmcuZnJvbUNoYXJDb2RlKGJpdG1hcCA+PiAxNiAmIDI1NSwgYml0bWFwID4+IDggJiAyNTUsIGJpdG1hcCAmIDI1NSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0XHJcbiAgfTtcclxufSBlbHNlIHtcclxuICAvLyDms6jmhI9hdG9i5Y+q6IO95Zyo5YWo5bGA5a+56LGh5LiK6LCD55So77yM5L6L5aaC77yaYGNvbnN0IEJhc2U2NCA9IHthdG9ifTtCYXNlNjQuYXRvYigneHh4eCcpYOaYr+mUmeivr+eahOeUqOazlVxyXG4gIHJlYWxBdG9iID0gYXRvYjtcclxufVxyXG5cclxuZnVuY3Rpb24gYjY0RGVjb2RlVW5pY29kZSAoc3RyKSB7XHJcbiAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChyZWFsQXRvYihzdHIpLnNwbGl0KCcnKS5tYXAoZnVuY3Rpb24gKGMpIHtcclxuICAgIHJldHVybiAnJScgKyAoJzAwJyArIGMuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKVxyXG4gIH0pLmpvaW4oJycpKVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRDdXJyZW50VXNlckluZm8gKCkge1xyXG4gIGNvbnN0IHRva2VuID0gKCB0dCkuZ2V0U3RvcmFnZVN5bmMoJ3VuaV9pZF90b2tlbicpIHx8ICcnO1xyXG4gIGNvbnN0IHRva2VuQXJyID0gdG9rZW4uc3BsaXQoJy4nKTtcclxuICBpZiAoIXRva2VuIHx8IHRva2VuQXJyLmxlbmd0aCAhPT0gMykge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdWlkOiBudWxsLFxyXG4gICAgICByb2xlOiBbXSxcclxuICAgICAgcGVybWlzc2lvbjogW10sXHJcbiAgICAgIHRva2VuRXhwaXJlZDogMFxyXG4gICAgfVxyXG4gIH1cclxuICBsZXQgdXNlckluZm87XHJcbiAgdHJ5IHtcclxuICAgIHVzZXJJbmZvID0gSlNPTi5wYXJzZShiNjREZWNvZGVVbmljb2RlKHRva2VuQXJyWzFdKSk7XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcign6I635Y+W5b2T5YmN55So5oi35L+h5oGv5Ye66ZSZ77yM6K+m57uG6ZSZ6K+v5L+h5oGv5Li677yaJyArIGVycm9yLm1lc3NhZ2UpXHJcbiAgfVxyXG4gIHVzZXJJbmZvLnRva2VuRXhwaXJlZCA9IHVzZXJJbmZvLmV4cCAqIDEwMDA7XHJcbiAgZGVsZXRlIHVzZXJJbmZvLmV4cDtcclxuICBkZWxldGUgdXNlckluZm8uaWF0O1xyXG4gIHJldHVybiB1c2VySW5mb1xyXG59XHJcblxyXG5mdW5jdGlvbiB1bmlJZE1peGluIChWdWUpIHtcclxuICBWdWUucHJvdG90eXBlLnVuaUlESGFzUm9sZSA9IGZ1bmN0aW9uIChyb2xlSWQpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgcm9sZVxyXG4gICAgfSA9IGdldEN1cnJlbnRVc2VySW5mbygpO1xyXG4gICAgcmV0dXJuIHJvbGUuaW5kZXhPZihyb2xlSWQpID4gLTFcclxuICB9O1xyXG4gIFZ1ZS5wcm90b3R5cGUudW5pSURIYXNQZXJtaXNzaW9uID0gZnVuY3Rpb24gKHBlcm1pc3Npb25JZCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBwZXJtaXNzaW9uXHJcbiAgICB9ID0gZ2V0Q3VycmVudFVzZXJJbmZvKCk7XHJcbiAgICByZXR1cm4gdGhpcy51bmlJREhhc1JvbGUoJ2FkbWluJykgfHwgcGVybWlzc2lvbi5pbmRleE9mKHBlcm1pc3Npb25JZCkgPiAtMVxyXG4gIH07XHJcbiAgVnVlLnByb3RvdHlwZS51bmlJRFRva2VuVmFsaWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHRva2VuRXhwaXJlZFxyXG4gICAgfSA9IGdldEN1cnJlbnRVc2VySW5mbygpO1xyXG4gICAgcmV0dXJuIHRva2VuRXhwaXJlZCA+IERhdGUubm93KClcclxuICB9O1xyXG59XHJcblxyXG5jb25zdCBfdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xyXG5jb25zdCBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XHJcblxyXG5mdW5jdGlvbiBpc0ZuIChmbikge1xyXG4gIHJldHVybiB0eXBlb2YgZm4gPT09ICdmdW5jdGlvbidcclxufVxyXG5cclxuZnVuY3Rpb24gaXNTdHIgKHN0cikge1xyXG4gIHJldHVybiB0eXBlb2Ygc3RyID09PSAnc3RyaW5nJ1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0IChvYmopIHtcclxuICByZXR1cm4gX3RvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgT2JqZWN0XSdcclxufVxyXG5cclxuZnVuY3Rpb24gaGFzT3duIChvYmosIGtleSkge1xyXG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KVxyXG59XHJcblxyXG5mdW5jdGlvbiBub29wICgpIHt9XHJcblxyXG4vKipcclxuICogQ3JlYXRlIGEgY2FjaGVkIHZlcnNpb24gb2YgYSBwdXJlIGZ1bmN0aW9uLlxyXG4gKi9cclxuZnVuY3Rpb24gY2FjaGVkIChmbikge1xyXG4gIGNvbnN0IGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICByZXR1cm4gZnVuY3Rpb24gY2FjaGVkRm4gKHN0cikge1xyXG4gICAgY29uc3QgaGl0ID0gY2FjaGVbc3RyXTtcclxuICAgIHJldHVybiBoaXQgfHwgKGNhY2hlW3N0cl0gPSBmbihzdHIpKVxyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIENhbWVsaXplIGEgaHlwaGVuLWRlbGltaXRlZCBzdHJpbmcuXHJcbiAqL1xyXG5jb25zdCBjYW1lbGl6ZVJFID0gLy0oXFx3KS9nO1xyXG5jb25zdCBjYW1lbGl6ZSA9IGNhY2hlZCgoc3RyKSA9PiB7XHJcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKGNhbWVsaXplUkUsIChfLCBjKSA9PiBjID8gYy50b1VwcGVyQ2FzZSgpIDogJycpXHJcbn0pO1xyXG5cclxuY29uc3QgSE9PS1MgPSBbXHJcbiAgJ2ludm9rZScsXHJcbiAgJ3N1Y2Nlc3MnLFxyXG4gICdmYWlsJyxcclxuICAnY29tcGxldGUnLFxyXG4gICdyZXR1cm5WYWx1ZSdcclxuXTtcclxuXHJcbmNvbnN0IGdsb2JhbEludGVyY2VwdG9ycyA9IHt9O1xyXG5jb25zdCBzY29wZWRJbnRlcmNlcHRvcnMgPSB7fTtcclxuXHJcbmZ1bmN0aW9uIG1lcmdlSG9vayAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xyXG4gIGNvbnN0IHJlcyA9IGNoaWxkVmFsXHJcbiAgICA/IHBhcmVudFZhbFxyXG4gICAgICA/IHBhcmVudFZhbC5jb25jYXQoY2hpbGRWYWwpXHJcbiAgICAgIDogQXJyYXkuaXNBcnJheShjaGlsZFZhbClcclxuICAgICAgICA/IGNoaWxkVmFsIDogW2NoaWxkVmFsXVxyXG4gICAgOiBwYXJlbnRWYWw7XHJcbiAgcmV0dXJuIHJlc1xyXG4gICAgPyBkZWR1cGVIb29rcyhyZXMpXHJcbiAgICA6IHJlc1xyXG59XHJcblxyXG5mdW5jdGlvbiBkZWR1cGVIb29rcyAoaG9va3MpIHtcclxuICBjb25zdCByZXMgPSBbXTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGhvb2tzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZiAocmVzLmluZGV4T2YoaG9va3NbaV0pID09PSAtMSkge1xyXG4gICAgICByZXMucHVzaChob29rc1tpXSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiByZXNcclxufVxyXG5cclxuZnVuY3Rpb24gcmVtb3ZlSG9vayAoaG9va3MsIGhvb2spIHtcclxuICBjb25zdCBpbmRleCA9IGhvb2tzLmluZGV4T2YoaG9vayk7XHJcbiAgaWYgKGluZGV4ICE9PSAtMSkge1xyXG4gICAgaG9va3Muc3BsaWNlKGluZGV4LCAxKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG1lcmdlSW50ZXJjZXB0b3JIb29rIChpbnRlcmNlcHRvciwgb3B0aW9uKSB7XHJcbiAgT2JqZWN0LmtleXMob3B0aW9uKS5mb3JFYWNoKGhvb2sgPT4ge1xyXG4gICAgaWYgKEhPT0tTLmluZGV4T2YoaG9vaykgIT09IC0xICYmIGlzRm4ob3B0aW9uW2hvb2tdKSkge1xyXG4gICAgICBpbnRlcmNlcHRvcltob29rXSA9IG1lcmdlSG9vayhpbnRlcmNlcHRvcltob29rXSwgb3B0aW9uW2hvb2tdKTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gcmVtb3ZlSW50ZXJjZXB0b3JIb29rIChpbnRlcmNlcHRvciwgb3B0aW9uKSB7XHJcbiAgaWYgKCFpbnRlcmNlcHRvciB8fCAhb3B0aW9uKSB7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgT2JqZWN0LmtleXMob3B0aW9uKS5mb3JFYWNoKGhvb2sgPT4ge1xyXG4gICAgaWYgKEhPT0tTLmluZGV4T2YoaG9vaykgIT09IC0xICYmIGlzRm4ob3B0aW9uW2hvb2tdKSkge1xyXG4gICAgICByZW1vdmVIb29rKGludGVyY2VwdG9yW2hvb2tdLCBvcHRpb25baG9va10pO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBhZGRJbnRlcmNlcHRvciAobWV0aG9kLCBvcHRpb24pIHtcclxuICBpZiAodHlwZW9mIG1ldGhvZCA9PT0gJ3N0cmluZycgJiYgaXNQbGFpbk9iamVjdChvcHRpb24pKSB7XHJcbiAgICBtZXJnZUludGVyY2VwdG9ySG9vayhzY29wZWRJbnRlcmNlcHRvcnNbbWV0aG9kXSB8fCAoc2NvcGVkSW50ZXJjZXB0b3JzW21ldGhvZF0gPSB7fSksIG9wdGlvbik7XHJcbiAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KG1ldGhvZCkpIHtcclxuICAgIG1lcmdlSW50ZXJjZXB0b3JIb29rKGdsb2JhbEludGVyY2VwdG9ycywgbWV0aG9kKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlbW92ZUludGVyY2VwdG9yIChtZXRob2QsIG9wdGlvbikge1xyXG4gIGlmICh0eXBlb2YgbWV0aG9kID09PSAnc3RyaW5nJykge1xyXG4gICAgaWYgKGlzUGxhaW5PYmplY3Qob3B0aW9uKSkge1xyXG4gICAgICByZW1vdmVJbnRlcmNlcHRvckhvb2soc2NvcGVkSW50ZXJjZXB0b3JzW21ldGhvZF0sIG9wdGlvbik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkZWxldGUgc2NvcGVkSW50ZXJjZXB0b3JzW21ldGhvZF07XHJcbiAgICB9XHJcbiAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KG1ldGhvZCkpIHtcclxuICAgIHJlbW92ZUludGVyY2VwdG9ySG9vayhnbG9iYWxJbnRlcmNlcHRvcnMsIG1ldGhvZCk7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB3cmFwcGVySG9vayAoaG9vaykge1xyXG4gIHJldHVybiBmdW5jdGlvbiAoZGF0YSkge1xyXG4gICAgcmV0dXJuIGhvb2soZGF0YSkgfHwgZGF0YVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaXNQcm9taXNlIChvYmopIHtcclxuICByZXR1cm4gISFvYmogJiYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnIHx8IHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbicpICYmIHR5cGVvZiBvYmoudGhlbiA9PT0gJ2Z1bmN0aW9uJ1xyXG59XHJcblxyXG5mdW5jdGlvbiBxdWV1ZSAoaG9va3MsIGRhdGEpIHtcclxuICBsZXQgcHJvbWlzZSA9IGZhbHNlO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaG9va3MubGVuZ3RoOyBpKyspIHtcclxuICAgIGNvbnN0IGhvb2sgPSBob29rc1tpXTtcclxuICAgIGlmIChwcm9taXNlKSB7XHJcbiAgICAgIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUod3JhcHBlckhvb2soaG9vaykpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcmVzID0gaG9vayhkYXRhKTtcclxuICAgICAgaWYgKGlzUHJvbWlzZShyZXMpKSB7XHJcbiAgICAgICAgcHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShyZXMpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZXMgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHRoZW4gKCkgeyB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBwcm9taXNlIHx8IHtcclxuICAgIHRoZW4gKGNhbGxiYWNrKSB7XHJcbiAgICAgIHJldHVybiBjYWxsYmFjayhkYXRhKVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gd3JhcHBlck9wdGlvbnMgKGludGVyY2VwdG9yLCBvcHRpb25zID0ge30pIHtcclxuICBbJ3N1Y2Nlc3MnLCAnZmFpbCcsICdjb21wbGV0ZSddLmZvckVhY2gobmFtZSA9PiB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShpbnRlcmNlcHRvcltuYW1lXSkpIHtcclxuICAgICAgY29uc3Qgb2xkQ2FsbGJhY2sgPSBvcHRpb25zW25hbWVdO1xyXG4gICAgICBvcHRpb25zW25hbWVdID0gZnVuY3Rpb24gY2FsbGJhY2tJbnRlcmNlcHRvciAocmVzKSB7XHJcbiAgICAgICAgcXVldWUoaW50ZXJjZXB0b3JbbmFtZV0sIHJlcykudGhlbigocmVzKSA9PiB7XHJcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1taXhlZC1vcGVyYXRvcnMgKi9cclxuICAgICAgICAgIHJldHVybiBpc0ZuKG9sZENhbGxiYWNrKSAmJiBvbGRDYWxsYmFjayhyZXMpIHx8IHJlc1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBvcHRpb25zXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHdyYXBwZXJSZXR1cm5WYWx1ZSAobWV0aG9kLCByZXR1cm5WYWx1ZSkge1xyXG4gIGNvbnN0IHJldHVyblZhbHVlSG9va3MgPSBbXTtcclxuICBpZiAoQXJyYXkuaXNBcnJheShnbG9iYWxJbnRlcmNlcHRvcnMucmV0dXJuVmFsdWUpKSB7XHJcbiAgICByZXR1cm5WYWx1ZUhvb2tzLnB1c2goLi4uZ2xvYmFsSW50ZXJjZXB0b3JzLnJldHVyblZhbHVlKTtcclxuICB9XHJcbiAgY29uc3QgaW50ZXJjZXB0b3IgPSBzY29wZWRJbnRlcmNlcHRvcnNbbWV0aG9kXTtcclxuICBpZiAoaW50ZXJjZXB0b3IgJiYgQXJyYXkuaXNBcnJheShpbnRlcmNlcHRvci5yZXR1cm5WYWx1ZSkpIHtcclxuICAgIHJldHVyblZhbHVlSG9va3MucHVzaCguLi5pbnRlcmNlcHRvci5yZXR1cm5WYWx1ZSk7XHJcbiAgfVxyXG4gIHJldHVyblZhbHVlSG9va3MuZm9yRWFjaChob29rID0+IHtcclxuICAgIHJldHVyblZhbHVlID0gaG9vayhyZXR1cm5WYWx1ZSkgfHwgcmV0dXJuVmFsdWU7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHJldHVyblZhbHVlXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEFwaUludGVyY2VwdG9ySG9va3MgKG1ldGhvZCkge1xyXG4gIGNvbnN0IGludGVyY2VwdG9yID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICBPYmplY3Qua2V5cyhnbG9iYWxJbnRlcmNlcHRvcnMpLmZvckVhY2goaG9vayA9PiB7XHJcbiAgICBpZiAoaG9vayAhPT0gJ3JldHVyblZhbHVlJykge1xyXG4gICAgICBpbnRlcmNlcHRvcltob29rXSA9IGdsb2JhbEludGVyY2VwdG9yc1tob29rXS5zbGljZSgpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIGNvbnN0IHNjb3BlZEludGVyY2VwdG9yID0gc2NvcGVkSW50ZXJjZXB0b3JzW21ldGhvZF07XHJcbiAgaWYgKHNjb3BlZEludGVyY2VwdG9yKSB7XHJcbiAgICBPYmplY3Qua2V5cyhzY29wZWRJbnRlcmNlcHRvcikuZm9yRWFjaChob29rID0+IHtcclxuICAgICAgaWYgKGhvb2sgIT09ICdyZXR1cm5WYWx1ZScpIHtcclxuICAgICAgICBpbnRlcmNlcHRvcltob29rXSA9IChpbnRlcmNlcHRvcltob29rXSB8fCBbXSkuY29uY2F0KHNjb3BlZEludGVyY2VwdG9yW2hvb2tdKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJldHVybiBpbnRlcmNlcHRvclxyXG59XHJcblxyXG5mdW5jdGlvbiBpbnZva2VBcGkgKG1ldGhvZCwgYXBpLCBvcHRpb25zLCAuLi5wYXJhbXMpIHtcclxuICBjb25zdCBpbnRlcmNlcHRvciA9IGdldEFwaUludGVyY2VwdG9ySG9va3MobWV0aG9kKTtcclxuICBpZiAoaW50ZXJjZXB0b3IgJiYgT2JqZWN0LmtleXMoaW50ZXJjZXB0b3IpLmxlbmd0aCkge1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaW50ZXJjZXB0b3IuaW52b2tlKSkge1xyXG4gICAgICBjb25zdCByZXMgPSBxdWV1ZShpbnRlcmNlcHRvci5pbnZva2UsIG9wdGlvbnMpO1xyXG4gICAgICByZXR1cm4gcmVzLnRoZW4oKG9wdGlvbnMpID0+IHtcclxuICAgICAgICByZXR1cm4gYXBpKHdyYXBwZXJPcHRpb25zKGludGVyY2VwdG9yLCBvcHRpb25zKSwgLi4ucGFyYW1zKVxyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGFwaSh3cmFwcGVyT3B0aW9ucyhpbnRlcmNlcHRvciwgb3B0aW9ucyksIC4uLnBhcmFtcylcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGFwaShvcHRpb25zLCAuLi5wYXJhbXMpXHJcbn1cclxuXHJcbmNvbnN0IHByb21pc2VJbnRlcmNlcHRvciA9IHtcclxuICByZXR1cm5WYWx1ZSAocmVzKSB7XHJcbiAgICBpZiAoIWlzUHJvbWlzZShyZXMpKSB7XHJcbiAgICAgIHJldHVybiByZXNcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIHJlcy50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgaWYgKHJlc1swXSkge1xyXG4gICAgICAgICAgcmVqZWN0KHJlc1swXSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc29sdmUocmVzWzFdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSlcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBTWU5DX0FQSV9SRSA9XHJcbiAgL15cXCR8V2luZG93JHxXaW5kb3dTdHlsZSR8c2VuZEhvc3RFdmVudHxzZW5kTmF0aXZlRXZlbnR8cmVzdG9yZUdsb2JhbHxnZXRDdXJyZW50U3ViTlZ1ZXxnZXRNZW51QnV0dG9uQm91bmRpbmdDbGllbnRSZWN0fF5yZXBvcnR8aW50ZXJjZXB0b3JzfEludGVyY2VwdG9yJHxnZXRTdWJOVnVlQnlJZHxyZXF1aXJlTmF0aXZlUGx1Z2lufHVweDJweHxoaWRlS2V5Ym9hcmR8Y2FuSVVzZXxeY3JlYXRlfFN5bmMkfE1hbmFnZXIkfGJhc2U2NFRvQXJyYXlCdWZmZXJ8YXJyYXlCdWZmZXJUb0Jhc2U2NHxnZXRMb2NhbGV8c2V0TG9jYWxlLztcclxuXHJcbmNvbnN0IENPTlRFWFRfQVBJX1JFID0gL15jcmVhdGV8TWFuYWdlciQvO1xyXG5cclxuLy8gQ29udGV4dOS+i+WkluaDheWGtVxyXG5jb25zdCBDT05URVhUX0FQSV9SRV9FWEMgPSBbJ2NyZWF0ZUJMRUNvbm5lY3Rpb24nXTtcclxuXHJcbi8vIOWQjOatpeS+i+WkluaDheWGtVxyXG5jb25zdCBBU1lOQ19BUEkgPSBbJ2NyZWF0ZUJMRUNvbm5lY3Rpb24nXTtcclxuXHJcbmNvbnN0IENBTExCQUNLX0FQSV9SRSA9IC9eb258Xm9mZi87XHJcblxyXG5mdW5jdGlvbiBpc0NvbnRleHRBcGkgKG5hbWUpIHtcclxuICByZXR1cm4gQ09OVEVYVF9BUElfUkUudGVzdChuYW1lKSAmJiBDT05URVhUX0FQSV9SRV9FWEMuaW5kZXhPZihuYW1lKSA9PT0gLTFcclxufVxyXG5mdW5jdGlvbiBpc1N5bmNBcGkgKG5hbWUpIHtcclxuICByZXR1cm4gU1lOQ19BUElfUkUudGVzdChuYW1lKSAmJiBBU1lOQ19BUEkuaW5kZXhPZihuYW1lKSA9PT0gLTFcclxufVxyXG5cclxuZnVuY3Rpb24gaXNDYWxsYmFja0FwaSAobmFtZSkge1xyXG4gIHJldHVybiBDQUxMQkFDS19BUElfUkUudGVzdChuYW1lKSAmJiBuYW1lICE9PSAnb25QdXNoJ1xyXG59XHJcblxyXG5mdW5jdGlvbiBoYW5kbGVQcm9taXNlIChwcm9taXNlKSB7XHJcbiAgcmV0dXJuIHByb21pc2UudGhlbihkYXRhID0+IHtcclxuICAgIHJldHVybiBbbnVsbCwgZGF0YV1cclxuICB9KVxyXG4gICAgLmNhdGNoKGVyciA9PiBbZXJyXSlcclxufVxyXG5cclxuZnVuY3Rpb24gc2hvdWxkUHJvbWlzZSAobmFtZSkge1xyXG4gIGlmIChcclxuICAgIGlzQ29udGV4dEFwaShuYW1lKSB8fFxyXG4gICAgaXNTeW5jQXBpKG5hbWUpIHx8XHJcbiAgICBpc0NhbGxiYWNrQXBpKG5hbWUpXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbiAgcmV0dXJuIHRydWVcclxufVxyXG5cclxuLyogZXNsaW50LWRpc2FibGUgbm8tZXh0ZW5kLW5hdGl2ZSAqL1xyXG5pZiAoIVByb21pc2UucHJvdG90eXBlLmZpbmFsbHkpIHtcclxuICBQcm9taXNlLnByb3RvdHlwZS5maW5hbGx5ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XHJcbiAgICBjb25zdCBwcm9taXNlID0gdGhpcy5jb25zdHJ1Y3RvcjtcclxuICAgIHJldHVybiB0aGlzLnRoZW4oXHJcbiAgICAgIHZhbHVlID0+IHByb21pc2UucmVzb2x2ZShjYWxsYmFjaygpKS50aGVuKCgpID0+IHZhbHVlKSxcclxuICAgICAgcmVhc29uID0+IHByb21pc2UucmVzb2x2ZShjYWxsYmFjaygpKS50aGVuKCgpID0+IHtcclxuICAgICAgICB0aHJvdyByZWFzb25cclxuICAgICAgfSlcclxuICAgIClcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBwcm9taXNpZnkgKG5hbWUsIGFwaSkge1xyXG4gIGlmICghc2hvdWxkUHJvbWlzZShuYW1lKSkge1xyXG4gICAgcmV0dXJuIGFwaVxyXG4gIH1cclxuICByZXR1cm4gZnVuY3Rpb24gcHJvbWlzZUFwaSAob3B0aW9ucyA9IHt9LCAuLi5wYXJhbXMpIHtcclxuICAgIGlmIChpc0ZuKG9wdGlvbnMuc3VjY2VzcykgfHwgaXNGbihvcHRpb25zLmZhaWwpIHx8IGlzRm4ob3B0aW9ucy5jb21wbGV0ZSkpIHtcclxuICAgICAgcmV0dXJuIHdyYXBwZXJSZXR1cm5WYWx1ZShuYW1lLCBpbnZva2VBcGkobmFtZSwgYXBpLCBvcHRpb25zLCAuLi5wYXJhbXMpKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHdyYXBwZXJSZXR1cm5WYWx1ZShuYW1lLCBoYW5kbGVQcm9taXNlKG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgaW52b2tlQXBpKG5hbWUsIGFwaSwgT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucywge1xyXG4gICAgICAgIHN1Y2Nlc3M6IHJlc29sdmUsXHJcbiAgICAgICAgZmFpbDogcmVqZWN0XHJcbiAgICAgIH0pLCAuLi5wYXJhbXMpO1xyXG4gICAgfSkpKVxyXG4gIH1cclxufVxyXG5cclxuY29uc3QgRVBTID0gMWUtNDtcclxuY29uc3QgQkFTRV9ERVZJQ0VfV0lEVEggPSA3NTA7XHJcbmxldCBpc0lPUyA9IGZhbHNlO1xyXG5sZXQgZGV2aWNlV2lkdGggPSAwO1xyXG5sZXQgZGV2aWNlRFBSID0gMDtcclxuXHJcbmZ1bmN0aW9uIGNoZWNrRGV2aWNlV2lkdGggKCkge1xyXG4gIGNvbnN0IHtcclxuICAgIHBsYXRmb3JtLFxyXG4gICAgcGl4ZWxSYXRpbyxcclxuICAgIHdpbmRvd1dpZHRoXHJcbiAgfSA9IHR0LmdldFN5c3RlbUluZm9TeW5jKCk7IC8vIHVuaT0+dHQgcnVudGltZSDnvJbor5Hnm67moIfmmK8gdW5pIOWvueixoe+8jOWGhemDqOS4jeWFgeiuuOebtOaOpeS9v+eUqCB1bmlcclxuXHJcbiAgZGV2aWNlV2lkdGggPSB3aW5kb3dXaWR0aDtcclxuICBkZXZpY2VEUFIgPSBwaXhlbFJhdGlvO1xyXG4gIGlzSU9TID0gcGxhdGZvcm0gPT09ICdpb3MnO1xyXG59XHJcblxyXG5mdW5jdGlvbiB1cHgycHggKG51bWJlciwgbmV3RGV2aWNlV2lkdGgpIHtcclxuICBpZiAoZGV2aWNlV2lkdGggPT09IDApIHtcclxuICAgIGNoZWNrRGV2aWNlV2lkdGgoKTtcclxuICB9XHJcblxyXG4gIG51bWJlciA9IE51bWJlcihudW1iZXIpO1xyXG4gIGlmIChudW1iZXIgPT09IDApIHtcclxuICAgIHJldHVybiAwXHJcbiAgfVxyXG4gIGxldCByZXN1bHQgPSAobnVtYmVyIC8gQkFTRV9ERVZJQ0VfV0lEVEgpICogKG5ld0RldmljZVdpZHRoIHx8IGRldmljZVdpZHRoKTtcclxuICBpZiAocmVzdWx0IDwgMCkge1xyXG4gICAgcmVzdWx0ID0gLXJlc3VsdDtcclxuICB9XHJcbiAgcmVzdWx0ID0gTWF0aC5mbG9vcihyZXN1bHQgKyBFUFMpO1xyXG4gIGlmIChyZXN1bHQgPT09IDApIHtcclxuICAgIGlmIChkZXZpY2VEUFIgPT09IDEgfHwgIWlzSU9TKSB7XHJcbiAgICAgIHJlc3VsdCA9IDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXN1bHQgPSAwLjU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBudW1iZXIgPCAwID8gLXJlc3VsdCA6IHJlc3VsdFxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRMb2NhbGUgKCkge1xyXG4gIC8vIOS8mOWFiOS9v+eUqCAkbG9jYWxlXHJcbiAgY29uc3QgYXBwID0gZ2V0QXBwKHtcclxuICAgIGFsbG93RGVmYXVsdDogdHJ1ZVxyXG4gIH0pO1xyXG4gIGlmIChhcHAgJiYgYXBwLiR2bSkge1xyXG4gICAgcmV0dXJuIGFwcC4kdm0uJGxvY2FsZVxyXG4gIH1cclxuICByZXR1cm4gdHQuZ2V0U3lzdGVtSW5mb1N5bmMoKS5sYW5ndWFnZSB8fCAnemgtSGFucydcclxufVxyXG5cclxuZnVuY3Rpb24gc2V0TG9jYWxlIChsb2NhbGUpIHtcclxuICBjb25zdCBhcHAgPSBnZXRBcHAoKTtcclxuICBpZiAoIWFwcCkge1xyXG4gICAgcmV0dXJuIGZhbHNlXHJcbiAgfVxyXG4gIGNvbnN0IG9sZExvY2FsZSA9IGFwcC4kdm0uJGxvY2FsZTtcclxuICBpZiAob2xkTG9jYWxlICE9PSBsb2NhbGUpIHtcclxuICAgIGFwcC4kdm0uJGxvY2FsZSA9IGxvY2FsZTtcclxuICAgIG9uTG9jYWxlQ2hhbmdlQ2FsbGJhY2tzLmZvckVhY2goKGZuKSA9PiBmbih7XHJcbiAgICAgIGxvY2FsZVxyXG4gICAgfSkpO1xyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbiAgcmV0dXJuIGZhbHNlXHJcbn1cclxuXHJcbmNvbnN0IG9uTG9jYWxlQ2hhbmdlQ2FsbGJhY2tzID0gW107XHJcbmZ1bmN0aW9uIG9uTG9jYWxlQ2hhbmdlIChmbikge1xyXG4gIGlmIChvbkxvY2FsZUNoYW5nZUNhbGxiYWNrcy5pbmRleE9mKGZuKSA9PT0gLTEpIHtcclxuICAgIG9uTG9jYWxlQ2hhbmdlQ2FsbGJhY2tzLnB1c2goZm4pO1xyXG4gIH1cclxufVxyXG5cclxuaWYgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgZ2xvYmFsLmdldExvY2FsZSA9IGdldExvY2FsZTtcclxufVxyXG5cclxuY29uc3QgaW50ZXJjZXB0b3JzID0ge1xyXG4gIHByb21pc2VJbnRlcmNlcHRvclxyXG59O1xyXG5cclxudmFyIGJhc2VBcGkgPSAvKiNfX1BVUkVfXyovT2JqZWN0LmZyZWV6ZSh7XHJcbiAgX19wcm90b19fOiBudWxsLFxyXG4gIHVweDJweDogdXB4MnB4LFxyXG4gIGdldExvY2FsZTogZ2V0TG9jYWxlLFxyXG4gIHNldExvY2FsZTogc2V0TG9jYWxlLFxyXG4gIG9uTG9jYWxlQ2hhbmdlOiBvbkxvY2FsZUNoYW5nZSxcclxuICBhZGRJbnRlcmNlcHRvcjogYWRkSW50ZXJjZXB0b3IsXHJcbiAgcmVtb3ZlSW50ZXJjZXB0b3I6IHJlbW92ZUludGVyY2VwdG9yLFxyXG4gIGludGVyY2VwdG9yczogaW50ZXJjZXB0b3JzXHJcbn0pO1xyXG5cclxuY2xhc3MgRXZlbnRDaGFubmVsIHtcclxuICBjb25zdHJ1Y3RvciAoaWQsIGV2ZW50cykge1xyXG4gICAgdGhpcy5pZCA9IGlkO1xyXG4gICAgdGhpcy5saXN0ZW5lciA9IHt9O1xyXG4gICAgdGhpcy5lbWl0Q2FjaGUgPSB7fTtcclxuICAgIGlmIChldmVudHMpIHtcclxuICAgICAgT2JqZWN0LmtleXMoZXZlbnRzKS5mb3JFYWNoKG5hbWUgPT4ge1xyXG4gICAgICAgIHRoaXMub24obmFtZSwgZXZlbnRzW25hbWVdKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbWl0IChldmVudE5hbWUsIC4uLmFyZ3MpIHtcclxuICAgIGNvbnN0IGZucyA9IHRoaXMubGlzdGVuZXJbZXZlbnROYW1lXTtcclxuICAgIGlmICghZm5zKSB7XHJcbiAgICAgIHJldHVybiAodGhpcy5lbWl0Q2FjaGVbZXZlbnROYW1lXSB8fCAodGhpcy5lbWl0Q2FjaGVbZXZlbnROYW1lXSA9IFtdKSkucHVzaChhcmdzKVxyXG4gICAgfVxyXG4gICAgZm5zLmZvckVhY2gob3B0ID0+IHtcclxuICAgICAgb3B0LmZuLmFwcGx5KG9wdC5mbiwgYXJncyk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMubGlzdGVuZXJbZXZlbnROYW1lXSA9IGZucy5maWx0ZXIob3B0ID0+IG9wdC50eXBlICE9PSAnb25jZScpO1xyXG4gIH1cclxuXHJcbiAgb24gKGV2ZW50TmFtZSwgZm4pIHtcclxuICAgIHRoaXMuX2FkZExpc3RlbmVyKGV2ZW50TmFtZSwgJ29uJywgZm4pO1xyXG4gICAgdGhpcy5fY2xlYXJDYWNoZShldmVudE5hbWUpO1xyXG4gIH1cclxuXHJcbiAgb25jZSAoZXZlbnROYW1lLCBmbikge1xyXG4gICAgdGhpcy5fYWRkTGlzdGVuZXIoZXZlbnROYW1lLCAnb25jZScsIGZuKTtcclxuICAgIHRoaXMuX2NsZWFyQ2FjaGUoZXZlbnROYW1lKTtcclxuICB9XHJcblxyXG4gIG9mZiAoZXZlbnROYW1lLCBmbikge1xyXG4gICAgY29uc3QgZm5zID0gdGhpcy5saXN0ZW5lcltldmVudE5hbWVdO1xyXG4gICAgaWYgKCFmbnMpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBpZiAoZm4pIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmbnMubGVuZ3RoOykge1xyXG4gICAgICAgIGlmIChmbnNbaV0uZm4gPT09IGZuKSB7XHJcbiAgICAgICAgICBmbnMuc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgaS0tO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpKys7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRlbGV0ZSB0aGlzLmxpc3RlbmVyW2V2ZW50TmFtZV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBfY2xlYXJDYWNoZSAoZXZlbnROYW1lKSB7XHJcbiAgICBjb25zdCBjYWNoZUFyZ3MgPSB0aGlzLmVtaXRDYWNoZVtldmVudE5hbWVdO1xyXG4gICAgaWYgKGNhY2hlQXJncykge1xyXG4gICAgICBmb3IgKDsgY2FjaGVBcmdzLmxlbmd0aCA+IDA7KSB7XHJcbiAgICAgICAgdGhpcy5lbWl0LmFwcGx5KHRoaXMsIFtldmVudE5hbWVdLmNvbmNhdChjYWNoZUFyZ3Muc2hpZnQoKSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBfYWRkTGlzdGVuZXIgKGV2ZW50TmFtZSwgdHlwZSwgZm4pIHtcclxuICAgICh0aGlzLmxpc3RlbmVyW2V2ZW50TmFtZV0gfHwgKHRoaXMubGlzdGVuZXJbZXZlbnROYW1lXSA9IFtdKSkucHVzaCh7XHJcbiAgICAgIGZuLFxyXG4gICAgICB0eXBlXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbmNvbnN0IGV2ZW50Q2hhbm5lbHMgPSB7fTtcclxuXHJcbmNvbnN0IGV2ZW50Q2hhbm5lbFN0YWNrID0gW107XHJcblxyXG5sZXQgaWQgPSAwO1xyXG5cclxuZnVuY3Rpb24gaW5pdEV2ZW50Q2hhbm5lbCAoZXZlbnRzLCBjYWNoZSA9IHRydWUpIHtcclxuICBpZCsrO1xyXG4gIGNvbnN0IGV2ZW50Q2hhbm5lbCA9IG5ldyBFdmVudENoYW5uZWwoaWQsIGV2ZW50cyk7XHJcbiAgaWYgKGNhY2hlKSB7XHJcbiAgICBldmVudENoYW5uZWxzW2lkXSA9IGV2ZW50Q2hhbm5lbDtcclxuICAgIGV2ZW50Q2hhbm5lbFN0YWNrLnB1c2goZXZlbnRDaGFubmVsKTtcclxuICB9XHJcbiAgcmV0dXJuIGV2ZW50Q2hhbm5lbFxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRFdmVudENoYW5uZWwgKGlkKSB7XHJcbiAgaWYgKGlkKSB7XHJcbiAgICBjb25zdCBldmVudENoYW5uZWwgPSBldmVudENoYW5uZWxzW2lkXTtcclxuICAgIGRlbGV0ZSBldmVudENoYW5uZWxzW2lkXTtcclxuICAgIHJldHVybiBldmVudENoYW5uZWxcclxuICB9XHJcbiAgcmV0dXJuIGV2ZW50Q2hhbm5lbFN0YWNrLnNoaWZ0KClcclxufVxyXG5cclxudmFyIG5hdmlnYXRlVG8gPSB7XHJcbiAgYXJncyAoZnJvbUFyZ3MsIHRvQXJncykge1xyXG4gICAgY29uc3QgaWQgPSBpbml0RXZlbnRDaGFubmVsKGZyb21BcmdzLmV2ZW50cykuaWQ7XHJcbiAgICBpZiAoZnJvbUFyZ3MudXJsKSB7XHJcbiAgICAgIGZyb21BcmdzLnVybCA9IGZyb21BcmdzLnVybCArIChmcm9tQXJncy51cmwuaW5kZXhPZignPycpID09PSAtMSA/ICc/JyA6ICcmJykgKyAnX19pZF9fPScgKyBpZDtcclxuICAgIH1cclxuICB9LFxyXG4gIHJldHVyblZhbHVlIChmcm9tUmVzLCB0b1Jlcykge1xyXG4gICAgZnJvbVJlcy5ldmVudENoYW5uZWwgPSBnZXRFdmVudENoYW5uZWwoKTtcclxuICB9XHJcbn07XHJcblxyXG5mdW5jdGlvbiBmaW5kRXhpc3RzUGFnZUluZGV4ICh1cmwpIHtcclxuICBjb25zdCBwYWdlcyA9IGdldEN1cnJlbnRQYWdlcygpO1xyXG4gIGxldCBsZW4gPSBwYWdlcy5sZW5ndGg7XHJcbiAgd2hpbGUgKGxlbi0tKSB7XHJcbiAgICBjb25zdCBwYWdlID0gcGFnZXNbbGVuXTtcclxuICAgIGlmIChwYWdlLiRwYWdlICYmIHBhZ2UuJHBhZ2UuZnVsbFBhdGggPT09IHVybCkge1xyXG4gICAgICByZXR1cm4gbGVuXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiAtMVxyXG59XHJcblxyXG52YXIgcmVkaXJlY3RUbyA9IHtcclxuICBuYW1lIChmcm9tQXJncykge1xyXG4gICAgaWYgKGZyb21BcmdzLmV4aXN0cyA9PT0gJ2JhY2snICYmIGZyb21BcmdzLmRlbHRhKSB7XHJcbiAgICAgIHJldHVybiAnbmF2aWdhdGVCYWNrJ1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICdyZWRpcmVjdFRvJ1xyXG4gIH0sXHJcbiAgYXJncyAoZnJvbUFyZ3MpIHtcclxuICAgIGlmIChmcm9tQXJncy5leGlzdHMgPT09ICdiYWNrJyAmJiBmcm9tQXJncy51cmwpIHtcclxuICAgICAgY29uc3QgZXhpc3RzUGFnZUluZGV4ID0gZmluZEV4aXN0c1BhZ2VJbmRleChmcm9tQXJncy51cmwpO1xyXG4gICAgICBpZiAoZXhpc3RzUGFnZUluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgIGNvbnN0IGRlbHRhID0gZ2V0Q3VycmVudFBhZ2VzKCkubGVuZ3RoIC0gMSAtIGV4aXN0c1BhZ2VJbmRleDtcclxuICAgICAgICBpZiAoZGVsdGEgPiAwKSB7XHJcbiAgICAgICAgICBmcm9tQXJncy5kZWx0YSA9IGRlbHRhO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufTtcclxuXHJcbnZhciBwcmV2aWV3SW1hZ2UgPSB7XHJcbiAgYXJncyAoZnJvbUFyZ3MpIHtcclxuICAgIGxldCBjdXJyZW50SW5kZXggPSBwYXJzZUludChmcm9tQXJncy5jdXJyZW50KTtcclxuICAgIGlmIChpc05hTihjdXJyZW50SW5kZXgpKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgY29uc3QgdXJscyA9IGZyb21BcmdzLnVybHM7XHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodXJscykpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBjb25zdCBsZW4gPSB1cmxzLmxlbmd0aDtcclxuICAgIGlmICghbGVuKSB7XHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgaWYgKGN1cnJlbnRJbmRleCA8IDApIHtcclxuICAgICAgY3VycmVudEluZGV4ID0gMDtcclxuICAgIH0gZWxzZSBpZiAoY3VycmVudEluZGV4ID49IGxlbikge1xyXG4gICAgICBjdXJyZW50SW5kZXggPSBsZW4gLSAxO1xyXG4gICAgfVxyXG4gICAgaWYgKGN1cnJlbnRJbmRleCA+IDApIHtcclxuICAgICAgZnJvbUFyZ3MuY3VycmVudCA9IHVybHNbY3VycmVudEluZGV4XTtcclxuICAgICAgZnJvbUFyZ3MudXJscyA9IHVybHMuZmlsdGVyKFxyXG4gICAgICAgIChpdGVtLCBpbmRleCkgPT4gaW5kZXggPCBjdXJyZW50SW5kZXggPyBpdGVtICE9PSB1cmxzW2N1cnJlbnRJbmRleF0gOiB0cnVlXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmcm9tQXJncy5jdXJyZW50ID0gdXJsc1swXTtcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgIGluZGljYXRvcjogZmFsc2UsXHJcbiAgICAgIGxvb3A6IGZhbHNlXHJcbiAgICB9XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgVVVJRF9LRVkgPSAnX19EQ19TVEFUX1VVSUQnO1xyXG5sZXQgZGV2aWNlSWQ7XHJcbmZ1bmN0aW9uIGFkZFV1aWQgKHJlc3VsdCkge1xyXG4gIGRldmljZUlkID0gZGV2aWNlSWQgfHwgdHQuZ2V0U3RvcmFnZVN5bmMoVVVJRF9LRVkpO1xyXG4gIGlmICghZGV2aWNlSWQpIHtcclxuICAgIGRldmljZUlkID0gRGF0ZS5ub3coKSArICcnICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMWU3KTtcclxuICAgIHR0LnNldFN0b3JhZ2Uoe1xyXG4gICAgICBrZXk6IFVVSURfS0VZLFxyXG4gICAgICBkYXRhOiBkZXZpY2VJZFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlc3VsdC5kZXZpY2VJZCA9IGRldmljZUlkO1xyXG59XHJcblxyXG5mdW5jdGlvbiBhZGRTYWZlQXJlYUluc2V0cyAocmVzdWx0KSB7XHJcbiAgaWYgKHJlc3VsdC5zYWZlQXJlYSkge1xyXG4gICAgY29uc3Qgc2FmZUFyZWEgPSByZXN1bHQuc2FmZUFyZWE7XHJcbiAgICByZXN1bHQuc2FmZUFyZWFJbnNldHMgPSB7XHJcbiAgICAgIHRvcDogc2FmZUFyZWEudG9wLFxyXG4gICAgICBsZWZ0OiBzYWZlQXJlYS5sZWZ0LFxyXG4gICAgICByaWdodDogcmVzdWx0LndpbmRvd1dpZHRoIC0gc2FmZUFyZWEucmlnaHQsXHJcbiAgICAgIGJvdHRvbTogcmVzdWx0LndpbmRvd0hlaWdodCAtIHNhZmVBcmVhLmJvdHRvbVxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuXHJcbnZhciBnZXRTeXN0ZW1JbmZvID0ge1xyXG4gIHJldHVyblZhbHVlOiBmdW5jdGlvbiAocmVzdWx0KSB7XHJcbiAgICBhZGRVdWlkKHJlc3VsdCk7XHJcbiAgICBhZGRTYWZlQXJlYUluc2V0cyhyZXN1bHQpO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IG9OYW1lID0gJ2dldFVzZXJJbmZvJztcclxuY29uc3Qgbk5hbWUgPSAnZ2V0VXNlclByb2ZpbGUnO1xyXG5cclxudmFyIGdldFVzZXJQcm9maWxlID0ge1xyXG4gIG5hbWU6IHR0LmNhbklVc2Uobk5hbWUpID8gbk5hbWUgOiBvTmFtZVxyXG59O1xyXG5cclxuLy8g5LiN5pSv5oyB55qEIEFQSSDliJfooahcclxuY29uc3QgdG9kb3MgPSBbXHJcbiAgJ3ByZWxvYWRQYWdlJyxcclxuICAndW5QcmVsb2FkUGFnZScsXHJcbiAgJ2xvYWRTdWJQYWNrYWdlJ1xyXG4gIC8vICdjcmVhdGVDYW1lcmFDb250ZXh0JyxcclxuICAvLyAnY3JlYXRlTGl2ZVBsYXllckNvbnRleHQnLFxyXG4gIC8vICdnZXRTYXZlZEZpbGVJbmZvJyxcclxuICAvLyAnY3JlYXRlTWFwQ29udGV4dCcsXHJcbiAgLy8gJ29uTWVtb3J5V2FybmluZycsXHJcbiAgLy8gJ29uR3lyb3Njb3BlQ2hhbmdlJyxcclxuICAvLyAnc3RhcnRHeXJvc2NvcGUnLFxyXG4gIC8vICdzdG9wR3lyb3Njb3BlJyxcclxuICAvLyAnc2V0U2NyZWVuQnJpZ2h0bmVzcycsXHJcbiAgLy8gJ2dldFNjcmVlbkJyaWdodG5lc3MnLFxyXG4gIC8vICdhZGRQaG9uZUNvbnRhY3QnLFxyXG4gIC8vICdvcGVuQmx1ZXRvb3RoQWRhcHRlcicsXHJcbiAgLy8gJ3N0YXJ0Qmx1ZXRvb3RoRGV2aWNlc0Rpc2NvdmVyeScsXHJcbiAgLy8gJ29uQmx1ZXRvb3RoRGV2aWNlRm91bmQnLFxyXG4gIC8vICdzdG9wQmx1ZXRvb3RoRGV2aWNlc0Rpc2NvdmVyeScsXHJcbiAgLy8gJ29uQmx1ZXRvb3RoQWRhcHRlclN0YXRlQ2hhbmdlJyxcclxuICAvLyAnZ2V0Q29ubmVjdGVkQmx1ZXRvb3RoRGV2aWNlcycsXHJcbiAgLy8gJ2dldEJsdWV0b290aERldmljZXMnLFxyXG4gIC8vICdnZXRCbHVldG9vdGhBZGFwdGVyU3RhdGUnLFxyXG4gIC8vICdjbG9zZUJsdWV0b290aEFkYXB0ZXInLFxyXG4gIC8vICd3cml0ZUJMRUNoYXJhY3RlcmlzdGljVmFsdWUnLFxyXG4gIC8vICdyZWFkQkxFQ2hhcmFjdGVyaXN0aWNWYWx1ZScsXHJcbiAgLy8gJ29uQkxFQ29ubmVjdGlvblN0YXRlQ2hhbmdlJyxcclxuICAvLyAnb25CTEVDaGFyYWN0ZXJpc3RpY1ZhbHVlQ2hhbmdlJyxcclxuICAvLyAnbm90aWZ5QkxFQ2hhcmFjdGVyaXN0aWNWYWx1ZUNoYW5nZScsXHJcbiAgLy8gJ2dldEJMRURldmljZVNlcnZpY2VzJyxcclxuICAvLyAnZ2V0QkxFRGV2aWNlQ2hhcmFjdGVyaXN0aWNzJyxcclxuICAvLyAnY3JlYXRlQkxFQ29ubmVjdGlvbicsXHJcbiAgLy8gJ2Nsb3NlQkxFQ29ubmVjdGlvbicsXHJcbiAgLy8gJ29uQmVhY29uU2VydmljZUNoYW5nZScsXHJcbiAgLy8gJ29uQmVhY29uVXBkYXRlJyxcclxuICAvLyAnZ2V0QmVhY29ucycsXHJcbiAgLy8gJ3N0YXJ0QmVhY29uRGlzY292ZXJ5JyxcclxuICAvLyAnc3RvcEJlYWNvbkRpc2NvdmVyeScsXHJcbiAgLy8gJ3Nob3dOYXZpZ2F0aW9uQmFyTG9hZGluZycsXHJcbiAgLy8gJ2hpZGVOYXZpZ2F0aW9uQmFyTG9hZGluZycsXHJcbiAgLy8gJ3NldFRhYkJhckl0ZW0nLFxyXG4gIC8vICdzZXRUYWJCYXJTdHlsZScsXHJcbiAgLy8gJ2hpZGVUYWJCYXInLFxyXG4gIC8vICdzaG93VGFiQmFyJyxcclxuICAvLyAnc2V0VGFiQmFyQmFkZ2UnLFxyXG4gIC8vICdyZW1vdmVUYWJCYXJCYWRnZScsXHJcbiAgLy8gJ3Nob3dUYWJCYXJSZWREb3QnLFxyXG4gIC8vICdoaWRlVGFiQmFyUmVkRG90JyxcclxuICAvLyAnc2V0QmFja2dyb3VuZENvbG9yJyxcclxuICAvLyAnc2V0QmFja2dyb3VuZFRleHRTdHlsZScsXHJcbiAgLy8gJ2Nob29zZUludm9pY2VUaXRsZScsXHJcbiAgLy8gJ2FkZFRlbXBsYXRlJyxcclxuICAvLyAnZGVsZXRlVGVtcGxhdGUnLFxyXG4gIC8vICdnZXRUZW1wbGF0ZUxpYnJhcnlCeUlkJyxcclxuICAvLyAnZ2V0VGVtcGxhdGVMaWJyYXJ5TGlzdCcsXHJcbiAgLy8gJ2dldFRlbXBsYXRlTGlzdCcsXHJcbiAgLy8gJ3NlbmRUZW1wbGF0ZU1lc3NhZ2UnLFxyXG4gIC8vICdzZXRFbmFibGVEZWJ1ZycsXHJcbiAgLy8gJ29uV2luZG93UmVzaXplJyxcclxuICAvLyAnb2ZmV2luZG93UmVzaXplJyxcclxuICAvLyAnY3JlYXRlT2Zmc2NyZWVuQ2FudmFzJyxcclxuICAvLyAndmlicmF0ZSdcclxuXTtcclxuXHJcbi8vIOWtmOWcqOWFvOWuueaAp+eahCBBUEkg5YiX6KGoXHJcbi8vIOWktOadoeWwj+eoi+W6j+iHqjEuMzUuMCvmlK/mjIFjYW5JVXNlc1xyXG5jb25zdCBjYW5JVXNlcyA9IFtcclxuICAvLyAnY3JlYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXInLFxyXG4gIC8vICdnZXRTYXZlZEZpbGVMaXN0JyxcclxuICAvLyAncmVtb3ZlU2F2ZWRGaWxlJyxcclxuICAvLyAnaGlkZUtleWJvYXJkJyxcclxuICAvLyAnZ2V0SW1hZ2VJbmZvJyxcclxuICAvLyAnY3JlYXRlVmlkZW9Db250ZXh0JyxcclxuICAvLyAnb25Tb2NrZXRPcGVuJyxcclxuICAvLyAnb25Tb2NrZXRFcnJvcicsXHJcbiAgLy8gJ3NlbmRTb2NrZXRNZXNzYWdlJyxcclxuICAvLyAnb25Tb2NrZXRNZXNzYWdlJyxcclxuICAvLyAnY2xvc2VTb2NrZXQnLFxyXG4gIC8vICdvblNvY2tldENsb3NlJyxcclxuICAvLyAnZ2V0RXh0Q29uZmlnJyxcclxuICAvLyAnZ2V0RXh0Q29uZmlnU3luYycsXHJcbiAgLy8gJ25hdmlnYXRlVG9NaW5pUHJvZ3JhbScsXHJcbiAgLy8gJ25hdmlnYXRlQmFja01pbmlQcm9ncmFtJyxcclxuICAvLyAnY29tcHJlc3NJbWFnZScsXHJcbiAgLy8gJ2Nob29zZUxvY2F0aW9uJyxcclxuICAvLyAnb3BlbkRvY3VtZW50JyxcclxuICAvLyAnb25Vc2VyQ2FwdHVyZVNjcmVlbicsXHJcbiAgLy8gJ2dldEJhY2tncm91bmRBdWRpb01hbmFnZXInLFxyXG4gIC8vICdzZXROYXZpZ2F0aW9uQmFyQ29sb3InLFxyXG5dO1xyXG5cclxuLy8g6ZyA6KaB5YGa6L2s5o2i55qEIEFQSSDliJfooahcclxuY29uc3QgcHJvdG9jb2xzID0ge1xyXG4gIGNob29zZUltYWdlOiB7XHJcbiAgICBhcmdzOiB7XHJcbiAgICAgIHNpemVUeXBlOiBmYWxzZVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgbmF2aWdhdGVUbyxcclxuICByZWRpcmVjdFRvLFxyXG4gIHByZXZpZXdJbWFnZSxcclxuICBnZXRTeXN0ZW1JbmZvLFxyXG4gIGdldFN5c3RlbUluZm9TeW5jOiBnZXRTeXN0ZW1JbmZvLFxyXG4gIGdldFVzZXJQcm9maWxlLFxyXG4gIGNvbm5lY3RTb2NrZXQ6IHtcclxuICAgIGFyZ3M6IHtcclxuICAgICAgbWV0aG9kOiBmYWxzZVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgY2hvb3NlVmlkZW86IHtcclxuICAgIGFyZ3M6IHtcclxuICAgICAgY2FtZXJhOiBmYWxzZVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgc2NhbkNvZGU6IHtcclxuICAgIGFyZ3M6IHtcclxuICAgICAgb25seUZyb21DYW1lcmE6IGZhbHNlLFxyXG4gICAgICBzY2FuVHlwZTogZmFsc2VcclxuICAgIH1cclxuICB9LFxyXG4gIHN0YXJ0QWNjZWxlcm9tZXRlcjoge1xyXG4gICAgYXJnczoge1xyXG4gICAgICBpbnRlcnZhbDogZmFsc2VcclxuICAgIH1cclxuICB9LFxyXG4gIHNob3dUb2FzdDoge1xyXG4gICAgYXJnczoge1xyXG4gICAgICBpbWFnZTogZmFsc2UsXHJcbiAgICAgIG1hc2s6IGZhbHNlXHJcbiAgICB9XHJcbiAgfSxcclxuICBzaG93TG9hZGluZzoge1xyXG4gICAgYXJnczoge1xyXG4gICAgICBtYXNrOiBmYWxzZVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgc2hvd01vZGFsOiB7XHJcbiAgICBhcmdzOiB7XHJcbiAgICAgIGNhbmNlbENvbG9yOiBmYWxzZSxcclxuICAgICAgY29uZmlybUNvbG9yOiBmYWxzZVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgc2hvd0FjdGlvblNoZWV0OiB7XHJcbiAgICBhcmdzOiB7XHJcbiAgICAgIGl0ZW1Db2xvcjogZmFsc2VcclxuICAgIH1cclxuICB9LFxyXG4gIGxvZ2luOiB7XHJcbiAgICBhcmdzOiB7XHJcbiAgICAgIHNjb3BlczogZmFsc2UsXHJcbiAgICAgIHRpbWVvdXQ6IGZhbHNlXHJcbiAgICB9XHJcbiAgfSxcclxuICBnZXRVc2VySW5mbzoge1xyXG4gICAgYXJnczoge1xyXG4gICAgICBsYW5nOiBmYWxzZSxcclxuICAgICAgdGltZW91dDogZmFsc2VcclxuICAgIH1cclxuICB9LFxyXG4gIHJlcXVlc3RQYXltZW50OiB7XHJcbiAgICBuYW1lOiB0dC5wYXkgPyAncGF5JyA6ICdyZXF1ZXN0UGF5bWVudCcsXHJcbiAgICBhcmdzOiB7XHJcbiAgICAgIG9yZGVySW5mbzogdHQucGF5ID8gJ29yZGVySW5mbycgOiAnZGF0YSdcclxuICAgIH1cclxuICB9LFxyXG4gIGdldEZpbGVJbmZvOiB7XHJcbiAgICBhcmdzOiB7XHJcbiAgICAgIGRpZ2VzdEFsZ29yaXRobTogZmFsc2VcclxuICAgIH1cclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBDQUxMQkFDS1MgPSBbJ3N1Y2Nlc3MnLCAnZmFpbCcsICdjYW5jZWwnLCAnY29tcGxldGUnXTtcclxuXHJcbmZ1bmN0aW9uIHByb2Nlc3NDYWxsYmFjayAobWV0aG9kTmFtZSwgbWV0aG9kLCByZXR1cm5WYWx1ZSkge1xyXG4gIHJldHVybiBmdW5jdGlvbiAocmVzKSB7XHJcbiAgICByZXR1cm4gbWV0aG9kKHByb2Nlc3NSZXR1cm5WYWx1ZShtZXRob2ROYW1lLCByZXMsIHJldHVyblZhbHVlKSlcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHByb2Nlc3NBcmdzIChtZXRob2ROYW1lLCBmcm9tQXJncywgYXJnc09wdGlvbiA9IHt9LCByZXR1cm5WYWx1ZSA9IHt9LCBrZWVwRnJvbUFyZ3MgPSBmYWxzZSkge1xyXG4gIGlmIChpc1BsYWluT2JqZWN0KGZyb21BcmdzKSkgeyAvLyDkuIDoiKwgYXBpIOeahOWPguaVsOino+aekFxyXG4gICAgY29uc3QgdG9BcmdzID0ga2VlcEZyb21BcmdzID09PSB0cnVlID8gZnJvbUFyZ3MgOiB7fTsgLy8gcmV0dXJuVmFsdWUg5Li6IGZhbHNlIOaXtu+8jOivtOaYjuaYr+agvOW8j+WMlui/lOWbnuWAvO+8jOebtOaOpeWcqOi/lOWbnuWAvOWvueixoeS4iuS/ruaUuei1i+WAvFxyXG4gICAgaWYgKGlzRm4oYXJnc09wdGlvbikpIHtcclxuICAgICAgYXJnc09wdGlvbiA9IGFyZ3NPcHRpb24oZnJvbUFyZ3MsIHRvQXJncykgfHwge307XHJcbiAgICB9XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBmcm9tQXJncykge1xyXG4gICAgICBpZiAoaGFzT3duKGFyZ3NPcHRpb24sIGtleSkpIHtcclxuICAgICAgICBsZXQga2V5T3B0aW9uID0gYXJnc09wdGlvbltrZXldO1xyXG4gICAgICAgIGlmIChpc0ZuKGtleU9wdGlvbikpIHtcclxuICAgICAgICAgIGtleU9wdGlvbiA9IGtleU9wdGlvbihmcm9tQXJnc1trZXldLCBmcm9tQXJncywgdG9BcmdzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFrZXlPcHRpb24pIHsgLy8g5LiN5pSv5oyB55qE5Y+C5pWwXHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oYFRoZSAnJHttZXRob2ROYW1lfScgbWV0aG9kIG9mIHBsYXRmb3JtICflpLTmnaHlsI/nqIvluo8nIGRvZXMgbm90IHN1cHBvcnQgb3B0aW9uICcke2tleX0nYCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpc1N0cihrZXlPcHRpb24pKSB7IC8vIOmHjeWGmeWPguaVsCBrZXlcclxuICAgICAgICAgIHRvQXJnc1trZXlPcHRpb25dID0gZnJvbUFyZ3Nba2V5XTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3Qoa2V5T3B0aW9uKSkgeyAvLyB7bmFtZTpuZXdOYW1lLHZhbHVlOnZhbHVlfeWPr+mHjeaWsOaMh+WumuWPguaVsCBrZXk6dmFsdWVcclxuICAgICAgICAgIHRvQXJnc1trZXlPcHRpb24ubmFtZSA/IGtleU9wdGlvbi5uYW1lIDoga2V5XSA9IGtleU9wdGlvbi52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoQ0FMTEJBQ0tTLmluZGV4T2Yoa2V5KSAhPT0gLTEpIHtcclxuICAgICAgICBpZiAoaXNGbihmcm9tQXJnc1trZXldKSkge1xyXG4gICAgICAgICAgdG9BcmdzW2tleV0gPSBwcm9jZXNzQ2FsbGJhY2sobWV0aG9kTmFtZSwgZnJvbUFyZ3Nba2V5XSwgcmV0dXJuVmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoIWtlZXBGcm9tQXJncykge1xyXG4gICAgICAgICAgdG9BcmdzW2tleV0gPSBmcm9tQXJnc1trZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvQXJnc1xyXG4gIH0gZWxzZSBpZiAoaXNGbihmcm9tQXJncykpIHtcclxuICAgIGZyb21BcmdzID0gcHJvY2Vzc0NhbGxiYWNrKG1ldGhvZE5hbWUsIGZyb21BcmdzLCByZXR1cm5WYWx1ZSk7XHJcbiAgfVxyXG4gIHJldHVybiBmcm9tQXJnc1xyXG59XHJcblxyXG5mdW5jdGlvbiBwcm9jZXNzUmV0dXJuVmFsdWUgKG1ldGhvZE5hbWUsIHJlcywgcmV0dXJuVmFsdWUsIGtlZXBSZXR1cm5WYWx1ZSA9IGZhbHNlKSB7XHJcbiAgaWYgKGlzRm4ocHJvdG9jb2xzLnJldHVyblZhbHVlKSkgeyAvLyDlpITnkIbpgJrnlKggcmV0dXJuVmFsdWVcclxuICAgIHJlcyA9IHByb3RvY29scy5yZXR1cm5WYWx1ZShtZXRob2ROYW1lLCByZXMpO1xyXG4gIH1cclxuICByZXR1cm4gcHJvY2Vzc0FyZ3MobWV0aG9kTmFtZSwgcmVzLCByZXR1cm5WYWx1ZSwge30sIGtlZXBSZXR1cm5WYWx1ZSlcclxufVxyXG5cclxuZnVuY3Rpb24gd3JhcHBlciAobWV0aG9kTmFtZSwgbWV0aG9kKSB7XHJcbiAgaWYgKGhhc093bihwcm90b2NvbHMsIG1ldGhvZE5hbWUpKSB7XHJcbiAgICBjb25zdCBwcm90b2NvbCA9IHByb3RvY29sc1ttZXRob2ROYW1lXTtcclxuICAgIGlmICghcHJvdG9jb2wpIHsgLy8g5pqC5LiN5pSv5oyB55qEIGFwaVxyXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFBsYXRmb3JtICflpLTmnaHlsI/nqIvluo8nIGRvZXMgbm90IHN1cHBvcnQgJyR7bWV0aG9kTmFtZX0nLmApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKGFyZzEsIGFyZzIpIHsgLy8g55uu5YmNIGFwaSDmnIDlpJrkuKTkuKrlj4LmlbBcclxuICAgICAgbGV0IG9wdGlvbnMgPSBwcm90b2NvbDtcclxuICAgICAgaWYgKGlzRm4ocHJvdG9jb2wpKSB7XHJcbiAgICAgICAgb3B0aW9ucyA9IHByb3RvY29sKGFyZzEpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBhcmcxID0gcHJvY2Vzc0FyZ3MobWV0aG9kTmFtZSwgYXJnMSwgb3B0aW9ucy5hcmdzLCBvcHRpb25zLnJldHVyblZhbHVlKTtcclxuXHJcbiAgICAgIGNvbnN0IGFyZ3MgPSBbYXJnMV07XHJcbiAgICAgIGlmICh0eXBlb2YgYXJnMiAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICBhcmdzLnB1c2goYXJnMik7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGlzRm4ob3B0aW9ucy5uYW1lKSkge1xyXG4gICAgICAgIG1ldGhvZE5hbWUgPSBvcHRpb25zLm5hbWUoYXJnMSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXNTdHIob3B0aW9ucy5uYW1lKSkge1xyXG4gICAgICAgIG1ldGhvZE5hbWUgPSBvcHRpb25zLm5hbWU7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcmV0dXJuVmFsdWUgPSB0dFttZXRob2ROYW1lXS5hcHBseSh0dCwgYXJncyk7XHJcbiAgICAgIGlmIChpc1N5bmNBcGkobWV0aG9kTmFtZSkpIHsgLy8g5ZCM5q2lIGFwaVxyXG4gICAgICAgIHJldHVybiBwcm9jZXNzUmV0dXJuVmFsdWUobWV0aG9kTmFtZSwgcmV0dXJuVmFsdWUsIG9wdGlvbnMucmV0dXJuVmFsdWUsIGlzQ29udGV4dEFwaShtZXRob2ROYW1lKSlcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcmV0dXJuVmFsdWVcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIG1ldGhvZFxyXG59XHJcblxyXG5jb25zdCB0b2RvQXBpcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcblxyXG5jb25zdCBUT0RPUyA9IFtcclxuICAnb25UYWJCYXJNaWRCdXR0b25UYXAnLFxyXG4gICdzdWJzY3JpYmVQdXNoJyxcclxuICAndW5zdWJzY3JpYmVQdXNoJyxcclxuICAnb25QdXNoJyxcclxuICAnb2ZmUHVzaCcsXHJcbiAgJ3NoYXJlJ1xyXG5dO1xyXG5cclxuZnVuY3Rpb24gY3JlYXRlVG9kb0FwaSAobmFtZSkge1xyXG4gIHJldHVybiBmdW5jdGlvbiB0b2RvQXBpICh7XHJcbiAgICBmYWlsLFxyXG4gICAgY29tcGxldGVcclxuICB9KSB7XHJcbiAgICBjb25zdCByZXMgPSB7XHJcbiAgICAgIGVyck1zZzogYCR7bmFtZX06ZmFpbCBtZXRob2QgJyR7bmFtZX0nIG5vdCBzdXBwb3J0ZWRgXHJcbiAgICB9O1xyXG4gICAgaXNGbihmYWlsKSAmJiBmYWlsKHJlcyk7XHJcbiAgICBpc0ZuKGNvbXBsZXRlKSAmJiBjb21wbGV0ZShyZXMpO1xyXG4gIH1cclxufVxyXG5cclxuVE9ET1MuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xyXG4gIHRvZG9BcGlzW25hbWVdID0gY3JlYXRlVG9kb0FwaShuYW1lKTtcclxufSk7XHJcblxyXG52YXIgcHJvdmlkZXJzID0ge1xyXG4gIG9hdXRoOiBbJ3RvdXRpYW8nXSxcclxuICBzaGFyZTogWyd0b3V0aWFvJ10sXHJcbiAgcGF5bWVudDogWyd0b3V0aWFvJ10sXHJcbiAgcHVzaDogWyd0b3V0aWFvJ11cclxufTtcclxuXHJcbmZ1bmN0aW9uIGdldFByb3ZpZGVyICh7XHJcbiAgc2VydmljZSxcclxuICBzdWNjZXNzLFxyXG4gIGZhaWwsXHJcbiAgY29tcGxldGVcclxufSkge1xyXG4gIGxldCByZXMgPSBmYWxzZTtcclxuICBpZiAocHJvdmlkZXJzW3NlcnZpY2VdKSB7XHJcbiAgICByZXMgPSB7XHJcbiAgICAgIGVyck1zZzogJ2dldFByb3ZpZGVyOm9rJyxcclxuICAgICAgc2VydmljZSxcclxuICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyc1tzZXJ2aWNlXVxyXG4gICAgfTtcclxuICAgIGlzRm4oc3VjY2VzcykgJiYgc3VjY2VzcyhyZXMpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXMgPSB7XHJcbiAgICAgIGVyck1zZzogJ2dldFByb3ZpZGVyOmZhaWwgc2VydmljZSBub3QgZm91bmQnXHJcbiAgICB9O1xyXG4gICAgaXNGbihmYWlsKSAmJiBmYWlsKHJlcyk7XHJcbiAgfVxyXG4gIGlzRm4oY29tcGxldGUpICYmIGNvbXBsZXRlKHJlcyk7XHJcbn1cclxuXHJcbnZhciBleHRyYUFwaSA9IC8qI19fUFVSRV9fKi9PYmplY3QuZnJlZXplKHtcclxuICBfX3Byb3RvX186IG51bGwsXHJcbiAgZ2V0UHJvdmlkZXI6IGdldFByb3ZpZGVyXHJcbn0pO1xyXG5cclxuY29uc3QgZ2V0RW1pdHRlciA9IChmdW5jdGlvbiAoKSB7XHJcbiAgbGV0IEVtaXR0ZXI7XHJcbiAgcmV0dXJuIGZ1bmN0aW9uIGdldFVuaUVtaXR0ZXIgKCkge1xyXG4gICAgaWYgKCFFbWl0dGVyKSB7XHJcbiAgICAgIEVtaXR0ZXIgPSBuZXcgVnVlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gRW1pdHRlclxyXG4gIH1cclxufSkoKTtcclxuXHJcbmZ1bmN0aW9uIGFwcGx5IChjdHgsIG1ldGhvZCwgYXJncykge1xyXG4gIHJldHVybiBjdHhbbWV0aG9kXS5hcHBseShjdHgsIGFyZ3MpXHJcbn1cclxuXHJcbmZ1bmN0aW9uICRvbiAoKSB7XHJcbiAgcmV0dXJuIGFwcGx5KGdldEVtaXR0ZXIoKSwgJyRvbicsIFsuLi5hcmd1bWVudHNdKVxyXG59XHJcbmZ1bmN0aW9uICRvZmYgKCkge1xyXG4gIHJldHVybiBhcHBseShnZXRFbWl0dGVyKCksICckb2ZmJywgWy4uLmFyZ3VtZW50c10pXHJcbn1cclxuZnVuY3Rpb24gJG9uY2UgKCkge1xyXG4gIHJldHVybiBhcHBseShnZXRFbWl0dGVyKCksICckb25jZScsIFsuLi5hcmd1bWVudHNdKVxyXG59XHJcbmZ1bmN0aW9uICRlbWl0ICgpIHtcclxuICByZXR1cm4gYXBwbHkoZ2V0RW1pdHRlcigpLCAnJGVtaXQnLCBbLi4uYXJndW1lbnRzXSlcclxufVxyXG5cclxudmFyIGV2ZW50QXBpID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xyXG4gIF9fcHJvdG9fXzogbnVsbCxcclxuICAkb246ICRvbixcclxuICAkb2ZmOiAkb2ZmLFxyXG4gICRvbmNlOiAkb25jZSxcclxuICAkZW1pdDogJGVtaXRcclxufSk7XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVNZWRpYVF1ZXJ5T2JzZXJ2ZXIgKCkge1xyXG4gIGNvbnN0IG1lZGlhUXVlcnlPYnNlcnZlciA9IHt9O1xyXG4gIGNvbnN0IHtcclxuICAgIHdpbmRvd1dpZHRoLFxyXG4gICAgd2luZG93SGVpZ2h0XHJcbiAgfSA9IHR0LmdldFN5c3RlbUluZm9TeW5jKCk7XHJcblxyXG4gIGNvbnN0IG9yaWVudGF0aW9uID0gd2luZG93V2lkdGggPCB3aW5kb3dIZWlnaHQgPyAncG9ydHJhaXQnIDogJ2xhbmRzY2FwZSc7XHJcblxyXG4gIG1lZGlhUXVlcnlPYnNlcnZlci5vYnNlcnZlID0gKG9wdGlvbnMsIGNhbGxiYWNrKSA9PiB7XHJcbiAgICBsZXQgbWF0Y2hlcyA9IHRydWU7XHJcbiAgICBmb3IgKGNvbnN0IGl0ZW0gaW4gb3B0aW9ucykge1xyXG4gICAgICBjb25zdCBpdGVtVmFsdWUgPSBpdGVtID09PSAnb3JpZW50YXRpb24nID8gb3B0aW9uc1tpdGVtXSA6IE51bWJlcihvcHRpb25zW2l0ZW1dKTtcclxuICAgICAgaWYgKG9wdGlvbnNbaXRlbV0gIT09ICcnKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0gPT09ICd3aWR0aCcpIHtcclxuICAgICAgICAgIGlmIChpdGVtVmFsdWUgPT09IHdpbmRvd1dpZHRoKSB7XHJcbiAgICAgICAgICAgIG1hdGNoZXMgPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWF0Y2hlcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYWxsYmFjayhtYXRjaGVzKTtcclxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXNcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0gPT09ICdtaW5XaWR0aCcpIHtcclxuICAgICAgICAgIGlmICh3aW5kb3dXaWR0aCA+PSBpdGVtVmFsdWUpIHtcclxuICAgICAgICAgICAgbWF0Y2hlcyA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtYXRjaGVzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKG1hdGNoZXMpO1xyXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlc1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbSA9PT0gJ21heFdpZHRoJykge1xyXG4gICAgICAgICAgaWYgKHdpbmRvd1dpZHRoIDw9IGl0ZW1WYWx1ZSkge1xyXG4gICAgICAgICAgICBtYXRjaGVzID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1hdGNoZXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgY2FsbGJhY2sobWF0Y2hlcyk7XHJcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVzXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaXRlbSA9PT0gJ2hlaWdodCcpIHtcclxuICAgICAgICAgIGlmIChpdGVtVmFsdWUgPT09IHdpbmRvd0hlaWdodCkge1xyXG4gICAgICAgICAgICBtYXRjaGVzID0gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIG1hdGNoZXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgY2FsbGJhY2sobWF0Y2hlcyk7XHJcbiAgICAgICAgICAgIHJldHVybiBtYXRjaGVzXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtID09PSAnbWluSGVpZ2h0Jykge1xyXG4gICAgICAgICAgaWYgKHdpbmRvd0hlaWdodCA+PSBpdGVtVmFsdWUpIHtcclxuICAgICAgICAgICAgbWF0Y2hlcyA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtYXRjaGVzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKG1hdGNoZXMpO1xyXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlc1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbSA9PT0gJ21heEhlaWdodCcpIHtcclxuICAgICAgICAgIGlmICh3aW5kb3dIZWlnaHQgPD0gaXRlbVZhbHVlKSB7XHJcbiAgICAgICAgICAgIG1hdGNoZXMgPSB0cnVlO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbWF0Y2hlcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYWxsYmFjayhtYXRjaGVzKTtcclxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoZXNcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpdGVtID09PSAnb3JpZW50YXRpb24nKSB7XHJcbiAgICAgICAgICBpZiAob3B0aW9uc1tpdGVtXSA9PT0gb3JpZW50YXRpb24pIHtcclxuICAgICAgICAgICAgbWF0Y2hlcyA9IHRydWU7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBtYXRjaGVzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKG1hdGNoZXMpO1xyXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2hlc1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2FsbGJhY2sobWF0Y2hlcyk7XHJcblxyXG4gICAgcmV0dXJuIG1hdGNoZXNcclxuICB9O1xyXG5cclxuICBtZWRpYVF1ZXJ5T2JzZXJ2ZXIuZGlzY29ubmVjdCA9ICgpID0+IHtcclxuICB9O1xyXG5cclxuICByZXR1cm4gbWVkaWFRdWVyeU9ic2VydmVyXHJcbn1cclxuXHJcbnZhciBhcGkgPSAvKiNfX1BVUkVfXyovT2JqZWN0LmZyZWV6ZSh7XHJcbiAgX19wcm90b19fOiBudWxsLFxyXG4gIGNyZWF0ZU1lZGlhUXVlcnlPYnNlcnZlcjogY3JlYXRlTWVkaWFRdWVyeU9ic2VydmVyXHJcbn0pO1xyXG5cclxuY29uc3QgTVBQYWdlID0gUGFnZTtcclxuY29uc3QgTVBDb21wb25lbnQgPSBDb21wb25lbnQ7XHJcblxyXG5jb25zdCBjdXN0b21pemVSRSA9IC86L2c7XHJcblxyXG5jb25zdCBjdXN0b21pemUgPSBjYWNoZWQoKHN0cikgPT4ge1xyXG4gIHJldHVybiBjYW1lbGl6ZShzdHIucmVwbGFjZShjdXN0b21pemVSRSwgJy0nKSlcclxufSk7XHJcblxyXG5mdW5jdGlvbiBpbml0VHJpZ2dlckV2ZW50IChtcEluc3RhbmNlKSB7XHJcbiAgY29uc3Qgb2xkVHJpZ2dlckV2ZW50ID0gbXBJbnN0YW5jZS50cmlnZ2VyRXZlbnQ7XHJcbiAgY29uc3QgbmV3VHJpZ2dlckV2ZW50ID0gZnVuY3Rpb24gKGV2ZW50LCAuLi5hcmdzKSB7XHJcbiAgICByZXR1cm4gb2xkVHJpZ2dlckV2ZW50LmFwcGx5KG1wSW5zdGFuY2UsIFtjdXN0b21pemUoZXZlbnQpLCAuLi5hcmdzXSlcclxuICB9O1xyXG4gIHRyeSB7XHJcbiAgICAvLyDkuqzkuJzlsI/nqIvluo8gdHJpZ2dlckV2ZW50IOS4uuWPquivu1xyXG4gICAgbXBJbnN0YW5jZS50cmlnZ2VyRXZlbnQgPSBuZXdUcmlnZ2VyRXZlbnQ7XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIG1wSW5zdGFuY2UuX3RyaWdnZXJFdmVudCA9IG5ld1RyaWdnZXJFdmVudDtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGluaXRIb29rIChuYW1lLCBvcHRpb25zLCBpc0NvbXBvbmVudCkge1xyXG4gIHtcclxuICAgIC8vIGZpeCBieSBMeGgg5a2X6IqC6Ieq5a6a5LmJ57uE5Lu2Q29tcG9uZW505p6E6YCg5Zmo5paH5qGj5LiK5YaZ5pyJY3JlYXRlZO+8jOS9huaYr+Wunua1i+WPquinpuWPkeS6hmxpZmV0aW1lc+S4iueahGNyZWF0ZWRcclxuICAgIGlzQ29tcG9uZW50ICYmIChvcHRpb25zID0gb3B0aW9ucy5saWZldGltZXMpO1xyXG4gIH1cclxuICBjb25zdCBvbGRIb29rID0gb3B0aW9uc1tuYW1lXTtcclxuICBpZiAoIW9sZEhvb2spIHtcclxuICAgIG9wdGlvbnNbbmFtZV0gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGluaXRUcmlnZ2VyRXZlbnQodGhpcyk7XHJcbiAgICB9O1xyXG4gIH0gZWxzZSB7XHJcbiAgICBvcHRpb25zW25hbWVdID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcclxuICAgICAgaW5pdFRyaWdnZXJFdmVudCh0aGlzKTtcclxuICAgICAgcmV0dXJuIG9sZEhvb2suYXBwbHkodGhpcywgYXJncylcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbmlmICghTVBQYWdlLl9fJHdyYXBwZXJlZCkge1xyXG4gIE1QUGFnZS5fXyR3cmFwcGVyZWQgPSB0cnVlO1xyXG4gIFBhZ2UgPSBmdW5jdGlvbiAob3B0aW9ucyA9IHt9KSB7XHJcbiAgICBpbml0SG9vaygnb25Mb2FkJywgb3B0aW9ucyk7XHJcbiAgICByZXR1cm4gTVBQYWdlKG9wdGlvbnMpXHJcbiAgfTtcclxuICBQYWdlLmFmdGVyID0gTVBQYWdlLmFmdGVyO1xyXG5cclxuICBDb21wb25lbnQgPSBmdW5jdGlvbiAob3B0aW9ucyA9IHt9KSB7XHJcbiAgICBpbml0SG9vaygnY3JlYXRlZCcsIG9wdGlvbnMsIHRydWUpO1xyXG4gICAgcmV0dXJuIE1QQ29tcG9uZW50KG9wdGlvbnMpXHJcbiAgfTtcclxufVxyXG5cclxuY29uc3QgUEFHRV9FVkVOVF9IT09LUyA9IFtcclxuICAnb25QdWxsRG93blJlZnJlc2gnLFxyXG4gICdvblJlYWNoQm90dG9tJyxcclxuICAnb25BZGRUb0Zhdm9yaXRlcycsXHJcbiAgJ29uU2hhcmVUaW1lbGluZScsXHJcbiAgJ29uU2hhcmVBcHBNZXNzYWdlJyxcclxuICAnb25QYWdlU2Nyb2xsJyxcclxuICAnb25SZXNpemUnLFxyXG4gICdvblRhYkl0ZW1UYXAnXHJcbl07XHJcblxyXG5mdW5jdGlvbiBpbml0TW9ja3MgKHZtLCBtb2Nrcykge1xyXG4gIGNvbnN0IG1wSW5zdGFuY2UgPSB2bS4kbXBbdm0ubXBUeXBlXTtcclxuICBtb2Nrcy5mb3JFYWNoKG1vY2sgPT4ge1xyXG4gICAgaWYgKGhhc093bihtcEluc3RhbmNlLCBtb2NrKSkge1xyXG4gICAgICB2bVttb2NrXSA9IG1wSW5zdGFuY2VbbW9ja107XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhc0hvb2sgKGhvb2ssIHZ1ZU9wdGlvbnMpIHtcclxuICBpZiAoIXZ1ZU9wdGlvbnMpIHtcclxuICAgIHJldHVybiB0cnVlXHJcbiAgfVxyXG5cclxuICBpZiAoVnVlLm9wdGlvbnMgJiYgQXJyYXkuaXNBcnJheShWdWUub3B0aW9uc1tob29rXSkpIHtcclxuICAgIHJldHVybiB0cnVlXHJcbiAgfVxyXG5cclxuICB2dWVPcHRpb25zID0gdnVlT3B0aW9ucy5kZWZhdWx0IHx8IHZ1ZU9wdGlvbnM7XHJcblxyXG4gIGlmIChpc0ZuKHZ1ZU9wdGlvbnMpKSB7XHJcbiAgICBpZiAoaXNGbih2dWVPcHRpb25zLmV4dGVuZE9wdGlvbnNbaG9va10pKSB7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgICBpZiAodnVlT3B0aW9ucy5zdXBlciAmJlxyXG4gICAgICB2dWVPcHRpb25zLnN1cGVyLm9wdGlvbnMgJiZcclxuICAgICAgQXJyYXkuaXNBcnJheSh2dWVPcHRpb25zLnN1cGVyLm9wdGlvbnNbaG9va10pKSB7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcblxyXG4gIGlmIChpc0ZuKHZ1ZU9wdGlvbnNbaG9va10pKSB7XHJcbiAgICByZXR1cm4gdHJ1ZVxyXG4gIH1cclxuICBjb25zdCBtaXhpbnMgPSB2dWVPcHRpb25zLm1peGlucztcclxuICBpZiAoQXJyYXkuaXNBcnJheShtaXhpbnMpKSB7XHJcbiAgICByZXR1cm4gISFtaXhpbnMuZmluZChtaXhpbiA9PiBoYXNIb29rKGhvb2ssIG1peGluKSlcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGluaXRIb29rcyAobXBPcHRpb25zLCBob29rcywgdnVlT3B0aW9ucykge1xyXG4gIGhvb2tzLmZvckVhY2goaG9vayA9PiB7XHJcbiAgICBpZiAoaGFzSG9vayhob29rLCB2dWVPcHRpb25zKSkge1xyXG4gICAgICBtcE9wdGlvbnNbaG9va10gPSBmdW5jdGlvbiAoYXJncykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiR2bSAmJiB0aGlzLiR2bS5fX2NhbGxfaG9vayhob29rLCBhcmdzKVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpbml0VnVlQ29tcG9uZW50IChWdWUsIHZ1ZU9wdGlvbnMpIHtcclxuICB2dWVPcHRpb25zID0gdnVlT3B0aW9ucy5kZWZhdWx0IHx8IHZ1ZU9wdGlvbnM7XHJcbiAgbGV0IFZ1ZUNvbXBvbmVudDtcclxuICBpZiAoaXNGbih2dWVPcHRpb25zKSkge1xyXG4gICAgVnVlQ29tcG9uZW50ID0gdnVlT3B0aW9ucztcclxuICB9IGVsc2Uge1xyXG4gICAgVnVlQ29tcG9uZW50ID0gVnVlLmV4dGVuZCh2dWVPcHRpb25zKTtcclxuICB9XHJcbiAgdnVlT3B0aW9ucyA9IFZ1ZUNvbXBvbmVudC5vcHRpb25zO1xyXG4gIHJldHVybiBbVnVlQ29tcG9uZW50LCB2dWVPcHRpb25zXVxyXG59XHJcblxyXG5mdW5jdGlvbiBpbml0U2xvdHMgKHZtLCB2dWVTbG90cykge1xyXG4gIGlmIChBcnJheS5pc0FycmF5KHZ1ZVNsb3RzKSAmJiB2dWVTbG90cy5sZW5ndGgpIHtcclxuICAgIGNvbnN0ICRzbG90cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XHJcbiAgICB2dWVTbG90cy5mb3JFYWNoKHNsb3ROYW1lID0+IHtcclxuICAgICAgJHNsb3RzW3Nsb3ROYW1lXSA9IHRydWU7XHJcbiAgICB9KTtcclxuICAgIHZtLiRzY29wZWRTbG90cyA9IHZtLiRzbG90cyA9ICRzbG90cztcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGluaXRWdWVJZHMgKHZ1ZUlkcywgbXBJbnN0YW5jZSkge1xyXG4gIHZ1ZUlkcyA9ICh2dWVJZHMgfHwgJycpLnNwbGl0KCcsJyk7XHJcbiAgY29uc3QgbGVuID0gdnVlSWRzLmxlbmd0aDtcclxuXHJcbiAgaWYgKGxlbiA9PT0gMSkge1xyXG4gICAgbXBJbnN0YW5jZS5fJHZ1ZUlkID0gdnVlSWRzWzBdO1xyXG4gIH0gZWxzZSBpZiAobGVuID09PSAyKSB7XHJcbiAgICBtcEluc3RhbmNlLl8kdnVlSWQgPSB2dWVJZHNbMF07XHJcbiAgICBtcEluc3RhbmNlLl8kdnVlUGlkID0gdnVlSWRzWzFdO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaW5pdERhdGEgKHZ1ZU9wdGlvbnMsIGNvbnRleHQpIHtcclxuICBsZXQgZGF0YSA9IHZ1ZU9wdGlvbnMuZGF0YSB8fCB7fTtcclxuICBjb25zdCBtZXRob2RzID0gdnVlT3B0aW9ucy5tZXRob2RzIHx8IHt9O1xyXG5cclxuICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGRhdGEgPSBkYXRhLmNhbGwoY29udGV4dCk7IC8vIOaUr+aMgSBWdWUucHJvdG90eXBlIOS4iuaMgueahOaVsOaNrlxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuVlVFX0FQUF9ERUJVRykge1xyXG4gICAgICAgIGNvbnNvbGUud2Fybign5qC55o2uIFZ1ZSDnmoQgZGF0YSDlh73mlbDliJ3lp4vljJblsI/nqIvluo8gZGF0YSDlpLHotKXvvIzor7flsL3ph4/noa7kv50gZGF0YSDlh73mlbDkuK3kuI3orr/pl64gdm0g5a+56LGh77yM5ZCm5YiZ5Y+v6IO95b2x5ZON6aaW5qyh5pWw5o2u5riy5p+T6YCf5bqm44CCJywgZGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgdHJ5IHtcclxuICAgICAgLy8g5a+5IGRhdGEg5qC85byP5YyWXHJcbiAgICAgIGRhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgIH0gY2F0Y2ggKGUpIHt9XHJcbiAgfVxyXG5cclxuICBpZiAoIWlzUGxhaW5PYmplY3QoZGF0YSkpIHtcclxuICAgIGRhdGEgPSB7fTtcclxuICB9XHJcblxyXG4gIE9iamVjdC5rZXlzKG1ldGhvZHMpLmZvckVhY2gobWV0aG9kTmFtZSA9PiB7XHJcbiAgICBpZiAoY29udGV4dC5fX2xpZmVjeWNsZV9ob29rc19fLmluZGV4T2YobWV0aG9kTmFtZSkgPT09IC0xICYmICFoYXNPd24oZGF0YSwgbWV0aG9kTmFtZSkpIHtcclxuICAgICAgZGF0YVttZXRob2ROYW1lXSA9IG1ldGhvZHNbbWV0aG9kTmFtZV07XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBkYXRhXHJcbn1cclxuXHJcbmNvbnN0IFBST1BfVFlQRVMgPSBbU3RyaW5nLCBOdW1iZXIsIEJvb2xlYW4sIE9iamVjdCwgQXJyYXksIG51bGxdO1xyXG5cclxuZnVuY3Rpb24gY3JlYXRlT2JzZXJ2ZXIgKG5hbWUpIHtcclxuICByZXR1cm4gZnVuY3Rpb24gb2JzZXJ2ZXIgKG5ld1ZhbCwgb2xkVmFsKSB7XHJcbiAgICBpZiAodGhpcy4kdm0pIHtcclxuICAgICAgdGhpcy4kdm1bbmFtZV0gPSBuZXdWYWw7IC8vIOS4uuS6huinpuWPkeWFtuS7lumdniByZW5kZXIgd2F0Y2hlclxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaW5pdEJlaGF2aW9ycyAodnVlT3B0aW9ucywgaW5pdEJlaGF2aW9yKSB7XHJcbiAgY29uc3QgdnVlQmVoYXZpb3JzID0gdnVlT3B0aW9ucy5iZWhhdmlvcnM7XHJcbiAgY29uc3QgdnVlRXh0ZW5kcyA9IHZ1ZU9wdGlvbnMuZXh0ZW5kcztcclxuICBjb25zdCB2dWVNaXhpbnMgPSB2dWVPcHRpb25zLm1peGlucztcclxuXHJcbiAgbGV0IHZ1ZVByb3BzID0gdnVlT3B0aW9ucy5wcm9wcztcclxuXHJcbiAgaWYgKCF2dWVQcm9wcykge1xyXG4gICAgdnVlT3B0aW9ucy5wcm9wcyA9IHZ1ZVByb3BzID0gW107XHJcbiAgfVxyXG5cclxuICBjb25zdCBiZWhhdmlvcnMgPSBbXTtcclxuICBpZiAoQXJyYXkuaXNBcnJheSh2dWVCZWhhdmlvcnMpKSB7XHJcbiAgICB2dWVCZWhhdmlvcnMuZm9yRWFjaChiZWhhdmlvciA9PiB7XHJcbiAgICAgIGJlaGF2aW9ycy5wdXNoKGJlaGF2aW9yLnJlcGxhY2UoJ3VuaTovLycsIGAke1widHRcIn06Ly9gKSk7XHJcbiAgICAgIGlmIChiZWhhdmlvciA9PT0gJ3VuaTovL2Zvcm0tZmllbGQnKSB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodnVlUHJvcHMpKSB7XHJcbiAgICAgICAgICB2dWVQcm9wcy5wdXNoKCduYW1lJyk7XHJcbiAgICAgICAgICB2dWVQcm9wcy5wdXNoKCd2YWx1ZScpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2dWVQcm9wcy5uYW1lID0ge1xyXG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgdnVlUHJvcHMudmFsdWUgPSB7XHJcbiAgICAgICAgICAgIHR5cGU6IFtTdHJpbmcsIE51bWJlciwgQm9vbGVhbiwgQXJyYXksIE9iamVjdCwgRGF0ZV0sXHJcbiAgICAgICAgICAgIGRlZmF1bHQ6ICcnXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGlmIChpc1BsYWluT2JqZWN0KHZ1ZUV4dGVuZHMpICYmIHZ1ZUV4dGVuZHMucHJvcHMpIHtcclxuICAgIGJlaGF2aW9ycy5wdXNoKFxyXG4gICAgICBpbml0QmVoYXZpb3Ioe1xyXG4gICAgICAgIHByb3BlcnRpZXM6IGluaXRQcm9wZXJ0aWVzKHZ1ZUV4dGVuZHMucHJvcHMsIHRydWUpXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuICBpZiAoQXJyYXkuaXNBcnJheSh2dWVNaXhpbnMpKSB7XHJcbiAgICB2dWVNaXhpbnMuZm9yRWFjaCh2dWVNaXhpbiA9PiB7XHJcbiAgICAgIGlmIChpc1BsYWluT2JqZWN0KHZ1ZU1peGluKSAmJiB2dWVNaXhpbi5wcm9wcykge1xyXG4gICAgICAgIGJlaGF2aW9ycy5wdXNoKFxyXG4gICAgICAgICAgaW5pdEJlaGF2aW9yKHtcclxuICAgICAgICAgICAgcHJvcGVydGllczogaW5pdFByb3BlcnRpZXModnVlTWl4aW4ucHJvcHMsIHRydWUpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICByZXR1cm4gYmVoYXZpb3JzXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhcnNlUHJvcFR5cGUgKGtleSwgdHlwZSwgZGVmYXVsdFZhbHVlLCBmaWxlKSB7XHJcbiAgLy8gW1N0cmluZ109PlN0cmluZ1xyXG4gIGlmIChBcnJheS5pc0FycmF5KHR5cGUpICYmIHR5cGUubGVuZ3RoID09PSAxKSB7XHJcbiAgICByZXR1cm4gdHlwZVswXVxyXG4gIH1cclxuICByZXR1cm4gdHlwZVxyXG59XHJcblxyXG5mdW5jdGlvbiBpbml0UHJvcGVydGllcyAocHJvcHMsIGlzQmVoYXZpb3IgPSBmYWxzZSwgZmlsZSA9ICcnKSB7XHJcbiAgY29uc3QgcHJvcGVydGllcyA9IHt9O1xyXG4gIGlmICghaXNCZWhhdmlvcikge1xyXG4gICAgcHJvcGVydGllcy52dWVJZCA9IHtcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICB2YWx1ZTogJydcclxuICAgIH07XHJcbiAgICAvLyDnlKjkuo7lrZfoioLot7PliqjlsI/nqIvluo/mqKHmi5/mir3osaHoioLngrlcclxuICAgIHByb3BlcnRpZXMuZ2VuZXJpYyA9IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICB2YWx1ZTogbnVsbFxyXG4gICAgfTtcclxuICAgIC8vIHNjb3BlZFNsb3RzQ29tcGlsZXIgYXV0b1xyXG4gICAgcHJvcGVydGllcy5zY29wZWRTbG90c0NvbXBpbGVyID0ge1xyXG4gICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgIHZhbHVlOiAnJ1xyXG4gICAgfTtcclxuICAgIHByb3BlcnRpZXMudnVlU2xvdHMgPSB7IC8vIOWwj+eoi+W6j+S4jeiDveebtOaOpeWumuS5iSAkc2xvdHMg55qEIHByb3Bz77yM5omA5Lul6YCa6L+HIHZ1ZVNsb3RzIOi9rOaNouWIsCAkc2xvdHNcclxuICAgICAgdHlwZTogbnVsbCxcclxuICAgICAgdmFsdWU6IFtdLFxyXG4gICAgICBvYnNlcnZlcjogZnVuY3Rpb24gKG5ld1ZhbCwgb2xkVmFsKSB7XHJcbiAgICAgICAgY29uc3QgJHNsb3RzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuICAgICAgICBuZXdWYWwuZm9yRWFjaChzbG90TmFtZSA9PiB7XHJcbiAgICAgICAgICAkc2xvdHNbc2xvdE5hbWVdID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgJHNsb3RzXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG4gIGlmIChBcnJheS5pc0FycmF5KHByb3BzKSkgeyAvLyBbJ3RpdGxlJ11cclxuICAgIHByb3BzLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgcHJvcGVydGllc1trZXldID0ge1xyXG4gICAgICAgIHR5cGU6IG51bGwsXHJcbiAgICAgICAgb2JzZXJ2ZXI6IGNyZWF0ZU9ic2VydmVyKGtleSlcclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChwcm9wcykpIHsgLy8ge3RpdGxlOnt0eXBlOlN0cmluZyxkZWZhdWx0OicnfSxjb250ZW50OlN0cmluZ31cclxuICAgIE9iamVjdC5rZXlzKHByb3BzKS5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgIGNvbnN0IG9wdHMgPSBwcm9wc1trZXldO1xyXG4gICAgICBpZiAoaXNQbGFpbk9iamVjdChvcHRzKSkgeyAvLyB0aXRsZTp7dHlwZTpTdHJpbmcsZGVmYXVsdDonJ31cclxuICAgICAgICBsZXQgdmFsdWUgPSBvcHRzLmRlZmF1bHQ7XHJcbiAgICAgICAgaWYgKGlzRm4odmFsdWUpKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBvcHRzLnR5cGUgPSBwYXJzZVByb3BUeXBlKGtleSwgb3B0cy50eXBlKTtcclxuXHJcbiAgICAgICAgcHJvcGVydGllc1trZXldID0ge1xyXG4gICAgICAgICAgdHlwZTogUFJPUF9UWVBFUy5pbmRleE9mKG9wdHMudHlwZSkgIT09IC0xID8gb3B0cy50eXBlIDogbnVsbCxcclxuICAgICAgICAgIHZhbHVlLFxyXG4gICAgICAgICAgb2JzZXJ2ZXI6IGNyZWF0ZU9ic2VydmVyKGtleSlcclxuICAgICAgICB9O1xyXG4gICAgICB9IGVsc2UgeyAvLyBjb250ZW50OlN0cmluZ1xyXG4gICAgICAgIGNvbnN0IHR5cGUgPSBwYXJzZVByb3BUeXBlKGtleSwgb3B0cyk7XHJcbiAgICAgICAgcHJvcGVydGllc1trZXldID0ge1xyXG4gICAgICAgICAgdHlwZTogUFJPUF9UWVBFUy5pbmRleE9mKHR5cGUpICE9PSAtMSA/IHR5cGUgOiBudWxsLFxyXG4gICAgICAgICAgb2JzZXJ2ZXI6IGNyZWF0ZU9ic2VydmVyKGtleSlcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmV0dXJuIHByb3BlcnRpZXNcclxufVxyXG5cclxuZnVuY3Rpb24gd3JhcHBlciQxIChldmVudCkge1xyXG4gIC8vIFRPRE8g5Y+I5b6X5YW85a65IG1wdnVlIOeahCBtcCDlr7nosaFcclxuICB0cnkge1xyXG4gICAgZXZlbnQubXAgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGV2ZW50KSk7XHJcbiAgfSBjYXRjaCAoZSkge31cclxuXHJcbiAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uID0gbm9vcDtcclxuICBldmVudC5wcmV2ZW50RGVmYXVsdCA9IG5vb3A7XHJcblxyXG4gIGV2ZW50LnRhcmdldCA9IGV2ZW50LnRhcmdldCB8fCB7fTtcclxuXHJcbiAgaWYgKCFoYXNPd24oZXZlbnQsICdkZXRhaWwnKSkge1xyXG4gICAgZXZlbnQuZGV0YWlsID0ge307XHJcbiAgfVxyXG5cclxuICBpZiAoaGFzT3duKGV2ZW50LCAnbWFya2VySWQnKSkge1xyXG4gICAgZXZlbnQuZGV0YWlsID0gdHlwZW9mIGV2ZW50LmRldGFpbCA9PT0gJ29iamVjdCcgPyBldmVudC5kZXRhaWwgOiB7fTtcclxuICAgIGV2ZW50LmRldGFpbC5tYXJrZXJJZCA9IGV2ZW50Lm1hcmtlcklkO1xyXG4gIH1cclxuXHJcbiAgaWYgKGlzUGxhaW5PYmplY3QoZXZlbnQuZGV0YWlsKSkge1xyXG4gICAgZXZlbnQudGFyZ2V0ID0gT2JqZWN0LmFzc2lnbih7fSwgZXZlbnQudGFyZ2V0LCBldmVudC5kZXRhaWwpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGV2ZW50XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEV4dHJhVmFsdWUgKHZtLCBkYXRhUGF0aHNBcnJheSkge1xyXG4gIGxldCBjb250ZXh0ID0gdm07XHJcbiAgZGF0YVBhdGhzQXJyYXkuZm9yRWFjaChkYXRhUGF0aEFycmF5ID0+IHtcclxuICAgIGNvbnN0IGRhdGFQYXRoID0gZGF0YVBhdGhBcnJheVswXTtcclxuICAgIGNvbnN0IHZhbHVlID0gZGF0YVBhdGhBcnJheVsyXTtcclxuICAgIGlmIChkYXRhUGF0aCB8fCB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnKSB7IC8vIFsnJywnJyxpbmRleCwnZGlzYWJsZSddXHJcbiAgICAgIGNvbnN0IHByb3BQYXRoID0gZGF0YVBhdGhBcnJheVsxXTtcclxuICAgICAgY29uc3QgdmFsdWVQYXRoID0gZGF0YVBhdGhBcnJheVszXTtcclxuXHJcbiAgICAgIGxldCB2Rm9yO1xyXG4gICAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcihkYXRhUGF0aCkpIHtcclxuICAgICAgICB2Rm9yID0gZGF0YVBhdGg7XHJcbiAgICAgIH0gZWxzZSBpZiAoIWRhdGFQYXRoKSB7XHJcbiAgICAgICAgdkZvciA9IGNvbnRleHQ7XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGRhdGFQYXRoID09PSAnc3RyaW5nJyAmJiBkYXRhUGF0aCkge1xyXG4gICAgICAgIGlmIChkYXRhUGF0aC5pbmRleE9mKCcjcyMnKSA9PT0gMCkge1xyXG4gICAgICAgICAgdkZvciA9IGRhdGFQYXRoLnN1YnN0cigzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdkZvciA9IHZtLl9fZ2V0X3ZhbHVlKGRhdGFQYXRoLCBjb250ZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKHZGb3IpKSB7XHJcbiAgICAgICAgY29udGV4dCA9IHZhbHVlO1xyXG4gICAgICB9IGVsc2UgaWYgKCFwcm9wUGF0aCkge1xyXG4gICAgICAgIGNvbnRleHQgPSB2Rm9yW3ZhbHVlXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2Rm9yKSkge1xyXG4gICAgICAgICAgY29udGV4dCA9IHZGb3IuZmluZCh2Rm9ySXRlbSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB2bS5fX2dldF92YWx1ZShwcm9wUGF0aCwgdkZvckl0ZW0pID09PSB2YWx1ZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHZGb3IpKSB7XHJcbiAgICAgICAgICBjb250ZXh0ID0gT2JqZWN0LmtleXModkZvcikuZmluZCh2Rm9yS2V5ID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHZtLl9fZ2V0X3ZhbHVlKHByb3BQYXRoLCB2Rm9yW3ZGb3JLZXldKSA9PT0gdmFsdWVcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCd2LWZvciDmmoLkuI3mlK/mjIHlvqrnjq/mlbDmja7vvJonLCB2Rm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh2YWx1ZVBhdGgpIHtcclxuICAgICAgICBjb250ZXh0ID0gdm0uX19nZXRfdmFsdWUodmFsdWVQYXRoLCBjb250ZXh0KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBjb250ZXh0XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHByb2Nlc3NFdmVudEV4dHJhICh2bSwgZXh0cmEsIGV2ZW50KSB7XHJcbiAgY29uc3QgZXh0cmFPYmogPSB7fTtcclxuXHJcbiAgaWYgKEFycmF5LmlzQXJyYXkoZXh0cmEpICYmIGV4dHJhLmxlbmd0aCkge1xyXG4gICAgLyoqXHJcbiAgICAgKltcclxuICAgICAqICAgIFsnZGF0YS5pdGVtcycsICdkYXRhLmlkJywgaXRlbS5kYXRhLmlkXSxcclxuICAgICAqICAgIFsnbWV0YXMnLCAnaWQnLCBtZXRhLmlkXVxyXG4gICAgICpdLFxyXG4gICAgICpbXHJcbiAgICAgKiAgICBbJ2RhdGEuaXRlbXMnLCAnZGF0YS5pZCcsIGl0ZW0uZGF0YS5pZF0sXHJcbiAgICAgKiAgICBbJ21ldGFzJywgJ2lkJywgbWV0YS5pZF1cclxuICAgICAqXSxcclxuICAgICAqJ3Rlc3QnXHJcbiAgICAgKi9cclxuICAgIGV4dHJhLmZvckVhY2goKGRhdGFQYXRoLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAodHlwZW9mIGRhdGFQYXRoID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGlmICghZGF0YVBhdGgpIHsgLy8gbW9kZWwscHJvcC5zeW5jXHJcbiAgICAgICAgICBleHRyYU9ialsnJCcgKyBpbmRleF0gPSB2bTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGRhdGFQYXRoID09PSAnJGV2ZW50JykgeyAvLyAkZXZlbnRcclxuICAgICAgICAgICAgZXh0cmFPYmpbJyQnICsgaW5kZXhdID0gZXZlbnQ7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFQYXRoID09PSAnYXJndW1lbnRzJykge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQuZGV0YWlsICYmIGV2ZW50LmRldGFpbC5fX2FyZ3NfXykge1xyXG4gICAgICAgICAgICAgIGV4dHJhT2JqWyckJyArIGluZGV4XSA9IGV2ZW50LmRldGFpbC5fX2FyZ3NfXztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBleHRyYU9ialsnJCcgKyBpbmRleF0gPSBbZXZlbnRdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFQYXRoLmluZGV4T2YoJyRldmVudC4nKSA9PT0gMCkgeyAvLyAkZXZlbnQudGFyZ2V0LnZhbHVlXHJcbiAgICAgICAgICAgIGV4dHJhT2JqWyckJyArIGluZGV4XSA9IHZtLl9fZ2V0X3ZhbHVlKGRhdGFQYXRoLnJlcGxhY2UoJyRldmVudC4nLCAnJyksIGV2ZW50KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGV4dHJhT2JqWyckJyArIGluZGV4XSA9IHZtLl9fZ2V0X3ZhbHVlKGRhdGFQYXRoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZXh0cmFPYmpbJyQnICsgaW5kZXhdID0gZ2V0RXh0cmFWYWx1ZSh2bSwgZGF0YVBhdGgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJldHVybiBleHRyYU9ialxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRPYmpCeUFycmF5IChhcnIpIHtcclxuICBjb25zdCBvYmogPSB7fTtcclxuICBmb3IgKGxldCBpID0gMTsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgY29uc3QgZWxlbWVudCA9IGFycltpXTtcclxuICAgIG9ialtlbGVtZW50WzBdXSA9IGVsZW1lbnRbMV07XHJcbiAgfVxyXG4gIHJldHVybiBvYmpcclxufVxyXG5cclxuZnVuY3Rpb24gcHJvY2Vzc0V2ZW50QXJncyAodm0sIGV2ZW50LCBhcmdzID0gW10sIGV4dHJhID0gW10sIGlzQ3VzdG9tLCBtZXRob2ROYW1lKSB7XHJcbiAgbGV0IGlzQ3VzdG9tTVBFdmVudCA9IGZhbHNlOyAvLyB3eGNvbXBvbmVudCDnu4Tku7bvvIzkvKDpgJLljp/lp4sgZXZlbnQg5a+56LGhXHJcbiAgaWYgKGlzQ3VzdG9tKSB7IC8vIOiHquWumuS5ieS6i+S7tlxyXG4gICAgaXNDdXN0b21NUEV2ZW50ID0gZXZlbnQuY3VycmVudFRhcmdldCAmJlxyXG4gICAgICBldmVudC5jdXJyZW50VGFyZ2V0LmRhdGFzZXQgJiZcclxuICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5kYXRhc2V0LmNvbVR5cGUgPT09ICd3eCc7XHJcbiAgICBpZiAoIWFyZ3MubGVuZ3RoKSB7IC8vIOaXoOWPguaVsO+8jOebtOaOpeS8oOWFpSBldmVudCDmiJYgZGV0YWlsIOaVsOe7hFxyXG4gICAgICBpZiAoaXNDdXN0b21NUEV2ZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIFtldmVudF1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZXZlbnQuZGV0YWlsLl9fYXJnc19fIHx8IGV2ZW50LmRldGFpbFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3QgZXh0cmFPYmogPSBwcm9jZXNzRXZlbnRFeHRyYSh2bSwgZXh0cmEsIGV2ZW50KTtcclxuXHJcbiAgY29uc3QgcmV0ID0gW107XHJcbiAgYXJncy5mb3JFYWNoKGFyZyA9PiB7XHJcbiAgICBpZiAoYXJnID09PSAnJGV2ZW50Jykge1xyXG4gICAgICBpZiAobWV0aG9kTmFtZSA9PT0gJ19fc2V0X21vZGVsJyAmJiAhaXNDdXN0b20pIHsgLy8gaW5wdXQgdi1tb2RlbCB2YWx1ZVxyXG4gICAgICAgIHJldC5wdXNoKGV2ZW50LnRhcmdldC52YWx1ZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGlzQ3VzdG9tICYmICFpc0N1c3RvbU1QRXZlbnQpIHtcclxuICAgICAgICAgIHJldC5wdXNoKGV2ZW50LmRldGFpbC5fX2FyZ3NfX1swXSk7XHJcbiAgICAgICAgfSBlbHNlIHsgLy8gd3hjb21wb25lbnQg57uE5Lu25oiW5YaF572u57uE5Lu2XHJcbiAgICAgICAgICByZXQucHVzaChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhcmcpICYmIGFyZ1swXSA9PT0gJ28nKSB7XHJcbiAgICAgICAgcmV0LnB1c2goZ2V0T2JqQnlBcnJheShhcmcpKTtcclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJyAmJiBoYXNPd24oZXh0cmFPYmosIGFyZykpIHtcclxuICAgICAgICByZXQucHVzaChleHRyYU9ialthcmddKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXQucHVzaChhcmcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiByZXRcclxufVxyXG5cclxuY29uc3QgT05DRSA9ICd+JztcclxuY29uc3QgQ1VTVE9NID0gJ14nO1xyXG5cclxuZnVuY3Rpb24gaXNNYXRjaEV2ZW50VHlwZSAoZXZlbnRUeXBlLCBvcHRUeXBlKSB7XHJcbiAgcmV0dXJuIChldmVudFR5cGUgPT09IG9wdFR5cGUpIHx8XHJcbiAgICAoXHJcbiAgICAgIG9wdFR5cGUgPT09ICdyZWdpb25jaGFuZ2UnICYmXHJcbiAgICAgIChcclxuICAgICAgICBldmVudFR5cGUgPT09ICdiZWdpbicgfHxcclxuICAgICAgICBldmVudFR5cGUgPT09ICdlbmQnXHJcbiAgICAgIClcclxuICAgIClcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Q29udGV4dFZtICh2bSkge1xyXG4gIGxldCAkcGFyZW50ID0gdm0uJHBhcmVudDtcclxuICAvLyDniLbnu4Tku7bmmK8gc2NvcGVkIHNsb3RzIOaIluiAheWFtuS7luiHquWumuS5iee7hOS7tuaXtue7p+e7reafpeaJvlxyXG4gIHdoaWxlICgkcGFyZW50ICYmICRwYXJlbnQuJHBhcmVudCAmJiAoJHBhcmVudC4kb3B0aW9ucy5nZW5lcmljIHx8ICRwYXJlbnQuJHBhcmVudC4kb3B0aW9ucy5nZW5lcmljIHx8ICRwYXJlbnQuJHNjb3BlLl8kdnVlUGlkKSkge1xyXG4gICAgJHBhcmVudCA9ICRwYXJlbnQuJHBhcmVudDtcclxuICB9XHJcbiAgcmV0dXJuICRwYXJlbnQgJiYgJHBhcmVudC4kcGFyZW50XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhbmRsZUV2ZW50IChldmVudCkge1xyXG4gIGV2ZW50ID0gd3JhcHBlciQxKGV2ZW50KTtcclxuXHJcbiAgLy8gW1sndGFwJyxbWydoYW5kbGUnLFsxLDIsYV1dLFsnaGFuZGxlMScsWzEsMixhXV1dXV1cclxuICBjb25zdCBkYXRhc2V0ID0gKGV2ZW50LmN1cnJlbnRUYXJnZXQgfHwgZXZlbnQudGFyZ2V0KS5kYXRhc2V0O1xyXG4gIGlmICghZGF0YXNldCkge1xyXG4gICAgcmV0dXJuIGNvbnNvbGUud2Fybign5LqL5Lu25L+h5oGv5LiN5a2Y5ZyoJylcclxuICB9XHJcbiAgY29uc3QgZXZlbnRPcHRzID0gZGF0YXNldC5ldmVudE9wdHMgfHwgZGF0YXNldFsnZXZlbnQtb3B0cyddOyAvLyDmlK/ku5jlrp0gd2ViLXZpZXcg57uE5Lu2IGRhdGFzZXQg6Z2e6am85bOwXHJcbiAgaWYgKCFldmVudE9wdHMpIHtcclxuICAgIHJldHVybiBjb25zb2xlLndhcm4oJ+S6i+S7tuS/oeaBr+S4jeWtmOWcqCcpXHJcbiAgfVxyXG5cclxuICAvLyBbWydoYW5kbGUnLFsxLDIsYV1dLFsnaGFuZGxlMScsWzEsMixhXV1dXHJcbiAgY29uc3QgZXZlbnRUeXBlID0gZXZlbnQudHlwZTtcclxuXHJcbiAgY29uc3QgcmV0ID0gW107XHJcblxyXG4gIGV2ZW50T3B0cy5mb3JFYWNoKGV2ZW50T3B0ID0+IHtcclxuICAgIGxldCB0eXBlID0gZXZlbnRPcHRbMF07XHJcbiAgICBjb25zdCBldmVudHNBcnJheSA9IGV2ZW50T3B0WzFdO1xyXG5cclxuICAgIGNvbnN0IGlzQ3VzdG9tID0gdHlwZS5jaGFyQXQoMCkgPT09IENVU1RPTTtcclxuICAgIHR5cGUgPSBpc0N1c3RvbSA/IHR5cGUuc2xpY2UoMSkgOiB0eXBlO1xyXG4gICAgY29uc3QgaXNPbmNlID0gdHlwZS5jaGFyQXQoMCkgPT09IE9OQ0U7XHJcbiAgICB0eXBlID0gaXNPbmNlID8gdHlwZS5zbGljZSgxKSA6IHR5cGU7XHJcblxyXG4gICAgaWYgKGV2ZW50c0FycmF5ICYmIGlzTWF0Y2hFdmVudFR5cGUoZXZlbnRUeXBlLCB0eXBlKSkge1xyXG4gICAgICBldmVudHNBcnJheS5mb3JFYWNoKGV2ZW50QXJyYXkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBldmVudEFycmF5WzBdO1xyXG4gICAgICAgIGlmIChtZXRob2ROYW1lKSB7XHJcbiAgICAgICAgICBsZXQgaGFuZGxlckN0eCA9IHRoaXMuJHZtO1xyXG4gICAgICAgICAgaWYgKGhhbmRsZXJDdHguJG9wdGlvbnMuZ2VuZXJpYykgeyAvLyBtcC13ZWl4aW4sbXAtdG91dGlhbyDmir3osaHoioLngrnmqKHmi58gc2NvcGVkIHNsb3RzXHJcbiAgICAgICAgICAgIGhhbmRsZXJDdHggPSBnZXRDb250ZXh0Vm0oaGFuZGxlckN0eCkgfHwgaGFuZGxlckN0eDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChtZXRob2ROYW1lID09PSAnJGVtaXQnKSB7XHJcbiAgICAgICAgICAgIGhhbmRsZXJDdHguJGVtaXQuYXBwbHkoaGFuZGxlckN0eCxcclxuICAgICAgICAgICAgICBwcm9jZXNzRXZlbnRBcmdzKFxyXG4gICAgICAgICAgICAgICAgdGhpcy4kdm0sXHJcbiAgICAgICAgICAgICAgICBldmVudCxcclxuICAgICAgICAgICAgICAgIGV2ZW50QXJyYXlbMV0sXHJcbiAgICAgICAgICAgICAgICBldmVudEFycmF5WzJdLFxyXG4gICAgICAgICAgICAgICAgaXNDdXN0b20sXHJcbiAgICAgICAgICAgICAgICBtZXRob2ROYW1lXHJcbiAgICAgICAgICAgICAgKSk7XHJcbiAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgaGFuZGxlciA9IGhhbmRsZXJDdHhbbWV0aG9kTmFtZV07XHJcbiAgICAgICAgICBpZiAoIWlzRm4oaGFuZGxlcikpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAgX3ZtLiR7bWV0aG9kTmFtZX0gaXMgbm90IGEgZnVuY3Rpb25gKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGlzT25jZSkge1xyXG4gICAgICAgICAgICBpZiAoaGFuZGxlci5vbmNlKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaGFuZGxlci5vbmNlID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBwYXJhbXMgPSBwcm9jZXNzRXZlbnRBcmdzKFxyXG4gICAgICAgICAgICB0aGlzLiR2bSxcclxuICAgICAgICAgICAgZXZlbnQsXHJcbiAgICAgICAgICAgIGV2ZW50QXJyYXlbMV0sXHJcbiAgICAgICAgICAgIGV2ZW50QXJyYXlbMl0sXHJcbiAgICAgICAgICAgIGlzQ3VzdG9tLFxyXG4gICAgICAgICAgICBtZXRob2ROYW1lXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcGFyYW1zID0gQXJyYXkuaXNBcnJheShwYXJhbXMpID8gcGFyYW1zIDogW107XHJcbiAgICAgICAgICAvLyDlj4LmlbDlsL7pg6jlop7liqDljp/lp4vkuovku7blr7nosaHnlKjkuo7lpI3mnYLooajovr7lvI/lhoXojrflj5bpop3lpJbmlbDmja5cclxuICAgICAgICAgIGlmICgvPVxccypcXFMrXFwuZXZlbnRQYXJhbXNcXHMqXFx8XFx8XFxzKlxcUytcXFtbJ1wiXWV2ZW50LXBhcmFtc1snXCJdXFxdLy50ZXN0KGhhbmRsZXIudG9TdHJpbmcoKSkpIHtcclxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNwYXJzZS1hcnJheXNcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmNvbmNhdChbLCAsICwgLCAsICwgLCAsICwgLCBldmVudF0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0LnB1c2goaGFuZGxlci5hcHBseShoYW5kbGVyQ3R4LCBwYXJhbXMpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBpZiAoXHJcbiAgICBldmVudFR5cGUgPT09ICdpbnB1dCcgJiZcclxuICAgIHJldC5sZW5ndGggPT09IDEgJiZcclxuICAgIHR5cGVvZiByZXRbMF0gIT09ICd1bmRlZmluZWQnXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gcmV0WzBdXHJcbiAgfVxyXG59XHJcblxyXG5jb25zdCBtZXNzYWdlcyA9IHt9O1xyXG5cclxubGV0IGxvY2FsZTtcclxuXHJcbntcclxuICBsb2NhbGUgPSB0dC5nZXRTeXN0ZW1JbmZvU3luYygpLmxhbmd1YWdlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpbml0STE4bk1lc3NhZ2VzICgpIHtcclxuICBpZiAoIWlzRW5hYmxlTG9jYWxlKCkpIHtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBjb25zdCBsb2NhbGVLZXlzID0gT2JqZWN0LmtleXMoX191bmlDb25maWcubG9jYWxlcyk7XHJcbiAgaWYgKGxvY2FsZUtleXMubGVuZ3RoKSB7XHJcbiAgICBsb2NhbGVLZXlzLmZvckVhY2goKGxvY2FsZSkgPT4ge1xyXG4gICAgICBjb25zdCBjdXJNZXNzYWdlcyA9IG1lc3NhZ2VzW2xvY2FsZV07XHJcbiAgICAgIGNvbnN0IHVzZXJNZXNzYWdlcyA9IF9fdW5pQ29uZmlnLmxvY2FsZXNbbG9jYWxlXTtcclxuICAgICAgaWYgKGN1ck1lc3NhZ2VzKSB7XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihjdXJNZXNzYWdlcywgdXNlck1lc3NhZ2VzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBtZXNzYWdlc1tsb2NhbGVdID0gdXNlck1lc3NhZ2VzO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbmluaXRJMThuTWVzc2FnZXMoKTtcclxuXHJcbmNvbnN0IGkxOG4gPSBpbml0VnVlSTE4bihcclxuICBsb2NhbGUsXHJcbiAgIHt9XHJcbik7XHJcbmNvbnN0IHQgPSBpMThuLnQ7XHJcbmNvbnN0IGkxOG5NaXhpbiA9IChpMThuLm1peGluID0ge1xyXG4gIGJlZm9yZUNyZWF0ZSAoKSB7XHJcbiAgICBjb25zdCB1bndhdGNoID0gaTE4bi5pMThuLndhdGNoTG9jYWxlKCgpID0+IHtcclxuICAgICAgdGhpcy4kZm9yY2VVcGRhdGUoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy4kb25jZSgnaG9vazpiZWZvcmVEZXN0cm95JywgZnVuY3Rpb24gKCkge1xyXG4gICAgICB1bndhdGNoKCk7XHJcbiAgICB9KTtcclxuICB9LFxyXG4gIG1ldGhvZHM6IHtcclxuICAgICQkdCAoa2V5LCB2YWx1ZXMpIHtcclxuICAgICAgcmV0dXJuIHQoa2V5LCB2YWx1ZXMpXHJcbiAgICB9XHJcbiAgfVxyXG59KTtcclxuY29uc3Qgc2V0TG9jYWxlJDEgPSBpMThuLnNldExvY2FsZTtcclxuY29uc3QgZ2V0TG9jYWxlJDEgPSBpMThuLmdldExvY2FsZTtcclxuXHJcbmZ1bmN0aW9uIGluaXRBcHBMb2NhbGUgKFZ1ZSwgYXBwVm0sIGxvY2FsZSkge1xyXG4gIGNvbnN0IHN0YXRlID0gVnVlLm9ic2VydmFibGUoe1xyXG4gICAgbG9jYWxlOiBsb2NhbGUgfHwgaTE4bi5nZXRMb2NhbGUoKVxyXG4gIH0pO1xyXG4gIGNvbnN0IGxvY2FsZVdhdGNoZXJzID0gW107XHJcbiAgYXBwVm0uJHdhdGNoTG9jYWxlID0gZm4gPT4ge1xyXG4gICAgbG9jYWxlV2F0Y2hlcnMucHVzaChmbik7XHJcbiAgfTtcclxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXBwVm0sICckbG9jYWxlJywge1xyXG4gICAgZ2V0ICgpIHtcclxuICAgICAgcmV0dXJuIHN0YXRlLmxvY2FsZVxyXG4gICAgfSxcclxuICAgIHNldCAodikge1xyXG4gICAgICBzdGF0ZS5sb2NhbGUgPSB2O1xyXG4gICAgICBsb2NhbGVXYXRjaGVycy5mb3JFYWNoKHdhdGNoID0+IHdhdGNoKHYpKTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNFbmFibGVMb2NhbGUgKCkge1xyXG4gIHJldHVybiB0eXBlb2YgX191bmlDb25maWcgIT09ICd1bmRlZmluZWQnICYmIF9fdW5pQ29uZmlnLmxvY2FsZXMgJiYgISFPYmplY3Qua2V5cyhfX3VuaUNvbmZpZy5sb2NhbGVzKS5sZW5ndGhcclxufVxyXG5cclxuLy8gZXhwb3J0IGZ1bmN0aW9uIGluaXRJMThuKCkge1xyXG4vLyAgIGNvbnN0IGxvY2FsZUtleXMgPSBPYmplY3Qua2V5cyhfX3VuaUNvbmZpZy5sb2NhbGVzIHx8IHt9KVxyXG4vLyAgIGlmIChsb2NhbGVLZXlzLmxlbmd0aCkge1xyXG4vLyAgICAgbG9jYWxlS2V5cy5mb3JFYWNoKChsb2NhbGUpID0+XHJcbi8vICAgICAgIGkxOG4uYWRkKGxvY2FsZSwgX191bmlDb25maWcubG9jYWxlc1tsb2NhbGVdKVxyXG4vLyAgICAgKVxyXG4vLyAgIH1cclxuLy8gfVxyXG5cclxuY29uc3QgaG9va3MgPSBbXHJcbiAgJ29uU2hvdycsXHJcbiAgJ29uSGlkZScsXHJcbiAgJ29uRXJyb3InLFxyXG4gICdvblBhZ2VOb3RGb3VuZCcsXHJcbiAgJ29uVGhlbWVDaGFuZ2UnLFxyXG4gICdvblVuaGFuZGxlZFJlamVjdGlvbidcclxuXTtcclxuXHJcbmZ1bmN0aW9uIGluaXRFdmVudENoYW5uZWwkMSAoKSB7XHJcbiAgVnVlLnByb3RvdHlwZS5nZXRPcGVuZXJFdmVudENoYW5uZWwgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICBpZiAoIXRoaXMuX19ldmVudENoYW5uZWxfXykge1xyXG4gICAgICB0aGlzLl9fZXZlbnRDaGFubmVsX18gPSBuZXcgRXZlbnRDaGFubmVsKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5fX2V2ZW50Q2hhbm5lbF9fXHJcbiAgfTtcclxuICBjb25zdCBjYWxsSG9vayA9IFZ1ZS5wcm90b3R5cGUuX19jYWxsX2hvb2s7XHJcbiAgVnVlLnByb3RvdHlwZS5fX2NhbGxfaG9vayA9IGZ1bmN0aW9uIChob29rLCBhcmdzKSB7XHJcbiAgICBpZiAoaG9vayA9PT0gJ29uTG9hZCcgJiYgYXJncyAmJiBhcmdzLl9faWRfXykge1xyXG4gICAgICB0aGlzLl9fZXZlbnRDaGFubmVsX18gPSBnZXRFdmVudENoYW5uZWwoYXJncy5fX2lkX18pO1xyXG4gICAgICBkZWxldGUgYXJncy5fX2lkX187XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2FsbEhvb2suY2FsbCh0aGlzLCBob29rLCBhcmdzKVxyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGluaXRTY29wZWRTbG90c1BhcmFtcyAoKSB7XHJcbiAgY29uc3QgY2VudGVyID0ge307XHJcbiAgY29uc3QgcGFyZW50cyA9IHt9O1xyXG5cclxuICBWdWUucHJvdG90eXBlLiRoYXNTY29wZWRTbG90c1BhcmFtcyA9IGZ1bmN0aW9uICh2dWVJZCkge1xyXG4gICAgY29uc3QgaGFzID0gY2VudGVyW3Z1ZUlkXTtcclxuICAgIGlmICghaGFzKSB7XHJcbiAgICAgIHBhcmVudHNbdnVlSWRdID0gdGhpcztcclxuICAgICAgdGhpcy4kb24oJ2hvb2s6ZGVzdHJveWVkJywgKCkgPT4ge1xyXG4gICAgICAgIGRlbGV0ZSBwYXJlbnRzW3Z1ZUlkXTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaGFzXHJcbiAgfTtcclxuXHJcbiAgVnVlLnByb3RvdHlwZS4kZ2V0U2NvcGVkU2xvdHNQYXJhbXMgPSBmdW5jdGlvbiAodnVlSWQsIG5hbWUsIGtleSkge1xyXG4gICAgY29uc3QgZGF0YSA9IGNlbnRlclt2dWVJZF07XHJcbiAgICBpZiAoZGF0YSkge1xyXG4gICAgICBjb25zdCBvYmplY3QgPSBkYXRhW25hbWVdIHx8IHt9O1xyXG4gICAgICByZXR1cm4ga2V5ID8gb2JqZWN0W2tleV0gOiBvYmplY3RcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHBhcmVudHNbdnVlSWRdID0gdGhpcztcclxuICAgICAgdGhpcy4kb24oJ2hvb2s6ZGVzdHJveWVkJywgKCkgPT4ge1xyXG4gICAgICAgIGRlbGV0ZSBwYXJlbnRzW3Z1ZUlkXTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgVnVlLnByb3RvdHlwZS4kc2V0U2NvcGVkU2xvdHNQYXJhbXMgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcclxuICAgIGNvbnN0IHZ1ZUlkcyA9IHRoaXMuJG9wdGlvbnMucHJvcHNEYXRhLnZ1ZUlkO1xyXG4gICAgaWYgKHZ1ZUlkcykge1xyXG4gICAgICBjb25zdCB2dWVJZCA9IHZ1ZUlkcy5zcGxpdCgnLCcpWzBdO1xyXG4gICAgICBjb25zdCBvYmplY3QgPSBjZW50ZXJbdnVlSWRdID0gY2VudGVyW3Z1ZUlkXSB8fCB7fTtcclxuICAgICAgb2JqZWN0W25hbWVdID0gdmFsdWU7XHJcbiAgICAgIGlmIChwYXJlbnRzW3Z1ZUlkXSkge1xyXG4gICAgICAgIHBhcmVudHNbdnVlSWRdLiRmb3JjZVVwZGF0ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgVnVlLm1peGluKHtcclxuICAgIGRlc3Ryb3llZCAoKSB7XHJcbiAgICAgIGNvbnN0IHByb3BzRGF0YSA9IHRoaXMuJG9wdGlvbnMucHJvcHNEYXRhO1xyXG4gICAgICBjb25zdCB2dWVJZCA9IHByb3BzRGF0YSAmJiBwcm9wc0RhdGEudnVlSWQ7XHJcbiAgICAgIGlmICh2dWVJZCkge1xyXG4gICAgICAgIGRlbGV0ZSBjZW50ZXJbdnVlSWRdO1xyXG4gICAgICAgIGRlbGV0ZSBwYXJlbnRzW3Z1ZUlkXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwYXJzZUJhc2VBcHAgKHZtLCB7XHJcbiAgbW9ja3MsXHJcbiAgaW5pdFJlZnNcclxufSkge1xyXG4gIGluaXRFdmVudENoYW5uZWwkMSgpO1xyXG4gIHtcclxuICAgIGluaXRTY29wZWRTbG90c1BhcmFtcygpO1xyXG4gIH1cclxuICBpZiAodm0uJG9wdGlvbnMuc3RvcmUpIHtcclxuICAgIFZ1ZS5wcm90b3R5cGUuJHN0b3JlID0gdm0uJG9wdGlvbnMuc3RvcmU7XHJcbiAgfVxyXG4gIHVuaUlkTWl4aW4oVnVlKTtcclxuXHJcbiAgVnVlLnByb3RvdHlwZS5tcEhvc3QgPSBcIm1wLXRvdXRpYW9cIjtcclxuXHJcbiAgVnVlLm1peGluKHtcclxuICAgIGJlZm9yZUNyZWF0ZSAoKSB7XHJcbiAgICAgIGlmICghdGhpcy4kb3B0aW9ucy5tcFR5cGUpIHtcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5tcFR5cGUgPSB0aGlzLiRvcHRpb25zLm1wVHlwZTtcclxuXHJcbiAgICAgIHRoaXMuJG1wID0ge1xyXG4gICAgICAgIGRhdGE6IHt9LFxyXG4gICAgICAgIFt0aGlzLm1wVHlwZV06IHRoaXMuJG9wdGlvbnMubXBJbnN0YW5jZVxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy4kc2NvcGUgPSB0aGlzLiRvcHRpb25zLm1wSW5zdGFuY2U7XHJcblxyXG4gICAgICBkZWxldGUgdGhpcy4kb3B0aW9ucy5tcFR5cGU7XHJcbiAgICAgIGRlbGV0ZSB0aGlzLiRvcHRpb25zLm1wSW5zdGFuY2U7XHJcbiAgICAgIGlmICh0aGlzLm1wVHlwZSA9PT0gJ3BhZ2UnICYmIHR5cGVvZiBnZXRBcHAgPT09ICdmdW5jdGlvbicpIHsgLy8gaGFjayB2dWUtaTE4blxyXG4gICAgICAgIGNvbnN0IGFwcCA9IGdldEFwcCgpO1xyXG4gICAgICAgIGlmIChhcHAuJHZtICYmIGFwcC4kdm0uJGkxOG4pIHtcclxuICAgICAgICAgIHRoaXMuX2kxOG4gPSBhcHAuJHZtLiRpMThuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5tcFR5cGUgIT09ICdhcHAnKSB7XHJcbiAgICAgICAgaW5pdFJlZnModGhpcyk7XHJcbiAgICAgICAgaW5pdE1vY2tzKHRoaXMsIG1vY2tzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBjb25zdCBhcHBPcHRpb25zID0ge1xyXG4gICAgb25MYXVuY2ggKGFyZ3MpIHtcclxuICAgICAgaWYgKHRoaXMuJHZtKSB7IC8vIOW3sue7j+WIneWni+WMlui/h+S6hu+8jOS4u+imgeaYr+S4uuS6hueZvuW6pu+8jOeZvuW6piBvblNob3cg5ZyoIG9uTGF1bmNoIOS5i+WJjVxyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLiR2bSA9IHZtO1xyXG5cclxuICAgICAgdGhpcy4kdm0uJG1wID0ge1xyXG4gICAgICAgIGFwcDogdGhpc1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy4kdm0uJHNjb3BlID0gdGhpcztcclxuICAgICAgLy8gdm0g5LiK5Lmf5oyC6L29IGdsb2JhbERhdGFcclxuICAgICAgdGhpcy4kdm0uZ2xvYmFsRGF0YSA9IHRoaXMuZ2xvYmFsRGF0YTtcclxuXHJcbiAgICAgIHRoaXMuJHZtLl9pc01vdW50ZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLiR2bS5fX2NhbGxfaG9vaygnbW91bnRlZCcsIGFyZ3MpO1xyXG5cclxuICAgICAgdGhpcy4kdm0uX19jYWxsX2hvb2soJ29uTGF1bmNoJywgYXJncyk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgLy8g5YW85a655pen54mI5pysIGdsb2JhbERhdGFcclxuICBhcHBPcHRpb25zLmdsb2JhbERhdGEgPSB2bS4kb3B0aW9ucy5nbG9iYWxEYXRhIHx8IHt9O1xyXG4gIC8vIOWwhiBtZXRob2RzIOS4reeahOaWueazleaMguWcqCBnZXRBcHAoKSDkuK1cclxuICBjb25zdCBtZXRob2RzID0gdm0uJG9wdGlvbnMubWV0aG9kcztcclxuICBpZiAobWV0aG9kcykge1xyXG4gICAgT2JqZWN0LmtleXMobWV0aG9kcykuZm9yRWFjaChuYW1lID0+IHtcclxuICAgICAgYXBwT3B0aW9uc1tuYW1lXSA9IG1ldGhvZHNbbmFtZV07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGluaXRBcHBMb2NhbGUoVnVlLCB2bSwgdHQuZ2V0U3lzdGVtSW5mb1N5bmMoKS5sYW5ndWFnZSB8fCAnemgtSGFucycpO1xyXG5cclxuICBpbml0SG9va3MoYXBwT3B0aW9ucywgaG9va3MpO1xyXG5cclxuICByZXR1cm4gYXBwT3B0aW9uc1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kVm1CeVZ1ZUlkICh2bSwgdnVlUGlkKSB7XHJcbiAgY29uc3QgJGNoaWxkcmVuID0gdm0uJGNoaWxkcmVuO1xyXG4gIC8vIOS8mOWFiOafpeaJvuebtOWxnijlj43lkJHmn6Xmib46aHR0cHM6Ly9naXRodWIuY29tL2RjbG91ZGlvL3VuaS1hcHAvaXNzdWVzLzEyMDApXHJcbiAgZm9yIChsZXQgaSA9ICRjaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgY29uc3QgY2hpbGRWbSA9ICRjaGlsZHJlbltpXTtcclxuICAgIGlmIChjaGlsZFZtLiRzY29wZS5fJHZ1ZUlkID09PSB2dWVQaWQpIHtcclxuICAgICAgcmV0dXJuIGNoaWxkVm1cclxuICAgIH1cclxuICB9XHJcbiAgLy8g5Y+N5ZCR6YCS5b2S5p+l5om+XHJcbiAgbGV0IHBhcmVudFZtO1xyXG4gIGZvciAobGV0IGkgPSAkY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgIHBhcmVudFZtID0gZmluZFZtQnlWdWVJZCgkY2hpbGRyZW5baV0sIHZ1ZVBpZCk7XHJcbiAgICBpZiAocGFyZW50Vm0pIHtcclxuICAgICAgcmV0dXJuIHBhcmVudFZtXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBpbml0QmVoYXZpb3IgKG9wdGlvbnMpIHtcclxuICByZXR1cm4gQmVoYXZpb3Iob3B0aW9ucylcclxufVxyXG5cclxuZnVuY3Rpb24gaGFuZGxlTGluayAoZXZlbnQpIHtcclxuICBjb25zdCB7XHJcbiAgICB2dWVQaWQsXHJcbiAgICB2dWVPcHRpb25zXHJcbiAgfSA9IGV2ZW50LmRldGFpbCB8fCBldmVudC52YWx1ZTsgLy8gZGV0YWlsIOaYr+W+ruS/oSx2YWx1ZSDmmK/nmb7luqYoZGlwYXRjaClcclxuXHJcbiAgbGV0IHBhcmVudFZtO1xyXG5cclxuICBpZiAodnVlUGlkKSB7XHJcbiAgICBwYXJlbnRWbSA9IGZpbmRWbUJ5VnVlSWQodGhpcy4kdm0sIHZ1ZVBpZCk7XHJcbiAgfVxyXG5cclxuICBpZiAoIXBhcmVudFZtKSB7XHJcbiAgICBwYXJlbnRWbSA9IHRoaXMuJHZtO1xyXG4gIH1cclxuXHJcbiAgdnVlT3B0aW9ucy5wYXJlbnQgPSBwYXJlbnRWbTtcclxufVxyXG5cclxuY29uc3QgbW9ja3MgPSBbJ19fcm91dGVfXycsICdfX3dlYnZpZXdJZF9fJywgJ19fbm9kZWlkX18nLCAnX19ub2RlSWRfXyddO1xyXG5cclxuZnVuY3Rpb24gaXNQYWdlICgpIHtcclxuICByZXR1cm4gdGhpcy5fX25vZGVpZF9fID09PSAwIHx8IHRoaXMuX19ub2RlSWRfXyA9PT0gMFxyXG59XHJcblxyXG5mdW5jdGlvbiBpbml0UmVmcyAodm0pIHtcclxuICBjb25zdCBtcEluc3RhbmNlID0gdm0uJHNjb3BlO1xyXG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXHJcbiAgY29uc3QgbWlub3JWZXJzaW9uID0gcGFyc2VJbnQodHQuZ2V0U3lzdGVtSW5mb1N5bmMoKS5TREtWZXJzaW9uLnNwbGl0KCcuJylbMV0pO1xyXG4gIGlmIChtaW5vclZlcnNpb24gPiAxNikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHZtLCAnJHJlZnMnLCB7XHJcbiAgICAgIGdldCAoKSB7XHJcbiAgICAgICAgY29uc3QgJHJlZnMgPSB7fTtcclxuICAgICAgICBjb25zdCBjb21wb25lbnRzID0gbXBJbnN0YW5jZS5zZWxlY3RBbGxDb21wb25lbnRzKCcudnVlLXJlZicpO1xyXG4gICAgICAgIGNvbXBvbmVudHMuZm9yRWFjaChjb21wb25lbnQgPT4ge1xyXG4gICAgICAgICAgY29uc3QgcmVmID0gY29tcG9uZW50LmRhdGFzZXQucmVmO1xyXG4gICAgICAgICAgJHJlZnNbcmVmXSA9IGNvbXBvbmVudC4kdm0gfHwgY29tcG9uZW50O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IGZvckNvbXBvbmVudHMgPSBtcEluc3RhbmNlLnNlbGVjdEFsbENvbXBvbmVudHMoJy52dWUtcmVmLWluLWZvcicpO1xyXG4gICAgICAgIGZvckNvbXBvbmVudHMuZm9yRWFjaChjb21wb25lbnQgPT4ge1xyXG4gICAgICAgICAgY29uc3QgcmVmID0gY29tcG9uZW50LmRhdGFzZXQucmVmO1xyXG4gICAgICAgICAgaWYgKCEkcmVmc1tyZWZdKSB7XHJcbiAgICAgICAgICAgICRyZWZzW3JlZl0gPSBbXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICRyZWZzW3JlZl0ucHVzaChjb21wb25lbnQuJHZtIHx8IGNvbXBvbmVudCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuICRyZWZzXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBtcEluc3RhbmNlLnNlbGVjdEFsbENvbXBvbmVudHMoJy52dWUtcmVmJywgKGNvbXBvbmVudHMpID0+IHtcclxuICAgICAgY29tcG9uZW50cy5mb3JFYWNoKGNvbXBvbmVudCA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVmID0gY29tcG9uZW50LmRhdGFzZXQucmVmO1xyXG4gICAgICAgIHZtLiRyZWZzW3JlZl0gPSBjb21wb25lbnQuJHZtIHx8IGNvbXBvbmVudDtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIG1wSW5zdGFuY2Uuc2VsZWN0QWxsQ29tcG9uZW50cygnLnZ1ZS1yZWYtaW4tZm9yJywgKGZvckNvbXBvbmVudHMpID0+IHtcclxuICAgICAgZm9yQ29tcG9uZW50cy5mb3JFYWNoKGNvbXBvbmVudCA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVmID0gY29tcG9uZW50LmRhdGFzZXQucmVmO1xyXG4gICAgICAgIGlmICghdm0uJHJlZnNbcmVmXSkge1xyXG4gICAgICAgICAgdm0uJHJlZnNbcmVmXSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2bS4kcmVmc1tyZWZdLnB1c2goY29tcG9uZW50LiR2bSB8fCBjb21wb25lbnQpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuY29uc3QgaW5zdGFuY2VzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcclxuXHJcbmZ1bmN0aW9uIGluaXRSZWxhdGlvbiAoe1xyXG4gIHZ1ZVBpZCxcclxuICBtcEluc3RhbmNlXHJcbn0pIHtcclxuICAvLyDlpLTmnaEgdHJpZ2dlckV2ZW50IOWQju+8jOaOpeaUtuS6i+S7tuaXtuacuueJueWIq+aZmu+8jOW3sue7j+WIsOS6hiByZWFkeSDkuYvlkI5cclxuICBjb25zdCBub2RlSWQgPSAobXBJbnN0YW5jZS5fX25vZGVJZF9fIHx8IG1wSW5zdGFuY2UuX19ub2RlaWRfXykgKyAnJztcclxuICBjb25zdCB3ZWJ2aWV3SWQgPSBtcEluc3RhbmNlLl9fd2Vidmlld0lkX18gKyAnJztcclxuXHJcbiAgaW5zdGFuY2VzW3dlYnZpZXdJZCArICdfJyArIG5vZGVJZF0gPSBtcEluc3RhbmNlLiR2bTtcclxuXHJcbiAgdGhpcy50cmlnZ2VyRXZlbnQoJ19fbCcsIHtcclxuICAgIHZ1ZVBpZCxcclxuICAgIG5vZGVJZCxcclxuICAgIHdlYnZpZXdJZFxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBoYW5kbGVMaW5rJDEgKHtcclxuICBkZXRhaWw6IHtcclxuICAgIHZ1ZVBpZCxcclxuICAgIG5vZGVJZCxcclxuICAgIHdlYnZpZXdJZFxyXG4gIH1cclxufSkge1xyXG4gIGNvbnN0IHZtID0gaW5zdGFuY2VzW3dlYnZpZXdJZCArICdfJyArIG5vZGVJZF07XHJcbiAgaWYgKCF2bSkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG5cclxuICBsZXQgcGFyZW50Vm07XHJcblxyXG4gIGlmICh2dWVQaWQpIHtcclxuICAgIHBhcmVudFZtID0gZmluZFZtQnlWdWVJZCh0aGlzLiR2bSwgdnVlUGlkKTtcclxuICB9XHJcblxyXG4gIGlmICghcGFyZW50Vm0pIHtcclxuICAgIHBhcmVudFZtID0gdGhpcy4kdm07XHJcbiAgfVxyXG5cclxuICB2bS4kcGFyZW50ID0gcGFyZW50Vm07XHJcbiAgdm0uJHJvb3QgPSBwYXJlbnRWbS4kcm9vdDtcclxuICBwYXJlbnRWbS4kY2hpbGRyZW4ucHVzaCh2bSk7XHJcblxyXG4gIHZtLl9fY2FsbF9ob29rKCdjcmVhdGVkJyk7XHJcbiAgdm0uX19jYWxsX2hvb2soJ2JlZm9yZU1vdW50Jyk7XHJcbiAgdm0uX2lzTW91bnRlZCA9IHRydWU7XHJcbiAgdm0uX19jYWxsX2hvb2soJ21vdW50ZWQnKTtcclxuICB2bS5fX2NhbGxfaG9vaygnb25SZWFkeScpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwYXJzZUFwcCAodm0pIHtcclxuICBWdWUucHJvdG90eXBlLl8kZmFsbGJhY2sgPSB0cnVlOyAvLyDpmY3nuqfvvIjosIPmlbTljp8gdnVlIOeahOmDqOWIhueUn+WRveWRqOacn++8jOWmgiBjcmVhdGVk77yMYmVmb3JlTW91bnQsaW5qZWN0LHByb3ZpZGXvvIlcclxuXHJcbiAgVnVlLm1peGluKHtcclxuICAgIGNyZWF0ZWQgKCkgeyAvLyDlpITnkIYgaW5qZWN0aW9ucyzlpLTmnaEgdHJpZ2dlckV2ZW50IOaYr+W8guatpe+8jOS4lOinpuWPkeaXtuacuuW+iOaFou+8jOaVheW7tui/nyByZWxhdGlvbiDorr7nva5cclxuICAgICAgaWYgKHRoaXMubXBUeXBlICE9PSAnYXBwJykge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIHRoaXMubXBUeXBlID09PSAncGFnZScgJiZcclxuICAgICAgICAgICAgICAgICAgICAhdGhpcy4kc2NvcGUucm91dGUgJiZcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzY29wZS5fX3JvdXRlX19cclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuJHNjb3BlLnJvdXRlID0gdGhpcy4kc2NvcGUuX19yb3V0ZV9fO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaW5pdFJlZnModGhpcyk7XHJcblxyXG4gICAgICAgIHRoaXMuX19pbml0X2luamVjdGlvbnModGhpcyk7XHJcbiAgICAgICAgdGhpcy5fX2luaXRfcHJvdmlkZSh0aGlzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICByZXR1cm4gcGFyc2VCYXNlQXBwKHZtLCB7XHJcbiAgICBtb2NrcyxcclxuICAgIGluaXRSZWZzOiBmdW5jdGlvbiAoKSB7fSAvLyBhdHRhY2hlZCDml7bvvIzlj6/og73mn6Xor6LkuI3liLBcclxuICB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVBcHAgKHZtKSB7XHJcbiAgQXBwKHBhcnNlQXBwKHZtKSk7XHJcbiAgcmV0dXJuIHZtXHJcbn1cclxuXHJcbmNvbnN0IGVuY29kZVJlc2VydmVSRSA9IC9bIScoKSpdL2c7XHJcbmNvbnN0IGVuY29kZVJlc2VydmVSZXBsYWNlciA9IGMgPT4gJyUnICsgYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KTtcclxuY29uc3QgY29tbWFSRSA9IC8lMkMvZztcclxuXHJcbi8vIGZpeGVkIGVuY29kZVVSSUNvbXBvbmVudCB3aGljaCBpcyBtb3JlIGNvbmZvcm1hbnQgdG8gUkZDMzk4NjpcclxuLy8gLSBlc2NhcGVzIFshJygpKl1cclxuLy8gLSBwcmVzZXJ2ZSBjb21tYXNcclxuY29uc3QgZW5jb2RlID0gc3RyID0+IGVuY29kZVVSSUNvbXBvbmVudChzdHIpXHJcbiAgLnJlcGxhY2UoZW5jb2RlUmVzZXJ2ZVJFLCBlbmNvZGVSZXNlcnZlUmVwbGFjZXIpXHJcbiAgLnJlcGxhY2UoY29tbWFSRSwgJywnKTtcclxuXHJcbmZ1bmN0aW9uIHN0cmluZ2lmeVF1ZXJ5IChvYmosIGVuY29kZVN0ciA9IGVuY29kZSkge1xyXG4gIGNvbnN0IHJlcyA9IG9iaiA/IE9iamVjdC5rZXlzKG9iaikubWFwKGtleSA9PiB7XHJcbiAgICBjb25zdCB2YWwgPSBvYmpba2V5XTtcclxuXHJcbiAgICBpZiAodmFsID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuICcnXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZhbCA9PT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gZW5jb2RlU3RyKGtleSlcclxuICAgIH1cclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xyXG4gICAgICB2YWwuZm9yRWFjaCh2YWwyID0+IHtcclxuICAgICAgICBpZiAodmFsMiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHZhbDIgPT09IG51bGwpIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKGVuY29kZVN0cihrZXkpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goZW5jb2RlU3RyKGtleSkgKyAnPScgKyBlbmNvZGVTdHIodmFsMikpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiByZXN1bHQuam9pbignJicpXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGVuY29kZVN0cihrZXkpICsgJz0nICsgZW5jb2RlU3RyKHZhbClcclxuICB9KS5maWx0ZXIoeCA9PiB4Lmxlbmd0aCA+IDApLmpvaW4oJyYnKSA6IG51bGw7XHJcbiAgcmV0dXJuIHJlcyA/IGA/JHtyZXN9YCA6ICcnXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBhcnNlQmFzZUNvbXBvbmVudCAodnVlQ29tcG9uZW50T3B0aW9ucywge1xyXG4gIGlzUGFnZSxcclxuICBpbml0UmVsYXRpb25cclxufSA9IHt9KSB7XHJcbiAgY29uc3QgW1Z1ZUNvbXBvbmVudCwgdnVlT3B0aW9uc10gPSBpbml0VnVlQ29tcG9uZW50KFZ1ZSwgdnVlQ29tcG9uZW50T3B0aW9ucyk7XHJcblxyXG4gIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICBtdWx0aXBsZVNsb3RzOiB0cnVlLFxyXG4gICAgYWRkR2xvYmFsQ2xhc3M6IHRydWUsXHJcbiAgICAuLi4odnVlT3B0aW9ucy5vcHRpb25zIHx8IHt9KVxyXG4gIH07XHJcblxyXG4gIGNvbnN0IGNvbXBvbmVudE9wdGlvbnMgPSB7XHJcbiAgICBvcHRpb25zLFxyXG4gICAgZGF0YTogaW5pdERhdGEodnVlT3B0aW9ucywgVnVlLnByb3RvdHlwZSksXHJcbiAgICBiZWhhdmlvcnM6IGluaXRCZWhhdmlvcnModnVlT3B0aW9ucywgaW5pdEJlaGF2aW9yKSxcclxuICAgIHByb3BlcnRpZXM6IGluaXRQcm9wZXJ0aWVzKHZ1ZU9wdGlvbnMucHJvcHMsIGZhbHNlLCB2dWVPcHRpb25zLl9fZmlsZSksXHJcbiAgICBsaWZldGltZXM6IHtcclxuICAgICAgYXR0YWNoZWQgKCkge1xyXG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSB0aGlzLnByb3BlcnRpZXM7XHJcblxyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgICBtcFR5cGU6IGlzUGFnZS5jYWxsKHRoaXMpID8gJ3BhZ2UnIDogJ2NvbXBvbmVudCcsXHJcbiAgICAgICAgICBtcEluc3RhbmNlOiB0aGlzLFxyXG4gICAgICAgICAgcHJvcHNEYXRhOiBwcm9wZXJ0aWVzXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgaW5pdFZ1ZUlkcyhwcm9wZXJ0aWVzLnZ1ZUlkLCB0aGlzKTtcclxuXHJcbiAgICAgICAgLy8g5aSE55CG54i25a2Q5YWz57O7XHJcbiAgICAgICAgaW5pdFJlbGF0aW9uLmNhbGwodGhpcywge1xyXG4gICAgICAgICAgdnVlUGlkOiB0aGlzLl8kdnVlUGlkLFxyXG4gICAgICAgICAgdnVlT3B0aW9uczogb3B0aW9uc1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyDliJ3lp4vljJYgdnVlIOWunuS+i1xyXG4gICAgICAgIHRoaXMuJHZtID0gbmV3IFZ1ZUNvbXBvbmVudChvcHRpb25zKTtcclxuXHJcbiAgICAgICAgLy8g5aSE55CGJHNsb3RzLCRzY29wZWRTbG90c++8iOaaguS4jeaUr+aMgeWKqOaAgeWPmOWMliRzbG90c++8iVxyXG4gICAgICAgIGluaXRTbG90cyh0aGlzLiR2bSwgcHJvcGVydGllcy52dWVTbG90cyk7XHJcblxyXG4gICAgICAgIC8vIOinpuWPkemmluasoSBzZXREYXRhXHJcbiAgICAgICAgdGhpcy4kdm0uJG1vdW50KCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHJlYWR5ICgpIHtcclxuICAgICAgICAvLyDlvZPnu4Tku7YgcHJvcHMg6buY6K6k5YC85Li6IHRydWXvvIzliJ3lp4vljJbml7bkvKDlhaUgZmFsc2Ug5Lya5a+86Ie0IGNyZWF0ZWQscmVhZHkg6Kem5Y+RLCDkvYYgYXR0YWNoZWQg5LiN6Kem5Y+RXHJcbiAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXJzLndlaXhpbi5xcS5jb20vY29tbXVuaXR5L2RldmVsb3AvZG9jLzAwMDY2YWUyODQ0Y2MwZjhlYjg4M2UyYTU1NzgwMFxyXG4gICAgICAgIGlmICh0aGlzLiR2bSkge1xyXG4gICAgICAgICAgdGhpcy4kdm0uX2lzTW91bnRlZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLiR2bS5fX2NhbGxfaG9vaygnbW91bnRlZCcpO1xyXG4gICAgICAgICAgdGhpcy4kdm0uX19jYWxsX2hvb2soJ29uUmVhZHknKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGRldGFjaGVkICgpIHtcclxuICAgICAgICB0aGlzLiR2bSAmJiB0aGlzLiR2bS4kZGVzdHJveSgpO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgcGFnZUxpZmV0aW1lczoge1xyXG4gICAgICBzaG93IChhcmdzKSB7XHJcbiAgICAgICAgdGhpcy4kdm0gJiYgdGhpcy4kdm0uX19jYWxsX2hvb2soJ29uUGFnZVNob3cnLCBhcmdzKTtcclxuICAgICAgfSxcclxuICAgICAgaGlkZSAoKSB7XHJcbiAgICAgICAgdGhpcy4kdm0gJiYgdGhpcy4kdm0uX19jYWxsX2hvb2soJ29uUGFnZUhpZGUnKTtcclxuICAgICAgfSxcclxuICAgICAgcmVzaXplIChzaXplKSB7XHJcbiAgICAgICAgdGhpcy4kdm0gJiYgdGhpcy4kdm0uX19jYWxsX2hvb2soJ29uUGFnZVJlc2l6ZScsIHNpemUpO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kczoge1xyXG4gICAgICBfX2w6IGhhbmRsZUxpbmssXHJcbiAgICAgIF9fZTogaGFuZGxlRXZlbnRcclxuICAgIH1cclxuICB9O1xyXG4gIC8vIGV4dGVybmFsQ2xhc3Nlc1xyXG4gIGlmICh2dWVPcHRpb25zLmV4dGVybmFsQ2xhc3Nlcykge1xyXG4gICAgY29tcG9uZW50T3B0aW9ucy5leHRlcm5hbENsYXNzZXMgPSB2dWVPcHRpb25zLmV4dGVybmFsQ2xhc3NlcztcclxuICB9XHJcblxyXG4gIGlmIChBcnJheS5pc0FycmF5KHZ1ZU9wdGlvbnMud3hzQ2FsbE1ldGhvZHMpKSB7XHJcbiAgICB2dWVPcHRpb25zLnd4c0NhbGxNZXRob2RzLmZvckVhY2goY2FsbE1ldGhvZCA9PiB7XHJcbiAgICAgIGNvbXBvbmVudE9wdGlvbnMubWV0aG9kc1tjYWxsTWV0aG9kXSA9IGZ1bmN0aW9uIChhcmdzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJHZtW2NhbGxNZXRob2RdKGFyZ3MpXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGlmIChpc1BhZ2UpIHtcclxuICAgIHJldHVybiBjb21wb25lbnRPcHRpb25zXHJcbiAgfVxyXG4gIHJldHVybiBbY29tcG9uZW50T3B0aW9ucywgVnVlQ29tcG9uZW50XVxyXG59XHJcblxyXG5jb25zdCBjb21wb25lbnRzID0gW107XHJcblxyXG5mdW5jdGlvbiBwYXJzZUNvbXBvbmVudCAodnVlT3B0aW9ucykge1xyXG4gIGNvbnN0IFtjb21wb25lbnRPcHRpb25zLCBWdWVDb21wb25lbnRdID0gcGFyc2VCYXNlQ29tcG9uZW50KHZ1ZU9wdGlvbnMpO1xyXG5cclxuICAvLyDln7rnoYDlupMgMi4wIOS7peS4iiBhdHRhY2hlZCDpobrluo/plJnkubHvvIzmjInnhacgY3JlYXRlZCDpobrluo/lvLrliLbnuqDmraNcclxuICBjb21wb25lbnRPcHRpb25zLmxpZmV0aW1lcy5jcmVhdGVkID0gZnVuY3Rpb24gY3JlYXRlZCAoKSB7XHJcbiAgICBjb21wb25lbnRzLnB1c2godGhpcyk7XHJcbiAgfTtcclxuXHJcbiAgY29tcG9uZW50T3B0aW9ucy5saWZldGltZXMuYXR0YWNoZWQgPSBmdW5jdGlvbiBhdHRhY2hlZCAoKSB7XHJcbiAgICB0aGlzLl9fbGlmZXRpbWVzX2F0dGFjaGVkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5wcm9wZXJ0aWVzO1xyXG5cclxuICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgICBtcFR5cGU6IGlzUGFnZS5jYWxsKHRoaXMpID8gJ3BhZ2UnIDogJ2NvbXBvbmVudCcsXHJcbiAgICAgICAgbXBJbnN0YW5jZTogdGhpcyxcclxuICAgICAgICBwcm9wc0RhdGE6IHByb3BlcnRpZXNcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGluaXRWdWVJZHMocHJvcGVydGllcy52dWVJZCwgdGhpcyk7XHJcblxyXG4gICAgICAvLyDliJ3lp4vljJYgdnVlIOWunuS+i1xyXG4gICAgICB0aGlzLiR2bSA9IG5ldyBWdWVDb21wb25lbnQob3B0aW9ucyk7XHJcblxyXG4gICAgICAvLyDlpITnkIYkc2xvdHMsJHNjb3BlZFNsb3Rz77yI5pqC5LiN5pSv5oyB5Yqo5oCB5Y+Y5YyWJHNsb3Rz77yJXHJcbiAgICAgIGluaXRTbG90cyh0aGlzLiR2bSwgcHJvcGVydGllcy52dWVTbG90cyk7XHJcblxyXG4gICAgICAvLyDlpITnkIbniLblrZDlhbPns7tcclxuICAgICAgaW5pdFJlbGF0aW9uLmNhbGwodGhpcywge1xyXG4gICAgICAgIHZ1ZVBpZDogdGhpcy5fJHZ1ZVBpZCxcclxuICAgICAgICBtcEluc3RhbmNlOiB0aGlzXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8g6Kem5Y+R6aaW5qyhIHNldERhdGFcclxuICAgICAgdGhpcy4kdm0uJG1vdW50KCk7XHJcbiAgICB9O1xyXG4gICAgbGV0IGNvbXBvbmVudCA9IHRoaXM7XHJcbiAgICB3aGlsZSAoY29tcG9uZW50ICYmIGNvbXBvbmVudC5fX2xpZmV0aW1lc19hdHRhY2hlZCAmJiBjb21wb25lbnRzWzBdICYmIGNvbXBvbmVudCA9PT0gY29tcG9uZW50c1swXSkge1xyXG4gICAgICBjb21wb25lbnRzLnNoaWZ0KCk7XHJcbiAgICAgIGNvbXBvbmVudC5fX2xpZmV0aW1lc19hdHRhY2hlZCgpO1xyXG4gICAgICBkZWxldGUgY29tcG9uZW50Ll9fbGlmZXRpbWVzX2F0dGFjaGVkO1xyXG4gICAgICBjb21wb25lbnQgPSBjb21wb25lbnRzWzBdO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIC8vIHJlYWR5IOavlCBoYW5kbGVMaW5rIOi/mOaXqe+8jOWIneWni+WMlumAu+i+keaUvuWIsCBoYW5kbGVMaW5rIOS4rVxyXG4gIGRlbGV0ZSBjb21wb25lbnRPcHRpb25zLmxpZmV0aW1lcy5yZWFkeTtcclxuXHJcbiAgY29tcG9uZW50T3B0aW9ucy5tZXRob2RzLl9fbCA9IGhhbmRsZUxpbmskMTtcclxuXHJcbiAgcmV0dXJuIGNvbXBvbmVudE9wdGlvbnNcclxufVxyXG5cclxuY29uc3QgaG9va3MkMSA9IFtcclxuICAnb25TaG93JyxcclxuICAnb25IaWRlJyxcclxuICAnb25VbmxvYWQnXHJcbl07XHJcblxyXG5ob29rcyQxLnB1c2goLi4uUEFHRV9FVkVOVF9IT09LUyk7XHJcblxyXG5mdW5jdGlvbiBwYXJzZUJhc2VQYWdlICh2dWVQYWdlT3B0aW9ucywge1xyXG4gIGlzUGFnZSxcclxuICBpbml0UmVsYXRpb25cclxufSkge1xyXG4gIGNvbnN0IHBhZ2VPcHRpb25zID0gcGFyc2VDb21wb25lbnQodnVlUGFnZU9wdGlvbnMpO1xyXG5cclxuICBpbml0SG9va3MocGFnZU9wdGlvbnMubWV0aG9kcywgaG9va3MkMSwgdnVlUGFnZU9wdGlvbnMpO1xyXG5cclxuICBwYWdlT3B0aW9ucy5tZXRob2RzLm9uTG9hZCA9IGZ1bmN0aW9uIChxdWVyeSkge1xyXG4gICAgdGhpcy5vcHRpb25zID0gcXVlcnk7XHJcbiAgICBjb25zdCBjb3B5UXVlcnkgPSBPYmplY3QuYXNzaWduKHt9LCBxdWVyeSk7XHJcbiAgICBkZWxldGUgY29weVF1ZXJ5Ll9faWRfXztcclxuICAgIHRoaXMuJHBhZ2UgPSB7XHJcbiAgICAgIGZ1bGxQYXRoOiAnLycgKyAodGhpcy5yb3V0ZSB8fCB0aGlzLmlzKSArIHN0cmluZ2lmeVF1ZXJ5KGNvcHlRdWVyeSlcclxuICAgIH07XHJcbiAgICB0aGlzLiR2bS4kbXAucXVlcnkgPSBxdWVyeTsgLy8g5YW85a65IG1wdnVlXHJcbiAgICB0aGlzLiR2bS5fX2NhbGxfaG9vaygnb25Mb2FkJywgcXVlcnkpO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiBwYWdlT3B0aW9uc1xyXG59XHJcblxyXG5mdW5jdGlvbiBwYXJzZVBhZ2UgKHZ1ZVBhZ2VPcHRpb25zKSB7XHJcbiAgY29uc3QgcGFnZU9wdGlvbnMgPSBwYXJzZUJhc2VQYWdlKHZ1ZVBhZ2VPcHRpb25zLCB7XHJcbiAgICBpc1BhZ2UsXHJcbiAgICBpbml0UmVsYXRpb25cclxuICB9KTtcclxuICAvLyDpobXpnaLpnIDopoHlnKggcmVhZHkg5Lit6Kem5Y+R77yM5YW25LuW57uE5Lu25piv5ZyoIGhhbmRsZUxpbmsg5Lit6Kem5Y+RXHJcbiAgcGFnZU9wdGlvbnMubGlmZXRpbWVzLnJlYWR5ID0gZnVuY3Rpb24gcmVhZHkgKCkge1xyXG4gICAgaWYgKHRoaXMuJHZtICYmIHRoaXMuJHZtLm1wVHlwZSA9PT0gJ3BhZ2UnKSB7XHJcbiAgICAgIHRoaXMuJHZtLl9fY2FsbF9ob29rKCdjcmVhdGVkJyk7XHJcbiAgICAgIHRoaXMuJHZtLl9fY2FsbF9ob29rKCdiZWZvcmVNb3VudCcpO1xyXG4gICAgICB0aGlzLiR2bS5faXNNb3VudGVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy4kdm0uX19jYWxsX2hvb2soJ21vdW50ZWQnKTtcclxuICAgICAgdGhpcy4kdm0uX19jYWxsX2hvb2soJ29uUmVhZHknKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaXMgJiYgY29uc29sZS53YXJuKHRoaXMuaXMgKyAnIGlzIG5vdCByZWFkeScpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHBhZ2VPcHRpb25zLmxpZmV0aW1lcy5kZXRhY2hlZCA9IGZ1bmN0aW9uIGRldGFjaGVkICgpIHtcclxuICAgIHRoaXMuJHZtICYmIHRoaXMuJHZtLiRkZXN0cm95KCk7XHJcbiAgICAvLyDmuIXnkIZcclxuICAgIGNvbnN0IHdlYnZpZXdJZCA9IHRoaXMuX193ZWJ2aWV3SWRfXztcclxuICAgIHdlYnZpZXdJZCAmJiBPYmplY3Qua2V5cyhpbnN0YW5jZXMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgaWYgKGtleS5pbmRleE9mKHdlYnZpZXdJZCArICdfJykgPT09IDApIHtcclxuICAgICAgICBkZWxldGUgaW5zdGFuY2VzW2tleV07XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiBwYWdlT3B0aW9uc1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVQYWdlICh2dWVQYWdlT3B0aW9ucykge1xyXG4gIHtcclxuICAgIHJldHVybiBDb21wb25lbnQocGFyc2VQYWdlKHZ1ZVBhZ2VPcHRpb25zKSlcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudCAodnVlT3B0aW9ucykge1xyXG4gIHtcclxuICAgIHJldHVybiBDb21wb25lbnQocGFyc2VDb21wb25lbnQodnVlT3B0aW9ucykpXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVTdWJwYWNrYWdlQXBwICh2bSkge1xyXG4gIGNvbnN0IGFwcE9wdGlvbnMgPSBwYXJzZUFwcCh2bSk7XHJcbiAgY29uc3QgYXBwID0gZ2V0QXBwKHtcclxuICAgIGFsbG93RGVmYXVsdDogdHJ1ZVxyXG4gIH0pO1xyXG4gIHZtLiRzY29wZSA9IGFwcDtcclxuICBjb25zdCBnbG9iYWxEYXRhID0gYXBwLmdsb2JhbERhdGE7XHJcbiAgaWYgKGdsb2JhbERhdGEpIHtcclxuICAgIE9iamVjdC5rZXlzKGFwcE9wdGlvbnMuZ2xvYmFsRGF0YSkuZm9yRWFjaChuYW1lID0+IHtcclxuICAgICAgaWYgKCFoYXNPd24oZ2xvYmFsRGF0YSwgbmFtZSkpIHtcclxuICAgICAgICBnbG9iYWxEYXRhW25hbWVdID0gYXBwT3B0aW9ucy5nbG9iYWxEYXRhW25hbWVdO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgT2JqZWN0LmtleXMoYXBwT3B0aW9ucykuZm9yRWFjaChuYW1lID0+IHtcclxuICAgIGlmICghaGFzT3duKGFwcCwgbmFtZSkpIHtcclxuICAgICAgYXBwW25hbWVdID0gYXBwT3B0aW9uc1tuYW1lXTtcclxuICAgIH1cclxuICB9KTtcclxuICBpZiAoaXNGbihhcHBPcHRpb25zLm9uU2hvdykgJiYgdHQub25BcHBTaG93KSB7XHJcbiAgICB0dC5vbkFwcFNob3coKC4uLmFyZ3MpID0+IHtcclxuICAgICAgdm0uX19jYWxsX2hvb2soJ29uU2hvdycsIGFyZ3MpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGlmIChpc0ZuKGFwcE9wdGlvbnMub25IaWRlKSAmJiB0dC5vbkFwcEhpZGUpIHtcclxuICAgIHR0Lm9uQXBwSGlkZSgoLi4uYXJncykgPT4ge1xyXG4gICAgICB2bS5fX2NhbGxfaG9vaygnb25IaWRlJywgYXJncyk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgaWYgKGlzRm4oYXBwT3B0aW9ucy5vbkxhdW5jaCkpIHtcclxuICAgIGNvbnN0IGFyZ3MgPSB0dC5nZXRMYXVuY2hPcHRpb25zU3luYyAmJiB0dC5nZXRMYXVuY2hPcHRpb25zU3luYygpO1xyXG4gICAgdm0uX19jYWxsX2hvb2soJ29uTGF1bmNoJywgYXJncyk7XHJcbiAgfVxyXG4gIHJldHVybiB2bVxyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVQbHVnaW4gKHZtKSB7XHJcbiAgY29uc3QgYXBwT3B0aW9ucyA9IHBhcnNlQXBwKHZtKTtcclxuICBpZiAoaXNGbihhcHBPcHRpb25zLm9uU2hvdykgJiYgdHQub25BcHBTaG93KSB7XHJcbiAgICB0dC5vbkFwcFNob3coKC4uLmFyZ3MpID0+IHtcclxuICAgICAgdm0uX19jYWxsX2hvb2soJ29uU2hvdycsIGFyZ3MpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGlmIChpc0ZuKGFwcE9wdGlvbnMub25IaWRlKSAmJiB0dC5vbkFwcEhpZGUpIHtcclxuICAgIHR0Lm9uQXBwSGlkZSgoLi4uYXJncykgPT4ge1xyXG4gICAgICB2bS5fX2NhbGxfaG9vaygnb25IaWRlJywgYXJncyk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgaWYgKGlzRm4oYXBwT3B0aW9ucy5vbkxhdW5jaCkpIHtcclxuICAgIGNvbnN0IGFyZ3MgPSB0dC5nZXRMYXVuY2hPcHRpb25zU3luYyAmJiB0dC5nZXRMYXVuY2hPcHRpb25zU3luYygpO1xyXG4gICAgdm0uX19jYWxsX2hvb2soJ29uTGF1bmNoJywgYXJncyk7XHJcbiAgfVxyXG4gIHJldHVybiB2bVxyXG59XHJcblxyXG50b2Rvcy5mb3JFYWNoKHRvZG9BcGkgPT4ge1xyXG4gIHByb3RvY29sc1t0b2RvQXBpXSA9IGZhbHNlO1xyXG59KTtcclxuXHJcbmNhbklVc2VzLmZvckVhY2goY2FuSVVzZUFwaSA9PiB7XHJcbiAgY29uc3QgYXBpTmFtZSA9IHByb3RvY29sc1tjYW5JVXNlQXBpXSAmJiBwcm90b2NvbHNbY2FuSVVzZUFwaV0ubmFtZSA/IHByb3RvY29sc1tjYW5JVXNlQXBpXS5uYW1lXHJcbiAgICA6IGNhbklVc2VBcGk7XHJcbiAgaWYgKCF0dC5jYW5JVXNlKGFwaU5hbWUpKSB7XHJcbiAgICBwcm90b2NvbHNbY2FuSVVzZUFwaV0gPSBmYWxzZTtcclxuICB9XHJcbn0pO1xyXG5cclxubGV0IHVuaSA9IHt9O1xyXG5cclxuaWYgKHR5cGVvZiBQcm94eSAhPT0gJ3VuZGVmaW5lZCcgJiYgXCJtcC10b3V0aWFvXCIgIT09ICdhcHAtcGx1cycpIHtcclxuICB1bmkgPSBuZXcgUHJveHkoe30sIHtcclxuICAgIGdldCAodGFyZ2V0LCBuYW1lKSB7XHJcbiAgICAgIGlmIChoYXNPd24odGFyZ2V0LCBuYW1lKSkge1xyXG4gICAgICAgIHJldHVybiB0YXJnZXRbbmFtZV1cclxuICAgICAgfVxyXG4gICAgICBpZiAoYmFzZUFwaVtuYW1lXSkge1xyXG4gICAgICAgIHJldHVybiBiYXNlQXBpW25hbWVdXHJcbiAgICAgIH1cclxuICAgICAgaWYgKGFwaVtuYW1lXSkge1xyXG4gICAgICAgIHJldHVybiBwcm9taXNpZnkobmFtZSwgYXBpW25hbWVdKVxyXG4gICAgICB9XHJcbiAgICAgIHtcclxuICAgICAgICBpZiAoZXh0cmFBcGlbbmFtZV0pIHtcclxuICAgICAgICAgIHJldHVybiBwcm9taXNpZnkobmFtZSwgZXh0cmFBcGlbbmFtZV0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0b2RvQXBpc1tuYW1lXSkge1xyXG4gICAgICAgICAgcmV0dXJuIHByb21pc2lmeShuYW1lLCB0b2RvQXBpc1tuYW1lXSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGV2ZW50QXBpW25hbWVdKSB7XHJcbiAgICAgICAgcmV0dXJuIGV2ZW50QXBpW25hbWVdXHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFoYXNPd24odHQsIG5hbWUpICYmICFoYXNPd24ocHJvdG9jb2xzLCBuYW1lKSkge1xyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBwcm9taXNpZnkobmFtZSwgd3JhcHBlcihuYW1lLCB0dFtuYW1lXSkpXHJcbiAgICB9LFxyXG4gICAgc2V0ICh0YXJnZXQsIG5hbWUsIHZhbHVlKSB7XHJcbiAgICAgIHRhcmdldFtuYW1lXSA9IHZhbHVlO1xyXG4gICAgICByZXR1cm4gdHJ1ZVxyXG4gICAgfVxyXG4gIH0pO1xyXG59IGVsc2Uge1xyXG4gIE9iamVjdC5rZXlzKGJhc2VBcGkpLmZvckVhY2gobmFtZSA9PiB7XHJcbiAgICB1bmlbbmFtZV0gPSBiYXNlQXBpW25hbWVdO1xyXG4gIH0pO1xyXG5cclxuICB7XHJcbiAgICBPYmplY3Qua2V5cyh0b2RvQXBpcykuZm9yRWFjaChuYW1lID0+IHtcclxuICAgICAgdW5pW25hbWVdID0gcHJvbWlzaWZ5KG5hbWUsIHRvZG9BcGlzW25hbWVdKTtcclxuICAgIH0pO1xyXG4gICAgT2JqZWN0LmtleXMoZXh0cmFBcGkpLmZvckVhY2gobmFtZSA9PiB7XHJcbiAgICAgIHVuaVtuYW1lXSA9IHByb21pc2lmeShuYW1lLCB0b2RvQXBpc1tuYW1lXSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIE9iamVjdC5rZXlzKGV2ZW50QXBpKS5mb3JFYWNoKG5hbWUgPT4ge1xyXG4gICAgdW5pW25hbWVdID0gZXZlbnRBcGlbbmFtZV07XHJcbiAgfSk7XHJcblxyXG4gIE9iamVjdC5rZXlzKGFwaSkuZm9yRWFjaChuYW1lID0+IHtcclxuICAgIHVuaVtuYW1lXSA9IHByb21pc2lmeShuYW1lLCBhcGlbbmFtZV0pO1xyXG4gIH0pO1xyXG5cclxuICBPYmplY3Qua2V5cyh0dCkuZm9yRWFjaChuYW1lID0+IHtcclxuICAgIGlmIChoYXNPd24odHQsIG5hbWUpIHx8IGhhc093bihwcm90b2NvbHMsIG5hbWUpKSB7XHJcbiAgICAgIHVuaVtuYW1lXSA9IHByb21pc2lmeShuYW1lLCB3cmFwcGVyKG5hbWUsIHR0W25hbWVdKSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbnR0LmNyZWF0ZUFwcCA9IGNyZWF0ZUFwcDtcclxudHQuY3JlYXRlUGFnZSA9IGNyZWF0ZVBhZ2U7XHJcbnR0LmNyZWF0ZUNvbXBvbmVudCA9IGNyZWF0ZUNvbXBvbmVudDtcclxudHQuY3JlYXRlU3VicGFja2FnZUFwcCA9IGNyZWF0ZVN1YnBhY2thZ2VBcHA7XHJcbnR0LmNyZWF0ZVBsdWdpbiA9IGNyZWF0ZVBsdWdpbjtcclxuXHJcbnZhciB1bmkkMSA9IHVuaTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHVuaSQxO1xyXG5leHBvcnQgeyBjcmVhdGVBcHAsIGNyZWF0ZUNvbXBvbmVudCwgY3JlYXRlUGFnZSwgY3JlYXRlUGx1Z2luLCBjcmVhdGVTdWJwYWNrYWdlQXBwIH07XHJcbiIsInZhciBnO1xuXG4vLyBUaGlzIHdvcmtzIGluIG5vbi1zdHJpY3QgbW9kZVxuZyA9IChmdW5jdGlvbigpIHtcblx0cmV0dXJuIHRoaXM7XG59KSgpO1xuXG50cnkge1xuXHQvLyBUaGlzIHdvcmtzIGlmIGV2YWwgaXMgYWxsb3dlZCAoc2VlIENTUClcblx0ZyA9IGcgfHwgbmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtcbn0gY2F0Y2ggKGUpIHtcblx0Ly8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcblx0aWYgKHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIpIGcgPSB3aW5kb3c7XG59XG5cbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cbi8vIFdlIHJldHVybiB1bmRlZmluZWQsIGluc3RlYWQgb2Ygbm90aGluZyBoZXJlLCBzbyBpdCdzXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59XG5cbm1vZHVsZS5leHBvcnRzID0gZztcbiIsIi8qIVxuICogVnVlLmpzIHYyLjYuMTFcbiAqIChjKSAyMDE0LTIwMjEgRXZhbiBZb3VcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuLyogICovXG5cbnZhciBlbXB0eU9iamVjdCA9IE9iamVjdC5mcmVlemUoe30pO1xuXG4vLyBUaGVzZSBoZWxwZXJzIHByb2R1Y2UgYmV0dGVyIFZNIGNvZGUgaW4gSlMgZW5naW5lcyBkdWUgdG8gdGhlaXJcbi8vIGV4cGxpY2l0bmVzcyBhbmQgZnVuY3Rpb24gaW5saW5pbmcuXG5mdW5jdGlvbiBpc1VuZGVmICh2KSB7XG4gIHJldHVybiB2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbFxufVxuXG5mdW5jdGlvbiBpc0RlZiAodikge1xuICByZXR1cm4gdiAhPT0gdW5kZWZpbmVkICYmIHYgIT09IG51bGxcbn1cblxuZnVuY3Rpb24gaXNUcnVlICh2KSB7XG4gIHJldHVybiB2ID09PSB0cnVlXG59XG5cbmZ1bmN0aW9uIGlzRmFsc2UgKHYpIHtcbiAgcmV0dXJuIHYgPT09IGZhbHNlXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdmFsdWUgaXMgcHJpbWl0aXZlLlxuICovXG5mdW5jdGlvbiBpc1ByaW1pdGl2ZSAodmFsdWUpIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8XG4gICAgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB8fFxuICAgIC8vICRmbG93LWRpc2FibGUtbGluZVxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N5bWJvbCcgfHxcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJ1xuICApXG59XG5cbi8qKlxuICogUXVpY2sgb2JqZWN0IGNoZWNrIC0gdGhpcyBpcyBwcmltYXJpbHkgdXNlZCB0byB0ZWxsXG4gKiBPYmplY3RzIGZyb20gcHJpbWl0aXZlIHZhbHVlcyB3aGVuIHdlIGtub3cgdGhlIHZhbHVlXG4gKiBpcyBhIEpTT04tY29tcGxpYW50IHR5cGUuXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0IChvYmopIHtcbiAgcmV0dXJuIG9iaiAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0J1xufVxuXG4vKipcbiAqIEdldCB0aGUgcmF3IHR5cGUgc3RyaW5nIG9mIGEgdmFsdWUsIGUuZy4sIFtvYmplY3QgT2JqZWN0XS5cbiAqL1xudmFyIF90b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbmZ1bmN0aW9uIHRvUmF3VHlwZSAodmFsdWUpIHtcbiAgcmV0dXJuIF90b1N0cmluZy5jYWxsKHZhbHVlKS5zbGljZSg4LCAtMSlcbn1cblxuLyoqXG4gKiBTdHJpY3Qgb2JqZWN0IHR5cGUgY2hlY2suIE9ubHkgcmV0dXJucyB0cnVlXG4gKiBmb3IgcGxhaW4gSmF2YVNjcmlwdCBvYmplY3RzLlxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0IChvYmopIHtcbiAgcmV0dXJuIF90b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IE9iamVjdF0nXG59XG5cbmZ1bmN0aW9uIGlzUmVnRXhwICh2KSB7XG4gIHJldHVybiBfdG9TdHJpbmcuY2FsbCh2KSA9PT0gJ1tvYmplY3QgUmVnRXhwXSdcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB2YWwgaXMgYSB2YWxpZCBhcnJheSBpbmRleC5cbiAqL1xuZnVuY3Rpb24gaXNWYWxpZEFycmF5SW5kZXggKHZhbCkge1xuICB2YXIgbiA9IHBhcnNlRmxvYXQoU3RyaW5nKHZhbCkpO1xuICByZXR1cm4gbiA+PSAwICYmIE1hdGguZmxvb3IobikgPT09IG4gJiYgaXNGaW5pdGUodmFsKVxufVxuXG5mdW5jdGlvbiBpc1Byb21pc2UgKHZhbCkge1xuICByZXR1cm4gKFxuICAgIGlzRGVmKHZhbCkgJiZcbiAgICB0eXBlb2YgdmFsLnRoZW4gPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgdmFsLmNhdGNoID09PSAnZnVuY3Rpb24nXG4gIClcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgdmFsdWUgdG8gYSBzdHJpbmcgdGhhdCBpcyBhY3R1YWxseSByZW5kZXJlZC5cbiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcgKHZhbCkge1xuICByZXR1cm4gdmFsID09IG51bGxcbiAgICA/ICcnXG4gICAgOiBBcnJheS5pc0FycmF5KHZhbCkgfHwgKGlzUGxhaW5PYmplY3QodmFsKSAmJiB2YWwudG9TdHJpbmcgPT09IF90b1N0cmluZylcbiAgICAgID8gSlNPTi5zdHJpbmdpZnkodmFsLCBudWxsLCAyKVxuICAgICAgOiBTdHJpbmcodmFsKVxufVxuXG4vKipcbiAqIENvbnZlcnQgYW4gaW5wdXQgdmFsdWUgdG8gYSBudW1iZXIgZm9yIHBlcnNpc3RlbmNlLlxuICogSWYgdGhlIGNvbnZlcnNpb24gZmFpbHMsIHJldHVybiBvcmlnaW5hbCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIHRvTnVtYmVyICh2YWwpIHtcbiAgdmFyIG4gPSBwYXJzZUZsb2F0KHZhbCk7XG4gIHJldHVybiBpc05hTihuKSA/IHZhbCA6IG5cbn1cblxuLyoqXG4gKiBNYWtlIGEgbWFwIGFuZCByZXR1cm4gYSBmdW5jdGlvbiBmb3IgY2hlY2tpbmcgaWYgYSBrZXlcbiAqIGlzIGluIHRoYXQgbWFwLlxuICovXG5mdW5jdGlvbiBtYWtlTWFwIChcbiAgc3RyLFxuICBleHBlY3RzTG93ZXJDYXNlXG4pIHtcbiAgdmFyIG1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHZhciBsaXN0ID0gc3RyLnNwbGl0KCcsJyk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgIG1hcFtsaXN0W2ldXSA9IHRydWU7XG4gIH1cbiAgcmV0dXJuIGV4cGVjdHNMb3dlckNhc2VcbiAgICA/IGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIG1hcFt2YWwudG9Mb3dlckNhc2UoKV07IH1cbiAgICA6IGZ1bmN0aW9uICh2YWwpIHsgcmV0dXJuIG1hcFt2YWxdOyB9XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB0YWcgaXMgYSBidWlsdC1pbiB0YWcuXG4gKi9cbnZhciBpc0J1aWx0SW5UYWcgPSBtYWtlTWFwKCdzbG90LGNvbXBvbmVudCcsIHRydWUpO1xuXG4vKipcbiAqIENoZWNrIGlmIGFuIGF0dHJpYnV0ZSBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZS5cbiAqL1xudmFyIGlzUmVzZXJ2ZWRBdHRyaWJ1dGUgPSBtYWtlTWFwKCdrZXkscmVmLHNsb3Qsc2xvdC1zY29wZSxpcycpO1xuXG4vKipcbiAqIFJlbW92ZSBhbiBpdGVtIGZyb20gYW4gYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZSAoYXJyLCBpdGVtKSB7XG4gIGlmIChhcnIubGVuZ3RoKSB7XG4gICAgdmFyIGluZGV4ID0gYXJyLmluZGV4T2YoaXRlbSk7XG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBhcnIuc3BsaWNlKGluZGV4LCAxKVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENoZWNrIHdoZXRoZXIgYW4gb2JqZWN0IGhhcyB0aGUgcHJvcGVydHkuXG4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5mdW5jdGlvbiBoYXNPd24gKG9iaiwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIGNhY2hlZCB2ZXJzaW9uIG9mIGEgcHVyZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY2FjaGVkIChmbikge1xuICB2YXIgY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gKGZ1bmN0aW9uIGNhY2hlZEZuIChzdHIpIHtcbiAgICB2YXIgaGl0ID0gY2FjaGVbc3RyXTtcbiAgICByZXR1cm4gaGl0IHx8IChjYWNoZVtzdHJdID0gZm4oc3RyKSlcbiAgfSlcbn1cblxuLyoqXG4gKiBDYW1lbGl6ZSBhIGh5cGhlbi1kZWxpbWl0ZWQgc3RyaW5nLlxuICovXG52YXIgY2FtZWxpemVSRSA9IC8tKFxcdykvZztcbnZhciBjYW1lbGl6ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShjYW1lbGl6ZVJFLCBmdW5jdGlvbiAoXywgYykgeyByZXR1cm4gYyA/IGMudG9VcHBlckNhc2UoKSA6ICcnOyB9KVxufSk7XG5cbi8qKlxuICogQ2FwaXRhbGl6ZSBhIHN0cmluZy5cbiAqL1xudmFyIGNhcGl0YWxpemUgPSBjYWNoZWQoZnVuY3Rpb24gKHN0cikge1xuICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpXG59KTtcblxuLyoqXG4gKiBIeXBoZW5hdGUgYSBjYW1lbENhc2Ugc3RyaW5nLlxuICovXG52YXIgaHlwaGVuYXRlUkUgPSAvXFxCKFtBLVpdKS9nO1xudmFyIGh5cGhlbmF0ZSA9IGNhY2hlZChmdW5jdGlvbiAoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShoeXBoZW5hdGVSRSwgJy0kMScpLnRvTG93ZXJDYXNlKClcbn0pO1xuXG4vKipcbiAqIFNpbXBsZSBiaW5kIHBvbHlmaWxsIGZvciBlbnZpcm9ubWVudHMgdGhhdCBkbyBub3Qgc3VwcG9ydCBpdCxcbiAqIGUuZy4sIFBoYW50b21KUyAxLnguIFRlY2huaWNhbGx5LCB3ZSBkb24ndCBuZWVkIHRoaXMgYW55bW9yZVxuICogc2luY2UgbmF0aXZlIGJpbmQgaXMgbm93IHBlcmZvcm1hbnQgZW5vdWdoIGluIG1vc3QgYnJvd3NlcnMuXG4gKiBCdXQgcmVtb3ZpbmcgaXQgd291bGQgbWVhbiBicmVha2luZyBjb2RlIHRoYXQgd2FzIGFibGUgdG8gcnVuIGluXG4gKiBQaGFudG9tSlMgMS54LCBzbyB0aGlzIG11c3QgYmUga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbiAqL1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gcG9seWZpbGxCaW5kIChmbiwgY3R4KSB7XG4gIGZ1bmN0aW9uIGJvdW5kRm4gKGEpIHtcbiAgICB2YXIgbCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgcmV0dXJuIGxcbiAgICAgID8gbCA+IDFcbiAgICAgICAgPyBmbi5hcHBseShjdHgsIGFyZ3VtZW50cylcbiAgICAgICAgOiBmbi5jYWxsKGN0eCwgYSlcbiAgICAgIDogZm4uY2FsbChjdHgpXG4gIH1cblxuICBib3VuZEZuLl9sZW5ndGggPSBmbi5sZW5ndGg7XG4gIHJldHVybiBib3VuZEZuXG59XG5cbmZ1bmN0aW9uIG5hdGl2ZUJpbmQgKGZuLCBjdHgpIHtcbiAgcmV0dXJuIGZuLmJpbmQoY3R4KVxufVxuXG52YXIgYmluZCA9IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kXG4gID8gbmF0aXZlQmluZFxuICA6IHBvbHlmaWxsQmluZDtcblxuLyoqXG4gKiBDb252ZXJ0IGFuIEFycmF5LWxpa2Ugb2JqZWN0IHRvIGEgcmVhbCBBcnJheS5cbiAqL1xuZnVuY3Rpb24gdG9BcnJheSAobGlzdCwgc3RhcnQpIHtcbiAgc3RhcnQgPSBzdGFydCB8fCAwO1xuICB2YXIgaSA9IGxpc3QubGVuZ3RoIC0gc3RhcnQ7XG4gIHZhciByZXQgPSBuZXcgQXJyYXkoaSk7XG4gIHdoaWxlIChpLS0pIHtcbiAgICByZXRbaV0gPSBsaXN0W2kgKyBzdGFydF07XG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG4vKipcbiAqIE1peCBwcm9wZXJ0aWVzIGludG8gdGFyZ2V0IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gZXh0ZW5kICh0bywgX2Zyb20pIHtcbiAgZm9yICh2YXIga2V5IGluIF9mcm9tKSB7XG4gICAgdG9ba2V5XSA9IF9mcm9tW2tleV07XG4gIH1cbiAgcmV0dXJuIHRvXG59XG5cbi8qKlxuICogTWVyZ2UgYW4gQXJyYXkgb2YgT2JqZWN0cyBpbnRvIGEgc2luZ2xlIE9iamVjdC5cbiAqL1xuZnVuY3Rpb24gdG9PYmplY3QgKGFycikge1xuICB2YXIgcmVzID0ge307XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGFycltpXSkge1xuICAgICAgZXh0ZW5kKHJlcywgYXJyW2ldKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuXG4vKipcbiAqIFBlcmZvcm0gbm8gb3BlcmF0aW9uLlxuICogU3R1YmJpbmcgYXJncyB0byBtYWtlIEZsb3cgaGFwcHkgd2l0aG91dCBsZWF2aW5nIHVzZWxlc3MgdHJhbnNwaWxlZCBjb2RlXG4gKiB3aXRoIC4uLnJlc3QgKGh0dHBzOi8vZmxvdy5vcmcvYmxvZy8yMDE3LzA1LzA3L1N0cmljdC1GdW5jdGlvbi1DYWxsLUFyaXR5LykuXG4gKi9cbmZ1bmN0aW9uIG5vb3AgKGEsIGIsIGMpIHt9XG5cbi8qKlxuICogQWx3YXlzIHJldHVybiBmYWxzZS5cbiAqL1xudmFyIG5vID0gZnVuY3Rpb24gKGEsIGIsIGMpIHsgcmV0dXJuIGZhbHNlOyB9O1xuXG4vKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC12YXJzICovXG5cbi8qKlxuICogUmV0dXJuIHRoZSBzYW1lIHZhbHVlLlxuICovXG52YXIgaWRlbnRpdHkgPSBmdW5jdGlvbiAoXykgeyByZXR1cm4gXzsgfTtcblxuLyoqXG4gKiBDaGVjayBpZiB0d28gdmFsdWVzIGFyZSBsb29zZWx5IGVxdWFsIC0gdGhhdCBpcyxcbiAqIGlmIHRoZXkgYXJlIHBsYWluIG9iamVjdHMsIGRvIHRoZXkgaGF2ZSB0aGUgc2FtZSBzaGFwZT9cbiAqL1xuZnVuY3Rpb24gbG9vc2VFcXVhbCAoYSwgYikge1xuICBpZiAoYSA9PT0gYikgeyByZXR1cm4gdHJ1ZSB9XG4gIHZhciBpc09iamVjdEEgPSBpc09iamVjdChhKTtcbiAgdmFyIGlzT2JqZWN0QiA9IGlzT2JqZWN0KGIpO1xuICBpZiAoaXNPYmplY3RBICYmIGlzT2JqZWN0Qikge1xuICAgIHRyeSB7XG4gICAgICB2YXIgaXNBcnJheUEgPSBBcnJheS5pc0FycmF5KGEpO1xuICAgICAgdmFyIGlzQXJyYXlCID0gQXJyYXkuaXNBcnJheShiKTtcbiAgICAgIGlmIChpc0FycmF5QSAmJiBpc0FycmF5Qikge1xuICAgICAgICByZXR1cm4gYS5sZW5ndGggPT09IGIubGVuZ3RoICYmIGEuZXZlcnkoZnVuY3Rpb24gKGUsIGkpIHtcbiAgICAgICAgICByZXR1cm4gbG9vc2VFcXVhbChlLCBiW2ldKVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmIChhIGluc3RhbmNlb2YgRGF0ZSAmJiBiIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gYS5nZXRUaW1lKCkgPT09IGIuZ2V0VGltZSgpXG4gICAgICB9IGVsc2UgaWYgKCFpc0FycmF5QSAmJiAhaXNBcnJheUIpIHtcbiAgICAgICAgdmFyIGtleXNBID0gT2JqZWN0LmtleXMoYSk7XG4gICAgICAgIHZhciBrZXlzQiA9IE9iamVjdC5rZXlzKGIpO1xuICAgICAgICByZXR1cm4ga2V5c0EubGVuZ3RoID09PSBrZXlzQi5sZW5ndGggJiYga2V5c0EuZXZlcnkoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgIHJldHVybiBsb29zZUVxdWFsKGFba2V5XSwgYltrZXldKVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfSBlbHNlIGlmICghaXNPYmplY3RBICYmICFpc09iamVjdEIpIHtcbiAgICByZXR1cm4gU3RyaW5nKGEpID09PSBTdHJpbmcoYilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybiB0aGUgZmlyc3QgaW5kZXggYXQgd2hpY2ggYSBsb29zZWx5IGVxdWFsIHZhbHVlIGNhbiBiZVxuICogZm91bmQgaW4gdGhlIGFycmF5IChpZiB2YWx1ZSBpcyBhIHBsYWluIG9iamVjdCwgdGhlIGFycmF5IG11c3RcbiAqIGNvbnRhaW4gYW4gb2JqZWN0IG9mIHRoZSBzYW1lIHNoYXBlKSwgb3IgLTEgaWYgaXQgaXMgbm90IHByZXNlbnQuXG4gKi9cbmZ1bmN0aW9uIGxvb3NlSW5kZXhPZiAoYXJyLCB2YWwpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAobG9vc2VFcXVhbChhcnJbaV0sIHZhbCkpIHsgcmV0dXJuIGkgfVxuICB9XG4gIHJldHVybiAtMVxufVxuXG4vKipcbiAqIEVuc3VyZSBhIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IG9uY2UuXG4gKi9cbmZ1bmN0aW9uIG9uY2UgKGZuKSB7XG4gIHZhciBjYWxsZWQgPSBmYWxzZTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWNhbGxlZCkge1xuICAgICAgY2FsbGVkID0gdHJ1ZTtcbiAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9XG59XG5cbnZhciBBU1NFVF9UWVBFUyA9IFtcbiAgJ2NvbXBvbmVudCcsXG4gICdkaXJlY3RpdmUnLFxuICAnZmlsdGVyJ1xuXTtcblxudmFyIExJRkVDWUNMRV9IT09LUyA9IFtcbiAgJ2JlZm9yZUNyZWF0ZScsXG4gICdjcmVhdGVkJyxcbiAgJ2JlZm9yZU1vdW50JyxcbiAgJ21vdW50ZWQnLFxuICAnYmVmb3JlVXBkYXRlJyxcbiAgJ3VwZGF0ZWQnLFxuICAnYmVmb3JlRGVzdHJveScsXG4gICdkZXN0cm95ZWQnLFxuICAnYWN0aXZhdGVkJyxcbiAgJ2RlYWN0aXZhdGVkJyxcbiAgJ2Vycm9yQ2FwdHVyZWQnLFxuICAnc2VydmVyUHJlZmV0Y2gnXG5dO1xuXG4vKiAgKi9cblxuXG5cbnZhciBjb25maWcgPSAoe1xuICAvKipcbiAgICogT3B0aW9uIG1lcmdlIHN0cmF0ZWdpZXMgKHVzZWQgaW4gY29yZS91dGlsL29wdGlvbnMpXG4gICAqL1xuICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgb3B0aW9uTWVyZ2VTdHJhdGVnaWVzOiBPYmplY3QuY3JlYXRlKG51bGwpLFxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHN1cHByZXNzIHdhcm5pbmdzLlxuICAgKi9cbiAgc2lsZW50OiBmYWxzZSxcblxuICAvKipcbiAgICogU2hvdyBwcm9kdWN0aW9uIG1vZGUgdGlwIG1lc3NhZ2Ugb24gYm9vdD9cbiAgICovXG4gIHByb2R1Y3Rpb25UaXA6IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicsXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIGRldnRvb2xzXG4gICAqL1xuICBkZXZ0b29sczogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyxcblxuICAvKipcbiAgICogV2hldGhlciB0byByZWNvcmQgcGVyZlxuICAgKi9cbiAgcGVyZm9ybWFuY2U6IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBFcnJvciBoYW5kbGVyIGZvciB3YXRjaGVyIGVycm9yc1xuICAgKi9cbiAgZXJyb3JIYW5kbGVyOiBudWxsLFxuXG4gIC8qKlxuICAgKiBXYXJuIGhhbmRsZXIgZm9yIHdhdGNoZXIgd2FybnNcbiAgICovXG4gIHdhcm5IYW5kbGVyOiBudWxsLFxuXG4gIC8qKlxuICAgKiBJZ25vcmUgY2VydGFpbiBjdXN0b20gZWxlbWVudHNcbiAgICovXG4gIGlnbm9yZWRFbGVtZW50czogW10sXG5cbiAgLyoqXG4gICAqIEN1c3RvbSB1c2VyIGtleSBhbGlhc2VzIGZvciB2LW9uXG4gICAqL1xuICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAga2V5Q29kZXM6IE9iamVjdC5jcmVhdGUobnVsbCksXG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgdGFnIGlzIHJlc2VydmVkIHNvIHRoYXQgaXQgY2Fubm90IGJlIHJlZ2lzdGVyZWQgYXMgYVxuICAgKiBjb21wb25lbnQuIFRoaXMgaXMgcGxhdGZvcm0tZGVwZW5kZW50IGFuZCBtYXkgYmUgb3ZlcndyaXR0ZW4uXG4gICAqL1xuICBpc1Jlc2VydmVkVGFnOiBubyxcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYXR0cmlidXRlIGlzIHJlc2VydmVkIHNvIHRoYXQgaXQgY2Fubm90IGJlIHVzZWQgYXMgYSBjb21wb25lbnRcbiAgICogcHJvcC4gVGhpcyBpcyBwbGF0Zm9ybS1kZXBlbmRlbnQgYW5kIG1heSBiZSBvdmVyd3JpdHRlbi5cbiAgICovXG4gIGlzUmVzZXJ2ZWRBdHRyOiBubyxcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSB0YWcgaXMgYW4gdW5rbm93biBlbGVtZW50LlxuICAgKiBQbGF0Zm9ybS1kZXBlbmRlbnQuXG4gICAqL1xuICBpc1Vua25vd25FbGVtZW50OiBubyxcblxuICAvKipcbiAgICogR2V0IHRoZSBuYW1lc3BhY2Ugb2YgYW4gZWxlbWVudFxuICAgKi9cbiAgZ2V0VGFnTmFtZXNwYWNlOiBub29wLFxuXG4gIC8qKlxuICAgKiBQYXJzZSB0aGUgcmVhbCB0YWcgbmFtZSBmb3IgdGhlIHNwZWNpZmljIHBsYXRmb3JtLlxuICAgKi9cbiAgcGFyc2VQbGF0Zm9ybVRhZ05hbWU6IGlkZW50aXR5LFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhdHRyaWJ1dGUgbXVzdCBiZSBib3VuZCB1c2luZyBwcm9wZXJ0eSwgZS5nLiB2YWx1ZVxuICAgKiBQbGF0Zm9ybS1kZXBlbmRlbnQuXG4gICAqL1xuICBtdXN0VXNlUHJvcDogbm8sXG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gdXBkYXRlcyBhc3luY2hyb25vdXNseS4gSW50ZW5kZWQgdG8gYmUgdXNlZCBieSBWdWUgVGVzdCBVdGlsc1xuICAgKiBUaGlzIHdpbGwgc2lnbmlmaWNhbnRseSByZWR1Y2UgcGVyZm9ybWFuY2UgaWYgc2V0IHRvIGZhbHNlLlxuICAgKi9cbiAgYXN5bmM6IHRydWUsXG5cbiAgLyoqXG4gICAqIEV4cG9zZWQgZm9yIGxlZ2FjeSByZWFzb25zXG4gICAqL1xuICBfbGlmZWN5Y2xlSG9va3M6IExJRkVDWUNMRV9IT09LU1xufSk7XG5cbi8qICAqL1xuXG4vKipcbiAqIHVuaWNvZGUgbGV0dGVycyB1c2VkIGZvciBwYXJzaW5nIGh0bWwgdGFncywgY29tcG9uZW50IG5hbWVzIGFuZCBwcm9wZXJ0eSBwYXRocy5cbiAqIHVzaW5nIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9odG1sNTMvc2VtYW50aWNzLXNjcmlwdGluZy5odG1sI3BvdGVudGlhbGN1c3RvbWVsZW1lbnRuYW1lXG4gKiBza2lwcGluZyBcXHUxMDAwMC1cXHVFRkZGRiBkdWUgdG8gaXQgZnJlZXppbmcgdXAgUGhhbnRvbUpTXG4gKi9cbnZhciB1bmljb2RlUmVnRXhwID0gL2EtekEtWlxcdTAwQjdcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDNGLVxcdTIwNDBcXHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRkQvO1xuXG4vKipcbiAqIENoZWNrIGlmIGEgc3RyaW5nIHN0YXJ0cyB3aXRoICQgb3IgX1xuICovXG5mdW5jdGlvbiBpc1Jlc2VydmVkIChzdHIpIHtcbiAgdmFyIGMgPSAoc3RyICsgJycpLmNoYXJDb2RlQXQoMCk7XG4gIHJldHVybiBjID09PSAweDI0IHx8IGMgPT09IDB4NUZcbn1cblxuLyoqXG4gKiBEZWZpbmUgYSBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gZGVmIChvYmosIGtleSwgdmFsLCBlbnVtZXJhYmxlKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgIHZhbHVlOiB2YWwsXG4gICAgZW51bWVyYWJsZTogISFlbnVtZXJhYmxlLFxuICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KTtcbn1cblxuLyoqXG4gKiBQYXJzZSBzaW1wbGUgcGF0aC5cbiAqL1xudmFyIGJhaWxSRSA9IG5ldyBSZWdFeHAoKFwiW15cIiArICh1bmljb2RlUmVnRXhwLnNvdXJjZSkgKyBcIi4kX1xcXFxkXVwiKSk7XG5mdW5jdGlvbiBwYXJzZVBhdGggKHBhdGgpIHtcbiAgaWYgKGJhaWxSRS50ZXN0KHBhdGgpKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHNlZ21lbnRzID0gcGF0aC5zcGxpdCgnLicpO1xuICByZXR1cm4gZnVuY3Rpb24gKG9iaikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VnbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghb2JqKSB7IHJldHVybiB9XG4gICAgICBvYmogPSBvYmpbc2VnbWVudHNbaV1dO1xuICAgIH1cbiAgICByZXR1cm4gb2JqXG4gIH1cbn1cblxuLyogICovXG5cbi8vIGNhbiB3ZSB1c2UgX19wcm90b19fP1xudmFyIGhhc1Byb3RvID0gJ19fcHJvdG9fXycgaW4ge307XG5cbi8vIEJyb3dzZXIgZW52aXJvbm1lbnQgc25pZmZpbmdcbnZhciBpbkJyb3dzZXIgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbnZhciBpbldlZXggPSB0eXBlb2YgV1hFbnZpcm9ubWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgISFXWEVudmlyb25tZW50LnBsYXRmb3JtO1xudmFyIHdlZXhQbGF0Zm9ybSA9IGluV2VleCAmJiBXWEVudmlyb25tZW50LnBsYXRmb3JtLnRvTG93ZXJDYXNlKCk7XG52YXIgVUEgPSBpbkJyb3dzZXIgJiYgd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcbnZhciBpc0lFID0gVUEgJiYgL21zaWV8dHJpZGVudC8udGVzdChVQSk7XG52YXIgaXNJRTkgPSBVQSAmJiBVQS5pbmRleE9mKCdtc2llIDkuMCcpID4gMDtcbnZhciBpc0VkZ2UgPSBVQSAmJiBVQS5pbmRleE9mKCdlZGdlLycpID4gMDtcbnZhciBpc0FuZHJvaWQgPSAoVUEgJiYgVUEuaW5kZXhPZignYW5kcm9pZCcpID4gMCkgfHwgKHdlZXhQbGF0Zm9ybSA9PT0gJ2FuZHJvaWQnKTtcbnZhciBpc0lPUyA9IChVQSAmJiAvaXBob25lfGlwYWR8aXBvZHxpb3MvLnRlc3QoVUEpKSB8fCAod2VleFBsYXRmb3JtID09PSAnaW9zJyk7XG52YXIgaXNDaHJvbWUgPSBVQSAmJiAvY2hyb21lXFwvXFxkKy8udGVzdChVQSkgJiYgIWlzRWRnZTtcbnZhciBpc1BoYW50b21KUyA9IFVBICYmIC9waGFudG9tanMvLnRlc3QoVUEpO1xudmFyIGlzRkYgPSBVQSAmJiBVQS5tYXRjaCgvZmlyZWZveFxcLyhcXGQrKS8pO1xuXG4vLyBGaXJlZm94IGhhcyBhIFwid2F0Y2hcIiBmdW5jdGlvbiBvbiBPYmplY3QucHJvdG90eXBlLi4uXG52YXIgbmF0aXZlV2F0Y2ggPSAoe30pLndhdGNoO1xuaWYgKGluQnJvd3Nlcikge1xuICB0cnkge1xuICAgIHZhciBvcHRzID0ge307XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9wdHMsICdwYXNzaXZlJywgKHtcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0ICgpIHtcbiAgICAgIH1cbiAgICB9KSk7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy8yODVcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndGVzdC1wYXNzaXZlJywgbnVsbCwgb3B0cyk7XG4gIH0gY2F0Y2ggKGUpIHt9XG59XG5cbi8vIHRoaXMgbmVlZHMgdG8gYmUgbGF6eS1ldmFsZWQgYmVjYXVzZSB2dWUgbWF5IGJlIHJlcXVpcmVkIGJlZm9yZVxuLy8gdnVlLXNlcnZlci1yZW5kZXJlciBjYW4gc2V0IFZVRV9FTlZcbnZhciBfaXNTZXJ2ZXI7XG52YXIgaXNTZXJ2ZXJSZW5kZXJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIGlmIChfaXNTZXJ2ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghaW5Ccm93c2VyICYmICFpbldlZXggJiYgdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIGRldGVjdCBwcmVzZW5jZSBvZiB2dWUtc2VydmVyLXJlbmRlcmVyIGFuZCBhdm9pZFxuICAgICAgLy8gV2VicGFjayBzaGltbWluZyB0aGUgcHJvY2Vzc1xuICAgICAgX2lzU2VydmVyID0gZ2xvYmFsWydwcm9jZXNzJ10gJiYgZ2xvYmFsWydwcm9jZXNzJ10uZW52LlZVRV9FTlYgPT09ICdzZXJ2ZXInO1xuICAgIH0gZWxzZSB7XG4gICAgICBfaXNTZXJ2ZXIgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIF9pc1NlcnZlclxufTtcblxuLy8gZGV0ZWN0IGRldnRvb2xzXG52YXIgZGV2dG9vbHMgPSBpbkJyb3dzZXIgJiYgd2luZG93Ll9fVlVFX0RFVlRPT0xTX0dMT0JBTF9IT09LX187XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBpc05hdGl2ZSAoQ3Rvcikge1xuICByZXR1cm4gdHlwZW9mIEN0b3IgPT09ICdmdW5jdGlvbicgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KEN0b3IudG9TdHJpbmcoKSlcbn1cblxudmFyIGhhc1N5bWJvbCA9XG4gIHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFN5bWJvbCkgJiZcbiAgdHlwZW9mIFJlZmxlY3QgIT09ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFJlZmxlY3Qub3duS2V5cyk7XG5cbnZhciBfU2V0O1xuLyogaXN0YW5idWwgaWdub3JlIGlmICovIC8vICRmbG93LWRpc2FibGUtbGluZVxuaWYgKHR5cGVvZiBTZXQgIT09ICd1bmRlZmluZWQnICYmIGlzTmF0aXZlKFNldCkpIHtcbiAgLy8gdXNlIG5hdGl2ZSBTZXQgd2hlbiBhdmFpbGFibGUuXG4gIF9TZXQgPSBTZXQ7XG59IGVsc2Uge1xuICAvLyBhIG5vbi1zdGFuZGFyZCBTZXQgcG9seWZpbGwgdGhhdCBvbmx5IHdvcmtzIHdpdGggcHJpbWl0aXZlIGtleXMuXG4gIF9TZXQgPSAvKkBfX1BVUkVfXyovKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBTZXQgKCkge1xuICAgICAgdGhpcy5zZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIH1cbiAgICBTZXQucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIGhhcyAoa2V5KSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRba2V5XSA9PT0gdHJ1ZVxuICAgIH07XG4gICAgU2V0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKGtleSkge1xuICAgICAgdGhpcy5zZXRba2V5XSA9IHRydWU7XG4gICAgfTtcbiAgICBTZXQucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gY2xlYXIgKCkge1xuICAgICAgdGhpcy5zZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIH07XG5cbiAgICByZXR1cm4gU2V0O1xuICB9KCkpO1xufVxuXG4vKiAgKi9cblxudmFyIHdhcm4gPSBub29wO1xudmFyIHRpcCA9IG5vb3A7XG52YXIgZ2VuZXJhdGVDb21wb25lbnRUcmFjZSA9IChub29wKTsgLy8gd29yayBhcm91bmQgZmxvdyBjaGVja1xudmFyIGZvcm1hdENvbXBvbmVudE5hbWUgPSAobm9vcCk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBoYXNDb25zb2xlID0gdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnO1xuICB2YXIgY2xhc3NpZnlSRSA9IC8oPzpefFstX10pKFxcdykvZztcbiAgdmFyIGNsYXNzaWZ5ID0gZnVuY3Rpb24gKHN0cikgeyByZXR1cm4gc3RyXG4gICAgLnJlcGxhY2UoY2xhc3NpZnlSRSwgZnVuY3Rpb24gKGMpIHsgcmV0dXJuIGMudG9VcHBlckNhc2UoKTsgfSlcbiAgICAucmVwbGFjZSgvWy1fXS9nLCAnJyk7IH07XG5cbiAgd2FybiA9IGZ1bmN0aW9uIChtc2csIHZtKSB7XG4gICAgdmFyIHRyYWNlID0gdm0gPyBnZW5lcmF0ZUNvbXBvbmVudFRyYWNlKHZtKSA6ICcnO1xuXG4gICAgaWYgKGNvbmZpZy53YXJuSGFuZGxlcikge1xuICAgICAgY29uZmlnLndhcm5IYW5kbGVyLmNhbGwobnVsbCwgbXNnLCB2bSwgdHJhY2UpO1xuICAgIH0gZWxzZSBpZiAoaGFzQ29uc29sZSAmJiAoIWNvbmZpZy5zaWxlbnQpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKChcIltWdWUgd2Fybl06IFwiICsgbXNnICsgdHJhY2UpKTtcbiAgICB9XG4gIH07XG5cbiAgdGlwID0gZnVuY3Rpb24gKG1zZywgdm0pIHtcbiAgICBpZiAoaGFzQ29uc29sZSAmJiAoIWNvbmZpZy5zaWxlbnQpKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCJbVnVlIHRpcF06IFwiICsgbXNnICsgKFxuICAgICAgICB2bSA/IGdlbmVyYXRlQ29tcG9uZW50VHJhY2Uodm0pIDogJydcbiAgICAgICkpO1xuICAgIH1cbiAgfTtcblxuICBmb3JtYXRDb21wb25lbnROYW1lID0gZnVuY3Rpb24gKHZtLCBpbmNsdWRlRmlsZSkge1xuICAgIGlmICh2bS4kcm9vdCA9PT0gdm0pIHtcbiAgICAgIGlmICh2bS4kb3B0aW9ucyAmJiB2bS4kb3B0aW9ucy5fX2ZpbGUpIHsgLy8gZml4ZWQgYnkgeHh4eHh4XG4gICAgICAgIHJldHVybiAoJycpICsgdm0uJG9wdGlvbnMuX19maWxlXG4gICAgICB9XG4gICAgICByZXR1cm4gJzxSb290PidcbiAgICB9XG4gICAgdmFyIG9wdGlvbnMgPSB0eXBlb2Ygdm0gPT09ICdmdW5jdGlvbicgJiYgdm0uY2lkICE9IG51bGxcbiAgICAgID8gdm0ub3B0aW9uc1xuICAgICAgOiB2bS5faXNWdWVcbiAgICAgICAgPyB2bS4kb3B0aW9ucyB8fCB2bS5jb25zdHJ1Y3Rvci5vcHRpb25zXG4gICAgICAgIDogdm07XG4gICAgdmFyIG5hbWUgPSBvcHRpb25zLm5hbWUgfHwgb3B0aW9ucy5fY29tcG9uZW50VGFnO1xuICAgIHZhciBmaWxlID0gb3B0aW9ucy5fX2ZpbGU7XG4gICAgaWYgKCFuYW1lICYmIGZpbGUpIHtcbiAgICAgIHZhciBtYXRjaCA9IGZpbGUubWF0Y2goLyhbXi9cXFxcXSspXFwudnVlJC8pO1xuICAgICAgbmFtZSA9IG1hdGNoICYmIG1hdGNoWzFdO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICAobmFtZSA/IChcIjxcIiArIChjbGFzc2lmeShuYW1lKSkgKyBcIj5cIikgOiBcIjxBbm9ueW1vdXM+XCIpICtcbiAgICAgIChmaWxlICYmIGluY2x1ZGVGaWxlICE9PSBmYWxzZSA/IChcIiBhdCBcIiArIGZpbGUpIDogJycpXG4gICAgKVxuICB9O1xuXG4gIHZhciByZXBlYXQgPSBmdW5jdGlvbiAoc3RyLCBuKSB7XG4gICAgdmFyIHJlcyA9ICcnO1xuICAgIHdoaWxlIChuKSB7XG4gICAgICBpZiAobiAlIDIgPT09IDEpIHsgcmVzICs9IHN0cjsgfVxuICAgICAgaWYgKG4gPiAxKSB7IHN0ciArPSBzdHI7IH1cbiAgICAgIG4gPj49IDE7XG4gICAgfVxuICAgIHJldHVybiByZXNcbiAgfTtcblxuICBnZW5lcmF0ZUNvbXBvbmVudFRyYWNlID0gZnVuY3Rpb24gKHZtKSB7XG4gICAgaWYgKHZtLl9pc1Z1ZSAmJiB2bS4kcGFyZW50KSB7XG4gICAgICB2YXIgdHJlZSA9IFtdO1xuICAgICAgdmFyIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZSA9IDA7XG4gICAgICB3aGlsZSAodm0gJiYgdm0uJG9wdGlvbnMubmFtZSAhPT0gJ1BhZ2VCb2R5Jykge1xuICAgICAgICBpZiAodHJlZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdmFyIGxhc3QgPSB0cmVlW3RyZWUubGVuZ3RoIC0gMV07XG4gICAgICAgICAgaWYgKGxhc3QuY29uc3RydWN0b3IgPT09IHZtLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgICAgICBjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2UrKztcbiAgICAgICAgICAgIHZtID0gdm0uJHBhcmVudDtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50UmVjdXJzaXZlU2VxdWVuY2UgPiAwKSB7XG4gICAgICAgICAgICB0cmVlW3RyZWUubGVuZ3RoIC0gMV0gPSBbbGFzdCwgY3VycmVudFJlY3Vyc2l2ZVNlcXVlbmNlXTtcbiAgICAgICAgICAgIGN1cnJlbnRSZWN1cnNpdmVTZXF1ZW5jZSA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICF2bS4kb3B0aW9ucy5pc1Jlc2VydmVkICYmIHRyZWUucHVzaCh2bSk7XG4gICAgICAgIHZtID0gdm0uJHBhcmVudDtcbiAgICAgIH1cbiAgICAgIHJldHVybiAnXFxuXFxuZm91bmQgaW5cXG5cXG4nICsgdHJlZVxuICAgICAgICAubWFwKGZ1bmN0aW9uICh2bSwgaSkgeyByZXR1cm4gKFwiXCIgKyAoaSA9PT0gMCA/ICctLS0+ICcgOiByZXBlYXQoJyAnLCA1ICsgaSAqIDIpKSArIChBcnJheS5pc0FycmF5KHZtKVxuICAgICAgICAgICAgPyAoKGZvcm1hdENvbXBvbmVudE5hbWUodm1bMF0pKSArIFwiLi4uIChcIiArICh2bVsxXSkgKyBcIiByZWN1cnNpdmUgY2FsbHMpXCIpXG4gICAgICAgICAgICA6IGZvcm1hdENvbXBvbmVudE5hbWUodm0pKSk7IH0pXG4gICAgICAgIC5qb2luKCdcXG4nKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKFwiXFxuXFxuKGZvdW5kIGluIFwiICsgKGZvcm1hdENvbXBvbmVudE5hbWUodm0pKSArIFwiKVwiKVxuICAgIH1cbiAgfTtcbn1cblxuLyogICovXG5cbnZhciB1aWQgPSAwO1xuXG4vKipcbiAqIEEgZGVwIGlzIGFuIG9ic2VydmFibGUgdGhhdCBjYW4gaGF2ZSBtdWx0aXBsZVxuICogZGlyZWN0aXZlcyBzdWJzY3JpYmluZyB0byBpdC5cbiAqL1xudmFyIERlcCA9IGZ1bmN0aW9uIERlcCAoKSB7XG4gIHRoaXMuaWQgPSB1aWQrKztcbiAgdGhpcy5zdWJzID0gW107XG59O1xuXG5EZXAucHJvdG90eXBlLmFkZFN1YiA9IGZ1bmN0aW9uIGFkZFN1YiAoc3ViKSB7XG4gIHRoaXMuc3Vicy5wdXNoKHN1Yik7XG59O1xuXG5EZXAucHJvdG90eXBlLnJlbW92ZVN1YiA9IGZ1bmN0aW9uIHJlbW92ZVN1YiAoc3ViKSB7XG4gIHJlbW92ZSh0aGlzLnN1YnMsIHN1Yik7XG59O1xuXG5EZXAucHJvdG90eXBlLmRlcGVuZCA9IGZ1bmN0aW9uIGRlcGVuZCAoKSB7XG4gIGlmIChEZXAuU2hhcmVkT2JqZWN0LnRhcmdldCkge1xuICAgIERlcC5TaGFyZWRPYmplY3QudGFyZ2V0LmFkZERlcCh0aGlzKTtcbiAgfVxufTtcblxuRGVwLnByb3RvdHlwZS5ub3RpZnkgPSBmdW5jdGlvbiBub3RpZnkgKCkge1xuICAvLyBzdGFiaWxpemUgdGhlIHN1YnNjcmliZXIgbGlzdCBmaXJzdFxuICB2YXIgc3VicyA9IHRoaXMuc3Vicy5zbGljZSgpO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhY29uZmlnLmFzeW5jKSB7XG4gICAgLy8gc3VicyBhcmVuJ3Qgc29ydGVkIGluIHNjaGVkdWxlciBpZiBub3QgcnVubmluZyBhc3luY1xuICAgIC8vIHdlIG5lZWQgdG8gc29ydCB0aGVtIG5vdyB0byBtYWtlIHN1cmUgdGhleSBmaXJlIGluIGNvcnJlY3RcbiAgICAvLyBvcmRlclxuICAgIHN1YnMuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5pZCAtIGIuaWQ7IH0pO1xuICB9XG4gIGZvciAodmFyIGkgPSAwLCBsID0gc3Vicy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBzdWJzW2ldLnVwZGF0ZSgpO1xuICB9XG59O1xuXG4vLyBUaGUgY3VycmVudCB0YXJnZXQgd2F0Y2hlciBiZWluZyBldmFsdWF0ZWQuXG4vLyBUaGlzIGlzIGdsb2JhbGx5IHVuaXF1ZSBiZWNhdXNlIG9ubHkgb25lIHdhdGNoZXJcbi8vIGNhbiBiZSBldmFsdWF0ZWQgYXQgYSB0aW1lLlxuLy8gZml4ZWQgYnkgeHh4eHh4IChudnVlIHNoYXJlZCB2dWV4KVxuLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbkRlcC5TaGFyZWRPYmplY3QgPSB7fTtcbkRlcC5TaGFyZWRPYmplY3QudGFyZ2V0ID0gbnVsbDtcbkRlcC5TaGFyZWRPYmplY3QudGFyZ2V0U3RhY2sgPSBbXTtcblxuZnVuY3Rpb24gcHVzaFRhcmdldCAodGFyZ2V0KSB7XG4gIERlcC5TaGFyZWRPYmplY3QudGFyZ2V0U3RhY2sucHVzaCh0YXJnZXQpO1xuICBEZXAuU2hhcmVkT2JqZWN0LnRhcmdldCA9IHRhcmdldDtcbiAgRGVwLnRhcmdldCA9IHRhcmdldDtcbn1cblxuZnVuY3Rpb24gcG9wVGFyZ2V0ICgpIHtcbiAgRGVwLlNoYXJlZE9iamVjdC50YXJnZXRTdGFjay5wb3AoKTtcbiAgRGVwLlNoYXJlZE9iamVjdC50YXJnZXQgPSBEZXAuU2hhcmVkT2JqZWN0LnRhcmdldFN0YWNrW0RlcC5TaGFyZWRPYmplY3QudGFyZ2V0U3RhY2subGVuZ3RoIC0gMV07XG4gIERlcC50YXJnZXQgPSBEZXAuU2hhcmVkT2JqZWN0LnRhcmdldDtcbn1cblxuLyogICovXG5cbnZhciBWTm9kZSA9IGZ1bmN0aW9uIFZOb2RlIChcbiAgdGFnLFxuICBkYXRhLFxuICBjaGlsZHJlbixcbiAgdGV4dCxcbiAgZWxtLFxuICBjb250ZXh0LFxuICBjb21wb25lbnRPcHRpb25zLFxuICBhc3luY0ZhY3Rvcnlcbikge1xuICB0aGlzLnRhZyA9IHRhZztcbiAgdGhpcy5kYXRhID0gZGF0YTtcbiAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICB0aGlzLnRleHQgPSB0ZXh0O1xuICB0aGlzLmVsbSA9IGVsbTtcbiAgdGhpcy5ucyA9IHVuZGVmaW5lZDtcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5mbkNvbnRleHQgPSB1bmRlZmluZWQ7XG4gIHRoaXMuZm5PcHRpb25zID0gdW5kZWZpbmVkO1xuICB0aGlzLmZuU2NvcGVJZCA9IHVuZGVmaW5lZDtcbiAgdGhpcy5rZXkgPSBkYXRhICYmIGRhdGEua2V5O1xuICB0aGlzLmNvbXBvbmVudE9wdGlvbnMgPSBjb21wb25lbnRPcHRpb25zO1xuICB0aGlzLmNvbXBvbmVudEluc3RhbmNlID0gdW5kZWZpbmVkO1xuICB0aGlzLnBhcmVudCA9IHVuZGVmaW5lZDtcbiAgdGhpcy5yYXcgPSBmYWxzZTtcbiAgdGhpcy5pc1N0YXRpYyA9IGZhbHNlO1xuICB0aGlzLmlzUm9vdEluc2VydCA9IHRydWU7XG4gIHRoaXMuaXNDb21tZW50ID0gZmFsc2U7XG4gIHRoaXMuaXNDbG9uZWQgPSBmYWxzZTtcbiAgdGhpcy5pc09uY2UgPSBmYWxzZTtcbiAgdGhpcy5hc3luY0ZhY3RvcnkgPSBhc3luY0ZhY3Rvcnk7XG4gIHRoaXMuYXN5bmNNZXRhID0gdW5kZWZpbmVkO1xuICB0aGlzLmlzQXN5bmNQbGFjZWhvbGRlciA9IGZhbHNlO1xufTtcblxudmFyIHByb3RvdHlwZUFjY2Vzc29ycyA9IHsgY2hpbGQ6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0gfTtcblxuLy8gREVQUkVDQVRFRDogYWxpYXMgZm9yIGNvbXBvbmVudEluc3RhbmNlIGZvciBiYWNrd2FyZHMgY29tcGF0LlxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnByb3RvdHlwZUFjY2Vzc29ycy5jaGlsZC5nZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmNvbXBvbmVudEluc3RhbmNlXG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggVk5vZGUucHJvdG90eXBlLCBwcm90b3R5cGVBY2Nlc3NvcnMgKTtcblxudmFyIGNyZWF0ZUVtcHR5Vk5vZGUgPSBmdW5jdGlvbiAodGV4dCkge1xuICBpZiAoIHRleHQgPT09IHZvaWQgMCApIHRleHQgPSAnJztcblxuICB2YXIgbm9kZSA9IG5ldyBWTm9kZSgpO1xuICBub2RlLnRleHQgPSB0ZXh0O1xuICBub2RlLmlzQ29tbWVudCA9IHRydWU7XG4gIHJldHVybiBub2RlXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVUZXh0Vk5vZGUgKHZhbCkge1xuICByZXR1cm4gbmV3IFZOb2RlKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFN0cmluZyh2YWwpKVxufVxuXG4vLyBvcHRpbWl6ZWQgc2hhbGxvdyBjbG9uZVxuLy8gdXNlZCBmb3Igc3RhdGljIG5vZGVzIGFuZCBzbG90IG5vZGVzIGJlY2F1c2UgdGhleSBtYXkgYmUgcmV1c2VkIGFjcm9zc1xuLy8gbXVsdGlwbGUgcmVuZGVycywgY2xvbmluZyB0aGVtIGF2b2lkcyBlcnJvcnMgd2hlbiBET00gbWFuaXB1bGF0aW9ucyByZWx5XG4vLyBvbiB0aGVpciBlbG0gcmVmZXJlbmNlLlxuZnVuY3Rpb24gY2xvbmVWTm9kZSAodm5vZGUpIHtcbiAgdmFyIGNsb25lZCA9IG5ldyBWTm9kZShcbiAgICB2bm9kZS50YWcsXG4gICAgdm5vZGUuZGF0YSxcbiAgICAvLyAjNzk3NVxuICAgIC8vIGNsb25lIGNoaWxkcmVuIGFycmF5IHRvIGF2b2lkIG11dGF0aW5nIG9yaWdpbmFsIGluIGNhc2Ugb2YgY2xvbmluZ1xuICAgIC8vIGEgY2hpbGQuXG4gICAgdm5vZGUuY2hpbGRyZW4gJiYgdm5vZGUuY2hpbGRyZW4uc2xpY2UoKSxcbiAgICB2bm9kZS50ZXh0LFxuICAgIHZub2RlLmVsbSxcbiAgICB2bm9kZS5jb250ZXh0LFxuICAgIHZub2RlLmNvbXBvbmVudE9wdGlvbnMsXG4gICAgdm5vZGUuYXN5bmNGYWN0b3J5XG4gICk7XG4gIGNsb25lZC5ucyA9IHZub2RlLm5zO1xuICBjbG9uZWQuaXNTdGF0aWMgPSB2bm9kZS5pc1N0YXRpYztcbiAgY2xvbmVkLmtleSA9IHZub2RlLmtleTtcbiAgY2xvbmVkLmlzQ29tbWVudCA9IHZub2RlLmlzQ29tbWVudDtcbiAgY2xvbmVkLmZuQ29udGV4dCA9IHZub2RlLmZuQ29udGV4dDtcbiAgY2xvbmVkLmZuT3B0aW9ucyA9IHZub2RlLmZuT3B0aW9ucztcbiAgY2xvbmVkLmZuU2NvcGVJZCA9IHZub2RlLmZuU2NvcGVJZDtcbiAgY2xvbmVkLmFzeW5jTWV0YSA9IHZub2RlLmFzeW5jTWV0YTtcbiAgY2xvbmVkLmlzQ2xvbmVkID0gdHJ1ZTtcbiAgcmV0dXJuIGNsb25lZFxufVxuXG4vKlxuICogbm90IHR5cGUgY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1c2UgZmxvdyBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoXG4gKiBkeW5hbWljYWxseSBhY2Nlc3NpbmcgbWV0aG9kcyBvbiBBcnJheSBwcm90b3R5cGVcbiAqL1xuXG52YXIgYXJyYXlQcm90byA9IEFycmF5LnByb3RvdHlwZTtcbnZhciBhcnJheU1ldGhvZHMgPSBPYmplY3QuY3JlYXRlKGFycmF5UHJvdG8pO1xuXG52YXIgbWV0aG9kc1RvUGF0Y2ggPSBbXG4gICdwdXNoJyxcbiAgJ3BvcCcsXG4gICdzaGlmdCcsXG4gICd1bnNoaWZ0JyxcbiAgJ3NwbGljZScsXG4gICdzb3J0JyxcbiAgJ3JldmVyc2UnXG5dO1xuXG4vKipcbiAqIEludGVyY2VwdCBtdXRhdGluZyBtZXRob2RzIGFuZCBlbWl0IGV2ZW50c1xuICovXG5tZXRob2RzVG9QYXRjaC5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgLy8gY2FjaGUgb3JpZ2luYWwgbWV0aG9kXG4gIHZhciBvcmlnaW5hbCA9IGFycmF5UHJvdG9bbWV0aG9kXTtcbiAgZGVmKGFycmF5TWV0aG9kcywgbWV0aG9kLCBmdW5jdGlvbiBtdXRhdG9yICgpIHtcbiAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHdoaWxlICggbGVuLS0gKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuIF07XG5cbiAgICB2YXIgcmVzdWx0ID0gb3JpZ2luYWwuYXBwbHkodGhpcywgYXJncyk7XG4gICAgdmFyIG9iID0gdGhpcy5fX29iX187XG4gICAgdmFyIGluc2VydGVkO1xuICAgIHN3aXRjaCAobWV0aG9kKSB7XG4gICAgICBjYXNlICdwdXNoJzpcbiAgICAgIGNhc2UgJ3Vuc2hpZnQnOlxuICAgICAgICBpbnNlcnRlZCA9IGFyZ3M7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICdzcGxpY2UnOlxuICAgICAgICBpbnNlcnRlZCA9IGFyZ3Muc2xpY2UoMik7XG4gICAgICAgIGJyZWFrXG4gICAgfVxuICAgIGlmIChpbnNlcnRlZCkgeyBvYi5vYnNlcnZlQXJyYXkoaW5zZXJ0ZWQpOyB9XG4gICAgLy8gbm90aWZ5IGNoYW5nZVxuICAgIG9iLmRlcC5ub3RpZnkoKTtcbiAgICByZXR1cm4gcmVzdWx0XG4gIH0pO1xufSk7XG5cbi8qICAqL1xuXG52YXIgYXJyYXlLZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYXJyYXlNZXRob2RzKTtcblxuLyoqXG4gKiBJbiBzb21lIGNhc2VzIHdlIG1heSB3YW50IHRvIGRpc2FibGUgb2JzZXJ2YXRpb24gaW5zaWRlIGEgY29tcG9uZW50J3NcbiAqIHVwZGF0ZSBjb21wdXRhdGlvbi5cbiAqL1xudmFyIHNob3VsZE9ic2VydmUgPSB0cnVlO1xuXG5mdW5jdGlvbiB0b2dnbGVPYnNlcnZpbmcgKHZhbHVlKSB7XG4gIHNob3VsZE9ic2VydmUgPSB2YWx1ZTtcbn1cblxuLyoqXG4gKiBPYnNlcnZlciBjbGFzcyB0aGF0IGlzIGF0dGFjaGVkIHRvIGVhY2ggb2JzZXJ2ZWRcbiAqIG9iamVjdC4gT25jZSBhdHRhY2hlZCwgdGhlIG9ic2VydmVyIGNvbnZlcnRzIHRoZSB0YXJnZXRcbiAqIG9iamVjdCdzIHByb3BlcnR5IGtleXMgaW50byBnZXR0ZXIvc2V0dGVycyB0aGF0XG4gKiBjb2xsZWN0IGRlcGVuZGVuY2llcyBhbmQgZGlzcGF0Y2ggdXBkYXRlcy5cbiAqL1xudmFyIE9ic2VydmVyID0gZnVuY3Rpb24gT2JzZXJ2ZXIgKHZhbHVlKSB7XG4gIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgdGhpcy5kZXAgPSBuZXcgRGVwKCk7XG4gIHRoaXMudm1Db3VudCA9IDA7XG4gIGRlZih2YWx1ZSwgJ19fb2JfXycsIHRoaXMpO1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAoaGFzUHJvdG8pIHtcbiAgICAgIHsvLyBmaXhlZCBieSB4eHh4eHgg5b6u5L+h5bCP56iL5bqP5L2/55SoIHBsdWdpbnMg5LmL5ZCO77yM5pWw57uE5pa55rOV6KKr55u05o6l5oyC6L295Yiw5LqG5pWw57uE5a+56LGh5LiK77yM6ZyA6KaB5omn6KGMIGNvcHlBdWdtZW50IOmAu+i+kVxuICAgICAgICBpZih2YWx1ZS5wdXNoICE9PSB2YWx1ZS5fX3Byb3RvX18ucHVzaCl7XG4gICAgICAgICAgY29weUF1Z21lbnQodmFsdWUsIGFycmF5TWV0aG9kcywgYXJyYXlLZXlzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm90b0F1Z21lbnQodmFsdWUsIGFycmF5TWV0aG9kcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29weUF1Z21lbnQodmFsdWUsIGFycmF5TWV0aG9kcywgYXJyYXlLZXlzKTtcbiAgICB9XG4gICAgdGhpcy5vYnNlcnZlQXJyYXkodmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMud2Fsayh2YWx1ZSk7XG4gIH1cbn07XG5cbi8qKlxuICogV2FsayB0aHJvdWdoIGFsbCBwcm9wZXJ0aWVzIGFuZCBjb252ZXJ0IHRoZW0gaW50b1xuICogZ2V0dGVyL3NldHRlcnMuIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuXG4gKiB2YWx1ZSB0eXBlIGlzIE9iamVjdC5cbiAqL1xuT2JzZXJ2ZXIucHJvdG90eXBlLndhbGsgPSBmdW5jdGlvbiB3YWxrIChvYmopIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBkZWZpbmVSZWFjdGl2ZSQkMShvYmosIGtleXNbaV0pO1xuICB9XG59O1xuXG4vKipcbiAqIE9ic2VydmUgYSBsaXN0IG9mIEFycmF5IGl0ZW1zLlxuICovXG5PYnNlcnZlci5wcm90b3R5cGUub2JzZXJ2ZUFycmF5ID0gZnVuY3Rpb24gb2JzZXJ2ZUFycmF5IChpdGVtcykge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGl0ZW1zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIG9ic2VydmUoaXRlbXNbaV0pO1xuICB9XG59O1xuXG4vLyBoZWxwZXJzXG5cbi8qKlxuICogQXVnbWVudCBhIHRhcmdldCBPYmplY3Qgb3IgQXJyYXkgYnkgaW50ZXJjZXB0aW5nXG4gKiB0aGUgcHJvdG90eXBlIGNoYWluIHVzaW5nIF9fcHJvdG9fX1xuICovXG5mdW5jdGlvbiBwcm90b0F1Z21lbnQgKHRhcmdldCwgc3JjKSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG4gIHRhcmdldC5fX3Byb3RvX18gPSBzcmM7XG4gIC8qIGVzbGludC1lbmFibGUgbm8tcHJvdG8gKi9cbn1cblxuLyoqXG4gKiBBdWdtZW50IGEgdGFyZ2V0IE9iamVjdCBvciBBcnJheSBieSBkZWZpbmluZ1xuICogaGlkZGVuIHByb3BlcnRpZXMuXG4gKi9cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBjb3B5QXVnbWVudCAodGFyZ2V0LCBzcmMsIGtleXMpIHtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBrZXlzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIGRlZih0YXJnZXQsIGtleSwgc3JjW2tleV0pO1xuICB9XG59XG5cbi8qKlxuICogQXR0ZW1wdCB0byBjcmVhdGUgYW4gb2JzZXJ2ZXIgaW5zdGFuY2UgZm9yIGEgdmFsdWUsXG4gKiByZXR1cm5zIHRoZSBuZXcgb2JzZXJ2ZXIgaWYgc3VjY2Vzc2Z1bGx5IG9ic2VydmVkLFxuICogb3IgdGhlIGV4aXN0aW5nIG9ic2VydmVyIGlmIHRoZSB2YWx1ZSBhbHJlYWR5IGhhcyBvbmUuXG4gKi9cbmZ1bmN0aW9uIG9ic2VydmUgKHZhbHVlLCBhc1Jvb3REYXRhKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpIHx8IHZhbHVlIGluc3RhbmNlb2YgVk5vZGUpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgb2I7XG4gIGlmIChoYXNPd24odmFsdWUsICdfX29iX18nKSAmJiB2YWx1ZS5fX29iX18gaW5zdGFuY2VvZiBPYnNlcnZlcikge1xuICAgIG9iID0gdmFsdWUuX19vYl9fO1xuICB9IGVsc2UgaWYgKFxuICAgIHNob3VsZE9ic2VydmUgJiZcbiAgICAhaXNTZXJ2ZXJSZW5kZXJpbmcoKSAmJlxuICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSB8fCBpc1BsYWluT2JqZWN0KHZhbHVlKSkgJiZcbiAgICBPYmplY3QuaXNFeHRlbnNpYmxlKHZhbHVlKSAmJlxuICAgICF2YWx1ZS5faXNWdWVcbiAgKSB7XG4gICAgb2IgPSBuZXcgT2JzZXJ2ZXIodmFsdWUpO1xuICB9XG4gIGlmIChhc1Jvb3REYXRhICYmIG9iKSB7XG4gICAgb2Iudm1Db3VudCsrO1xuICB9XG4gIHJldHVybiBvYlxufVxuXG4vKipcbiAqIERlZmluZSBhIHJlYWN0aXZlIHByb3BlcnR5IG9uIGFuIE9iamVjdC5cbiAqL1xuZnVuY3Rpb24gZGVmaW5lUmVhY3RpdmUkJDEgKFxuICBvYmosXG4gIGtleSxcbiAgdmFsLFxuICBjdXN0b21TZXR0ZXIsXG4gIHNoYWxsb3dcbikge1xuICB2YXIgZGVwID0gbmV3IERlcCgpO1xuXG4gIHZhciBwcm9wZXJ0eSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpO1xuICBpZiAocHJvcGVydHkgJiYgcHJvcGVydHkuY29uZmlndXJhYmxlID09PSBmYWxzZSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgLy8gY2F0ZXIgZm9yIHByZS1kZWZpbmVkIGdldHRlci9zZXR0ZXJzXG4gIHZhciBnZXR0ZXIgPSBwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5nZXQ7XG4gIHZhciBzZXR0ZXIgPSBwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5zZXQ7XG4gIGlmICgoIWdldHRlciB8fCBzZXR0ZXIpICYmIGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICB2YWwgPSBvYmpba2V5XTtcbiAgfVxuXG4gIHZhciBjaGlsZE9iID0gIXNoYWxsb3cgJiYgb2JzZXJ2ZSh2YWwpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uIHJlYWN0aXZlR2V0dGVyICgpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGdldHRlciA/IGdldHRlci5jYWxsKG9iaikgOiB2YWw7XG4gICAgICBpZiAoRGVwLlNoYXJlZE9iamVjdC50YXJnZXQpIHsgLy8gZml4ZWQgYnkgeHh4eHh4XG4gICAgICAgIGRlcC5kZXBlbmQoKTtcbiAgICAgICAgaWYgKGNoaWxkT2IpIHtcbiAgICAgICAgICBjaGlsZE9iLmRlcC5kZXBlbmQoKTtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGRlcGVuZEFycmF5KHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZVxuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiByZWFjdGl2ZVNldHRlciAobmV3VmFsKSB7XG4gICAgICB2YXIgdmFsdWUgPSBnZXR0ZXIgPyBnZXR0ZXIuY2FsbChvYmopIDogdmFsO1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlICovXG4gICAgICBpZiAobmV3VmFsID09PSB2YWx1ZSB8fCAobmV3VmFsICE9PSBuZXdWYWwgJiYgdmFsdWUgIT09IHZhbHVlKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tc2VsZi1jb21wYXJlICovXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBjdXN0b21TZXR0ZXIpIHtcbiAgICAgICAgY3VzdG9tU2V0dGVyKCk7XG4gICAgICB9XG4gICAgICAvLyAjNzk4MTogZm9yIGFjY2Vzc29yIHByb3BlcnRpZXMgd2l0aG91dCBzZXR0ZXJcbiAgICAgIGlmIChnZXR0ZXIgJiYgIXNldHRlcikgeyByZXR1cm4gfVxuICAgICAgaWYgKHNldHRlcikge1xuICAgICAgICBzZXR0ZXIuY2FsbChvYmosIG5ld1ZhbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWwgPSBuZXdWYWw7XG4gICAgICB9XG4gICAgICBjaGlsZE9iID0gIXNoYWxsb3cgJiYgb2JzZXJ2ZShuZXdWYWwpO1xuICAgICAgZGVwLm5vdGlmeSgpO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogU2V0IGEgcHJvcGVydHkgb24gYW4gb2JqZWN0LiBBZGRzIHRoZSBuZXcgcHJvcGVydHkgYW5kXG4gKiB0cmlnZ2VycyBjaGFuZ2Ugbm90aWZpY2F0aW9uIGlmIHRoZSBwcm9wZXJ0eSBkb2Vzbid0XG4gKiBhbHJlYWR5IGV4aXN0LlxuICovXG5mdW5jdGlvbiBzZXQgKHRhcmdldCwga2V5LCB2YWwpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAoaXNVbmRlZih0YXJnZXQpIHx8IGlzUHJpbWl0aXZlKHRhcmdldCkpXG4gICkge1xuICAgIHdhcm4oKFwiQ2Fubm90IHNldCByZWFjdGl2ZSBwcm9wZXJ0eSBvbiB1bmRlZmluZWQsIG51bGwsIG9yIHByaW1pdGl2ZSB2YWx1ZTogXCIgKyAoKHRhcmdldCkpKSk7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSAmJiBpc1ZhbGlkQXJyYXlJbmRleChrZXkpKSB7XG4gICAgdGFyZ2V0Lmxlbmd0aCA9IE1hdGgubWF4KHRhcmdldC5sZW5ndGgsIGtleSk7XG4gICAgdGFyZ2V0LnNwbGljZShrZXksIDEsIHZhbCk7XG4gICAgcmV0dXJuIHZhbFxuICB9XG4gIGlmIChrZXkgaW4gdGFyZ2V0ICYmICEoa2V5IGluIE9iamVjdC5wcm90b3R5cGUpKSB7XG4gICAgdGFyZ2V0W2tleV0gPSB2YWw7XG4gICAgcmV0dXJuIHZhbFxuICB9XG4gIHZhciBvYiA9ICh0YXJnZXQpLl9fb2JfXztcbiAgaWYgKHRhcmdldC5faXNWdWUgfHwgKG9iICYmIG9iLnZtQ291bnQpKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgJ0F2b2lkIGFkZGluZyByZWFjdGl2ZSBwcm9wZXJ0aWVzIHRvIGEgVnVlIGluc3RhbmNlIG9yIGl0cyByb290ICRkYXRhICcgK1xuICAgICAgJ2F0IHJ1bnRpbWUgLSBkZWNsYXJlIGl0IHVwZnJvbnQgaW4gdGhlIGRhdGEgb3B0aW9uLidcbiAgICApO1xuICAgIHJldHVybiB2YWxcbiAgfVxuICBpZiAoIW9iKSB7XG4gICAgdGFyZ2V0W2tleV0gPSB2YWw7XG4gICAgcmV0dXJuIHZhbFxuICB9XG4gIGRlZmluZVJlYWN0aXZlJCQxKG9iLnZhbHVlLCBrZXksIHZhbCk7XG4gIG9iLmRlcC5ub3RpZnkoKTtcbiAgcmV0dXJuIHZhbFxufVxuXG4vKipcbiAqIERlbGV0ZSBhIHByb3BlcnR5IGFuZCB0cmlnZ2VyIGNoYW5nZSBpZiBuZWNlc3NhcnkuXG4gKi9cbmZ1bmN0aW9uIGRlbCAodGFyZ2V0LCBrZXkpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAoaXNVbmRlZih0YXJnZXQpIHx8IGlzUHJpbWl0aXZlKHRhcmdldCkpXG4gICkge1xuICAgIHdhcm4oKFwiQ2Fubm90IGRlbGV0ZSByZWFjdGl2ZSBwcm9wZXJ0eSBvbiB1bmRlZmluZWQsIG51bGwsIG9yIHByaW1pdGl2ZSB2YWx1ZTogXCIgKyAoKHRhcmdldCkpKSk7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSAmJiBpc1ZhbGlkQXJyYXlJbmRleChrZXkpKSB7XG4gICAgdGFyZ2V0LnNwbGljZShrZXksIDEpO1xuICAgIHJldHVyblxuICB9XG4gIHZhciBvYiA9ICh0YXJnZXQpLl9fb2JfXztcbiAgaWYgKHRhcmdldC5faXNWdWUgfHwgKG9iICYmIG9iLnZtQ291bnQpKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgJ0F2b2lkIGRlbGV0aW5nIHByb3BlcnRpZXMgb24gYSBWdWUgaW5zdGFuY2Ugb3IgaXRzIHJvb3QgJGRhdGEgJyArXG4gICAgICAnLSBqdXN0IHNldCBpdCB0byBudWxsLidcbiAgICApO1xuICAgIHJldHVyblxuICB9XG4gIGlmICghaGFzT3duKHRhcmdldCwga2V5KSkge1xuICAgIHJldHVyblxuICB9XG4gIGRlbGV0ZSB0YXJnZXRba2V5XTtcbiAgaWYgKCFvYikge1xuICAgIHJldHVyblxuICB9XG4gIG9iLmRlcC5ub3RpZnkoKTtcbn1cblxuLyoqXG4gKiBDb2xsZWN0IGRlcGVuZGVuY2llcyBvbiBhcnJheSBlbGVtZW50cyB3aGVuIHRoZSBhcnJheSBpcyB0b3VjaGVkLCBzaW5jZVxuICogd2UgY2Fubm90IGludGVyY2VwdCBhcnJheSBlbGVtZW50IGFjY2VzcyBsaWtlIHByb3BlcnR5IGdldHRlcnMuXG4gKi9cbmZ1bmN0aW9uIGRlcGVuZEFycmF5ICh2YWx1ZSkge1xuICBmb3IgKHZhciBlID0gKHZvaWQgMCksIGkgPSAwLCBsID0gdmFsdWUubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZSA9IHZhbHVlW2ldO1xuICAgIGUgJiYgZS5fX29iX18gJiYgZS5fX29iX18uZGVwLmRlcGVuZCgpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSB7XG4gICAgICBkZXBlbmRBcnJheShlKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogT3B0aW9uIG92ZXJ3cml0aW5nIHN0cmF0ZWdpZXMgYXJlIGZ1bmN0aW9ucyB0aGF0IGhhbmRsZVxuICogaG93IHRvIG1lcmdlIGEgcGFyZW50IG9wdGlvbiB2YWx1ZSBhbmQgYSBjaGlsZCBvcHRpb25cbiAqIHZhbHVlIGludG8gdGhlIGZpbmFsIHZhbHVlLlxuICovXG52YXIgc3RyYXRzID0gY29uZmlnLm9wdGlvbk1lcmdlU3RyYXRlZ2llcztcblxuLyoqXG4gKiBPcHRpb25zIHdpdGggcmVzdHJpY3Rpb25zXG4gKi9cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHN0cmF0cy5lbCA9IHN0cmF0cy5wcm9wc0RhdGEgPSBmdW5jdGlvbiAocGFyZW50LCBjaGlsZCwgdm0sIGtleSkge1xuICAgIGlmICghdm0pIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIFwib3B0aW9uIFxcXCJcIiArIGtleSArIFwiXFxcIiBjYW4gb25seSBiZSB1c2VkIGR1cmluZyBpbnN0YW5jZSBcIiArXG4gICAgICAgICdjcmVhdGlvbiB3aXRoIHRoZSBgbmV3YCBrZXl3b3JkLidcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBkZWZhdWx0U3RyYXQocGFyZW50LCBjaGlsZClcbiAgfTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgdGhhdCByZWN1cnNpdmVseSBtZXJnZXMgdHdvIGRhdGEgb2JqZWN0cyB0b2dldGhlci5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VEYXRhICh0bywgZnJvbSkge1xuICBpZiAoIWZyb20pIHsgcmV0dXJuIHRvIH1cbiAgdmFyIGtleSwgdG9WYWwsIGZyb21WYWw7XG5cbiAgdmFyIGtleXMgPSBoYXNTeW1ib2xcbiAgICA/IFJlZmxlY3Qub3duS2V5cyhmcm9tKVxuICAgIDogT2JqZWN0LmtleXMoZnJvbSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAga2V5ID0ga2V5c1tpXTtcbiAgICAvLyBpbiBjYXNlIHRoZSBvYmplY3QgaXMgYWxyZWFkeSBvYnNlcnZlZC4uLlxuICAgIGlmIChrZXkgPT09ICdfX29iX18nKSB7IGNvbnRpbnVlIH1cbiAgICB0b1ZhbCA9IHRvW2tleV07XG4gICAgZnJvbVZhbCA9IGZyb21ba2V5XTtcbiAgICBpZiAoIWhhc093bih0bywga2V5KSkge1xuICAgICAgc2V0KHRvLCBrZXksIGZyb21WYWwpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0b1ZhbCAhPT0gZnJvbVZhbCAmJlxuICAgICAgaXNQbGFpbk9iamVjdCh0b1ZhbCkgJiZcbiAgICAgIGlzUGxhaW5PYmplY3QoZnJvbVZhbClcbiAgICApIHtcbiAgICAgIG1lcmdlRGF0YSh0b1ZhbCwgZnJvbVZhbCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB0b1xufVxuXG4vKipcbiAqIERhdGFcbiAqL1xuZnVuY3Rpb24gbWVyZ2VEYXRhT3JGbiAoXG4gIHBhcmVudFZhbCxcbiAgY2hpbGRWYWwsXG4gIHZtXG4pIHtcbiAgaWYgKCF2bSkge1xuICAgIC8vIGluIGEgVnVlLmV4dGVuZCBtZXJnZSwgYm90aCBzaG91bGQgYmUgZnVuY3Rpb25zXG4gICAgaWYgKCFjaGlsZFZhbCkge1xuICAgICAgcmV0dXJuIHBhcmVudFZhbFxuICAgIH1cbiAgICBpZiAoIXBhcmVudFZhbCkge1xuICAgICAgcmV0dXJuIGNoaWxkVmFsXG4gICAgfVxuICAgIC8vIHdoZW4gcGFyZW50VmFsICYgY2hpbGRWYWwgYXJlIGJvdGggcHJlc2VudCxcbiAgICAvLyB3ZSBuZWVkIHRvIHJldHVybiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGVcbiAgICAvLyBtZXJnZWQgcmVzdWx0IG9mIGJvdGggZnVuY3Rpb25zLi4uIG5vIG5lZWQgdG9cbiAgICAvLyBjaGVjayBpZiBwYXJlbnRWYWwgaXMgYSBmdW5jdGlvbiBoZXJlIGJlY2F1c2VcbiAgICAvLyBpdCBoYXMgdG8gYmUgYSBmdW5jdGlvbiB0byBwYXNzIHByZXZpb3VzIG1lcmdlcy5cbiAgICByZXR1cm4gZnVuY3Rpb24gbWVyZ2VkRGF0YUZuICgpIHtcbiAgICAgIHJldHVybiBtZXJnZURhdGEoXG4gICAgICAgIHR5cGVvZiBjaGlsZFZhbCA9PT0gJ2Z1bmN0aW9uJyA/IGNoaWxkVmFsLmNhbGwodGhpcywgdGhpcykgOiBjaGlsZFZhbCxcbiAgICAgICAgdHlwZW9mIHBhcmVudFZhbCA9PT0gJ2Z1bmN0aW9uJyA/IHBhcmVudFZhbC5jYWxsKHRoaXMsIHRoaXMpIDogcGFyZW50VmFsXG4gICAgICApXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZWRJbnN0YW5jZURhdGFGbiAoKSB7XG4gICAgICAvLyBpbnN0YW5jZSBtZXJnZVxuICAgICAgdmFyIGluc3RhbmNlRGF0YSA9IHR5cGVvZiBjaGlsZFZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IGNoaWxkVmFsLmNhbGwodm0sIHZtKVxuICAgICAgICA6IGNoaWxkVmFsO1xuICAgICAgdmFyIGRlZmF1bHREYXRhID0gdHlwZW9mIHBhcmVudFZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IHBhcmVudFZhbC5jYWxsKHZtLCB2bSlcbiAgICAgICAgOiBwYXJlbnRWYWw7XG4gICAgICBpZiAoaW5zdGFuY2VEYXRhKSB7XG4gICAgICAgIHJldHVybiBtZXJnZURhdGEoaW5zdGFuY2VEYXRhLCBkZWZhdWx0RGF0YSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0RGF0YVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5zdHJhdHMuZGF0YSA9IGZ1bmN0aW9uIChcbiAgcGFyZW50VmFsLFxuICBjaGlsZFZhbCxcbiAgdm1cbikge1xuICBpZiAoIXZtKSB7XG4gICAgaWYgKGNoaWxkVmFsICYmIHR5cGVvZiBjaGlsZFZhbCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAnVGhlIFwiZGF0YVwiIG9wdGlvbiBzaG91bGQgYmUgYSBmdW5jdGlvbiAnICtcbiAgICAgICAgJ3RoYXQgcmV0dXJucyBhIHBlci1pbnN0YW5jZSB2YWx1ZSBpbiBjb21wb25lbnQgJyArXG4gICAgICAgICdkZWZpbml0aW9ucy4nLFxuICAgICAgICB2bVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHBhcmVudFZhbFxuICAgIH1cbiAgICByZXR1cm4gbWVyZ2VEYXRhT3JGbihwYXJlbnRWYWwsIGNoaWxkVmFsKVxuICB9XG5cbiAgcmV0dXJuIG1lcmdlRGF0YU9yRm4ocGFyZW50VmFsLCBjaGlsZFZhbCwgdm0pXG59O1xuXG4vKipcbiAqIEhvb2tzIGFuZCBwcm9wcyBhcmUgbWVyZ2VkIGFzIGFycmF5cy5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VIb29rIChcbiAgcGFyZW50VmFsLFxuICBjaGlsZFZhbFxuKSB7XG4gIHZhciByZXMgPSBjaGlsZFZhbFxuICAgID8gcGFyZW50VmFsXG4gICAgICA/IHBhcmVudFZhbC5jb25jYXQoY2hpbGRWYWwpXG4gICAgICA6IEFycmF5LmlzQXJyYXkoY2hpbGRWYWwpXG4gICAgICAgID8gY2hpbGRWYWxcbiAgICAgICAgOiBbY2hpbGRWYWxdXG4gICAgOiBwYXJlbnRWYWw7XG4gIHJldHVybiByZXNcbiAgICA/IGRlZHVwZUhvb2tzKHJlcylcbiAgICA6IHJlc1xufVxuXG5mdW5jdGlvbiBkZWR1cGVIb29rcyAoaG9va3MpIHtcbiAgdmFyIHJlcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGhvb2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHJlcy5pbmRleE9mKGhvb2tzW2ldKSA9PT0gLTEpIHtcbiAgICAgIHJlcy5wdXNoKGhvb2tzW2ldKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5MSUZFQ1lDTEVfSE9PS1MuZm9yRWFjaChmdW5jdGlvbiAoaG9vaykge1xuICBzdHJhdHNbaG9va10gPSBtZXJnZUhvb2s7XG59KTtcblxuLyoqXG4gKiBBc3NldHNcbiAqXG4gKiBXaGVuIGEgdm0gaXMgcHJlc2VudCAoaW5zdGFuY2UgY3JlYXRpb24pLCB3ZSBuZWVkIHRvIGRvXG4gKiBhIHRocmVlLXdheSBtZXJnZSBiZXR3ZWVuIGNvbnN0cnVjdG9yIG9wdGlvbnMsIGluc3RhbmNlXG4gKiBvcHRpb25zIGFuZCBwYXJlbnQgb3B0aW9ucy5cbiAqL1xuZnVuY3Rpb24gbWVyZ2VBc3NldHMgKFxuICBwYXJlbnRWYWwsXG4gIGNoaWxkVmFsLFxuICB2bSxcbiAga2V5XG4pIHtcbiAgdmFyIHJlcyA9IE9iamVjdC5jcmVhdGUocGFyZW50VmFsIHx8IG51bGwpO1xuICBpZiAoY2hpbGRWYWwpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGFzc2VydE9iamVjdFR5cGUoa2V5LCBjaGlsZFZhbCwgdm0pO1xuICAgIHJldHVybiBleHRlbmQocmVzLCBjaGlsZFZhbClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVzXG4gIH1cbn1cblxuQVNTRVRfVFlQRVMuZm9yRWFjaChmdW5jdGlvbiAodHlwZSkge1xuICBzdHJhdHNbdHlwZSArICdzJ10gPSBtZXJnZUFzc2V0cztcbn0pO1xuXG4vKipcbiAqIFdhdGNoZXJzLlxuICpcbiAqIFdhdGNoZXJzIGhhc2hlcyBzaG91bGQgbm90IG92ZXJ3cml0ZSBvbmVcbiAqIGFub3RoZXIsIHNvIHdlIG1lcmdlIHRoZW0gYXMgYXJyYXlzLlxuICovXG5zdHJhdHMud2F0Y2ggPSBmdW5jdGlvbiAoXG4gIHBhcmVudFZhbCxcbiAgY2hpbGRWYWwsXG4gIHZtLFxuICBrZXlcbikge1xuICAvLyB3b3JrIGFyb3VuZCBGaXJlZm94J3MgT2JqZWN0LnByb3RvdHlwZS53YXRjaC4uLlxuICBpZiAocGFyZW50VmFsID09PSBuYXRpdmVXYXRjaCkgeyBwYXJlbnRWYWwgPSB1bmRlZmluZWQ7IH1cbiAgaWYgKGNoaWxkVmFsID09PSBuYXRpdmVXYXRjaCkgeyBjaGlsZFZhbCA9IHVuZGVmaW5lZDsgfVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKCFjaGlsZFZhbCkgeyByZXR1cm4gT2JqZWN0LmNyZWF0ZShwYXJlbnRWYWwgfHwgbnVsbCkgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGFzc2VydE9iamVjdFR5cGUoa2V5LCBjaGlsZFZhbCwgdm0pO1xuICB9XG4gIGlmICghcGFyZW50VmFsKSB7IHJldHVybiBjaGlsZFZhbCB9XG4gIHZhciByZXQgPSB7fTtcbiAgZXh0ZW5kKHJldCwgcGFyZW50VmFsKTtcbiAgZm9yICh2YXIga2V5JDEgaW4gY2hpbGRWYWwpIHtcbiAgICB2YXIgcGFyZW50ID0gcmV0W2tleSQxXTtcbiAgICB2YXIgY2hpbGQgPSBjaGlsZFZhbFtrZXkkMV07XG4gICAgaWYgKHBhcmVudCAmJiAhQXJyYXkuaXNBcnJheShwYXJlbnQpKSB7XG4gICAgICBwYXJlbnQgPSBbcGFyZW50XTtcbiAgICB9XG4gICAgcmV0W2tleSQxXSA9IHBhcmVudFxuICAgICAgPyBwYXJlbnQuY29uY2F0KGNoaWxkKVxuICAgICAgOiBBcnJheS5pc0FycmF5KGNoaWxkKSA/IGNoaWxkIDogW2NoaWxkXTtcbiAgfVxuICByZXR1cm4gcmV0XG59O1xuXG4vKipcbiAqIE90aGVyIG9iamVjdCBoYXNoZXMuXG4gKi9cbnN0cmF0cy5wcm9wcyA9XG5zdHJhdHMubWV0aG9kcyA9XG5zdHJhdHMuaW5qZWN0ID1cbnN0cmF0cy5jb21wdXRlZCA9IGZ1bmN0aW9uIChcbiAgcGFyZW50VmFsLFxuICBjaGlsZFZhbCxcbiAgdm0sXG4gIGtleVxuKSB7XG4gIGlmIChjaGlsZFZhbCAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgYXNzZXJ0T2JqZWN0VHlwZShrZXksIGNoaWxkVmFsLCB2bSk7XG4gIH1cbiAgaWYgKCFwYXJlbnRWYWwpIHsgcmV0dXJuIGNoaWxkVmFsIH1cbiAgdmFyIHJldCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGV4dGVuZChyZXQsIHBhcmVudFZhbCk7XG4gIGlmIChjaGlsZFZhbCkgeyBleHRlbmQocmV0LCBjaGlsZFZhbCk7IH1cbiAgcmV0dXJuIHJldFxufTtcbnN0cmF0cy5wcm92aWRlID0gbWVyZ2VEYXRhT3JGbjtcblxuLyoqXG4gKiBEZWZhdWx0IHN0cmF0ZWd5LlxuICovXG52YXIgZGVmYXVsdFN0cmF0ID0gZnVuY3Rpb24gKHBhcmVudFZhbCwgY2hpbGRWYWwpIHtcbiAgcmV0dXJuIGNoaWxkVmFsID09PSB1bmRlZmluZWRcbiAgICA/IHBhcmVudFZhbFxuICAgIDogY2hpbGRWYWxcbn07XG5cbi8qKlxuICogVmFsaWRhdGUgY29tcG9uZW50IG5hbWVzXG4gKi9cbmZ1bmN0aW9uIGNoZWNrQ29tcG9uZW50cyAob3B0aW9ucykge1xuICBmb3IgKHZhciBrZXkgaW4gb3B0aW9ucy5jb21wb25lbnRzKSB7XG4gICAgdmFsaWRhdGVDb21wb25lbnROYW1lKGtleSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVDb21wb25lbnROYW1lIChuYW1lKSB7XG4gIGlmICghbmV3IFJlZ0V4cCgoXCJeW2EtekEtWl1bXFxcXC1cXFxcLjAtOV9cIiArICh1bmljb2RlUmVnRXhwLnNvdXJjZSkgKyBcIl0qJFwiKSkudGVzdChuYW1lKSkge1xuICAgIHdhcm4oXG4gICAgICAnSW52YWxpZCBjb21wb25lbnQgbmFtZTogXCInICsgbmFtZSArICdcIi4gQ29tcG9uZW50IG5hbWVzICcgK1xuICAgICAgJ3Nob3VsZCBjb25mb3JtIHRvIHZhbGlkIGN1c3RvbSBlbGVtZW50IG5hbWUgaW4gaHRtbDUgc3BlY2lmaWNhdGlvbi4nXG4gICAgKTtcbiAgfVxuICBpZiAoaXNCdWlsdEluVGFnKG5hbWUpIHx8IGNvbmZpZy5pc1Jlc2VydmVkVGFnKG5hbWUpKSB7XG4gICAgd2FybihcbiAgICAgICdEbyBub3QgdXNlIGJ1aWx0LWluIG9yIHJlc2VydmVkIEhUTUwgZWxlbWVudHMgYXMgY29tcG9uZW50ICcgK1xuICAgICAgJ2lkOiAnICsgbmFtZVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBFbnN1cmUgYWxsIHByb3BzIG9wdGlvbiBzeW50YXggYXJlIG5vcm1hbGl6ZWQgaW50byB0aGVcbiAqIE9iamVjdC1iYXNlZCBmb3JtYXQuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVByb3BzIChvcHRpb25zLCB2bSkge1xuICB2YXIgcHJvcHMgPSBvcHRpb25zLnByb3BzO1xuICBpZiAoIXByb3BzKSB7IHJldHVybiB9XG4gIHZhciByZXMgPSB7fTtcbiAgdmFyIGksIHZhbCwgbmFtZTtcbiAgaWYgKEFycmF5LmlzQXJyYXkocHJvcHMpKSB7XG4gICAgaSA9IHByb3BzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB2YWwgPSBwcm9wc1tpXTtcbiAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgICAgICBuYW1lID0gY2FtZWxpemUodmFsKTtcbiAgICAgICAgcmVzW25hbWVdID0geyB0eXBlOiBudWxsIH07XG4gICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgd2FybigncHJvcHMgbXVzdCBiZSBzdHJpbmdzIHdoZW4gdXNpbmcgYXJyYXkgc3ludGF4LicpO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHByb3BzKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wcykge1xuICAgICAgdmFsID0gcHJvcHNba2V5XTtcbiAgICAgIG5hbWUgPSBjYW1lbGl6ZShrZXkpO1xuICAgICAgcmVzW25hbWVdID0gaXNQbGFpbk9iamVjdCh2YWwpXG4gICAgICAgID8gdmFsXG4gICAgICAgIDogeyB0eXBlOiB2YWwgfTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4oXG4gICAgICBcIkludmFsaWQgdmFsdWUgZm9yIG9wdGlvbiBcXFwicHJvcHNcXFwiOiBleHBlY3RlZCBhbiBBcnJheSBvciBhbiBPYmplY3QsIFwiICtcbiAgICAgIFwiYnV0IGdvdCBcIiArICh0b1Jhd1R5cGUocHJvcHMpKSArIFwiLlwiLFxuICAgICAgdm1cbiAgICApO1xuICB9XG4gIG9wdGlvbnMucHJvcHMgPSByZXM7XG59XG5cbi8qKlxuICogTm9ybWFsaXplIGFsbCBpbmplY3Rpb25zIGludG8gT2JqZWN0LWJhc2VkIGZvcm1hdFxuICovXG5mdW5jdGlvbiBub3JtYWxpemVJbmplY3QgKG9wdGlvbnMsIHZtKSB7XG4gIHZhciBpbmplY3QgPSBvcHRpb25zLmluamVjdDtcbiAgaWYgKCFpbmplY3QpIHsgcmV0dXJuIH1cbiAgdmFyIG5vcm1hbGl6ZWQgPSBvcHRpb25zLmluamVjdCA9IHt9O1xuICBpZiAoQXJyYXkuaXNBcnJheShpbmplY3QpKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbmplY3QubGVuZ3RoOyBpKyspIHtcbiAgICAgIG5vcm1hbGl6ZWRbaW5qZWN0W2ldXSA9IHsgZnJvbTogaW5qZWN0W2ldIH07XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QoaW5qZWN0KSkge1xuICAgIGZvciAodmFyIGtleSBpbiBpbmplY3QpIHtcbiAgICAgIHZhciB2YWwgPSBpbmplY3Rba2V5XTtcbiAgICAgIG5vcm1hbGl6ZWRba2V5XSA9IGlzUGxhaW5PYmplY3QodmFsKVxuICAgICAgICA/IGV4dGVuZCh7IGZyb206IGtleSB9LCB2YWwpXG4gICAgICAgIDogeyBmcm9tOiB2YWwgfTtcbiAgICB9XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4oXG4gICAgICBcIkludmFsaWQgdmFsdWUgZm9yIG9wdGlvbiBcXFwiaW5qZWN0XFxcIjogZXhwZWN0ZWQgYW4gQXJyYXkgb3IgYW4gT2JqZWN0LCBcIiArXG4gICAgICBcImJ1dCBnb3QgXCIgKyAodG9SYXdUeXBlKGluamVjdCkpICsgXCIuXCIsXG4gICAgICB2bVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBOb3JtYWxpemUgcmF3IGZ1bmN0aW9uIGRpcmVjdGl2ZXMgaW50byBvYmplY3QgZm9ybWF0LlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVEaXJlY3RpdmVzIChvcHRpb25zKSB7XG4gIHZhciBkaXJzID0gb3B0aW9ucy5kaXJlY3RpdmVzO1xuICBpZiAoZGlycykge1xuICAgIGZvciAodmFyIGtleSBpbiBkaXJzKSB7XG4gICAgICB2YXIgZGVmJCQxID0gZGlyc1trZXldO1xuICAgICAgaWYgKHR5cGVvZiBkZWYkJDEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgZGlyc1trZXldID0geyBiaW5kOiBkZWYkJDEsIHVwZGF0ZTogZGVmJCQxIH07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydE9iamVjdFR5cGUgKG5hbWUsIHZhbHVlLCB2bSkge1xuICBpZiAoIWlzUGxhaW5PYmplY3QodmFsdWUpKSB7XG4gICAgd2FybihcbiAgICAgIFwiSW52YWxpZCB2YWx1ZSBmb3Igb3B0aW9uIFxcXCJcIiArIG5hbWUgKyBcIlxcXCI6IGV4cGVjdGVkIGFuIE9iamVjdCwgXCIgK1xuICAgICAgXCJidXQgZ290IFwiICsgKHRvUmF3VHlwZSh2YWx1ZSkpICsgXCIuXCIsXG4gICAgICB2bVxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBNZXJnZSB0d28gb3B0aW9uIG9iamVjdHMgaW50byBhIG5ldyBvbmUuXG4gKiBDb3JlIHV0aWxpdHkgdXNlZCBpbiBib3RoIGluc3RhbnRpYXRpb24gYW5kIGluaGVyaXRhbmNlLlxuICovXG5mdW5jdGlvbiBtZXJnZU9wdGlvbnMgKFxuICBwYXJlbnQsXG4gIGNoaWxkLFxuICB2bVxuKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY2hlY2tDb21wb25lbnRzKGNoaWxkKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgY2hpbGQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjaGlsZCA9IGNoaWxkLm9wdGlvbnM7XG4gIH1cblxuICBub3JtYWxpemVQcm9wcyhjaGlsZCwgdm0pO1xuICBub3JtYWxpemVJbmplY3QoY2hpbGQsIHZtKTtcbiAgbm9ybWFsaXplRGlyZWN0aXZlcyhjaGlsZCk7XG5cbiAgLy8gQXBwbHkgZXh0ZW5kcyBhbmQgbWl4aW5zIG9uIHRoZSBjaGlsZCBvcHRpb25zLFxuICAvLyBidXQgb25seSBpZiBpdCBpcyBhIHJhdyBvcHRpb25zIG9iamVjdCB0aGF0IGlzbid0XG4gIC8vIHRoZSByZXN1bHQgb2YgYW5vdGhlciBtZXJnZU9wdGlvbnMgY2FsbC5cbiAgLy8gT25seSBtZXJnZWQgb3B0aW9ucyBoYXMgdGhlIF9iYXNlIHByb3BlcnR5LlxuICBpZiAoIWNoaWxkLl9iYXNlKSB7XG4gICAgaWYgKGNoaWxkLmV4dGVuZHMpIHtcbiAgICAgIHBhcmVudCA9IG1lcmdlT3B0aW9ucyhwYXJlbnQsIGNoaWxkLmV4dGVuZHMsIHZtKTtcbiAgICB9XG4gICAgaWYgKGNoaWxkLm1peGlucykge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjaGlsZC5taXhpbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHBhcmVudCA9IG1lcmdlT3B0aW9ucyhwYXJlbnQsIGNoaWxkLm1peGluc1tpXSwgdm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBvcHRpb25zID0ge307XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIHBhcmVudCkge1xuICAgIG1lcmdlRmllbGQoa2V5KTtcbiAgfVxuICBmb3IgKGtleSBpbiBjaGlsZCkge1xuICAgIGlmICghaGFzT3duKHBhcmVudCwga2V5KSkge1xuICAgICAgbWVyZ2VGaWVsZChrZXkpO1xuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBtZXJnZUZpZWxkIChrZXkpIHtcbiAgICB2YXIgc3RyYXQgPSBzdHJhdHNba2V5XSB8fCBkZWZhdWx0U3RyYXQ7XG4gICAgb3B0aW9uc1trZXldID0gc3RyYXQocGFyZW50W2tleV0sIGNoaWxkW2tleV0sIHZtLCBrZXkpO1xuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbi8qKlxuICogUmVzb2x2ZSBhbiBhc3NldC5cbiAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBiZWNhdXNlIGNoaWxkIGluc3RhbmNlcyBuZWVkIGFjY2Vzc1xuICogdG8gYXNzZXRzIGRlZmluZWQgaW4gaXRzIGFuY2VzdG9yIGNoYWluLlxuICovXG5mdW5jdGlvbiByZXNvbHZlQXNzZXQgKFxuICBvcHRpb25zLFxuICB0eXBlLFxuICBpZCxcbiAgd2Fybk1pc3Npbmdcbikge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHR5cGVvZiBpZCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm5cbiAgfVxuICB2YXIgYXNzZXRzID0gb3B0aW9uc1t0eXBlXTtcbiAgLy8gY2hlY2sgbG9jYWwgcmVnaXN0cmF0aW9uIHZhcmlhdGlvbnMgZmlyc3RcbiAgaWYgKGhhc093bihhc3NldHMsIGlkKSkgeyByZXR1cm4gYXNzZXRzW2lkXSB9XG4gIHZhciBjYW1lbGl6ZWRJZCA9IGNhbWVsaXplKGlkKTtcbiAgaWYgKGhhc093bihhc3NldHMsIGNhbWVsaXplZElkKSkgeyByZXR1cm4gYXNzZXRzW2NhbWVsaXplZElkXSB9XG4gIHZhciBQYXNjYWxDYXNlSWQgPSBjYXBpdGFsaXplKGNhbWVsaXplZElkKTtcbiAgaWYgKGhhc093bihhc3NldHMsIFBhc2NhbENhc2VJZCkpIHsgcmV0dXJuIGFzc2V0c1tQYXNjYWxDYXNlSWRdIH1cbiAgLy8gZmFsbGJhY2sgdG8gcHJvdG90eXBlIGNoYWluXG4gIHZhciByZXMgPSBhc3NldHNbaWRdIHx8IGFzc2V0c1tjYW1lbGl6ZWRJZF0gfHwgYXNzZXRzW1Bhc2NhbENhc2VJZF07XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHdhcm5NaXNzaW5nICYmICFyZXMpIHtcbiAgICB3YXJuKFxuICAgICAgJ0ZhaWxlZCB0byByZXNvbHZlICcgKyB0eXBlLnNsaWNlKDAsIC0xKSArICc6ICcgKyBpZCxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cblxuXG5mdW5jdGlvbiB2YWxpZGF0ZVByb3AgKFxuICBrZXksXG4gIHByb3BPcHRpb25zLFxuICBwcm9wc0RhdGEsXG4gIHZtXG4pIHtcbiAgdmFyIHByb3AgPSBwcm9wT3B0aW9uc1trZXldO1xuICB2YXIgYWJzZW50ID0gIWhhc093bihwcm9wc0RhdGEsIGtleSk7XG4gIHZhciB2YWx1ZSA9IHByb3BzRGF0YVtrZXldO1xuICAvLyBib29sZWFuIGNhc3RpbmdcbiAgdmFyIGJvb2xlYW5JbmRleCA9IGdldFR5cGVJbmRleChCb29sZWFuLCBwcm9wLnR5cGUpO1xuICBpZiAoYm9vbGVhbkluZGV4ID4gLTEpIHtcbiAgICBpZiAoYWJzZW50ICYmICFoYXNPd24ocHJvcCwgJ2RlZmF1bHQnKSkge1xuICAgICAgdmFsdWUgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gaHlwaGVuYXRlKGtleSkpIHtcbiAgICAgIC8vIG9ubHkgY2FzdCBlbXB0eSBzdHJpbmcgLyBzYW1lIG5hbWUgdG8gYm9vbGVhbiBpZlxuICAgICAgLy8gYm9vbGVhbiBoYXMgaGlnaGVyIHByaW9yaXR5XG4gICAgICB2YXIgc3RyaW5nSW5kZXggPSBnZXRUeXBlSW5kZXgoU3RyaW5nLCBwcm9wLnR5cGUpO1xuICAgICAgaWYgKHN0cmluZ0luZGV4IDwgMCB8fCBib29sZWFuSW5kZXggPCBzdHJpbmdJbmRleCkge1xuICAgICAgICB2YWx1ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIGNoZWNrIGRlZmF1bHQgdmFsdWVcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICB2YWx1ZSA9IGdldFByb3BEZWZhdWx0VmFsdWUodm0sIHByb3AsIGtleSk7XG4gICAgLy8gc2luY2UgdGhlIGRlZmF1bHQgdmFsdWUgaXMgYSBmcmVzaCBjb3B5LFxuICAgIC8vIG1ha2Ugc3VyZSB0byBvYnNlcnZlIGl0LlxuICAgIHZhciBwcmV2U2hvdWxkT2JzZXJ2ZSA9IHNob3VsZE9ic2VydmU7XG4gICAgdG9nZ2xlT2JzZXJ2aW5nKHRydWUpO1xuICAgIG9ic2VydmUodmFsdWUpO1xuICAgIHRvZ2dsZU9ic2VydmluZyhwcmV2U2hvdWxkT2JzZXJ2ZSk7XG4gIH1cbiAgaWYgKFxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICAvLyBza2lwIHZhbGlkYXRpb24gZm9yIHdlZXggcmVjeWNsZS1saXN0IGNoaWxkIGNvbXBvbmVudCBwcm9wc1xuICAgICEoZmFsc2UpXG4gICkge1xuICAgIGFzc2VydFByb3AocHJvcCwga2V5LCB2YWx1ZSwgdm0sIGFic2VudCk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlXG59XG5cbi8qKlxuICogR2V0IHRoZSBkZWZhdWx0IHZhbHVlIG9mIGEgcHJvcC5cbiAqL1xuZnVuY3Rpb24gZ2V0UHJvcERlZmF1bHRWYWx1ZSAodm0sIHByb3AsIGtleSkge1xuICAvLyBubyBkZWZhdWx0LCByZXR1cm4gdW5kZWZpbmVkXG4gIGlmICghaGFzT3duKHByb3AsICdkZWZhdWx0JykpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbiAgdmFyIGRlZiA9IHByb3AuZGVmYXVsdDtcbiAgLy8gd2FybiBhZ2FpbnN0IG5vbi1mYWN0b3J5IGRlZmF1bHRzIGZvciBPYmplY3QgJiBBcnJheVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBpc09iamVjdChkZWYpKSB7XG4gICAgd2FybihcbiAgICAgICdJbnZhbGlkIGRlZmF1bHQgdmFsdWUgZm9yIHByb3AgXCInICsga2V5ICsgJ1wiOiAnICtcbiAgICAgICdQcm9wcyB3aXRoIHR5cGUgT2JqZWN0L0FycmF5IG11c3QgdXNlIGEgZmFjdG9yeSBmdW5jdGlvbiAnICtcbiAgICAgICd0byByZXR1cm4gdGhlIGRlZmF1bHQgdmFsdWUuJyxcbiAgICAgIHZtXG4gICAgKTtcbiAgfVxuICAvLyB0aGUgcmF3IHByb3AgdmFsdWUgd2FzIGFsc28gdW5kZWZpbmVkIGZyb20gcHJldmlvdXMgcmVuZGVyLFxuICAvLyByZXR1cm4gcHJldmlvdXMgZGVmYXVsdCB2YWx1ZSB0byBhdm9pZCB1bm5lY2Vzc2FyeSB3YXRjaGVyIHRyaWdnZXJcbiAgaWYgKHZtICYmIHZtLiRvcHRpb25zLnByb3BzRGF0YSAmJlxuICAgIHZtLiRvcHRpb25zLnByb3BzRGF0YVtrZXldID09PSB1bmRlZmluZWQgJiZcbiAgICB2bS5fcHJvcHNba2V5XSAhPT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybiB2bS5fcHJvcHNba2V5XVxuICB9XG4gIC8vIGNhbGwgZmFjdG9yeSBmdW5jdGlvbiBmb3Igbm9uLUZ1bmN0aW9uIHR5cGVzXG4gIC8vIGEgdmFsdWUgaXMgRnVuY3Rpb24gaWYgaXRzIHByb3RvdHlwZSBpcyBmdW5jdGlvbiBldmVuIGFjcm9zcyBkaWZmZXJlbnQgZXhlY3V0aW9uIGNvbnRleHRcbiAgcmV0dXJuIHR5cGVvZiBkZWYgPT09ICdmdW5jdGlvbicgJiYgZ2V0VHlwZShwcm9wLnR5cGUpICE9PSAnRnVuY3Rpb24nXG4gICAgPyBkZWYuY2FsbCh2bSlcbiAgICA6IGRlZlxufVxuXG4vKipcbiAqIEFzc2VydCB3aGV0aGVyIGEgcHJvcCBpcyB2YWxpZC5cbiAqL1xuZnVuY3Rpb24gYXNzZXJ0UHJvcCAoXG4gIHByb3AsXG4gIG5hbWUsXG4gIHZhbHVlLFxuICB2bSxcbiAgYWJzZW50XG4pIHtcbiAgaWYgKHByb3AucmVxdWlyZWQgJiYgYWJzZW50KSB7XG4gICAgd2FybihcbiAgICAgICdNaXNzaW5nIHJlcXVpcmVkIHByb3A6IFwiJyArIG5hbWUgKyAnXCInLFxuICAgICAgdm1cbiAgICApO1xuICAgIHJldHVyblxuICB9XG4gIGlmICh2YWx1ZSA9PSBudWxsICYmICFwcm9wLnJlcXVpcmVkKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHR5cGUgPSBwcm9wLnR5cGU7XG4gIHZhciB2YWxpZCA9ICF0eXBlIHx8IHR5cGUgPT09IHRydWU7XG4gIHZhciBleHBlY3RlZFR5cGVzID0gW107XG4gIGlmICh0eXBlKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHR5cGUpKSB7XG4gICAgICB0eXBlID0gW3R5cGVdO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGUubGVuZ3RoICYmICF2YWxpZDsgaSsrKSB7XG4gICAgICB2YXIgYXNzZXJ0ZWRUeXBlID0gYXNzZXJ0VHlwZSh2YWx1ZSwgdHlwZVtpXSk7XG4gICAgICBleHBlY3RlZFR5cGVzLnB1c2goYXNzZXJ0ZWRUeXBlLmV4cGVjdGVkVHlwZSB8fCAnJyk7XG4gICAgICB2YWxpZCA9IGFzc2VydGVkVHlwZS52YWxpZDtcbiAgICB9XG4gIH1cblxuICBpZiAoIXZhbGlkKSB7XG4gICAgd2FybihcbiAgICAgIGdldEludmFsaWRUeXBlTWVzc2FnZShuYW1lLCB2YWx1ZSwgZXhwZWN0ZWRUeXBlcyksXG4gICAgICB2bVxuICAgICk7XG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIHZhbGlkYXRvciA9IHByb3AudmFsaWRhdG9yO1xuICBpZiAodmFsaWRhdG9yKSB7XG4gICAgaWYgKCF2YWxpZGF0b3IodmFsdWUpKSB7XG4gICAgICB3YXJuKFxuICAgICAgICAnSW52YWxpZCBwcm9wOiBjdXN0b20gdmFsaWRhdG9yIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcIicgKyBuYW1lICsgJ1wiLicsXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG52YXIgc2ltcGxlQ2hlY2tSRSA9IC9eKFN0cmluZ3xOdW1iZXJ8Qm9vbGVhbnxGdW5jdGlvbnxTeW1ib2wpJC87XG5cbmZ1bmN0aW9uIGFzc2VydFR5cGUgKHZhbHVlLCB0eXBlKSB7XG4gIHZhciB2YWxpZDtcbiAgdmFyIGV4cGVjdGVkVHlwZSA9IGdldFR5cGUodHlwZSk7XG4gIGlmIChzaW1wbGVDaGVja1JFLnRlc3QoZXhwZWN0ZWRUeXBlKSkge1xuICAgIHZhciB0ID0gdHlwZW9mIHZhbHVlO1xuICAgIHZhbGlkID0gdCA9PT0gZXhwZWN0ZWRUeXBlLnRvTG93ZXJDYXNlKCk7XG4gICAgLy8gZm9yIHByaW1pdGl2ZSB3cmFwcGVyIG9iamVjdHNcbiAgICBpZiAoIXZhbGlkICYmIHQgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YWxpZCA9IHZhbHVlIGluc3RhbmNlb2YgdHlwZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSAnT2JqZWN0Jykge1xuICAgIHZhbGlkID0gaXNQbGFpbk9iamVjdCh2YWx1ZSk7XG4gIH0gZWxzZSBpZiAoZXhwZWN0ZWRUeXBlID09PSAnQXJyYXknKSB7XG4gICAgdmFsaWQgPSBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB2YWxpZCA9IHZhbHVlIGluc3RhbmNlb2YgdHlwZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHZhbGlkOiB2YWxpZCxcbiAgICBleHBlY3RlZFR5cGU6IGV4cGVjdGVkVHlwZVxuICB9XG59XG5cbi8qKlxuICogVXNlIGZ1bmN0aW9uIHN0cmluZyBuYW1lIHRvIGNoZWNrIGJ1aWx0LWluIHR5cGVzLFxuICogYmVjYXVzZSBhIHNpbXBsZSBlcXVhbGl0eSBjaGVjayB3aWxsIGZhaWwgd2hlbiBydW5uaW5nXG4gKiBhY3Jvc3MgZGlmZmVyZW50IHZtcyAvIGlmcmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGdldFR5cGUgKGZuKSB7XG4gIHZhciBtYXRjaCA9IGZuICYmIGZuLnRvU3RyaW5nKCkubWF0Y2goL15cXHMqZnVuY3Rpb24gKFxcdyspLyk7XG4gIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogJydcbn1cblxuZnVuY3Rpb24gaXNTYW1lVHlwZSAoYSwgYikge1xuICByZXR1cm4gZ2V0VHlwZShhKSA9PT0gZ2V0VHlwZShiKVxufVxuXG5mdW5jdGlvbiBnZXRUeXBlSW5kZXggKHR5cGUsIGV4cGVjdGVkVHlwZXMpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGV4cGVjdGVkVHlwZXMpKSB7XG4gICAgcmV0dXJuIGlzU2FtZVR5cGUoZXhwZWN0ZWRUeXBlcywgdHlwZSkgPyAwIDogLTFcbiAgfVxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gZXhwZWN0ZWRUeXBlcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChpc1NhbWVUeXBlKGV4cGVjdGVkVHlwZXNbaV0sIHR5cGUpKSB7XG4gICAgICByZXR1cm4gaVxuICAgIH1cbiAgfVxuICByZXR1cm4gLTFcbn1cblxuZnVuY3Rpb24gZ2V0SW52YWxpZFR5cGVNZXNzYWdlIChuYW1lLCB2YWx1ZSwgZXhwZWN0ZWRUeXBlcykge1xuICB2YXIgbWVzc2FnZSA9IFwiSW52YWxpZCBwcm9wOiB0eXBlIGNoZWNrIGZhaWxlZCBmb3IgcHJvcCBcXFwiXCIgKyBuYW1lICsgXCJcXFwiLlwiICtcbiAgICBcIiBFeHBlY3RlZCBcIiArIChleHBlY3RlZFR5cGVzLm1hcChjYXBpdGFsaXplKS5qb2luKCcsICcpKTtcbiAgdmFyIGV4cGVjdGVkVHlwZSA9IGV4cGVjdGVkVHlwZXNbMF07XG4gIHZhciByZWNlaXZlZFR5cGUgPSB0b1Jhd1R5cGUodmFsdWUpO1xuICB2YXIgZXhwZWN0ZWRWYWx1ZSA9IHN0eWxlVmFsdWUodmFsdWUsIGV4cGVjdGVkVHlwZSk7XG4gIHZhciByZWNlaXZlZFZhbHVlID0gc3R5bGVWYWx1ZSh2YWx1ZSwgcmVjZWl2ZWRUeXBlKTtcbiAgLy8gY2hlY2sgaWYgd2UgbmVlZCB0byBzcGVjaWZ5IGV4cGVjdGVkIHZhbHVlXG4gIGlmIChleHBlY3RlZFR5cGVzLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgaXNFeHBsaWNhYmxlKGV4cGVjdGVkVHlwZSkgJiZcbiAgICAgICFpc0Jvb2xlYW4oZXhwZWN0ZWRUeXBlLCByZWNlaXZlZFR5cGUpKSB7XG4gICAgbWVzc2FnZSArPSBcIiB3aXRoIHZhbHVlIFwiICsgZXhwZWN0ZWRWYWx1ZTtcbiAgfVxuICBtZXNzYWdlICs9IFwiLCBnb3QgXCIgKyByZWNlaXZlZFR5cGUgKyBcIiBcIjtcbiAgLy8gY2hlY2sgaWYgd2UgbmVlZCB0byBzcGVjaWZ5IHJlY2VpdmVkIHZhbHVlXG4gIGlmIChpc0V4cGxpY2FibGUocmVjZWl2ZWRUeXBlKSkge1xuICAgIG1lc3NhZ2UgKz0gXCJ3aXRoIHZhbHVlIFwiICsgcmVjZWl2ZWRWYWx1ZSArIFwiLlwiO1xuICB9XG4gIHJldHVybiBtZXNzYWdlXG59XG5cbmZ1bmN0aW9uIHN0eWxlVmFsdWUgKHZhbHVlLCB0eXBlKSB7XG4gIGlmICh0eXBlID09PSAnU3RyaW5nJykge1xuICAgIHJldHVybiAoXCJcXFwiXCIgKyB2YWx1ZSArIFwiXFxcIlwiKVxuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdOdW1iZXInKSB7XG4gICAgcmV0dXJuIChcIlwiICsgKE51bWJlcih2YWx1ZSkpKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiAoXCJcIiArIHZhbHVlKVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzRXhwbGljYWJsZSAodmFsdWUpIHtcbiAgdmFyIGV4cGxpY2l0VHlwZXMgPSBbJ3N0cmluZycsICdudW1iZXInLCAnYm9vbGVhbiddO1xuICByZXR1cm4gZXhwbGljaXRUeXBlcy5zb21lKGZ1bmN0aW9uIChlbGVtKSB7IHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSBlbGVtOyB9KVxufVxuXG5mdW5jdGlvbiBpc0Jvb2xlYW4gKCkge1xuICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuXG4gIHJldHVybiBhcmdzLnNvbWUoZnVuY3Rpb24gKGVsZW0pIHsgcmV0dXJuIGVsZW0udG9Mb3dlckNhc2UoKSA9PT0gJ2Jvb2xlYW4nOyB9KVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaGFuZGxlRXJyb3IgKGVyciwgdm0sIGluZm8pIHtcbiAgLy8gRGVhY3RpdmF0ZSBkZXBzIHRyYWNraW5nIHdoaWxlIHByb2Nlc3NpbmcgZXJyb3IgaGFuZGxlciB0byBhdm9pZCBwb3NzaWJsZSBpbmZpbml0ZSByZW5kZXJpbmcuXG4gIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3Z1ZWpzL3Z1ZXgvaXNzdWVzLzE1MDVcbiAgcHVzaFRhcmdldCgpO1xuICB0cnkge1xuICAgIGlmICh2bSkge1xuICAgICAgdmFyIGN1ciA9IHZtO1xuICAgICAgd2hpbGUgKChjdXIgPSBjdXIuJHBhcmVudCkpIHtcbiAgICAgICAgdmFyIGhvb2tzID0gY3VyLiRvcHRpb25zLmVycm9yQ2FwdHVyZWQ7XG4gICAgICAgIGlmIChob29rcykge1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaG9va3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIHZhciBjYXB0dXJlID0gaG9va3NbaV0uY2FsbChjdXIsIGVyciwgdm0sIGluZm8pID09PSBmYWxzZTtcbiAgICAgICAgICAgICAgaWYgKGNhcHR1cmUpIHsgcmV0dXJuIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgZ2xvYmFsSGFuZGxlRXJyb3IoZSwgY3VyLCAnZXJyb3JDYXB0dXJlZCBob29rJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGdsb2JhbEhhbmRsZUVycm9yKGVyciwgdm0sIGluZm8pO1xuICB9IGZpbmFsbHkge1xuICAgIHBvcFRhcmdldCgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGludm9rZVdpdGhFcnJvckhhbmRsaW5nIChcbiAgaGFuZGxlcixcbiAgY29udGV4dCxcbiAgYXJncyxcbiAgdm0sXG4gIGluZm9cbikge1xuICB2YXIgcmVzO1xuICB0cnkge1xuICAgIHJlcyA9IGFyZ3MgPyBoYW5kbGVyLmFwcGx5KGNvbnRleHQsIGFyZ3MpIDogaGFuZGxlci5jYWxsKGNvbnRleHQpO1xuICAgIGlmIChyZXMgJiYgIXJlcy5faXNWdWUgJiYgaXNQcm9taXNlKHJlcykgJiYgIXJlcy5faGFuZGxlZCkge1xuICAgICAgcmVzLmNhdGNoKGZ1bmN0aW9uIChlKSB7IHJldHVybiBoYW5kbGVFcnJvcihlLCB2bSwgaW5mbyArIFwiIChQcm9taXNlL2FzeW5jKVwiKTsgfSk7XG4gICAgICAvLyBpc3N1ZSAjOTUxMVxuICAgICAgLy8gYXZvaWQgY2F0Y2ggdHJpZ2dlcmluZyBtdWx0aXBsZSB0aW1lcyB3aGVuIG5lc3RlZCBjYWxsc1xuICAgICAgcmVzLl9oYW5kbGVkID0gdHJ1ZTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBoYW5kbGVFcnJvcihlLCB2bSwgaW5mbyk7XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBnbG9iYWxIYW5kbGVFcnJvciAoZXJyLCB2bSwgaW5mbykge1xuICBpZiAoY29uZmlnLmVycm9ySGFuZGxlcikge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY29uZmlnLmVycm9ySGFuZGxlci5jYWxsKG51bGwsIGVyciwgdm0sIGluZm8pXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gaWYgdGhlIHVzZXIgaW50ZW50aW9uYWxseSB0aHJvd3MgdGhlIG9yaWdpbmFsIGVycm9yIGluIHRoZSBoYW5kbGVyLFxuICAgICAgLy8gZG8gbm90IGxvZyBpdCB0d2ljZVxuICAgICAgaWYgKGUgIT09IGVycikge1xuICAgICAgICBsb2dFcnJvcihlLCBudWxsLCAnY29uZmlnLmVycm9ySGFuZGxlcicpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBsb2dFcnJvcihlcnIsIHZtLCBpbmZvKTtcbn1cblxuZnVuY3Rpb24gbG9nRXJyb3IgKGVyciwgdm0sIGluZm8pIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB3YXJuKChcIkVycm9yIGluIFwiICsgaW5mbyArIFwiOiBcXFwiXCIgKyAoZXJyLnRvU3RyaW5nKCkpICsgXCJcXFwiXCIpLCB2bSk7XG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKChpbkJyb3dzZXIgfHwgaW5XZWV4KSAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgZXJyXG4gIH1cbn1cblxuLyogICovXG5cbnZhciBjYWxsYmFja3MgPSBbXTtcbnZhciBwZW5kaW5nID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGZsdXNoQ2FsbGJhY2tzICgpIHtcbiAgcGVuZGluZyA9IGZhbHNlO1xuICB2YXIgY29waWVzID0gY2FsbGJhY2tzLnNsaWNlKDApO1xuICBjYWxsYmFja3MubGVuZ3RoID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3BpZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb3BpZXNbaV0oKTtcbiAgfVxufVxuXG4vLyBIZXJlIHdlIGhhdmUgYXN5bmMgZGVmZXJyaW5nIHdyYXBwZXJzIHVzaW5nIG1pY3JvdGFza3MuXG4vLyBJbiAyLjUgd2UgdXNlZCAobWFjcm8pIHRhc2tzIChpbiBjb21iaW5hdGlvbiB3aXRoIG1pY3JvdGFza3MpLlxuLy8gSG93ZXZlciwgaXQgaGFzIHN1YnRsZSBwcm9ibGVtcyB3aGVuIHN0YXRlIGlzIGNoYW5nZWQgcmlnaHQgYmVmb3JlIHJlcGFpbnRcbi8vIChlLmcuICM2ODEzLCBvdXQtaW4gdHJhbnNpdGlvbnMpLlxuLy8gQWxzbywgdXNpbmcgKG1hY3JvKSB0YXNrcyBpbiBldmVudCBoYW5kbGVyIHdvdWxkIGNhdXNlIHNvbWUgd2VpcmQgYmVoYXZpb3JzXG4vLyB0aGF0IGNhbm5vdCBiZSBjaXJjdW12ZW50ZWQgKGUuZy4gIzcxMDksICM3MTUzLCAjNzU0NiwgIzc4MzQsICM4MTA5KS5cbi8vIFNvIHdlIG5vdyB1c2UgbWljcm90YXNrcyBldmVyeXdoZXJlLCBhZ2Fpbi5cbi8vIEEgbWFqb3IgZHJhd2JhY2sgb2YgdGhpcyB0cmFkZW9mZiBpcyB0aGF0IHRoZXJlIGFyZSBzb21lIHNjZW5hcmlvc1xuLy8gd2hlcmUgbWljcm90YXNrcyBoYXZlIHRvbyBoaWdoIGEgcHJpb3JpdHkgYW5kIGZpcmUgaW4gYmV0d2VlbiBzdXBwb3NlZGx5XG4vLyBzZXF1ZW50aWFsIGV2ZW50cyAoZS5nLiAjNDUyMSwgIzY2OTAsIHdoaWNoIGhhdmUgd29ya2Fyb3VuZHMpXG4vLyBvciBldmVuIGJldHdlZW4gYnViYmxpbmcgb2YgdGhlIHNhbWUgZXZlbnQgKCM2NTY2KS5cbnZhciB0aW1lckZ1bmM7XG5cbi8vIFRoZSBuZXh0VGljayBiZWhhdmlvciBsZXZlcmFnZXMgdGhlIG1pY3JvdGFzayBxdWV1ZSwgd2hpY2ggY2FuIGJlIGFjY2Vzc2VkXG4vLyB2aWEgZWl0aGVyIG5hdGl2ZSBQcm9taXNlLnRoZW4gb3IgTXV0YXRpb25PYnNlcnZlci5cbi8vIE11dGF0aW9uT2JzZXJ2ZXIgaGFzIHdpZGVyIHN1cHBvcnQsIGhvd2V2ZXIgaXQgaXMgc2VyaW91c2x5IGJ1Z2dlZCBpblxuLy8gVUlXZWJWaWV3IGluIGlPUyA+PSA5LjMuMyB3aGVuIHRyaWdnZXJlZCBpbiB0b3VjaCBldmVudCBoYW5kbGVycy4gSXRcbi8vIGNvbXBsZXRlbHkgc3RvcHMgd29ya2luZyBhZnRlciB0cmlnZ2VyaW5nIGEgZmV3IHRpbWVzLi4uIHNvLCBpZiBuYXRpdmVcbi8vIFByb21pc2UgaXMgYXZhaWxhYmxlLCB3ZSB3aWxsIHVzZSBpdDpcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0LCAkZmxvdy1kaXNhYmxlLWxpbmUgKi9cbmlmICh0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNOYXRpdmUoUHJvbWlzZSkpIHtcbiAgdmFyIHAgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgdGltZXJGdW5jID0gZnVuY3Rpb24gKCkge1xuICAgIHAudGhlbihmbHVzaENhbGxiYWNrcyk7XG4gICAgLy8gSW4gcHJvYmxlbWF0aWMgVUlXZWJWaWV3cywgUHJvbWlzZS50aGVuIGRvZXNuJ3QgY29tcGxldGVseSBicmVhaywgYnV0XG4gICAgLy8gaXQgY2FuIGdldCBzdHVjayBpbiBhIHdlaXJkIHN0YXRlIHdoZXJlIGNhbGxiYWNrcyBhcmUgcHVzaGVkIGludG8gdGhlXG4gICAgLy8gbWljcm90YXNrIHF1ZXVlIGJ1dCB0aGUgcXVldWUgaXNuJ3QgYmVpbmcgZmx1c2hlZCwgdW50aWwgdGhlIGJyb3dzZXJcbiAgICAvLyBuZWVkcyB0byBkbyBzb21lIG90aGVyIHdvcmssIGUuZy4gaGFuZGxlIGEgdGltZXIuIFRoZXJlZm9yZSB3ZSBjYW5cbiAgICAvLyBcImZvcmNlXCIgdGhlIG1pY3JvdGFzayBxdWV1ZSB0byBiZSBmbHVzaGVkIGJ5IGFkZGluZyBhbiBlbXB0eSB0aW1lci5cbiAgICBpZiAoaXNJT1MpIHsgc2V0VGltZW91dChub29wKTsgfVxuICB9O1xufSBlbHNlIGlmICghaXNJRSAmJiB0eXBlb2YgTXV0YXRpb25PYnNlcnZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgKFxuICBpc05hdGl2ZShNdXRhdGlvbk9ic2VydmVyKSB8fFxuICAvLyBQaGFudG9tSlMgYW5kIGlPUyA3LnhcbiAgTXV0YXRpb25PYnNlcnZlci50b1N0cmluZygpID09PSAnW29iamVjdCBNdXRhdGlvbk9ic2VydmVyQ29uc3RydWN0b3JdJ1xuKSkge1xuICAvLyBVc2UgTXV0YXRpb25PYnNlcnZlciB3aGVyZSBuYXRpdmUgUHJvbWlzZSBpcyBub3QgYXZhaWxhYmxlLFxuICAvLyBlLmcuIFBoYW50b21KUywgaU9TNywgQW5kcm9pZCA0LjRcbiAgLy8gKCM2NDY2IE11dGF0aW9uT2JzZXJ2ZXIgaXMgdW5yZWxpYWJsZSBpbiBJRTExKVxuICB2YXIgY291bnRlciA9IDE7XG4gIHZhciBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGZsdXNoQ2FsbGJhY2tzKTtcbiAgdmFyIHRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoU3RyaW5nKGNvdW50ZXIpKTtcbiAgb2JzZXJ2ZXIub2JzZXJ2ZSh0ZXh0Tm9kZSwge1xuICAgIGNoYXJhY3RlckRhdGE6IHRydWVcbiAgfSk7XG4gIHRpbWVyRnVuYyA9IGZ1bmN0aW9uICgpIHtcbiAgICBjb3VudGVyID0gKGNvdW50ZXIgKyAxKSAlIDI7XG4gICAgdGV4dE5vZGUuZGF0YSA9IFN0cmluZyhjb3VudGVyKTtcbiAgfTtcbn0gZWxzZSBpZiAodHlwZW9mIHNldEltbWVkaWF0ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNOYXRpdmUoc2V0SW1tZWRpYXRlKSkge1xuICAvLyBGYWxsYmFjayB0byBzZXRJbW1lZGlhdGUuXG4gIC8vIFRlY2huaWNhbGx5IGl0IGxldmVyYWdlcyB0aGUgKG1hY3JvKSB0YXNrIHF1ZXVlLFxuICAvLyBidXQgaXQgaXMgc3RpbGwgYSBiZXR0ZXIgY2hvaWNlIHRoYW4gc2V0VGltZW91dC5cbiAgdGltZXJGdW5jID0gZnVuY3Rpb24gKCkge1xuICAgIHNldEltbWVkaWF0ZShmbHVzaENhbGxiYWNrcyk7XG4gIH07XG59IGVsc2Uge1xuICAvLyBGYWxsYmFjayB0byBzZXRUaW1lb3V0LlxuICB0aW1lckZ1bmMgPSBmdW5jdGlvbiAoKSB7XG4gICAgc2V0VGltZW91dChmbHVzaENhbGxiYWNrcywgMCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIG5leHRUaWNrIChjYiwgY3R4KSB7XG4gIHZhciBfcmVzb2x2ZTtcbiAgY2FsbGJhY2tzLnB1c2goZnVuY3Rpb24gKCkge1xuICAgIGlmIChjYikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY2IuY2FsbChjdHgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBoYW5kbGVFcnJvcihlLCBjdHgsICduZXh0VGljaycpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoX3Jlc29sdmUpIHtcbiAgICAgIF9yZXNvbHZlKGN0eCk7XG4gICAgfVxuICB9KTtcbiAgaWYgKCFwZW5kaW5nKSB7XG4gICAgcGVuZGluZyA9IHRydWU7XG4gICAgdGltZXJGdW5jKCk7XG4gIH1cbiAgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gIGlmICghY2IgJiYgdHlwZW9mIFByb21pc2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgfSlcbiAgfVxufVxuXG4vKiAgKi9cblxuLyogbm90IHR5cGUgY2hlY2tpbmcgdGhpcyBmaWxlIGJlY2F1c2UgZmxvdyBkb2Vzbid0IHBsYXkgd2VsbCB3aXRoIFByb3h5ICovXG5cbnZhciBpbml0UHJveHk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBhbGxvd2VkR2xvYmFscyA9IG1ha2VNYXAoXG4gICAgJ0luZmluaXR5LHVuZGVmaW5lZCxOYU4saXNGaW5pdGUsaXNOYU4sJyArXG4gICAgJ3BhcnNlRmxvYXQscGFyc2VJbnQsZGVjb2RlVVJJLGRlY29kZVVSSUNvbXBvbmVudCxlbmNvZGVVUkksZW5jb2RlVVJJQ29tcG9uZW50LCcgK1xuICAgICdNYXRoLE51bWJlcixEYXRlLEFycmF5LE9iamVjdCxCb29sZWFuLFN0cmluZyxSZWdFeHAsTWFwLFNldCxKU09OLEludGwsJyArXG4gICAgJ3JlcXVpcmUnIC8vIGZvciBXZWJwYWNrL0Jyb3dzZXJpZnlcbiAgKTtcblxuICB2YXIgd2Fybk5vblByZXNlbnQgPSBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHtcbiAgICB3YXJuKFxuICAgICAgXCJQcm9wZXJ0eSBvciBtZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGlzIG5vdCBkZWZpbmVkIG9uIHRoZSBpbnN0YW5jZSBidXQgXCIgK1xuICAgICAgJ3JlZmVyZW5jZWQgZHVyaW5nIHJlbmRlci4gTWFrZSBzdXJlIHRoYXQgdGhpcyBwcm9wZXJ0eSBpcyByZWFjdGl2ZSwgJyArXG4gICAgICAnZWl0aGVyIGluIHRoZSBkYXRhIG9wdGlvbiwgb3IgZm9yIGNsYXNzLWJhc2VkIGNvbXBvbmVudHMsIGJ5ICcgK1xuICAgICAgJ2luaXRpYWxpemluZyB0aGUgcHJvcGVydHkuICcgK1xuICAgICAgJ1NlZTogaHR0cHM6Ly92dWVqcy5vcmcvdjIvZ3VpZGUvcmVhY3Rpdml0eS5odG1sI0RlY2xhcmluZy1SZWFjdGl2ZS1Qcm9wZXJ0aWVzLicsXG4gICAgICB0YXJnZXRcbiAgICApO1xuICB9O1xuXG4gIHZhciB3YXJuUmVzZXJ2ZWRQcmVmaXggPSBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHtcbiAgICB3YXJuKFxuICAgICAgXCJQcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgbXVzdCBiZSBhY2Nlc3NlZCB3aXRoIFxcXCIkZGF0YS5cIiArIGtleSArIFwiXFxcIiBiZWNhdXNlIFwiICtcbiAgICAgICdwcm9wZXJ0aWVzIHN0YXJ0aW5nIHdpdGggXCIkXCIgb3IgXCJfXCIgYXJlIG5vdCBwcm94aWVkIGluIHRoZSBWdWUgaW5zdGFuY2UgdG8gJyArXG4gICAgICAncHJldmVudCBjb25mbGljdHMgd2l0aCBWdWUgaW50ZXJuYWxzLiAnICtcbiAgICAgICdTZWU6IGh0dHBzOi8vdnVlanMub3JnL3YyL2FwaS8jZGF0YScsXG4gICAgICB0YXJnZXRcbiAgICApO1xuICB9O1xuXG4gIHZhciBoYXNQcm94eSA9XG4gICAgdHlwZW9mIFByb3h5ICE9PSAndW5kZWZpbmVkJyAmJiBpc05hdGl2ZShQcm94eSk7XG5cbiAgaWYgKGhhc1Byb3h5KSB7XG4gICAgdmFyIGlzQnVpbHRJbk1vZGlmaWVyID0gbWFrZU1hcCgnc3RvcCxwcmV2ZW50LHNlbGYsY3RybCxzaGlmdCxhbHQsbWV0YSxleGFjdCcpO1xuICAgIGNvbmZpZy5rZXlDb2RlcyA9IG5ldyBQcm94eShjb25maWcua2V5Q29kZXMsIHtcbiAgICAgIHNldDogZnVuY3Rpb24gc2V0ICh0YXJnZXQsIGtleSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzQnVpbHRJbk1vZGlmaWVyKGtleSkpIHtcbiAgICAgICAgICB3YXJuKChcIkF2b2lkIG92ZXJ3cml0aW5nIGJ1aWx0LWluIG1vZGlmaWVyIGluIGNvbmZpZy5rZXlDb2RlczogLlwiICsga2V5KSk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB2YXIgaGFzSGFuZGxlciA9IHtcbiAgICBoYXM6IGZ1bmN0aW9uIGhhcyAodGFyZ2V0LCBrZXkpIHtcbiAgICAgIHZhciBoYXMgPSBrZXkgaW4gdGFyZ2V0O1xuICAgICAgdmFyIGlzQWxsb3dlZCA9IGFsbG93ZWRHbG9iYWxzKGtleSkgfHxcbiAgICAgICAgKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnICYmIGtleS5jaGFyQXQoMCkgPT09ICdfJyAmJiAhKGtleSBpbiB0YXJnZXQuJGRhdGEpKTtcbiAgICAgIGlmICghaGFzICYmICFpc0FsbG93ZWQpIHtcbiAgICAgICAgaWYgKGtleSBpbiB0YXJnZXQuJGRhdGEpIHsgd2FyblJlc2VydmVkUHJlZml4KHRhcmdldCwga2V5KTsgfVxuICAgICAgICBlbHNlIHsgd2Fybk5vblByZXNlbnQodGFyZ2V0LCBrZXkpOyB9XG4gICAgICB9XG4gICAgICByZXR1cm4gaGFzIHx8ICFpc0FsbG93ZWRcbiAgICB9XG4gIH07XG5cbiAgdmFyIGdldEhhbmRsZXIgPSB7XG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQgKHRhcmdldCwga2V5KSB7XG4gICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycgJiYgIShrZXkgaW4gdGFyZ2V0KSkge1xuICAgICAgICBpZiAoa2V5IGluIHRhcmdldC4kZGF0YSkgeyB3YXJuUmVzZXJ2ZWRQcmVmaXgodGFyZ2V0LCBrZXkpOyB9XG4gICAgICAgIGVsc2UgeyB3YXJuTm9uUHJlc2VudCh0YXJnZXQsIGtleSk7IH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0YXJnZXRba2V5XVxuICAgIH1cbiAgfTtcblxuICBpbml0UHJveHkgPSBmdW5jdGlvbiBpbml0UHJveHkgKHZtKSB7XG4gICAgaWYgKGhhc1Byb3h5KSB7XG4gICAgICAvLyBkZXRlcm1pbmUgd2hpY2ggcHJveHkgaGFuZGxlciB0byB1c2VcbiAgICAgIHZhciBvcHRpb25zID0gdm0uJG9wdGlvbnM7XG4gICAgICB2YXIgaGFuZGxlcnMgPSBvcHRpb25zLnJlbmRlciAmJiBvcHRpb25zLnJlbmRlci5fd2l0aFN0cmlwcGVkXG4gICAgICAgID8gZ2V0SGFuZGxlclxuICAgICAgICA6IGhhc0hhbmRsZXI7XG4gICAgICB2bS5fcmVuZGVyUHJveHkgPSBuZXcgUHJveHkodm0sIGhhbmRsZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uX3JlbmRlclByb3h5ID0gdm07XG4gICAgfVxuICB9O1xufVxuXG4vKiAgKi9cblxudmFyIHNlZW5PYmplY3RzID0gbmV3IF9TZXQoKTtcblxuLyoqXG4gKiBSZWN1cnNpdmVseSB0cmF2ZXJzZSBhbiBvYmplY3QgdG8gZXZva2UgYWxsIGNvbnZlcnRlZFxuICogZ2V0dGVycywgc28gdGhhdCBldmVyeSBuZXN0ZWQgcHJvcGVydHkgaW5zaWRlIHRoZSBvYmplY3RcbiAqIGlzIGNvbGxlY3RlZCBhcyBhIFwiZGVlcFwiIGRlcGVuZGVuY3kuXG4gKi9cbmZ1bmN0aW9uIHRyYXZlcnNlICh2YWwpIHtcbiAgX3RyYXZlcnNlKHZhbCwgc2Vlbk9iamVjdHMpO1xuICBzZWVuT2JqZWN0cy5jbGVhcigpO1xufVxuXG5mdW5jdGlvbiBfdHJhdmVyc2UgKHZhbCwgc2Vlbikge1xuICB2YXIgaSwga2V5cztcbiAgdmFyIGlzQSA9IEFycmF5LmlzQXJyYXkodmFsKTtcbiAgaWYgKCghaXNBICYmICFpc09iamVjdCh2YWwpKSB8fCBPYmplY3QuaXNGcm96ZW4odmFsKSB8fCB2YWwgaW5zdGFuY2VvZiBWTm9kZSkge1xuICAgIHJldHVyblxuICB9XG4gIGlmICh2YWwuX19vYl9fKSB7XG4gICAgdmFyIGRlcElkID0gdmFsLl9fb2JfXy5kZXAuaWQ7XG4gICAgaWYgKHNlZW4uaGFzKGRlcElkKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNlZW4uYWRkKGRlcElkKTtcbiAgfVxuICBpZiAoaXNBKSB7XG4gICAgaSA9IHZhbC5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkgeyBfdHJhdmVyc2UodmFsW2ldLCBzZWVuKTsgfVxuICB9IGVsc2Uge1xuICAgIGtleXMgPSBPYmplY3Qua2V5cyh2YWwpO1xuICAgIGkgPSBrZXlzLmxlbmd0aDtcbiAgICB3aGlsZSAoaS0tKSB7IF90cmF2ZXJzZSh2YWxba2V5c1tpXV0sIHNlZW4pOyB9XG4gIH1cbn1cblxudmFyIG1hcms7XG52YXIgbWVhc3VyZTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIHBlcmYgPSBpbkJyb3dzZXIgJiYgd2luZG93LnBlcmZvcm1hbmNlO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKFxuICAgIHBlcmYgJiZcbiAgICBwZXJmLm1hcmsgJiZcbiAgICBwZXJmLm1lYXN1cmUgJiZcbiAgICBwZXJmLmNsZWFyTWFya3MgJiZcbiAgICBwZXJmLmNsZWFyTWVhc3VyZXNcbiAgKSB7XG4gICAgbWFyayA9IGZ1bmN0aW9uICh0YWcpIHsgcmV0dXJuIHBlcmYubWFyayh0YWcpOyB9O1xuICAgIG1lYXN1cmUgPSBmdW5jdGlvbiAobmFtZSwgc3RhcnRUYWcsIGVuZFRhZykge1xuICAgICAgcGVyZi5tZWFzdXJlKG5hbWUsIHN0YXJ0VGFnLCBlbmRUYWcpO1xuICAgICAgcGVyZi5jbGVhck1hcmtzKHN0YXJ0VGFnKTtcbiAgICAgIHBlcmYuY2xlYXJNYXJrcyhlbmRUYWcpO1xuICAgICAgLy8gcGVyZi5jbGVhck1lYXN1cmVzKG5hbWUpXG4gICAgfTtcbiAgfVxufVxuXG4vKiAgKi9cblxudmFyIG5vcm1hbGl6ZUV2ZW50ID0gY2FjaGVkKGZ1bmN0aW9uIChuYW1lKSB7XG4gIHZhciBwYXNzaXZlID0gbmFtZS5jaGFyQXQoMCkgPT09ICcmJztcbiAgbmFtZSA9IHBhc3NpdmUgPyBuYW1lLnNsaWNlKDEpIDogbmFtZTtcbiAgdmFyIG9uY2UkJDEgPSBuYW1lLmNoYXJBdCgwKSA9PT0gJ34nOyAvLyBQcmVmaXhlZCBsYXN0LCBjaGVja2VkIGZpcnN0XG4gIG5hbWUgPSBvbmNlJCQxID8gbmFtZS5zbGljZSgxKSA6IG5hbWU7XG4gIHZhciBjYXB0dXJlID0gbmFtZS5jaGFyQXQoMCkgPT09ICchJztcbiAgbmFtZSA9IGNhcHR1cmUgPyBuYW1lLnNsaWNlKDEpIDogbmFtZTtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBuYW1lLFxuICAgIG9uY2U6IG9uY2UkJDEsXG4gICAgY2FwdHVyZTogY2FwdHVyZSxcbiAgICBwYXNzaXZlOiBwYXNzaXZlXG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBjcmVhdGVGbkludm9rZXIgKGZucywgdm0pIHtcbiAgZnVuY3Rpb24gaW52b2tlciAoKSB7XG4gICAgdmFyIGFyZ3VtZW50cyQxID0gYXJndW1lbnRzO1xuXG4gICAgdmFyIGZucyA9IGludm9rZXIuZm5zO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGZucykpIHtcbiAgICAgIHZhciBjbG9uZWQgPSBmbnMuc2xpY2UoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2xvbmVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGludm9rZVdpdGhFcnJvckhhbmRsaW5nKGNsb25lZFtpXSwgbnVsbCwgYXJndW1lbnRzJDEsIHZtLCBcInYtb24gaGFuZGxlclwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gcmV0dXJuIGhhbmRsZXIgcmV0dXJuIHZhbHVlIGZvciBzaW5nbGUgaGFuZGxlcnNcbiAgICAgIHJldHVybiBpbnZva2VXaXRoRXJyb3JIYW5kbGluZyhmbnMsIG51bGwsIGFyZ3VtZW50cywgdm0sIFwidi1vbiBoYW5kbGVyXCIpXG4gICAgfVxuICB9XG4gIGludm9rZXIuZm5zID0gZm5zO1xuICByZXR1cm4gaW52b2tlclxufVxuXG5mdW5jdGlvbiB1cGRhdGVMaXN0ZW5lcnMgKFxuICBvbixcbiAgb2xkT24sXG4gIGFkZCxcbiAgcmVtb3ZlJCQxLFxuICBjcmVhdGVPbmNlSGFuZGxlcixcbiAgdm1cbikge1xuICB2YXIgbmFtZSwgZGVmJCQxLCBjdXIsIG9sZCwgZXZlbnQ7XG4gIGZvciAobmFtZSBpbiBvbikge1xuICAgIGRlZiQkMSA9IGN1ciA9IG9uW25hbWVdO1xuICAgIG9sZCA9IG9sZE9uW25hbWVdO1xuICAgIGV2ZW50ID0gbm9ybWFsaXplRXZlbnQobmFtZSk7XG4gICAgaWYgKGlzVW5kZWYoY3VyKSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIkludmFsaWQgaGFuZGxlciBmb3IgZXZlbnQgXFxcIlwiICsgKGV2ZW50Lm5hbWUpICsgXCJcXFwiOiBnb3QgXCIgKyBTdHJpbmcoY3VyKSxcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChpc1VuZGVmKG9sZCkpIHtcbiAgICAgIGlmIChpc1VuZGVmKGN1ci5mbnMpKSB7XG4gICAgICAgIGN1ciA9IG9uW25hbWVdID0gY3JlYXRlRm5JbnZva2VyKGN1ciwgdm0pO1xuICAgICAgfVxuICAgICAgaWYgKGlzVHJ1ZShldmVudC5vbmNlKSkge1xuICAgICAgICBjdXIgPSBvbltuYW1lXSA9IGNyZWF0ZU9uY2VIYW5kbGVyKGV2ZW50Lm5hbWUsIGN1ciwgZXZlbnQuY2FwdHVyZSk7XG4gICAgICB9XG4gICAgICBhZGQoZXZlbnQubmFtZSwgY3VyLCBldmVudC5jYXB0dXJlLCBldmVudC5wYXNzaXZlLCBldmVudC5wYXJhbXMpO1xuICAgIH0gZWxzZSBpZiAoY3VyICE9PSBvbGQpIHtcbiAgICAgIG9sZC5mbnMgPSBjdXI7XG4gICAgICBvbltuYW1lXSA9IG9sZDtcbiAgICB9XG4gIH1cbiAgZm9yIChuYW1lIGluIG9sZE9uKSB7XG4gICAgaWYgKGlzVW5kZWYob25bbmFtZV0pKSB7XG4gICAgICBldmVudCA9IG5vcm1hbGl6ZUV2ZW50KG5hbWUpO1xuICAgICAgcmVtb3ZlJCQxKGV2ZW50Lm5hbWUsIG9sZE9uW25hbWVdLCBldmVudC5jYXB0dXJlKTtcbiAgICB9XG4gIH1cbn1cblxuLyogICovXG5cbi8qICAqL1xuXG4vLyBmaXhlZCBieSB4eHh4eHggKG1wIHByb3BlcnRpZXMpXG5mdW5jdGlvbiBleHRyYWN0UHJvcGVydGllc0Zyb21WTm9kZURhdGEoZGF0YSwgQ3RvciwgcmVzLCBjb250ZXh0KSB7XG4gIHZhciBwcm9wT3B0aW9ucyA9IEN0b3Iub3B0aW9ucy5tcE9wdGlvbnMgJiYgQ3Rvci5vcHRpb25zLm1wT3B0aW9ucy5wcm9wZXJ0aWVzO1xuICBpZiAoaXNVbmRlZihwcm9wT3B0aW9ucykpIHtcbiAgICByZXR1cm4gcmVzXG4gIH1cbiAgdmFyIGV4dGVybmFsQ2xhc3NlcyA9IEN0b3Iub3B0aW9ucy5tcE9wdGlvbnMuZXh0ZXJuYWxDbGFzc2VzIHx8IFtdO1xuICB2YXIgYXR0cnMgPSBkYXRhLmF0dHJzO1xuICB2YXIgcHJvcHMgPSBkYXRhLnByb3BzO1xuICBpZiAoaXNEZWYoYXR0cnMpIHx8IGlzRGVmKHByb3BzKSkge1xuICAgIGZvciAodmFyIGtleSBpbiBwcm9wT3B0aW9ucykge1xuICAgICAgdmFyIGFsdEtleSA9IGh5cGhlbmF0ZShrZXkpO1xuICAgICAgdmFyIHJlc3VsdCA9IGNoZWNrUHJvcChyZXMsIHByb3BzLCBrZXksIGFsdEtleSwgdHJ1ZSkgfHxcbiAgICAgICAgICBjaGVja1Byb3AocmVzLCBhdHRycywga2V5LCBhbHRLZXksIGZhbHNlKTtcbiAgICAgIC8vIGV4dGVybmFsQ2xhc3NcbiAgICAgIGlmIChcbiAgICAgICAgcmVzdWx0ICYmXG4gICAgICAgIHJlc1trZXldICYmXG4gICAgICAgIGV4dGVybmFsQ2xhc3Nlcy5pbmRleE9mKGFsdEtleSkgIT09IC0xICYmXG4gICAgICAgIGNvbnRleHRbY2FtZWxpemUocmVzW2tleV0pXVxuICAgICAgKSB7XG4gICAgICAgIC8vIOi1i+WAvCBleHRlcm5hbENsYXNzIOecn+ato+eahOWAvCjmqKHmnb/ph4wgZXh0ZXJuYWxDbGFzcyDnmoTlgLzlj6/og73mmK/lrZfnrKbkuLIpXG4gICAgICAgIHJlc1trZXldID0gY29udGV4dFtjYW1lbGl6ZShyZXNba2V5XSldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RQcm9wc0Zyb21WTm9kZURhdGEgKFxuICBkYXRhLFxuICBDdG9yLFxuICB0YWcsXG4gIGNvbnRleHQvLyBmaXhlZCBieSB4eHh4eHhcbikge1xuICAvLyB3ZSBhcmUgb25seSBleHRyYWN0aW5nIHJhdyB2YWx1ZXMgaGVyZS5cbiAgLy8gdmFsaWRhdGlvbiBhbmQgZGVmYXVsdCB2YWx1ZXMgYXJlIGhhbmRsZWQgaW4gdGhlIGNoaWxkXG4gIC8vIGNvbXBvbmVudCBpdHNlbGYuXG4gIHZhciBwcm9wT3B0aW9ucyA9IEN0b3Iub3B0aW9ucy5wcm9wcztcbiAgaWYgKGlzVW5kZWYocHJvcE9wdGlvbnMpKSB7XG4gICAgLy8gZml4ZWQgYnkgeHh4eHh4XG4gICAgcmV0dXJuIGV4dHJhY3RQcm9wZXJ0aWVzRnJvbVZOb2RlRGF0YShkYXRhLCBDdG9yLCB7fSwgY29udGV4dClcbiAgfVxuICB2YXIgcmVzID0ge307XG4gIHZhciBhdHRycyA9IGRhdGEuYXR0cnM7XG4gIHZhciBwcm9wcyA9IGRhdGEucHJvcHM7XG4gIGlmIChpc0RlZihhdHRycykgfHwgaXNEZWYocHJvcHMpKSB7XG4gICAgZm9yICh2YXIga2V5IGluIHByb3BPcHRpb25zKSB7XG4gICAgICB2YXIgYWx0S2V5ID0gaHlwaGVuYXRlKGtleSk7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YXIga2V5SW5Mb3dlckNhc2UgPSBrZXkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGtleSAhPT0ga2V5SW5Mb3dlckNhc2UgJiZcbiAgICAgICAgICBhdHRycyAmJiBoYXNPd24oYXR0cnMsIGtleUluTG93ZXJDYXNlKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aXAoXG4gICAgICAgICAgICBcIlByb3AgXFxcIlwiICsga2V5SW5Mb3dlckNhc2UgKyBcIlxcXCIgaXMgcGFzc2VkIHRvIGNvbXBvbmVudCBcIiArXG4gICAgICAgICAgICAoZm9ybWF0Q29tcG9uZW50TmFtZSh0YWcgfHwgQ3RvcikpICsgXCIsIGJ1dCB0aGUgZGVjbGFyZWQgcHJvcCBuYW1lIGlzXCIgK1xuICAgICAgICAgICAgXCIgXFxcIlwiICsga2V5ICsgXCJcXFwiLiBcIiArXG4gICAgICAgICAgICBcIk5vdGUgdGhhdCBIVE1MIGF0dHJpYnV0ZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUgYW5kIGNhbWVsQ2FzZWQgXCIgK1xuICAgICAgICAgICAgXCJwcm9wcyBuZWVkIHRvIHVzZSB0aGVpciBrZWJhYi1jYXNlIGVxdWl2YWxlbnRzIHdoZW4gdXNpbmcgaW4tRE9NIFwiICtcbiAgICAgICAgICAgIFwidGVtcGxhdGVzLiBZb3Ugc2hvdWxkIHByb2JhYmx5IHVzZSBcXFwiXCIgKyBhbHRLZXkgKyBcIlxcXCIgaW5zdGVhZCBvZiBcXFwiXCIgKyBrZXkgKyBcIlxcXCIuXCJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjaGVja1Byb3AocmVzLCBwcm9wcywga2V5LCBhbHRLZXksIHRydWUpIHx8XG4gICAgICBjaGVja1Byb3AocmVzLCBhdHRycywga2V5LCBhbHRLZXksIGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4ZWQgYnkgeHh4eHh4XG4gIHJldHVybiBleHRyYWN0UHJvcGVydGllc0Zyb21WTm9kZURhdGEoZGF0YSwgQ3RvciwgcmVzLCBjb250ZXh0KVxufVxuXG5mdW5jdGlvbiBjaGVja1Byb3AgKFxuICByZXMsXG4gIGhhc2gsXG4gIGtleSxcbiAgYWx0S2V5LFxuICBwcmVzZXJ2ZVxuKSB7XG4gIGlmIChpc0RlZihoYXNoKSkge1xuICAgIGlmIChoYXNPd24oaGFzaCwga2V5KSkge1xuICAgICAgcmVzW2tleV0gPSBoYXNoW2tleV07XG4gICAgICBpZiAoIXByZXNlcnZlKSB7XG4gICAgICAgIGRlbGV0ZSBoYXNoW2tleV07XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gZWxzZSBpZiAoaGFzT3duKGhhc2gsIGFsdEtleSkpIHtcbiAgICAgIHJlc1trZXldID0gaGFzaFthbHRLZXldO1xuICAgICAgaWYgKCFwcmVzZXJ2ZSkge1xuICAgICAgICBkZWxldGUgaGFzaFthbHRLZXldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbi8qICAqL1xuXG4vLyBUaGUgdGVtcGxhdGUgY29tcGlsZXIgYXR0ZW1wdHMgdG8gbWluaW1pemUgdGhlIG5lZWQgZm9yIG5vcm1hbGl6YXRpb24gYnlcbi8vIHN0YXRpY2FsbHkgYW5hbHl6aW5nIHRoZSB0ZW1wbGF0ZSBhdCBjb21waWxlIHRpbWUuXG4vL1xuLy8gRm9yIHBsYWluIEhUTUwgbWFya3VwLCBub3JtYWxpemF0aW9uIGNhbiBiZSBjb21wbGV0ZWx5IHNraXBwZWQgYmVjYXVzZSB0aGVcbi8vIGdlbmVyYXRlZCByZW5kZXIgZnVuY3Rpb24gaXMgZ3VhcmFudGVlZCB0byByZXR1cm4gQXJyYXk8Vk5vZGU+LiBUaGVyZSBhcmVcbi8vIHR3byBjYXNlcyB3aGVyZSBleHRyYSBub3JtYWxpemF0aW9uIGlzIG5lZWRlZDpcblxuLy8gMS4gV2hlbiB0aGUgY2hpbGRyZW4gY29udGFpbnMgY29tcG9uZW50cyAtIGJlY2F1c2UgYSBmdW5jdGlvbmFsIGNvbXBvbmVudFxuLy8gbWF5IHJldHVybiBhbiBBcnJheSBpbnN0ZWFkIG9mIGEgc2luZ2xlIHJvb3QuIEluIHRoaXMgY2FzZSwganVzdCBhIHNpbXBsZVxuLy8gbm9ybWFsaXphdGlvbiBpcyBuZWVkZWQgLSBpZiBhbnkgY2hpbGQgaXMgYW4gQXJyYXksIHdlIGZsYXR0ZW4gdGhlIHdob2xlXG4vLyB0aGluZyB3aXRoIEFycmF5LnByb3RvdHlwZS5jb25jYXQuIEl0IGlzIGd1YXJhbnRlZWQgdG8gYmUgb25seSAxLWxldmVsIGRlZXBcbi8vIGJlY2F1c2UgZnVuY3Rpb25hbCBjb21wb25lbnRzIGFscmVhZHkgbm9ybWFsaXplIHRoZWlyIG93biBjaGlsZHJlbi5cbmZ1bmN0aW9uIHNpbXBsZU5vcm1hbGl6ZUNoaWxkcmVuIChjaGlsZHJlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW5baV0pKSB7XG4gICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgY2hpbGRyZW4pXG4gICAgfVxuICB9XG4gIHJldHVybiBjaGlsZHJlblxufVxuXG4vLyAyLiBXaGVuIHRoZSBjaGlsZHJlbiBjb250YWlucyBjb25zdHJ1Y3RzIHRoYXQgYWx3YXlzIGdlbmVyYXRlZCBuZXN0ZWQgQXJyYXlzLFxuLy8gZS5nLiA8dGVtcGxhdGU+LCA8c2xvdD4sIHYtZm9yLCBvciB3aGVuIHRoZSBjaGlsZHJlbiBpcyBwcm92aWRlZCBieSB1c2VyXG4vLyB3aXRoIGhhbmQtd3JpdHRlbiByZW5kZXIgZnVuY3Rpb25zIC8gSlNYLiBJbiBzdWNoIGNhc2VzIGEgZnVsbCBub3JtYWxpemF0aW9uXG4vLyBpcyBuZWVkZWQgdG8gY2F0ZXIgdG8gYWxsIHBvc3NpYmxlIHR5cGVzIG9mIGNoaWxkcmVuIHZhbHVlcy5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUNoaWxkcmVuIChjaGlsZHJlbikge1xuICByZXR1cm4gaXNQcmltaXRpdmUoY2hpbGRyZW4pXG4gICAgPyBbY3JlYXRlVGV4dFZOb2RlKGNoaWxkcmVuKV1cbiAgICA6IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pXG4gICAgICA/IG5vcm1hbGl6ZUFycmF5Q2hpbGRyZW4oY2hpbGRyZW4pXG4gICAgICA6IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBpc1RleHROb2RlIChub2RlKSB7XG4gIHJldHVybiBpc0RlZihub2RlKSAmJiBpc0RlZihub2RlLnRleHQpICYmIGlzRmFsc2Uobm9kZS5pc0NvbW1lbnQpXG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUFycmF5Q2hpbGRyZW4gKGNoaWxkcmVuLCBuZXN0ZWRJbmRleCkge1xuICB2YXIgcmVzID0gW107XG4gIHZhciBpLCBjLCBsYXN0SW5kZXgsIGxhc3Q7XG4gIGZvciAoaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgIGMgPSBjaGlsZHJlbltpXTtcbiAgICBpZiAoaXNVbmRlZihjKSB8fCB0eXBlb2YgYyA9PT0gJ2Jvb2xlYW4nKSB7IGNvbnRpbnVlIH1cbiAgICBsYXN0SW5kZXggPSByZXMubGVuZ3RoIC0gMTtcbiAgICBsYXN0ID0gcmVzW2xhc3RJbmRleF07XG4gICAgLy8gIG5lc3RlZFxuICAgIGlmIChBcnJheS5pc0FycmF5KGMpKSB7XG4gICAgICBpZiAoYy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGMgPSBub3JtYWxpemVBcnJheUNoaWxkcmVuKGMsICgobmVzdGVkSW5kZXggfHwgJycpICsgXCJfXCIgKyBpKSk7XG4gICAgICAgIC8vIG1lcmdlIGFkamFjZW50IHRleHQgbm9kZXNcbiAgICAgICAgaWYgKGlzVGV4dE5vZGUoY1swXSkgJiYgaXNUZXh0Tm9kZShsYXN0KSkge1xuICAgICAgICAgIHJlc1tsYXN0SW5kZXhdID0gY3JlYXRlVGV4dFZOb2RlKGxhc3QudGV4dCArIChjWzBdKS50ZXh0KTtcbiAgICAgICAgICBjLnNoaWZ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnB1c2guYXBwbHkocmVzLCBjKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzUHJpbWl0aXZlKGMpKSB7XG4gICAgICBpZiAoaXNUZXh0Tm9kZShsYXN0KSkge1xuICAgICAgICAvLyBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzXG4gICAgICAgIC8vIHRoaXMgaXMgbmVjZXNzYXJ5IGZvciBTU1IgaHlkcmF0aW9uIGJlY2F1c2UgdGV4dCBub2RlcyBhcmVcbiAgICAgICAgLy8gZXNzZW50aWFsbHkgbWVyZ2VkIHdoZW4gcmVuZGVyZWQgdG8gSFRNTCBzdHJpbmdzXG4gICAgICAgIHJlc1tsYXN0SW5kZXhdID0gY3JlYXRlVGV4dFZOb2RlKGxhc3QudGV4dCArIGMpO1xuICAgICAgfSBlbHNlIGlmIChjICE9PSAnJykge1xuICAgICAgICAvLyBjb252ZXJ0IHByaW1pdGl2ZSB0byB2bm9kZVxuICAgICAgICByZXMucHVzaChjcmVhdGVUZXh0Vk5vZGUoYykpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaXNUZXh0Tm9kZShjKSAmJiBpc1RleHROb2RlKGxhc3QpKSB7XG4gICAgICAgIC8vIG1lcmdlIGFkamFjZW50IHRleHQgbm9kZXNcbiAgICAgICAgcmVzW2xhc3RJbmRleF0gPSBjcmVhdGVUZXh0Vk5vZGUobGFzdC50ZXh0ICsgYy50ZXh0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGRlZmF1bHQga2V5IGZvciBuZXN0ZWQgYXJyYXkgY2hpbGRyZW4gKGxpa2VseSBnZW5lcmF0ZWQgYnkgdi1mb3IpXG4gICAgICAgIGlmIChpc1RydWUoY2hpbGRyZW4uX2lzVkxpc3QpICYmXG4gICAgICAgICAgaXNEZWYoYy50YWcpICYmXG4gICAgICAgICAgaXNVbmRlZihjLmtleSkgJiZcbiAgICAgICAgICBpc0RlZihuZXN0ZWRJbmRleCkpIHtcbiAgICAgICAgICBjLmtleSA9IFwiX192bGlzdFwiICsgbmVzdGVkSW5kZXggKyBcIl9cIiArIGkgKyBcIl9fXCI7XG4gICAgICAgIH1cbiAgICAgICAgcmVzLnB1c2goYyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRQcm92aWRlICh2bSkge1xuICB2YXIgcHJvdmlkZSA9IHZtLiRvcHRpb25zLnByb3ZpZGU7XG4gIGlmIChwcm92aWRlKSB7XG4gICAgdm0uX3Byb3ZpZGVkID0gdHlwZW9mIHByb3ZpZGUgPT09ICdmdW5jdGlvbidcbiAgICAgID8gcHJvdmlkZS5jYWxsKHZtKVxuICAgICAgOiBwcm92aWRlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRJbmplY3Rpb25zICh2bSkge1xuICB2YXIgcmVzdWx0ID0gcmVzb2x2ZUluamVjdCh2bS4kb3B0aW9ucy5pbmplY3QsIHZtKTtcbiAgaWYgKHJlc3VsdCkge1xuICAgIHRvZ2dsZU9ic2VydmluZyhmYWxzZSk7XG4gICAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBkZWZpbmVSZWFjdGl2ZSQkMSh2bSwga2V5LCByZXN1bHRba2V5XSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHdhcm4oXG4gICAgICAgICAgICBcIkF2b2lkIG11dGF0aW5nIGFuIGluamVjdGVkIHZhbHVlIGRpcmVjdGx5IHNpbmNlIHRoZSBjaGFuZ2VzIHdpbGwgYmUgXCIgK1xuICAgICAgICAgICAgXCJvdmVyd3JpdHRlbiB3aGVuZXZlciB0aGUgcHJvdmlkZWQgY29tcG9uZW50IHJlLXJlbmRlcnMuIFwiICtcbiAgICAgICAgICAgIFwiaW5qZWN0aW9uIGJlaW5nIG11dGF0ZWQ6IFxcXCJcIiArIGtleSArIFwiXFxcIlwiLFxuICAgICAgICAgICAgdm1cbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlZmluZVJlYWN0aXZlJCQxKHZtLCBrZXksIHJlc3VsdFtrZXldKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0b2dnbGVPYnNlcnZpbmcodHJ1ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUluamVjdCAoaW5qZWN0LCB2bSkge1xuICBpZiAoaW5qZWN0KSB7XG4gICAgLy8gaW5qZWN0IGlzIDphbnkgYmVjYXVzZSBmbG93IGlzIG5vdCBzbWFydCBlbm91Z2ggdG8gZmlndXJlIG91dCBjYWNoZWRcbiAgICB2YXIgcmVzdWx0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB2YXIga2V5cyA9IGhhc1N5bWJvbFxuICAgICAgPyBSZWZsZWN0Lm93bktleXMoaW5qZWN0KVxuICAgICAgOiBPYmplY3Qua2V5cyhpbmplY3QpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgIC8vICM2NTc0IGluIGNhc2UgdGhlIGluamVjdCBvYmplY3QgaXMgb2JzZXJ2ZWQuLi5cbiAgICAgIGlmIChrZXkgPT09ICdfX29iX18nKSB7IGNvbnRpbnVlIH1cbiAgICAgIHZhciBwcm92aWRlS2V5ID0gaW5qZWN0W2tleV0uZnJvbTtcbiAgICAgIHZhciBzb3VyY2UgPSB2bTtcbiAgICAgIHdoaWxlIChzb3VyY2UpIHtcbiAgICAgICAgaWYgKHNvdXJjZS5fcHJvdmlkZWQgJiYgaGFzT3duKHNvdXJjZS5fcHJvdmlkZWQsIHByb3ZpZGVLZXkpKSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSBzb3VyY2UuX3Byb3ZpZGVkW3Byb3ZpZGVLZXldO1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgc291cmNlID0gc291cmNlLiRwYXJlbnQ7XG4gICAgICB9XG4gICAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgICBpZiAoJ2RlZmF1bHQnIGluIGluamVjdFtrZXldKSB7XG4gICAgICAgICAgdmFyIHByb3ZpZGVEZWZhdWx0ID0gaW5qZWN0W2tleV0uZGVmYXVsdDtcbiAgICAgICAgICByZXN1bHRba2V5XSA9IHR5cGVvZiBwcm92aWRlRGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgPyBwcm92aWRlRGVmYXVsdC5jYWxsKHZtKVxuICAgICAgICAgICAgOiBwcm92aWRlRGVmYXVsdDtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgd2FybigoXCJJbmplY3Rpb24gXFxcIlwiICsga2V5ICsgXCJcXFwiIG5vdCBmb3VuZFwiKSwgdm0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxufVxuXG4vKiAgKi9cblxuXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlc29sdmluZyByYXcgY2hpbGRyZW4gVk5vZGVzIGludG8gYSBzbG90IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZVNsb3RzIChcbiAgY2hpbGRyZW4sXG4gIGNvbnRleHRcbikge1xuICBpZiAoIWNoaWxkcmVuIHx8ICFjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICByZXR1cm4ge31cbiAgfVxuICB2YXIgc2xvdHMgPSB7fTtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICB2YXIgZGF0YSA9IGNoaWxkLmRhdGE7XG4gICAgLy8gcmVtb3ZlIHNsb3QgYXR0cmlidXRlIGlmIHRoZSBub2RlIGlzIHJlc29sdmVkIGFzIGEgVnVlIHNsb3Qgbm9kZVxuICAgIGlmIChkYXRhICYmIGRhdGEuYXR0cnMgJiYgZGF0YS5hdHRycy5zbG90KSB7XG4gICAgICBkZWxldGUgZGF0YS5hdHRycy5zbG90O1xuICAgIH1cbiAgICAvLyBuYW1lZCBzbG90cyBzaG91bGQgb25seSBiZSByZXNwZWN0ZWQgaWYgdGhlIHZub2RlIHdhcyByZW5kZXJlZCBpbiB0aGVcbiAgICAvLyBzYW1lIGNvbnRleHQuXG4gICAgaWYgKChjaGlsZC5jb250ZXh0ID09PSBjb250ZXh0IHx8IGNoaWxkLmZuQ29udGV4dCA9PT0gY29udGV4dCkgJiZcbiAgICAgIGRhdGEgJiYgZGF0YS5zbG90ICE9IG51bGxcbiAgICApIHtcbiAgICAgIHZhciBuYW1lID0gZGF0YS5zbG90O1xuICAgICAgdmFyIHNsb3QgPSAoc2xvdHNbbmFtZV0gfHwgKHNsb3RzW25hbWVdID0gW10pKTtcbiAgICAgIGlmIChjaGlsZC50YWcgPT09ICd0ZW1wbGF0ZScpIHtcbiAgICAgICAgc2xvdC5wdXNoLmFwcGx5KHNsb3QsIGNoaWxkLmNoaWxkcmVuIHx8IFtdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNsb3QucHVzaChjaGlsZCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGZpeGVkIGJ5IHh4eHh4eCDkuLTml7YgaGFjayDmjokgdW5pLWFwcCDkuK3nmoTlvILmraUgbmFtZSBzbG90IHBhZ2VcbiAgICAgIGlmKGNoaWxkLmFzeW5jTWV0YSAmJiBjaGlsZC5hc3luY01ldGEuZGF0YSAmJiBjaGlsZC5hc3luY01ldGEuZGF0YS5zbG90ID09PSAncGFnZScpe1xuICAgICAgICAoc2xvdHNbJ3BhZ2UnXSB8fCAoc2xvdHNbJ3BhZ2UnXSA9IFtdKSkucHVzaChjaGlsZCk7XG4gICAgICB9ZWxzZXtcbiAgICAgICAgKHNsb3RzLmRlZmF1bHQgfHwgKHNsb3RzLmRlZmF1bHQgPSBbXSkpLnB1c2goY2hpbGQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyBpZ25vcmUgc2xvdHMgdGhhdCBjb250YWlucyBvbmx5IHdoaXRlc3BhY2VcbiAgZm9yICh2YXIgbmFtZSQxIGluIHNsb3RzKSB7XG4gICAgaWYgKHNsb3RzW25hbWUkMV0uZXZlcnkoaXNXaGl0ZXNwYWNlKSkge1xuICAgICAgZGVsZXRlIHNsb3RzW25hbWUkMV07XG4gICAgfVxuICB9XG4gIHJldHVybiBzbG90c1xufVxuXG5mdW5jdGlvbiBpc1doaXRlc3BhY2UgKG5vZGUpIHtcbiAgcmV0dXJuIChub2RlLmlzQ29tbWVudCAmJiAhbm9kZS5hc3luY0ZhY3RvcnkpIHx8IG5vZGUudGV4dCA9PT0gJyAnXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBub3JtYWxpemVTY29wZWRTbG90cyAoXG4gIHNsb3RzLFxuICBub3JtYWxTbG90cyxcbiAgcHJldlNsb3RzXG4pIHtcbiAgdmFyIHJlcztcbiAgdmFyIGhhc05vcm1hbFNsb3RzID0gT2JqZWN0LmtleXMobm9ybWFsU2xvdHMpLmxlbmd0aCA+IDA7XG4gIHZhciBpc1N0YWJsZSA9IHNsb3RzID8gISFzbG90cy4kc3RhYmxlIDogIWhhc05vcm1hbFNsb3RzO1xuICB2YXIga2V5ID0gc2xvdHMgJiYgc2xvdHMuJGtleTtcbiAgaWYgKCFzbG90cykge1xuICAgIHJlcyA9IHt9O1xuICB9IGVsc2UgaWYgKHNsb3RzLl9ub3JtYWxpemVkKSB7XG4gICAgLy8gZmFzdCBwYXRoIDE6IGNoaWxkIGNvbXBvbmVudCByZS1yZW5kZXIgb25seSwgcGFyZW50IGRpZCBub3QgY2hhbmdlXG4gICAgcmV0dXJuIHNsb3RzLl9ub3JtYWxpemVkXG4gIH0gZWxzZSBpZiAoXG4gICAgaXNTdGFibGUgJiZcbiAgICBwcmV2U2xvdHMgJiZcbiAgICBwcmV2U2xvdHMgIT09IGVtcHR5T2JqZWN0ICYmXG4gICAga2V5ID09PSBwcmV2U2xvdHMuJGtleSAmJlxuICAgICFoYXNOb3JtYWxTbG90cyAmJlxuICAgICFwcmV2U2xvdHMuJGhhc05vcm1hbFxuICApIHtcbiAgICAvLyBmYXN0IHBhdGggMjogc3RhYmxlIHNjb3BlZCBzbG90cyB3LyBubyBub3JtYWwgc2xvdHMgdG8gcHJveHksXG4gICAgLy8gb25seSBuZWVkIHRvIG5vcm1hbGl6ZSBvbmNlXG4gICAgcmV0dXJuIHByZXZTbG90c1xuICB9IGVsc2Uge1xuICAgIHJlcyA9IHt9O1xuICAgIGZvciAodmFyIGtleSQxIGluIHNsb3RzKSB7XG4gICAgICBpZiAoc2xvdHNba2V5JDFdICYmIGtleSQxWzBdICE9PSAnJCcpIHtcbiAgICAgICAgcmVzW2tleSQxXSA9IG5vcm1hbGl6ZVNjb3BlZFNsb3Qobm9ybWFsU2xvdHMsIGtleSQxLCBzbG90c1trZXkkMV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyBleHBvc2Ugbm9ybWFsIHNsb3RzIG9uIHNjb3BlZFNsb3RzXG4gIGZvciAodmFyIGtleSQyIGluIG5vcm1hbFNsb3RzKSB7XG4gICAgaWYgKCEoa2V5JDIgaW4gcmVzKSkge1xuICAgICAgcmVzW2tleSQyXSA9IHByb3h5Tm9ybWFsU2xvdChub3JtYWxTbG90cywga2V5JDIpO1xuICAgIH1cbiAgfVxuICAvLyBhdm9yaWF6IHNlZW1zIHRvIG1vY2sgYSBub24tZXh0ZW5zaWJsZSAkc2NvcGVkU2xvdHMgb2JqZWN0XG4gIC8vIGFuZCB3aGVuIHRoYXQgaXMgcGFzc2VkIGRvd24gdGhpcyB3b3VsZCBjYXVzZSBhbiBlcnJvclxuICBpZiAoc2xvdHMgJiYgT2JqZWN0LmlzRXh0ZW5zaWJsZShzbG90cykpIHtcbiAgICAoc2xvdHMpLl9ub3JtYWxpemVkID0gcmVzO1xuICB9XG4gIGRlZihyZXMsICckc3RhYmxlJywgaXNTdGFibGUpO1xuICBkZWYocmVzLCAnJGtleScsIGtleSk7XG4gIGRlZihyZXMsICckaGFzTm9ybWFsJywgaGFzTm9ybWFsU2xvdHMpO1xuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVNjb3BlZFNsb3Qobm9ybWFsU2xvdHMsIGtleSwgZm4pIHtcbiAgdmFyIG5vcm1hbGl6ZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlcyA9IGFyZ3VtZW50cy5sZW5ndGggPyBmbi5hcHBseShudWxsLCBhcmd1bWVudHMpIDogZm4oe30pO1xuICAgIHJlcyA9IHJlcyAmJiB0eXBlb2YgcmVzID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShyZXMpXG4gICAgICA/IFtyZXNdIC8vIHNpbmdsZSB2bm9kZVxuICAgICAgOiBub3JtYWxpemVDaGlsZHJlbihyZXMpO1xuICAgIHJldHVybiByZXMgJiYgKFxuICAgICAgcmVzLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgKHJlcy5sZW5ndGggPT09IDEgJiYgcmVzWzBdLmlzQ29tbWVudCkgLy8gIzk2NThcbiAgICApID8gdW5kZWZpbmVkXG4gICAgICA6IHJlc1xuICB9O1xuICAvLyB0aGlzIGlzIGEgc2xvdCB1c2luZyB0aGUgbmV3IHYtc2xvdCBzeW50YXggd2l0aG91dCBzY29wZS4gYWx0aG91Z2ggaXQgaXNcbiAgLy8gY29tcGlsZWQgYXMgYSBzY29wZWQgc2xvdCwgcmVuZGVyIGZuIHVzZXJzIHdvdWxkIGV4cGVjdCBpdCB0byBiZSBwcmVzZW50XG4gIC8vIG9uIHRoaXMuJHNsb3RzIGJlY2F1c2UgdGhlIHVzYWdlIGlzIHNlbWFudGljYWxseSBhIG5vcm1hbCBzbG90LlxuICBpZiAoZm4ucHJveHkpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobm9ybWFsU2xvdHMsIGtleSwge1xuICAgICAgZ2V0OiBub3JtYWxpemVkLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9XG4gIHJldHVybiBub3JtYWxpemVkXG59XG5cbmZ1bmN0aW9uIHByb3h5Tm9ybWFsU2xvdChzbG90cywga2V5KSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBzbG90c1trZXldOyB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciByZW5kZXJpbmcgdi1mb3IgbGlzdHMuXG4gKi9cbmZ1bmN0aW9uIHJlbmRlckxpc3QgKFxuICB2YWwsXG4gIHJlbmRlclxuKSB7XG4gIHZhciByZXQsIGksIGwsIGtleXMsIGtleTtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSB8fCB0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIHJldCA9IG5ldyBBcnJheSh2YWwubGVuZ3RoKTtcbiAgICBmb3IgKGkgPSAwLCBsID0gdmFsLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgcmV0W2ldID0gcmVuZGVyKHZhbFtpXSwgaSwgaSwgaSk7IC8vIGZpeGVkIGJ5IHh4eHh4eFxuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHJldCA9IG5ldyBBcnJheSh2YWwpO1xuICAgIGZvciAoaSA9IDA7IGkgPCB2YWw7IGkrKykge1xuICAgICAgcmV0W2ldID0gcmVuZGVyKGkgKyAxLCBpLCBpLCBpKTsgLy8gZml4ZWQgYnkgeHh4eHh4XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KHZhbCkpIHtcbiAgICBpZiAoaGFzU3ltYm9sICYmIHZhbFtTeW1ib2wuaXRlcmF0b3JdKSB7XG4gICAgICByZXQgPSBbXTtcbiAgICAgIHZhciBpdGVyYXRvciA9IHZhbFtTeW1ib2wuaXRlcmF0b3JdKCk7XG4gICAgICB2YXIgcmVzdWx0ID0gaXRlcmF0b3IubmV4dCgpO1xuICAgICAgd2hpbGUgKCFyZXN1bHQuZG9uZSkge1xuICAgICAgICByZXQucHVzaChyZW5kZXIocmVzdWx0LnZhbHVlLCByZXQubGVuZ3RoLCBpLCBpKyspKTsgLy8gZml4ZWQgYnkgeHh4eHh4XG4gICAgICAgIHJlc3VsdCA9IGl0ZXJhdG9yLm5leHQoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAga2V5cyA9IE9iamVjdC5rZXlzKHZhbCk7XG4gICAgICByZXQgPSBuZXcgQXJyYXkoa2V5cy5sZW5ndGgpO1xuICAgICAgZm9yIChpID0gMCwgbCA9IGtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICAgIHJldFtpXSA9IHJlbmRlcih2YWxba2V5XSwga2V5LCBpLCBpKTsgLy8gZml4ZWQgYnkgeHh4eHh4XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICghaXNEZWYocmV0KSkge1xuICAgIHJldCA9IFtdO1xuICB9XG4gIChyZXQpLl9pc1ZMaXN0ID0gdHJ1ZTtcbiAgcmV0dXJuIHJldFxufVxuXG4vKiAgKi9cblxuLyoqXG4gKiBSdW50aW1lIGhlbHBlciBmb3IgcmVuZGVyaW5nIDxzbG90PlxuICovXG5mdW5jdGlvbiByZW5kZXJTbG90IChcbiAgbmFtZSxcbiAgZmFsbGJhY2ssXG4gIHByb3BzLFxuICBiaW5kT2JqZWN0XG4pIHtcbiAgdmFyIHNjb3BlZFNsb3RGbiA9IHRoaXMuJHNjb3BlZFNsb3RzW25hbWVdO1xuICB2YXIgbm9kZXM7XG4gIGlmIChzY29wZWRTbG90Rm4pIHsgLy8gc2NvcGVkIHNsb3RcbiAgICBwcm9wcyA9IHByb3BzIHx8IHt9O1xuICAgIGlmIChiaW5kT2JqZWN0KSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhaXNPYmplY3QoYmluZE9iamVjdCkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnc2xvdCB2LWJpbmQgd2l0aG91dCBhcmd1bWVudCBleHBlY3RzIGFuIE9iamVjdCcsXG4gICAgICAgICAgdGhpc1xuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcHJvcHMgPSBleHRlbmQoZXh0ZW5kKHt9LCBiaW5kT2JqZWN0KSwgcHJvcHMpO1xuICAgIH1cbiAgICAvLyBmaXhlZCBieSB4eHh4eHggYXBwLXBsdXMgc2NvcGVkU2xvdFxuICAgIG5vZGVzID0gc2NvcGVkU2xvdEZuKHByb3BzLCB0aGlzLCBwcm9wcy5faSkgfHwgZmFsbGJhY2s7XG4gIH0gZWxzZSB7XG4gICAgbm9kZXMgPSB0aGlzLiRzbG90c1tuYW1lXSB8fCBmYWxsYmFjaztcbiAgfVxuXG4gIHZhciB0YXJnZXQgPSBwcm9wcyAmJiBwcm9wcy5zbG90O1xuICBpZiAodGFyZ2V0KSB7XG4gICAgcmV0dXJuIHRoaXMuJGNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJywgeyBzbG90OiB0YXJnZXQgfSwgbm9kZXMpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5vZGVzXG4gIH1cbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlc29sdmluZyBmaWx0ZXJzXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVGaWx0ZXIgKGlkKSB7XG4gIHJldHVybiByZXNvbHZlQXNzZXQodGhpcy4kb3B0aW9ucywgJ2ZpbHRlcnMnLCBpZCwgdHJ1ZSkgfHwgaWRlbnRpdHlcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGlzS2V5Tm90TWF0Y2ggKGV4cGVjdCwgYWN0dWFsKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGV4cGVjdCkpIHtcbiAgICByZXR1cm4gZXhwZWN0LmluZGV4T2YoYWN0dWFsKSA9PT0gLTFcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZXhwZWN0ICE9PSBhY3R1YWxcbiAgfVxufVxuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciBjaGVja2luZyBrZXlDb2RlcyBmcm9tIGNvbmZpZy5cbiAqIGV4cG9zZWQgYXMgVnVlLnByb3RvdHlwZS5fa1xuICogcGFzc2luZyBpbiBldmVudEtleU5hbWUgYXMgbGFzdCBhcmd1bWVudCBzZXBhcmF0ZWx5IGZvciBiYWNrd2FyZHMgY29tcGF0XG4gKi9cbmZ1bmN0aW9uIGNoZWNrS2V5Q29kZXMgKFxuICBldmVudEtleUNvZGUsXG4gIGtleSxcbiAgYnVpbHRJbktleUNvZGUsXG4gIGV2ZW50S2V5TmFtZSxcbiAgYnVpbHRJbktleU5hbWVcbikge1xuICB2YXIgbWFwcGVkS2V5Q29kZSA9IGNvbmZpZy5rZXlDb2Rlc1trZXldIHx8IGJ1aWx0SW5LZXlDb2RlO1xuICBpZiAoYnVpbHRJbktleU5hbWUgJiYgZXZlbnRLZXlOYW1lICYmICFjb25maWcua2V5Q29kZXNba2V5XSkge1xuICAgIHJldHVybiBpc0tleU5vdE1hdGNoKGJ1aWx0SW5LZXlOYW1lLCBldmVudEtleU5hbWUpXG4gIH0gZWxzZSBpZiAobWFwcGVkS2V5Q29kZSkge1xuICAgIHJldHVybiBpc0tleU5vdE1hdGNoKG1hcHBlZEtleUNvZGUsIGV2ZW50S2V5Q29kZSlcbiAgfSBlbHNlIGlmIChldmVudEtleU5hbWUpIHtcbiAgICByZXR1cm4gaHlwaGVuYXRlKGV2ZW50S2V5TmFtZSkgIT09IGtleVxuICB9XG59XG5cbi8qICAqL1xuXG4vKipcbiAqIFJ1bnRpbWUgaGVscGVyIGZvciBtZXJnaW5nIHYtYmluZD1cIm9iamVjdFwiIGludG8gYSBWTm9kZSdzIGRhdGEuXG4gKi9cbmZ1bmN0aW9uIGJpbmRPYmplY3RQcm9wcyAoXG4gIGRhdGEsXG4gIHRhZyxcbiAgdmFsdWUsXG4gIGFzUHJvcCxcbiAgaXNTeW5jXG4pIHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgaWYgKCFpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgJ3YtYmluZCB3aXRob3V0IGFyZ3VtZW50IGV4cGVjdHMgYW4gT2JqZWN0IG9yIEFycmF5IHZhbHVlJyxcbiAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHZhbHVlID0gdG9PYmplY3QodmFsdWUpO1xuICAgICAgfVxuICAgICAgdmFyIGhhc2g7XG4gICAgICB2YXIgbG9vcCA9IGZ1bmN0aW9uICgga2V5ICkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAga2V5ID09PSAnY2xhc3MnIHx8XG4gICAgICAgICAga2V5ID09PSAnc3R5bGUnIHx8XG4gICAgICAgICAgaXNSZXNlcnZlZEF0dHJpYnV0ZShrZXkpXG4gICAgICAgICkge1xuICAgICAgICAgIGhhc2ggPSBkYXRhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciB0eXBlID0gZGF0YS5hdHRycyAmJiBkYXRhLmF0dHJzLnR5cGU7XG4gICAgICAgICAgaGFzaCA9IGFzUHJvcCB8fCBjb25maWcubXVzdFVzZVByb3AodGFnLCB0eXBlLCBrZXkpXG4gICAgICAgICAgICA/IGRhdGEuZG9tUHJvcHMgfHwgKGRhdGEuZG9tUHJvcHMgPSB7fSlcbiAgICAgICAgICAgIDogZGF0YS5hdHRycyB8fCAoZGF0YS5hdHRycyA9IHt9KTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY2FtZWxpemVkS2V5ID0gY2FtZWxpemUoa2V5KTtcbiAgICAgICAgdmFyIGh5cGhlbmF0ZWRLZXkgPSBoeXBoZW5hdGUoa2V5KTtcbiAgICAgICAgaWYgKCEoY2FtZWxpemVkS2V5IGluIGhhc2gpICYmICEoaHlwaGVuYXRlZEtleSBpbiBoYXNoKSkge1xuICAgICAgICAgIGhhc2hba2V5XSA9IHZhbHVlW2tleV07XG5cbiAgICAgICAgICBpZiAoaXNTeW5jKSB7XG4gICAgICAgICAgICB2YXIgb24gPSBkYXRhLm9uIHx8IChkYXRhLm9uID0ge30pO1xuICAgICAgICAgICAgb25bKFwidXBkYXRlOlwiICsga2V5KV0gPSBmdW5jdGlvbiAoJGV2ZW50KSB7XG4gICAgICAgICAgICAgIHZhbHVlW2tleV0gPSAkZXZlbnQ7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHZhbHVlKSBsb29wKCBrZXkgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cblxuLyogICovXG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHJlbmRlcmluZyBzdGF0aWMgdHJlZXMuXG4gKi9cbmZ1bmN0aW9uIHJlbmRlclN0YXRpYyAoXG4gIGluZGV4LFxuICBpc0luRm9yXG4pIHtcbiAgdmFyIGNhY2hlZCA9IHRoaXMuX3N0YXRpY1RyZWVzIHx8ICh0aGlzLl9zdGF0aWNUcmVlcyA9IFtdKTtcbiAgdmFyIHRyZWUgPSBjYWNoZWRbaW5kZXhdO1xuICAvLyBpZiBoYXMgYWxyZWFkeS1yZW5kZXJlZCBzdGF0aWMgdHJlZSBhbmQgbm90IGluc2lkZSB2LWZvcixcbiAgLy8gd2UgY2FuIHJldXNlIHRoZSBzYW1lIHRyZWUuXG4gIGlmICh0cmVlICYmICFpc0luRm9yKSB7XG4gICAgcmV0dXJuIHRyZWVcbiAgfVxuICAvLyBvdGhlcndpc2UsIHJlbmRlciBhIGZyZXNoIHRyZWUuXG4gIHRyZWUgPSBjYWNoZWRbaW5kZXhdID0gdGhpcy4kb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnNbaW5kZXhdLmNhbGwoXG4gICAgdGhpcy5fcmVuZGVyUHJveHksXG4gICAgbnVsbCxcbiAgICB0aGlzIC8vIGZvciByZW5kZXIgZm5zIGdlbmVyYXRlZCBmb3IgZnVuY3Rpb25hbCBjb21wb25lbnQgdGVtcGxhdGVzXG4gICk7XG4gIG1hcmtTdGF0aWModHJlZSwgKFwiX19zdGF0aWNfX1wiICsgaW5kZXgpLCBmYWxzZSk7XG4gIHJldHVybiB0cmVlXG59XG5cbi8qKlxuICogUnVudGltZSBoZWxwZXIgZm9yIHYtb25jZS5cbiAqIEVmZmVjdGl2ZWx5IGl0IG1lYW5zIG1hcmtpbmcgdGhlIG5vZGUgYXMgc3RhdGljIHdpdGggYSB1bmlxdWUga2V5LlxuICovXG5mdW5jdGlvbiBtYXJrT25jZSAoXG4gIHRyZWUsXG4gIGluZGV4LFxuICBrZXlcbikge1xuICBtYXJrU3RhdGljKHRyZWUsIChcIl9fb25jZV9fXCIgKyBpbmRleCArIChrZXkgPyAoXCJfXCIgKyBrZXkpIDogXCJcIikpLCB0cnVlKTtcbiAgcmV0dXJuIHRyZWVcbn1cblxuZnVuY3Rpb24gbWFya1N0YXRpYyAoXG4gIHRyZWUsXG4gIGtleSxcbiAgaXNPbmNlXG4pIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodHJlZSkpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyZWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0cmVlW2ldICYmIHR5cGVvZiB0cmVlW2ldICE9PSAnc3RyaW5nJykge1xuICAgICAgICBtYXJrU3RhdGljTm9kZSh0cmVlW2ldLCAoa2V5ICsgXCJfXCIgKyBpKSwgaXNPbmNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbWFya1N0YXRpY05vZGUodHJlZSwga2V5LCBpc09uY2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1hcmtTdGF0aWNOb2RlIChub2RlLCBrZXksIGlzT25jZSkge1xuICBub2RlLmlzU3RhdGljID0gdHJ1ZTtcbiAgbm9kZS5rZXkgPSBrZXk7XG4gIG5vZGUuaXNPbmNlID0gaXNPbmNlO1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gYmluZE9iamVjdExpc3RlbmVycyAoZGF0YSwgdmFsdWUpIHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgaWYgKCFpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICAndi1vbiB3aXRob3V0IGFyZ3VtZW50IGV4cGVjdHMgYW4gT2JqZWN0IHZhbHVlJyxcbiAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG9uID0gZGF0YS5vbiA9IGRhdGEub24gPyBleHRlbmQoe30sIGRhdGEub24pIDoge307XG4gICAgICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICAgICAgdmFyIGV4aXN0aW5nID0gb25ba2V5XTtcbiAgICAgICAgdmFyIG91cnMgPSB2YWx1ZVtrZXldO1xuICAgICAgICBvbltrZXldID0gZXhpc3RpbmcgPyBbXS5jb25jYXQoZXhpc3RpbmcsIG91cnMpIDogb3VycztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIHJlc29sdmVTY29wZWRTbG90cyAoXG4gIGZucywgLy8gc2VlIGZsb3cvdm5vZGVcbiAgcmVzLFxuICAvLyB0aGUgZm9sbG93aW5nIGFyZSBhZGRlZCBpbiAyLjZcbiAgaGFzRHluYW1pY0tleXMsXG4gIGNvbnRlbnRIYXNoS2V5XG4pIHtcbiAgcmVzID0gcmVzIHx8IHsgJHN0YWJsZTogIWhhc0R5bmFtaWNLZXlzIH07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZm5zLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNsb3QgPSBmbnNbaV07XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc2xvdCkpIHtcbiAgICAgIHJlc29sdmVTY29wZWRTbG90cyhzbG90LCByZXMsIGhhc0R5bmFtaWNLZXlzKTtcbiAgICB9IGVsc2UgaWYgKHNsb3QpIHtcbiAgICAgIC8vIG1hcmtlciBmb3IgcmV2ZXJzZSBwcm94eWluZyB2LXNsb3Qgd2l0aG91dCBzY29wZSBvbiB0aGlzLiRzbG90c1xuICAgICAgaWYgKHNsb3QucHJveHkpIHtcbiAgICAgICAgc2xvdC5mbi5wcm94eSA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXNbc2xvdC5rZXldID0gc2xvdC5mbjtcbiAgICB9XG4gIH1cbiAgaWYgKGNvbnRlbnRIYXNoS2V5KSB7XG4gICAgKHJlcykuJGtleSA9IGNvbnRlbnRIYXNoS2V5O1xuICB9XG4gIHJldHVybiByZXNcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGJpbmREeW5hbWljS2V5cyAoYmFzZU9iaiwgdmFsdWVzKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgdmFyIGtleSA9IHZhbHVlc1tpXTtcbiAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycgJiYga2V5KSB7XG4gICAgICBiYXNlT2JqW3ZhbHVlc1tpXV0gPSB2YWx1ZXNbaSArIDFdO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBrZXkgIT09ICcnICYmIGtleSAhPT0gbnVsbCkge1xuICAgICAgLy8gbnVsbCBpcyBhIHNwZWNpYWwgdmFsdWUgZm9yIGV4cGxpY2l0bHkgcmVtb3ZpbmcgYSBiaW5kaW5nXG4gICAgICB3YXJuKFxuICAgICAgICAoXCJJbnZhbGlkIHZhbHVlIGZvciBkeW5hbWljIGRpcmVjdGl2ZSBhcmd1bWVudCAoZXhwZWN0ZWQgc3RyaW5nIG9yIG51bGwpOiBcIiArIGtleSksXG4gICAgICAgIHRoaXNcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiBiYXNlT2JqXG59XG5cbi8vIGhlbHBlciB0byBkeW5hbWljYWxseSBhcHBlbmQgbW9kaWZpZXIgcnVudGltZSBtYXJrZXJzIHRvIGV2ZW50IG5hbWVzLlxuLy8gZW5zdXJlIG9ubHkgYXBwZW5kIHdoZW4gdmFsdWUgaXMgYWxyZWFkeSBzdHJpbmcsIG90aGVyd2lzZSBpdCB3aWxsIGJlIGNhc3Rcbi8vIHRvIHN0cmluZyBhbmQgY2F1c2UgdGhlIHR5cGUgY2hlY2sgdG8gbWlzcy5cbmZ1bmN0aW9uIHByZXBlbmRNb2RpZmllciAodmFsdWUsIHN5bWJvbCkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHN5bWJvbCArIHZhbHVlIDogdmFsdWVcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluc3RhbGxSZW5kZXJIZWxwZXJzICh0YXJnZXQpIHtcbiAgdGFyZ2V0Ll9vID0gbWFya09uY2U7XG4gIHRhcmdldC5fbiA9IHRvTnVtYmVyO1xuICB0YXJnZXQuX3MgPSB0b1N0cmluZztcbiAgdGFyZ2V0Ll9sID0gcmVuZGVyTGlzdDtcbiAgdGFyZ2V0Ll90ID0gcmVuZGVyU2xvdDtcbiAgdGFyZ2V0Ll9xID0gbG9vc2VFcXVhbDtcbiAgdGFyZ2V0Ll9pID0gbG9vc2VJbmRleE9mO1xuICB0YXJnZXQuX20gPSByZW5kZXJTdGF0aWM7XG4gIHRhcmdldC5fZiA9IHJlc29sdmVGaWx0ZXI7XG4gIHRhcmdldC5fayA9IGNoZWNrS2V5Q29kZXM7XG4gIHRhcmdldC5fYiA9IGJpbmRPYmplY3RQcm9wcztcbiAgdGFyZ2V0Ll92ID0gY3JlYXRlVGV4dFZOb2RlO1xuICB0YXJnZXQuX2UgPSBjcmVhdGVFbXB0eVZOb2RlO1xuICB0YXJnZXQuX3UgPSByZXNvbHZlU2NvcGVkU2xvdHM7XG4gIHRhcmdldC5fZyA9IGJpbmRPYmplY3RMaXN0ZW5lcnM7XG4gIHRhcmdldC5fZCA9IGJpbmREeW5hbWljS2V5cztcbiAgdGFyZ2V0Ll9wID0gcHJlcGVuZE1vZGlmaWVyO1xufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gRnVuY3Rpb25hbFJlbmRlckNvbnRleHQgKFxuICBkYXRhLFxuICBwcm9wcyxcbiAgY2hpbGRyZW4sXG4gIHBhcmVudCxcbiAgQ3RvclxuKSB7XG4gIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIHZhciBvcHRpb25zID0gQ3Rvci5vcHRpb25zO1xuICAvLyBlbnN1cmUgdGhlIGNyZWF0ZUVsZW1lbnQgZnVuY3Rpb24gaW4gZnVuY3Rpb25hbCBjb21wb25lbnRzXG4gIC8vIGdldHMgYSB1bmlxdWUgY29udGV4dCAtIHRoaXMgaXMgbmVjZXNzYXJ5IGZvciBjb3JyZWN0IG5hbWVkIHNsb3QgY2hlY2tcbiAgdmFyIGNvbnRleHRWbTtcbiAgaWYgKGhhc093bihwYXJlbnQsICdfdWlkJykpIHtcbiAgICBjb250ZXh0Vm0gPSBPYmplY3QuY3JlYXRlKHBhcmVudCk7XG4gICAgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gICAgY29udGV4dFZtLl9vcmlnaW5hbCA9IHBhcmVudDtcbiAgfSBlbHNlIHtcbiAgICAvLyB0aGUgY29udGV4dCB2bSBwYXNzZWQgaW4gaXMgYSBmdW5jdGlvbmFsIGNvbnRleHQgYXMgd2VsbC5cbiAgICAvLyBpbiB0aGlzIGNhc2Ugd2Ugd2FudCB0byBtYWtlIHN1cmUgd2UgYXJlIGFibGUgdG8gZ2V0IGEgaG9sZCB0byB0aGVcbiAgICAvLyByZWFsIGNvbnRleHQgaW5zdGFuY2UuXG4gICAgY29udGV4dFZtID0gcGFyZW50O1xuICAgIC8vICRmbG93LWRpc2FibGUtbGluZVxuICAgIHBhcmVudCA9IHBhcmVudC5fb3JpZ2luYWw7XG4gIH1cbiAgdmFyIGlzQ29tcGlsZWQgPSBpc1RydWUob3B0aW9ucy5fY29tcGlsZWQpO1xuICB2YXIgbmVlZE5vcm1hbGl6YXRpb24gPSAhaXNDb21waWxlZDtcblxuICB0aGlzLmRhdGEgPSBkYXRhO1xuICB0aGlzLnByb3BzID0gcHJvcHM7XG4gIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gIHRoaXMubGlzdGVuZXJzID0gZGF0YS5vbiB8fCBlbXB0eU9iamVjdDtcbiAgdGhpcy5pbmplY3Rpb25zID0gcmVzb2x2ZUluamVjdChvcHRpb25zLmluamVjdCwgcGFyZW50KTtcbiAgdGhpcy5zbG90cyA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMkMS4kc2xvdHMpIHtcbiAgICAgIG5vcm1hbGl6ZVNjb3BlZFNsb3RzKFxuICAgICAgICBkYXRhLnNjb3BlZFNsb3RzLFxuICAgICAgICB0aGlzJDEuJHNsb3RzID0gcmVzb2x2ZVNsb3RzKGNoaWxkcmVuLCBwYXJlbnQpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcyQxLiRzbG90c1xuICB9O1xuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnc2NvcGVkU2xvdHMnLCAoe1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQgKCkge1xuICAgICAgcmV0dXJuIG5vcm1hbGl6ZVNjb3BlZFNsb3RzKGRhdGEuc2NvcGVkU2xvdHMsIHRoaXMuc2xvdHMoKSlcbiAgICB9XG4gIH0pKTtcblxuICAvLyBzdXBwb3J0IGZvciBjb21waWxlZCBmdW5jdGlvbmFsIHRlbXBsYXRlXG4gIGlmIChpc0NvbXBpbGVkKSB7XG4gICAgLy8gZXhwb3NpbmcgJG9wdGlvbnMgZm9yIHJlbmRlclN0YXRpYygpXG4gICAgdGhpcy4kb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgLy8gcHJlLXJlc29sdmUgc2xvdHMgZm9yIHJlbmRlclNsb3QoKVxuICAgIHRoaXMuJHNsb3RzID0gdGhpcy5zbG90cygpO1xuICAgIHRoaXMuJHNjb3BlZFNsb3RzID0gbm9ybWFsaXplU2NvcGVkU2xvdHMoZGF0YS5zY29wZWRTbG90cywgdGhpcy4kc2xvdHMpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMuX3Njb3BlSWQpIHtcbiAgICB0aGlzLl9jID0gZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHtcbiAgICAgIHZhciB2bm9kZSA9IGNyZWF0ZUVsZW1lbnQoY29udGV4dFZtLCBhLCBiLCBjLCBkLCBuZWVkTm9ybWFsaXphdGlvbik7XG4gICAgICBpZiAodm5vZGUgJiYgIUFycmF5LmlzQXJyYXkodm5vZGUpKSB7XG4gICAgICAgIHZub2RlLmZuU2NvcGVJZCA9IG9wdGlvbnMuX3Njb3BlSWQ7XG4gICAgICAgIHZub2RlLmZuQ29udGV4dCA9IHBhcmVudDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2bm9kZVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fYyA9IGZ1bmN0aW9uIChhLCBiLCBjLCBkKSB7IHJldHVybiBjcmVhdGVFbGVtZW50KGNvbnRleHRWbSwgYSwgYiwgYywgZCwgbmVlZE5vcm1hbGl6YXRpb24pOyB9O1xuICB9XG59XG5cbmluc3RhbGxSZW5kZXJIZWxwZXJzKEZ1bmN0aW9uYWxSZW5kZXJDb250ZXh0LnByb3RvdHlwZSk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUZ1bmN0aW9uYWxDb21wb25lbnQgKFxuICBDdG9yLFxuICBwcm9wc0RhdGEsXG4gIGRhdGEsXG4gIGNvbnRleHRWbSxcbiAgY2hpbGRyZW5cbikge1xuICB2YXIgb3B0aW9ucyA9IEN0b3Iub3B0aW9ucztcbiAgdmFyIHByb3BzID0ge307XG4gIHZhciBwcm9wT3B0aW9ucyA9IG9wdGlvbnMucHJvcHM7XG4gIGlmIChpc0RlZihwcm9wT3B0aW9ucykpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gcHJvcE9wdGlvbnMpIHtcbiAgICAgIHByb3BzW2tleV0gPSB2YWxpZGF0ZVByb3Aoa2V5LCBwcm9wT3B0aW9ucywgcHJvcHNEYXRhIHx8IGVtcHR5T2JqZWN0KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGlzRGVmKGRhdGEuYXR0cnMpKSB7IG1lcmdlUHJvcHMocHJvcHMsIGRhdGEuYXR0cnMpOyB9XG4gICAgaWYgKGlzRGVmKGRhdGEucHJvcHMpKSB7IG1lcmdlUHJvcHMocHJvcHMsIGRhdGEucHJvcHMpOyB9XG4gIH1cblxuICB2YXIgcmVuZGVyQ29udGV4dCA9IG5ldyBGdW5jdGlvbmFsUmVuZGVyQ29udGV4dChcbiAgICBkYXRhLFxuICAgIHByb3BzLFxuICAgIGNoaWxkcmVuLFxuICAgIGNvbnRleHRWbSxcbiAgICBDdG9yXG4gICk7XG5cbiAgdmFyIHZub2RlID0gb3B0aW9ucy5yZW5kZXIuY2FsbChudWxsLCByZW5kZXJDb250ZXh0Ll9jLCByZW5kZXJDb250ZXh0KTtcblxuICBpZiAodm5vZGUgaW5zdGFuY2VvZiBWTm9kZSkge1xuICAgIHJldHVybiBjbG9uZUFuZE1hcmtGdW5jdGlvbmFsUmVzdWx0KHZub2RlLCBkYXRhLCByZW5kZXJDb250ZXh0LnBhcmVudCwgb3B0aW9ucywgcmVuZGVyQ29udGV4dClcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZub2RlKSkge1xuICAgIHZhciB2bm9kZXMgPSBub3JtYWxpemVDaGlsZHJlbih2bm9kZSkgfHwgW107XG4gICAgdmFyIHJlcyA9IG5ldyBBcnJheSh2bm9kZXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzW2ldID0gY2xvbmVBbmRNYXJrRnVuY3Rpb25hbFJlc3VsdCh2bm9kZXNbaV0sIGRhdGEsIHJlbmRlckNvbnRleHQucGFyZW50LCBvcHRpb25zLCByZW5kZXJDb250ZXh0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc1xuICB9XG59XG5cbmZ1bmN0aW9uIGNsb25lQW5kTWFya0Z1bmN0aW9uYWxSZXN1bHQgKHZub2RlLCBkYXRhLCBjb250ZXh0Vm0sIG9wdGlvbnMsIHJlbmRlckNvbnRleHQpIHtcbiAgLy8gIzc4MTcgY2xvbmUgbm9kZSBiZWZvcmUgc2V0dGluZyBmbkNvbnRleHQsIG90aGVyd2lzZSBpZiB0aGUgbm9kZSBpcyByZXVzZWRcbiAgLy8gKGUuZy4gaXQgd2FzIGZyb20gYSBjYWNoZWQgbm9ybWFsIHNsb3QpIHRoZSBmbkNvbnRleHQgY2F1c2VzIG5hbWVkIHNsb3RzXG4gIC8vIHRoYXQgc2hvdWxkIG5vdCBiZSBtYXRjaGVkIHRvIG1hdGNoLlxuICB2YXIgY2xvbmUgPSBjbG9uZVZOb2RlKHZub2RlKTtcbiAgY2xvbmUuZm5Db250ZXh0ID0gY29udGV4dFZtO1xuICBjbG9uZS5mbk9wdGlvbnMgPSBvcHRpb25zO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIChjbG9uZS5kZXZ0b29sc01ldGEgPSBjbG9uZS5kZXZ0b29sc01ldGEgfHwge30pLnJlbmRlckNvbnRleHQgPSByZW5kZXJDb250ZXh0O1xuICB9XG4gIGlmIChkYXRhLnNsb3QpIHtcbiAgICAoY2xvbmUuZGF0YSB8fCAoY2xvbmUuZGF0YSA9IHt9KSkuc2xvdCA9IGRhdGEuc2xvdDtcbiAgfVxuICByZXR1cm4gY2xvbmVcbn1cblxuZnVuY3Rpb24gbWVyZ2VQcm9wcyAodG8sIGZyb20pIHtcbiAgZm9yICh2YXIga2V5IGluIGZyb20pIHtcbiAgICB0b1tjYW1lbGl6ZShrZXkpXSA9IGZyb21ba2V5XTtcbiAgfVxufVxuXG4vKiAgKi9cblxuLyogICovXG5cbi8qICAqL1xuXG4vKiAgKi9cblxuLy8gaW5saW5lIGhvb2tzIHRvIGJlIGludm9rZWQgb24gY29tcG9uZW50IFZOb2RlcyBkdXJpbmcgcGF0Y2hcbnZhciBjb21wb25lbnRWTm9kZUhvb2tzID0ge1xuICBpbml0OiBmdW5jdGlvbiBpbml0ICh2bm9kZSwgaHlkcmF0aW5nKSB7XG4gICAgaWYgKFxuICAgICAgdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgJiZcbiAgICAgICF2bm9kZS5jb21wb25lbnRJbnN0YW5jZS5faXNEZXN0cm95ZWQgJiZcbiAgICAgIHZub2RlLmRhdGEua2VlcEFsaXZlXG4gICAgKSB7XG4gICAgICAvLyBrZXB0LWFsaXZlIGNvbXBvbmVudHMsIHRyZWF0IGFzIGEgcGF0Y2hcbiAgICAgIHZhciBtb3VudGVkTm9kZSA9IHZub2RlOyAvLyB3b3JrIGFyb3VuZCBmbG93XG4gICAgICBjb21wb25lbnRWTm9kZUhvb2tzLnByZXBhdGNoKG1vdW50ZWROb2RlLCBtb3VudGVkTm9kZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBjaGlsZCA9IHZub2RlLmNvbXBvbmVudEluc3RhbmNlID0gY3JlYXRlQ29tcG9uZW50SW5zdGFuY2VGb3JWbm9kZShcbiAgICAgICAgdm5vZGUsXG4gICAgICAgIGFjdGl2ZUluc3RhbmNlXG4gICAgICApO1xuICAgICAgY2hpbGQuJG1vdW50KGh5ZHJhdGluZyA/IHZub2RlLmVsbSA6IHVuZGVmaW5lZCwgaHlkcmF0aW5nKTtcbiAgICB9XG4gIH0sXG5cbiAgcHJlcGF0Y2g6IGZ1bmN0aW9uIHByZXBhdGNoIChvbGRWbm9kZSwgdm5vZGUpIHtcbiAgICB2YXIgb3B0aW9ucyA9IHZub2RlLmNvbXBvbmVudE9wdGlvbnM7XG4gICAgdmFyIGNoaWxkID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgPSBvbGRWbm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICB1cGRhdGVDaGlsZENvbXBvbmVudChcbiAgICAgIGNoaWxkLFxuICAgICAgb3B0aW9ucy5wcm9wc0RhdGEsIC8vIHVwZGF0ZWQgcHJvcHNcbiAgICAgIG9wdGlvbnMubGlzdGVuZXJzLCAvLyB1cGRhdGVkIGxpc3RlbmVyc1xuICAgICAgdm5vZGUsIC8vIG5ldyBwYXJlbnQgdm5vZGVcbiAgICAgIG9wdGlvbnMuY2hpbGRyZW4gLy8gbmV3IGNoaWxkcmVuXG4gICAgKTtcbiAgfSxcblxuICBpbnNlcnQ6IGZ1bmN0aW9uIGluc2VydCAodm5vZGUpIHtcbiAgICB2YXIgY29udGV4dCA9IHZub2RlLmNvbnRleHQ7XG4gICAgdmFyIGNvbXBvbmVudEluc3RhbmNlID0gdm5vZGUuY29tcG9uZW50SW5zdGFuY2U7XG4gICAgaWYgKCFjb21wb25lbnRJbnN0YW5jZS5faXNNb3VudGVkKSB7XG4gICAgICBjYWxsSG9vayhjb21wb25lbnRJbnN0YW5jZSwgJ29uU2VydmljZUNyZWF0ZWQnKTtcbiAgICAgIGNhbGxIb29rKGNvbXBvbmVudEluc3RhbmNlLCAnb25TZXJ2aWNlQXR0YWNoZWQnKTtcbiAgICAgIGNvbXBvbmVudEluc3RhbmNlLl9pc01vdW50ZWQgPSB0cnVlO1xuICAgICAgY2FsbEhvb2soY29tcG9uZW50SW5zdGFuY2UsICdtb3VudGVkJyk7XG4gICAgfVxuICAgIGlmICh2bm9kZS5kYXRhLmtlZXBBbGl2ZSkge1xuICAgICAgaWYgKGNvbnRleHQuX2lzTW91bnRlZCkge1xuICAgICAgICAvLyB2dWUtcm91dGVyIzEyMTJcbiAgICAgICAgLy8gRHVyaW5nIHVwZGF0ZXMsIGEga2VwdC1hbGl2ZSBjb21wb25lbnQncyBjaGlsZCBjb21wb25lbnRzIG1heVxuICAgICAgICAvLyBjaGFuZ2UsIHNvIGRpcmVjdGx5IHdhbGtpbmcgdGhlIHRyZWUgaGVyZSBtYXkgY2FsbCBhY3RpdmF0ZWQgaG9va3NcbiAgICAgICAgLy8gb24gaW5jb3JyZWN0IGNoaWxkcmVuLiBJbnN0ZWFkIHdlIHB1c2ggdGhlbSBpbnRvIGEgcXVldWUgd2hpY2ggd2lsbFxuICAgICAgICAvLyBiZSBwcm9jZXNzZWQgYWZ0ZXIgdGhlIHdob2xlIHBhdGNoIHByb2Nlc3MgZW5kZWQuXG4gICAgICAgIHF1ZXVlQWN0aXZhdGVkQ29tcG9uZW50KGNvbXBvbmVudEluc3RhbmNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQoY29tcG9uZW50SW5zdGFuY2UsIHRydWUgLyogZGlyZWN0ICovKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSAodm5vZGUpIHtcbiAgICB2YXIgY29tcG9uZW50SW5zdGFuY2UgPSB2bm9kZS5jb21wb25lbnRJbnN0YW5jZTtcbiAgICBpZiAoIWNvbXBvbmVudEluc3RhbmNlLl9pc0Rlc3Ryb3llZCkge1xuICAgICAgaWYgKCF2bm9kZS5kYXRhLmtlZXBBbGl2ZSkge1xuICAgICAgICBjb21wb25lbnRJbnN0YW5jZS4kZGVzdHJveSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVhY3RpdmF0ZUNoaWxkQ29tcG9uZW50KGNvbXBvbmVudEluc3RhbmNlLCB0cnVlIC8qIGRpcmVjdCAqLyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG52YXIgaG9va3NUb01lcmdlID0gT2JqZWN0LmtleXMoY29tcG9uZW50Vk5vZGVIb29rcyk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbXBvbmVudCAoXG4gIEN0b3IsXG4gIGRhdGEsXG4gIGNvbnRleHQsXG4gIGNoaWxkcmVuLFxuICB0YWdcbikge1xuICBpZiAoaXNVbmRlZihDdG9yKSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGJhc2VDdG9yID0gY29udGV4dC4kb3B0aW9ucy5fYmFzZTtcblxuICAvLyBwbGFpbiBvcHRpb25zIG9iamVjdDogdHVybiBpdCBpbnRvIGEgY29uc3RydWN0b3JcbiAgaWYgKGlzT2JqZWN0KEN0b3IpKSB7XG4gICAgQ3RvciA9IGJhc2VDdG9yLmV4dGVuZChDdG9yKTtcbiAgfVxuXG4gIC8vIGlmIGF0IHRoaXMgc3RhZ2UgaXQncyBub3QgYSBjb25zdHJ1Y3RvciBvciBhbiBhc3luYyBjb21wb25lbnQgZmFjdG9yeSxcbiAgLy8gcmVqZWN0LlxuICBpZiAodHlwZW9mIEN0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FybigoXCJJbnZhbGlkIENvbXBvbmVudCBkZWZpbml0aW9uOiBcIiArIChTdHJpbmcoQ3RvcikpKSwgY29udGV4dCk7XG4gICAgfVxuICAgIHJldHVyblxuICB9XG5cbiAgLy8gYXN5bmMgY29tcG9uZW50XG4gIHZhciBhc3luY0ZhY3Rvcnk7XG4gIGlmIChpc1VuZGVmKEN0b3IuY2lkKSkge1xuICAgIGFzeW5jRmFjdG9yeSA9IEN0b3I7XG4gICAgQ3RvciA9IHJlc29sdmVBc3luY0NvbXBvbmVudChhc3luY0ZhY3RvcnksIGJhc2VDdG9yKTtcbiAgICBpZiAoQ3RvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyByZXR1cm4gYSBwbGFjZWhvbGRlciBub2RlIGZvciBhc3luYyBjb21wb25lbnQsIHdoaWNoIGlzIHJlbmRlcmVkXG4gICAgICAvLyBhcyBhIGNvbW1lbnQgbm9kZSBidXQgcHJlc2VydmVzIGFsbCB0aGUgcmF3IGluZm9ybWF0aW9uIGZvciB0aGUgbm9kZS5cbiAgICAgIC8vIHRoZSBpbmZvcm1hdGlvbiB3aWxsIGJlIHVzZWQgZm9yIGFzeW5jIHNlcnZlci1yZW5kZXJpbmcgYW5kIGh5ZHJhdGlvbi5cbiAgICAgIHJldHVybiBjcmVhdGVBc3luY1BsYWNlaG9sZGVyKFxuICAgICAgICBhc3luY0ZhY3RvcnksXG4gICAgICAgIGRhdGEsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICB0YWdcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBkYXRhID0gZGF0YSB8fCB7fTtcblxuICAvLyByZXNvbHZlIGNvbnN0cnVjdG9yIG9wdGlvbnMgaW4gY2FzZSBnbG9iYWwgbWl4aW5zIGFyZSBhcHBsaWVkIGFmdGVyXG4gIC8vIGNvbXBvbmVudCBjb25zdHJ1Y3RvciBjcmVhdGlvblxuICByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zKEN0b3IpO1xuXG4gIC8vIHRyYW5zZm9ybSBjb21wb25lbnQgdi1tb2RlbCBkYXRhIGludG8gcHJvcHMgJiBldmVudHNcbiAgaWYgKGlzRGVmKGRhdGEubW9kZWwpKSB7XG4gICAgdHJhbnNmb3JtTW9kZWwoQ3Rvci5vcHRpb25zLCBkYXRhKTtcbiAgfVxuXG4gIC8vIGV4dHJhY3QgcHJvcHNcbiAgdmFyIHByb3BzRGF0YSA9IGV4dHJhY3RQcm9wc0Zyb21WTm9kZURhdGEoZGF0YSwgQ3RvciwgdGFnLCBjb250ZXh0KTsgLy8gZml4ZWQgYnkgeHh4eHh4XG5cbiAgLy8gZnVuY3Rpb25hbCBjb21wb25lbnRcbiAgaWYgKGlzVHJ1ZShDdG9yLm9wdGlvbnMuZnVuY3Rpb25hbCkpIHtcbiAgICByZXR1cm4gY3JlYXRlRnVuY3Rpb25hbENvbXBvbmVudChDdG9yLCBwcm9wc0RhdGEsIGRhdGEsIGNvbnRleHQsIGNoaWxkcmVuKVxuICB9XG5cbiAgLy8gZXh0cmFjdCBsaXN0ZW5lcnMsIHNpbmNlIHRoZXNlIG5lZWRzIHRvIGJlIHRyZWF0ZWQgYXNcbiAgLy8gY2hpbGQgY29tcG9uZW50IGxpc3RlbmVycyBpbnN0ZWFkIG9mIERPTSBsaXN0ZW5lcnNcbiAgdmFyIGxpc3RlbmVycyA9IGRhdGEub247XG4gIC8vIHJlcGxhY2Ugd2l0aCBsaXN0ZW5lcnMgd2l0aCAubmF0aXZlIG1vZGlmaWVyXG4gIC8vIHNvIGl0IGdldHMgcHJvY2Vzc2VkIGR1cmluZyBwYXJlbnQgY29tcG9uZW50IHBhdGNoLlxuICBkYXRhLm9uID0gZGF0YS5uYXRpdmVPbjtcblxuICBpZiAoaXNUcnVlKEN0b3Iub3B0aW9ucy5hYnN0cmFjdCkpIHtcbiAgICAvLyBhYnN0cmFjdCBjb21wb25lbnRzIGRvIG5vdCBrZWVwIGFueXRoaW5nXG4gICAgLy8gb3RoZXIgdGhhbiBwcm9wcyAmIGxpc3RlbmVycyAmIHNsb3RcblxuICAgIC8vIHdvcmsgYXJvdW5kIGZsb3dcbiAgICB2YXIgc2xvdCA9IGRhdGEuc2xvdDtcbiAgICBkYXRhID0ge307XG4gICAgaWYgKHNsb3QpIHtcbiAgICAgIGRhdGEuc2xvdCA9IHNsb3Q7XG4gICAgfVxuICB9XG5cbiAgLy8gaW5zdGFsbCBjb21wb25lbnQgbWFuYWdlbWVudCBob29rcyBvbnRvIHRoZSBwbGFjZWhvbGRlciBub2RlXG4gIGluc3RhbGxDb21wb25lbnRIb29rcyhkYXRhKTtcblxuICAvLyByZXR1cm4gYSBwbGFjZWhvbGRlciB2bm9kZVxuICB2YXIgbmFtZSA9IEN0b3Iub3B0aW9ucy5uYW1lIHx8IHRhZztcbiAgdmFyIHZub2RlID0gbmV3IFZOb2RlKFxuICAgIChcInZ1ZS1jb21wb25lbnQtXCIgKyAoQ3Rvci5jaWQpICsgKG5hbWUgPyAoXCItXCIgKyBuYW1lKSA6ICcnKSksXG4gICAgZGF0YSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29udGV4dCxcbiAgICB7IEN0b3I6IEN0b3IsIHByb3BzRGF0YTogcHJvcHNEYXRhLCBsaXN0ZW5lcnM6IGxpc3RlbmVycywgdGFnOiB0YWcsIGNoaWxkcmVuOiBjaGlsZHJlbiB9LFxuICAgIGFzeW5jRmFjdG9yeVxuICApO1xuXG4gIHJldHVybiB2bm9kZVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21wb25lbnRJbnN0YW5jZUZvclZub2RlIChcbiAgdm5vZGUsIC8vIHdlIGtub3cgaXQncyBNb3VudGVkQ29tcG9uZW50Vk5vZGUgYnV0IGZsb3cgZG9lc24ndFxuICBwYXJlbnQgLy8gYWN0aXZlSW5zdGFuY2UgaW4gbGlmZWN5Y2xlIHN0YXRlXG4pIHtcbiAgdmFyIG9wdGlvbnMgPSB7XG4gICAgX2lzQ29tcG9uZW50OiB0cnVlLFxuICAgIF9wYXJlbnRWbm9kZTogdm5vZGUsXG4gICAgcGFyZW50OiBwYXJlbnRcbiAgfTtcbiAgLy8gY2hlY2sgaW5saW5lLXRlbXBsYXRlIHJlbmRlciBmdW5jdGlvbnNcbiAgdmFyIGlubGluZVRlbXBsYXRlID0gdm5vZGUuZGF0YS5pbmxpbmVUZW1wbGF0ZTtcbiAgaWYgKGlzRGVmKGlubGluZVRlbXBsYXRlKSkge1xuICAgIG9wdGlvbnMucmVuZGVyID0gaW5saW5lVGVtcGxhdGUucmVuZGVyO1xuICAgIG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zID0gaW5saW5lVGVtcGxhdGUuc3RhdGljUmVuZGVyRm5zO1xuICB9XG4gIHJldHVybiBuZXcgdm5vZGUuY29tcG9uZW50T3B0aW9ucy5DdG9yKG9wdGlvbnMpXG59XG5cbmZ1bmN0aW9uIGluc3RhbGxDb21wb25lbnRIb29rcyAoZGF0YSkge1xuICB2YXIgaG9va3MgPSBkYXRhLmhvb2sgfHwgKGRhdGEuaG9vayA9IHt9KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBob29rc1RvTWVyZ2UubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0gaG9va3NUb01lcmdlW2ldO1xuICAgIHZhciBleGlzdGluZyA9IGhvb2tzW2tleV07XG4gICAgdmFyIHRvTWVyZ2UgPSBjb21wb25lbnRWTm9kZUhvb2tzW2tleV07XG4gICAgaWYgKGV4aXN0aW5nICE9PSB0b01lcmdlICYmICEoZXhpc3RpbmcgJiYgZXhpc3RpbmcuX21lcmdlZCkpIHtcbiAgICAgIGhvb2tzW2tleV0gPSBleGlzdGluZyA/IG1lcmdlSG9vayQxKHRvTWVyZ2UsIGV4aXN0aW5nKSA6IHRvTWVyZ2U7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlSG9vayQxIChmMSwgZjIpIHtcbiAgdmFyIG1lcmdlZCA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgLy8gZmxvdyBjb21wbGFpbnMgYWJvdXQgZXh0cmEgYXJncyB3aGljaCBpcyB3aHkgd2UgdXNlIGFueVxuICAgIGYxKGEsIGIpO1xuICAgIGYyKGEsIGIpO1xuICB9O1xuICBtZXJnZWQuX21lcmdlZCA9IHRydWU7XG4gIHJldHVybiBtZXJnZWRcbn1cblxuLy8gdHJhbnNmb3JtIGNvbXBvbmVudCB2LW1vZGVsIGluZm8gKHZhbHVlIGFuZCBjYWxsYmFjaykgaW50b1xuLy8gcHJvcCBhbmQgZXZlbnQgaGFuZGxlciByZXNwZWN0aXZlbHkuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Nb2RlbCAob3B0aW9ucywgZGF0YSkge1xuICB2YXIgcHJvcCA9IChvcHRpb25zLm1vZGVsICYmIG9wdGlvbnMubW9kZWwucHJvcCkgfHwgJ3ZhbHVlJztcbiAgdmFyIGV2ZW50ID0gKG9wdGlvbnMubW9kZWwgJiYgb3B0aW9ucy5tb2RlbC5ldmVudCkgfHwgJ2lucHV0J1xuICA7KGRhdGEuYXR0cnMgfHwgKGRhdGEuYXR0cnMgPSB7fSkpW3Byb3BdID0gZGF0YS5tb2RlbC52YWx1ZTtcbiAgdmFyIG9uID0gZGF0YS5vbiB8fCAoZGF0YS5vbiA9IHt9KTtcbiAgdmFyIGV4aXN0aW5nID0gb25bZXZlbnRdO1xuICB2YXIgY2FsbGJhY2sgPSBkYXRhLm1vZGVsLmNhbGxiYWNrO1xuICBpZiAoaXNEZWYoZXhpc3RpbmcpKSB7XG4gICAgaWYgKFxuICAgICAgQXJyYXkuaXNBcnJheShleGlzdGluZylcbiAgICAgICAgPyBleGlzdGluZy5pbmRleE9mKGNhbGxiYWNrKSA9PT0gLTFcbiAgICAgICAgOiBleGlzdGluZyAhPT0gY2FsbGJhY2tcbiAgICApIHtcbiAgICAgIG9uW2V2ZW50XSA9IFtjYWxsYmFja10uY29uY2F0KGV4aXN0aW5nKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb25bZXZlbnRdID0gY2FsbGJhY2s7XG4gIH1cbn1cblxuLyogICovXG5cbnZhciBTSU1QTEVfTk9STUFMSVpFID0gMTtcbnZhciBBTFdBWVNfTk9STUFMSVpFID0gMjtcblxuLy8gd3JhcHBlciBmdW5jdGlvbiBmb3IgcHJvdmlkaW5nIGEgbW9yZSBmbGV4aWJsZSBpbnRlcmZhY2Vcbi8vIHdpdGhvdXQgZ2V0dGluZyB5ZWxsZWQgYXQgYnkgZmxvd1xuZnVuY3Rpb24gY3JlYXRlRWxlbWVudCAoXG4gIGNvbnRleHQsXG4gIHRhZyxcbiAgZGF0YSxcbiAgY2hpbGRyZW4sXG4gIG5vcm1hbGl6YXRpb25UeXBlLFxuICBhbHdheXNOb3JtYWxpemVcbikge1xuICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSB8fCBpc1ByaW1pdGl2ZShkYXRhKSkge1xuICAgIG5vcm1hbGl6YXRpb25UeXBlID0gY2hpbGRyZW47XG4gICAgY2hpbGRyZW4gPSBkYXRhO1xuICAgIGRhdGEgPSB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKGlzVHJ1ZShhbHdheXNOb3JtYWxpemUpKSB7XG4gICAgbm9ybWFsaXphdGlvblR5cGUgPSBBTFdBWVNfTk9STUFMSVpFO1xuICB9XG4gIHJldHVybiBfY3JlYXRlRWxlbWVudChjb250ZXh0LCB0YWcsIGRhdGEsIGNoaWxkcmVuLCBub3JtYWxpemF0aW9uVHlwZSlcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZUVsZW1lbnQgKFxuICBjb250ZXh0LFxuICB0YWcsXG4gIGRhdGEsXG4gIGNoaWxkcmVuLFxuICBub3JtYWxpemF0aW9uVHlwZVxuKSB7XG4gIGlmIChpc0RlZihkYXRhKSAmJiBpc0RlZigoZGF0YSkuX19vYl9fKSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgIFwiQXZvaWQgdXNpbmcgb2JzZXJ2ZWQgZGF0YSBvYmplY3QgYXMgdm5vZGUgZGF0YTogXCIgKyAoSlNPTi5zdHJpbmdpZnkoZGF0YSkpICsgXCJcXG5cIiArXG4gICAgICAnQWx3YXlzIGNyZWF0ZSBmcmVzaCB2bm9kZSBkYXRhIG9iamVjdHMgaW4gZWFjaCByZW5kZXIhJyxcbiAgICAgIGNvbnRleHRcbiAgICApO1xuICAgIHJldHVybiBjcmVhdGVFbXB0eVZOb2RlKClcbiAgfVxuICAvLyBvYmplY3Qgc3ludGF4IGluIHYtYmluZFxuICBpZiAoaXNEZWYoZGF0YSkgJiYgaXNEZWYoZGF0YS5pcykpIHtcbiAgICB0YWcgPSBkYXRhLmlzO1xuICB9XG4gIGlmICghdGFnKSB7XG4gICAgLy8gaW4gY2FzZSBvZiBjb21wb25lbnQgOmlzIHNldCB0byBmYWxzeSB2YWx1ZVxuICAgIHJldHVybiBjcmVhdGVFbXB0eVZOb2RlKClcbiAgfVxuICAvLyB3YXJuIGFnYWluc3Qgbm9uLXByaW1pdGl2ZSBrZXlcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiZcbiAgICBpc0RlZihkYXRhKSAmJiBpc0RlZihkYXRhLmtleSkgJiYgIWlzUHJpbWl0aXZlKGRhdGEua2V5KVxuICApIHtcbiAgICB7XG4gICAgICB3YXJuKFxuICAgICAgICAnQXZvaWQgdXNpbmcgbm9uLXByaW1pdGl2ZSB2YWx1ZSBhcyBrZXksICcgK1xuICAgICAgICAndXNlIHN0cmluZy9udW1iZXIgdmFsdWUgaW5zdGVhZC4nLFxuICAgICAgICBjb250ZXh0XG4gICAgICApO1xuICAgIH1cbiAgfVxuICAvLyBzdXBwb3J0IHNpbmdsZSBmdW5jdGlvbiBjaGlsZHJlbiBhcyBkZWZhdWx0IHNjb3BlZCBzbG90XG4gIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSAmJlxuICAgIHR5cGVvZiBjaGlsZHJlblswXSA9PT0gJ2Z1bmN0aW9uJ1xuICApIHtcbiAgICBkYXRhID0gZGF0YSB8fCB7fTtcbiAgICBkYXRhLnNjb3BlZFNsb3RzID0geyBkZWZhdWx0OiBjaGlsZHJlblswXSB9O1xuICAgIGNoaWxkcmVuLmxlbmd0aCA9IDA7XG4gIH1cbiAgaWYgKG5vcm1hbGl6YXRpb25UeXBlID09PSBBTFdBWVNfTk9STUFMSVpFKSB7XG4gICAgY2hpbGRyZW4gPSBub3JtYWxpemVDaGlsZHJlbihjaGlsZHJlbik7XG4gIH0gZWxzZSBpZiAobm9ybWFsaXphdGlvblR5cGUgPT09IFNJTVBMRV9OT1JNQUxJWkUpIHtcbiAgICBjaGlsZHJlbiA9IHNpbXBsZU5vcm1hbGl6ZUNoaWxkcmVuKGNoaWxkcmVuKTtcbiAgfVxuICB2YXIgdm5vZGUsIG5zO1xuICBpZiAodHlwZW9mIHRhZyA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgQ3RvcjtcbiAgICBucyA9IChjb250ZXh0LiR2bm9kZSAmJiBjb250ZXh0LiR2bm9kZS5ucykgfHwgY29uZmlnLmdldFRhZ05hbWVzcGFjZSh0YWcpO1xuICAgIGlmIChjb25maWcuaXNSZXNlcnZlZFRhZyh0YWcpKSB7XG4gICAgICAvLyBwbGF0Zm9ybSBidWlsdC1pbiBlbGVtZW50c1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaXNEZWYoZGF0YSkgJiYgaXNEZWYoZGF0YS5uYXRpdmVPbikpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAoXCJUaGUgLm5hdGl2ZSBtb2RpZmllciBmb3Igdi1vbiBpcyBvbmx5IHZhbGlkIG9uIGNvbXBvbmVudHMgYnV0IGl0IHdhcyB1c2VkIG9uIDxcIiArIHRhZyArIFwiPi5cIiksXG4gICAgICAgICAgY29udGV4dFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdm5vZGUgPSBuZXcgVk5vZGUoXG4gICAgICAgIGNvbmZpZy5wYXJzZVBsYXRmb3JtVGFnTmFtZSh0YWcpLCBkYXRhLCBjaGlsZHJlbixcbiAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNvbnRleHRcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICgoIWRhdGEgfHwgIWRhdGEucHJlKSAmJiBpc0RlZihDdG9yID0gcmVzb2x2ZUFzc2V0KGNvbnRleHQuJG9wdGlvbnMsICdjb21wb25lbnRzJywgdGFnKSkpIHtcbiAgICAgIC8vIGNvbXBvbmVudFxuICAgICAgdm5vZGUgPSBjcmVhdGVDb21wb25lbnQoQ3RvciwgZGF0YSwgY29udGV4dCwgY2hpbGRyZW4sIHRhZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHVua25vd24gb3IgdW5saXN0ZWQgbmFtZXNwYWNlZCBlbGVtZW50c1xuICAgICAgLy8gY2hlY2sgYXQgcnVudGltZSBiZWNhdXNlIGl0IG1heSBnZXQgYXNzaWduZWQgYSBuYW1lc3BhY2Ugd2hlbiBpdHNcbiAgICAgIC8vIHBhcmVudCBub3JtYWxpemVzIGNoaWxkcmVuXG4gICAgICB2bm9kZSA9IG5ldyBWTm9kZShcbiAgICAgICAgdGFnLCBkYXRhLCBjaGlsZHJlbixcbiAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNvbnRleHRcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIGRpcmVjdCBjb21wb25lbnQgb3B0aW9ucyAvIGNvbnN0cnVjdG9yXG4gICAgdm5vZGUgPSBjcmVhdGVDb21wb25lbnQodGFnLCBkYXRhLCBjb250ZXh0LCBjaGlsZHJlbik7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodm5vZGUpKSB7XG4gICAgcmV0dXJuIHZub2RlXG4gIH0gZWxzZSBpZiAoaXNEZWYodm5vZGUpKSB7XG4gICAgaWYgKGlzRGVmKG5zKSkgeyBhcHBseU5TKHZub2RlLCBucyk7IH1cbiAgICBpZiAoaXNEZWYoZGF0YSkpIHsgcmVnaXN0ZXJEZWVwQmluZGluZ3MoZGF0YSk7IH1cbiAgICByZXR1cm4gdm5vZGVcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY3JlYXRlRW1wdHlWTm9kZSgpXG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlOUyAodm5vZGUsIG5zLCBmb3JjZSkge1xuICB2bm9kZS5ucyA9IG5zO1xuICBpZiAodm5vZGUudGFnID09PSAnZm9yZWlnbk9iamVjdCcpIHtcbiAgICAvLyB1c2UgZGVmYXVsdCBuYW1lc3BhY2UgaW5zaWRlIGZvcmVpZ25PYmplY3RcbiAgICBucyA9IHVuZGVmaW5lZDtcbiAgICBmb3JjZSA9IHRydWU7XG4gIH1cbiAgaWYgKGlzRGVmKHZub2RlLmNoaWxkcmVuKSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gdm5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB2YXIgY2hpbGQgPSB2bm9kZS5jaGlsZHJlbltpXTtcbiAgICAgIGlmIChpc0RlZihjaGlsZC50YWcpICYmIChcbiAgICAgICAgaXNVbmRlZihjaGlsZC5ucykgfHwgKGlzVHJ1ZShmb3JjZSkgJiYgY2hpbGQudGFnICE9PSAnc3ZnJykpKSB7XG4gICAgICAgIGFwcGx5TlMoY2hpbGQsIG5zLCBmb3JjZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIHJlZiAjNTMxOFxuLy8gbmVjZXNzYXJ5IHRvIGVuc3VyZSBwYXJlbnQgcmUtcmVuZGVyIHdoZW4gZGVlcCBiaW5kaW5ncyBsaWtlIDpzdHlsZSBhbmRcbi8vIDpjbGFzcyBhcmUgdXNlZCBvbiBzbG90IG5vZGVzXG5mdW5jdGlvbiByZWdpc3RlckRlZXBCaW5kaW5ncyAoZGF0YSkge1xuICBpZiAoaXNPYmplY3QoZGF0YS5zdHlsZSkpIHtcbiAgICB0cmF2ZXJzZShkYXRhLnN0eWxlKTtcbiAgfVxuICBpZiAoaXNPYmplY3QoZGF0YS5jbGFzcykpIHtcbiAgICB0cmF2ZXJzZShkYXRhLmNsYXNzKTtcbiAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdFJlbmRlciAodm0pIHtcbiAgdm0uX3Zub2RlID0gbnVsbDsgLy8gdGhlIHJvb3Qgb2YgdGhlIGNoaWxkIHRyZWVcbiAgdm0uX3N0YXRpY1RyZWVzID0gbnVsbDsgLy8gdi1vbmNlIGNhY2hlZCB0cmVlc1xuICB2YXIgb3B0aW9ucyA9IHZtLiRvcHRpb25zO1xuICB2YXIgcGFyZW50Vm5vZGUgPSB2bS4kdm5vZGUgPSBvcHRpb25zLl9wYXJlbnRWbm9kZTsgLy8gdGhlIHBsYWNlaG9sZGVyIG5vZGUgaW4gcGFyZW50IHRyZWVcbiAgdmFyIHJlbmRlckNvbnRleHQgPSBwYXJlbnRWbm9kZSAmJiBwYXJlbnRWbm9kZS5jb250ZXh0O1xuICB2bS4kc2xvdHMgPSByZXNvbHZlU2xvdHMob3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW4sIHJlbmRlckNvbnRleHQpO1xuICB2bS4kc2NvcGVkU2xvdHMgPSBlbXB0eU9iamVjdDtcbiAgLy8gYmluZCB0aGUgY3JlYXRlRWxlbWVudCBmbiB0byB0aGlzIGluc3RhbmNlXG4gIC8vIHNvIHRoYXQgd2UgZ2V0IHByb3BlciByZW5kZXIgY29udGV4dCBpbnNpZGUgaXQuXG4gIC8vIGFyZ3Mgb3JkZXI6IHRhZywgZGF0YSwgY2hpbGRyZW4sIG5vcm1hbGl6YXRpb25UeXBlLCBhbHdheXNOb3JtYWxpemVcbiAgLy8gaW50ZXJuYWwgdmVyc2lvbiBpcyB1c2VkIGJ5IHJlbmRlciBmdW5jdGlvbnMgY29tcGlsZWQgZnJvbSB0ZW1wbGF0ZXNcbiAgdm0uX2MgPSBmdW5jdGlvbiAoYSwgYiwgYywgZCkgeyByZXR1cm4gY3JlYXRlRWxlbWVudCh2bSwgYSwgYiwgYywgZCwgZmFsc2UpOyB9O1xuICAvLyBub3JtYWxpemF0aW9uIGlzIGFsd2F5cyBhcHBsaWVkIGZvciB0aGUgcHVibGljIHZlcnNpb24sIHVzZWQgaW5cbiAgLy8gdXNlci13cml0dGVuIHJlbmRlciBmdW5jdGlvbnMuXG4gIHZtLiRjcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24gKGEsIGIsIGMsIGQpIHsgcmV0dXJuIGNyZWF0ZUVsZW1lbnQodm0sIGEsIGIsIGMsIGQsIHRydWUpOyB9O1xuXG4gIC8vICRhdHRycyAmICRsaXN0ZW5lcnMgYXJlIGV4cG9zZWQgZm9yIGVhc2llciBIT0MgY3JlYXRpb24uXG4gIC8vIHRoZXkgbmVlZCB0byBiZSByZWFjdGl2ZSBzbyB0aGF0IEhPQ3MgdXNpbmcgdGhlbSBhcmUgYWx3YXlzIHVwZGF0ZWRcbiAgdmFyIHBhcmVudERhdGEgPSBwYXJlbnRWbm9kZSAmJiBwYXJlbnRWbm9kZS5kYXRhO1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgZGVmaW5lUmVhY3RpdmUkJDEodm0sICckYXR0cnMnLCBwYXJlbnREYXRhICYmIHBhcmVudERhdGEuYXR0cnMgfHwgZW1wdHlPYmplY3QsIGZ1bmN0aW9uICgpIHtcbiAgICAgICFpc1VwZGF0aW5nQ2hpbGRDb21wb25lbnQgJiYgd2FybihcIiRhdHRycyBpcyByZWFkb25seS5cIiwgdm0pO1xuICAgIH0sIHRydWUpO1xuICAgIGRlZmluZVJlYWN0aXZlJCQxKHZtLCAnJGxpc3RlbmVycycsIG9wdGlvbnMuX3BhcmVudExpc3RlbmVycyB8fCBlbXB0eU9iamVjdCwgZnVuY3Rpb24gKCkge1xuICAgICAgIWlzVXBkYXRpbmdDaGlsZENvbXBvbmVudCAmJiB3YXJuKFwiJGxpc3RlbmVycyBpcyByZWFkb25seS5cIiwgdm0pO1xuICAgIH0sIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIGRlZmluZVJlYWN0aXZlJCQxKHZtLCAnJGF0dHJzJywgcGFyZW50RGF0YSAmJiBwYXJlbnREYXRhLmF0dHJzIHx8IGVtcHR5T2JqZWN0LCBudWxsLCB0cnVlKTtcbiAgICBkZWZpbmVSZWFjdGl2ZSQkMSh2bSwgJyRsaXN0ZW5lcnMnLCBvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnMgfHwgZW1wdHlPYmplY3QsIG51bGwsIHRydWUpO1xuICB9XG59XG5cbnZhciBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UgPSBudWxsO1xuXG5mdW5jdGlvbiByZW5kZXJNaXhpbiAoVnVlKSB7XG4gIC8vIGluc3RhbGwgcnVudGltZSBjb252ZW5pZW5jZSBoZWxwZXJzXG4gIGluc3RhbGxSZW5kZXJIZWxwZXJzKFZ1ZS5wcm90b3R5cGUpO1xuXG4gIFZ1ZS5wcm90b3R5cGUuJG5leHRUaWNrID0gZnVuY3Rpb24gKGZuKSB7XG4gICAgcmV0dXJuIG5leHRUaWNrKGZuLCB0aGlzKVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuX3JlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIHZhciByZWYgPSB2bS4kb3B0aW9ucztcbiAgICB2YXIgcmVuZGVyID0gcmVmLnJlbmRlcjtcbiAgICB2YXIgX3BhcmVudFZub2RlID0gcmVmLl9wYXJlbnRWbm9kZTtcblxuICAgIGlmIChfcGFyZW50Vm5vZGUpIHtcbiAgICAgIHZtLiRzY29wZWRTbG90cyA9IG5vcm1hbGl6ZVNjb3BlZFNsb3RzKFxuICAgICAgICBfcGFyZW50Vm5vZGUuZGF0YS5zY29wZWRTbG90cyxcbiAgICAgICAgdm0uJHNsb3RzLFxuICAgICAgICB2bS4kc2NvcGVkU2xvdHNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gc2V0IHBhcmVudCB2bm9kZS4gdGhpcyBhbGxvd3MgcmVuZGVyIGZ1bmN0aW9ucyB0byBoYXZlIGFjY2Vzc1xuICAgIC8vIHRvIHRoZSBkYXRhIG9uIHRoZSBwbGFjZWhvbGRlciBub2RlLlxuICAgIHZtLiR2bm9kZSA9IF9wYXJlbnRWbm9kZTtcbiAgICAvLyByZW5kZXIgc2VsZlxuICAgIHZhciB2bm9kZTtcbiAgICB0cnkge1xuICAgICAgLy8gVGhlcmUncyBubyBuZWVkIHRvIG1haW50YWluIGEgc3RhY2sgYmVjYXVzZSBhbGwgcmVuZGVyIGZucyBhcmUgY2FsbGVkXG4gICAgICAvLyBzZXBhcmF0ZWx5IGZyb20gb25lIGFub3RoZXIuIE5lc3RlZCBjb21wb25lbnQncyByZW5kZXIgZm5zIGFyZSBjYWxsZWRcbiAgICAgIC8vIHdoZW4gcGFyZW50IGNvbXBvbmVudCBpcyBwYXRjaGVkLlxuICAgICAgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlID0gdm07XG4gICAgICB2bm9kZSA9IHJlbmRlci5jYWxsKHZtLl9yZW5kZXJQcm94eSwgdm0uJGNyZWF0ZUVsZW1lbnQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGhhbmRsZUVycm9yKGUsIHZtLCBcInJlbmRlclwiKTtcbiAgICAgIC8vIHJldHVybiBlcnJvciByZW5kZXIgcmVzdWx0LFxuICAgICAgLy8gb3IgcHJldmlvdXMgdm5vZGUgdG8gcHJldmVudCByZW5kZXIgZXJyb3IgY2F1c2luZyBibGFuayBjb21wb25lbnRcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB2bS4kb3B0aW9ucy5yZW5kZXJFcnJvcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHZub2RlID0gdm0uJG9wdGlvbnMucmVuZGVyRXJyb3IuY2FsbCh2bS5fcmVuZGVyUHJveHksIHZtLiRjcmVhdGVFbGVtZW50LCBlKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGhhbmRsZUVycm9yKGUsIHZtLCBcInJlbmRlckVycm9yXCIpO1xuICAgICAgICAgIHZub2RlID0gdm0uX3Zub2RlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2bm9kZSA9IHZtLl92bm9kZTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgY3VycmVudFJlbmRlcmluZ0luc3RhbmNlID0gbnVsbDtcbiAgICB9XG4gICAgLy8gaWYgdGhlIHJldHVybmVkIGFycmF5IGNvbnRhaW5zIG9ubHkgYSBzaW5nbGUgbm9kZSwgYWxsb3cgaXRcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2bm9kZSkgJiYgdm5vZGUubGVuZ3RoID09PSAxKSB7XG4gICAgICB2bm9kZSA9IHZub2RlWzBdO1xuICAgIH1cbiAgICAvLyByZXR1cm4gZW1wdHkgdm5vZGUgaW4gY2FzZSB0aGUgcmVuZGVyIGZ1bmN0aW9uIGVycm9yZWQgb3V0XG4gICAgaWYgKCEodm5vZGUgaW5zdGFuY2VvZiBWTm9kZSkpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIEFycmF5LmlzQXJyYXkodm5vZGUpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgJ011bHRpcGxlIHJvb3Qgbm9kZXMgcmV0dXJuZWQgZnJvbSByZW5kZXIgZnVuY3Rpb24uIFJlbmRlciBmdW5jdGlvbiAnICtcbiAgICAgICAgICAnc2hvdWxkIHJldHVybiBhIHNpbmdsZSByb290IG5vZGUuJyxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdm5vZGUgPSBjcmVhdGVFbXB0eVZOb2RlKCk7XG4gICAgfVxuICAgIC8vIHNldCBwYXJlbnRcbiAgICB2bm9kZS5wYXJlbnQgPSBfcGFyZW50Vm5vZGU7XG4gICAgcmV0dXJuIHZub2RlXG4gIH07XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBlbnN1cmVDdG9yIChjb21wLCBiYXNlKSB7XG4gIGlmIChcbiAgICBjb21wLl9fZXNNb2R1bGUgfHxcbiAgICAoaGFzU3ltYm9sICYmIGNvbXBbU3ltYm9sLnRvU3RyaW5nVGFnXSA9PT0gJ01vZHVsZScpXG4gICkge1xuICAgIGNvbXAgPSBjb21wLmRlZmF1bHQ7XG4gIH1cbiAgcmV0dXJuIGlzT2JqZWN0KGNvbXApXG4gICAgPyBiYXNlLmV4dGVuZChjb21wKVxuICAgIDogY29tcFxufVxuXG5mdW5jdGlvbiBjcmVhdGVBc3luY1BsYWNlaG9sZGVyIChcbiAgZmFjdG9yeSxcbiAgZGF0YSxcbiAgY29udGV4dCxcbiAgY2hpbGRyZW4sXG4gIHRhZ1xuKSB7XG4gIHZhciBub2RlID0gY3JlYXRlRW1wdHlWTm9kZSgpO1xuICBub2RlLmFzeW5jRmFjdG9yeSA9IGZhY3Rvcnk7XG4gIG5vZGUuYXN5bmNNZXRhID0geyBkYXRhOiBkYXRhLCBjb250ZXh0OiBjb250ZXh0LCBjaGlsZHJlbjogY2hpbGRyZW4sIHRhZzogdGFnIH07XG4gIHJldHVybiBub2RlXG59XG5cbmZ1bmN0aW9uIHJlc29sdmVBc3luY0NvbXBvbmVudCAoXG4gIGZhY3RvcnksXG4gIGJhc2VDdG9yXG4pIHtcbiAgaWYgKGlzVHJ1ZShmYWN0b3J5LmVycm9yKSAmJiBpc0RlZihmYWN0b3J5LmVycm9yQ29tcCkpIHtcbiAgICByZXR1cm4gZmFjdG9yeS5lcnJvckNvbXBcbiAgfVxuXG4gIGlmIChpc0RlZihmYWN0b3J5LnJlc29sdmVkKSkge1xuICAgIHJldHVybiBmYWN0b3J5LnJlc29sdmVkXG4gIH1cblxuICB2YXIgb3duZXIgPSBjdXJyZW50UmVuZGVyaW5nSW5zdGFuY2U7XG4gIGlmIChvd25lciAmJiBpc0RlZihmYWN0b3J5Lm93bmVycykgJiYgZmFjdG9yeS5vd25lcnMuaW5kZXhPZihvd25lcikgPT09IC0xKSB7XG4gICAgLy8gYWxyZWFkeSBwZW5kaW5nXG4gICAgZmFjdG9yeS5vd25lcnMucHVzaChvd25lcik7XG4gIH1cblxuICBpZiAoaXNUcnVlKGZhY3RvcnkubG9hZGluZykgJiYgaXNEZWYoZmFjdG9yeS5sb2FkaW5nQ29tcCkpIHtcbiAgICByZXR1cm4gZmFjdG9yeS5sb2FkaW5nQ29tcFxuICB9XG5cbiAgaWYgKG93bmVyICYmICFpc0RlZihmYWN0b3J5Lm93bmVycykpIHtcbiAgICB2YXIgb3duZXJzID0gZmFjdG9yeS5vd25lcnMgPSBbb3duZXJdO1xuICAgIHZhciBzeW5jID0gdHJ1ZTtcbiAgICB2YXIgdGltZXJMb2FkaW5nID0gbnVsbDtcbiAgICB2YXIgdGltZXJUaW1lb3V0ID0gbnVsbFxuXG4gICAgOyhvd25lcikuJG9uKCdob29rOmRlc3Ryb3llZCcsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHJlbW92ZShvd25lcnMsIG93bmVyKTsgfSk7XG5cbiAgICB2YXIgZm9yY2VSZW5kZXIgPSBmdW5jdGlvbiAocmVuZGVyQ29tcGxldGVkKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbCA9IG93bmVycy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgKG93bmVyc1tpXSkuJGZvcmNlVXBkYXRlKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZW5kZXJDb21wbGV0ZWQpIHtcbiAgICAgICAgb3duZXJzLmxlbmd0aCA9IDA7XG4gICAgICAgIGlmICh0aW1lckxvYWRpbmcgIT09IG51bGwpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXJMb2FkaW5nKTtcbiAgICAgICAgICB0aW1lckxvYWRpbmcgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aW1lclRpbWVvdXQgIT09IG51bGwpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXJUaW1lb3V0KTtcbiAgICAgICAgICB0aW1lclRpbWVvdXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZhciByZXNvbHZlID0gb25jZShmdW5jdGlvbiAocmVzKSB7XG4gICAgICAvLyBjYWNoZSByZXNvbHZlZFxuICAgICAgZmFjdG9yeS5yZXNvbHZlZCA9IGVuc3VyZUN0b3IocmVzLCBiYXNlQ3Rvcik7XG4gICAgICAvLyBpbnZva2UgY2FsbGJhY2tzIG9ubHkgaWYgdGhpcyBpcyBub3QgYSBzeW5jaHJvbm91cyByZXNvbHZlXG4gICAgICAvLyAoYXN5bmMgcmVzb2x2ZXMgYXJlIHNoaW1tZWQgYXMgc3luY2hyb25vdXMgZHVyaW5nIFNTUilcbiAgICAgIGlmICghc3luYykge1xuICAgICAgICBmb3JjZVJlbmRlcih0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG93bmVycy5sZW5ndGggPSAwO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdmFyIHJlamVjdCA9IG9uY2UoZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIkZhaWxlZCB0byByZXNvbHZlIGFzeW5jIGNvbXBvbmVudDogXCIgKyAoU3RyaW5nKGZhY3RvcnkpKSArXG4gICAgICAgIChyZWFzb24gPyAoXCJcXG5SZWFzb246IFwiICsgcmVhc29uKSA6ICcnKVxuICAgICAgKTtcbiAgICAgIGlmIChpc0RlZihmYWN0b3J5LmVycm9yQ29tcCkpIHtcbiAgICAgICAgZmFjdG9yeS5lcnJvciA9IHRydWU7XG4gICAgICAgIGZvcmNlUmVuZGVyKHRydWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdmFyIHJlcyA9IGZhY3RvcnkocmVzb2x2ZSwgcmVqZWN0KTtcblxuICAgIGlmIChpc09iamVjdChyZXMpKSB7XG4gICAgICBpZiAoaXNQcm9taXNlKHJlcykpIHtcbiAgICAgICAgLy8gKCkgPT4gUHJvbWlzZVxuICAgICAgICBpZiAoaXNVbmRlZihmYWN0b3J5LnJlc29sdmVkKSkge1xuICAgICAgICAgIHJlcy50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNQcm9taXNlKHJlcy5jb21wb25lbnQpKSB7XG4gICAgICAgIHJlcy5jb21wb25lbnQudGhlbihyZXNvbHZlLCByZWplY3QpO1xuXG4gICAgICAgIGlmIChpc0RlZihyZXMuZXJyb3IpKSB7XG4gICAgICAgICAgZmFjdG9yeS5lcnJvckNvbXAgPSBlbnN1cmVDdG9yKHJlcy5lcnJvciwgYmFzZUN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRGVmKHJlcy5sb2FkaW5nKSkge1xuICAgICAgICAgIGZhY3RvcnkubG9hZGluZ0NvbXAgPSBlbnN1cmVDdG9yKHJlcy5sb2FkaW5nLCBiYXNlQ3Rvcik7XG4gICAgICAgICAgaWYgKHJlcy5kZWxheSA9PT0gMCkge1xuICAgICAgICAgICAgZmFjdG9yeS5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGltZXJMb2FkaW5nID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHRpbWVyTG9hZGluZyA9IG51bGw7XG4gICAgICAgICAgICAgIGlmIChpc1VuZGVmKGZhY3RvcnkucmVzb2x2ZWQpICYmIGlzVW5kZWYoZmFjdG9yeS5lcnJvcikpIHtcbiAgICAgICAgICAgICAgICBmYWN0b3J5LmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGZvcmNlUmVuZGVyKGZhbHNlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgcmVzLmRlbGF5IHx8IDIwMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRGVmKHJlcy50aW1lb3V0KSkge1xuICAgICAgICAgIHRpbWVyVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGltZXJUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChpc1VuZGVmKGZhY3RvcnkucmVzb2x2ZWQpKSB7XG4gICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nXG4gICAgICAgICAgICAgICAgICA/IChcInRpbWVvdXQgKFwiICsgKHJlcy50aW1lb3V0KSArIFwibXMpXCIpXG4gICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCByZXMudGltZW91dCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBzeW5jID0gZmFsc2U7XG4gICAgLy8gcmV0dXJuIGluIGNhc2UgcmVzb2x2ZWQgc3luY2hyb25vdXNseVxuICAgIHJldHVybiBmYWN0b3J5LmxvYWRpbmdcbiAgICAgID8gZmFjdG9yeS5sb2FkaW5nQ29tcFxuICAgICAgOiBmYWN0b3J5LnJlc29sdmVkXG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGlzQXN5bmNQbGFjZWhvbGRlciAobm9kZSkge1xuICByZXR1cm4gbm9kZS5pc0NvbW1lbnQgJiYgbm9kZS5hc3luY0ZhY3Rvcnlcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGdldEZpcnN0Q29tcG9uZW50Q2hpbGQgKGNoaWxkcmVuKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBjID0gY2hpbGRyZW5baV07XG4gICAgICBpZiAoaXNEZWYoYykgJiYgKGlzRGVmKGMuY29tcG9uZW50T3B0aW9ucykgfHwgaXNBc3luY1BsYWNlaG9sZGVyKGMpKSkge1xuICAgICAgICByZXR1cm4gY1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vKiAgKi9cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRFdmVudHMgKHZtKSB7XG4gIHZtLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB2bS5faGFzSG9va0V2ZW50ID0gZmFsc2U7XG4gIC8vIGluaXQgcGFyZW50IGF0dGFjaGVkIGV2ZW50c1xuICB2YXIgbGlzdGVuZXJzID0gdm0uJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycztcbiAgaWYgKGxpc3RlbmVycykge1xuICAgIHVwZGF0ZUNvbXBvbmVudExpc3RlbmVycyh2bSwgbGlzdGVuZXJzKTtcbiAgfVxufVxuXG52YXIgdGFyZ2V0O1xuXG5mdW5jdGlvbiBhZGQgKGV2ZW50LCBmbikge1xuICB0YXJnZXQuJG9uKGV2ZW50LCBmbik7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZSQxIChldmVudCwgZm4pIHtcbiAgdGFyZ2V0LiRvZmYoZXZlbnQsIGZuKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlT25jZUhhbmRsZXIgKGV2ZW50LCBmbikge1xuICB2YXIgX3RhcmdldCA9IHRhcmdldDtcbiAgcmV0dXJuIGZ1bmN0aW9uIG9uY2VIYW5kbGVyICgpIHtcbiAgICB2YXIgcmVzID0gZm4uYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICBpZiAocmVzICE9PSBudWxsKSB7XG4gICAgICBfdGFyZ2V0LiRvZmYoZXZlbnQsIG9uY2VIYW5kbGVyKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlQ29tcG9uZW50TGlzdGVuZXJzIChcbiAgdm0sXG4gIGxpc3RlbmVycyxcbiAgb2xkTGlzdGVuZXJzXG4pIHtcbiAgdGFyZ2V0ID0gdm07XG4gIHVwZGF0ZUxpc3RlbmVycyhsaXN0ZW5lcnMsIG9sZExpc3RlbmVycyB8fCB7fSwgYWRkLCByZW1vdmUkMSwgY3JlYXRlT25jZUhhbmRsZXIsIHZtKTtcbiAgdGFyZ2V0ID0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBldmVudHNNaXhpbiAoVnVlKSB7XG4gIHZhciBob29rUkUgPSAvXmhvb2s6LztcbiAgVnVlLnByb3RvdHlwZS4kb24gPSBmdW5jdGlvbiAoZXZlbnQsIGZuKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAoQXJyYXkuaXNBcnJheShldmVudCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gZXZlbnQubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHZtLiRvbihldmVudFtpXSwgZm4pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAodm0uX2V2ZW50c1tldmVudF0gfHwgKHZtLl9ldmVudHNbZXZlbnRdID0gW10pKS5wdXNoKGZuKTtcbiAgICAgIC8vIG9wdGltaXplIGhvb2s6ZXZlbnQgY29zdCBieSB1c2luZyBhIGJvb2xlYW4gZmxhZyBtYXJrZWQgYXQgcmVnaXN0cmF0aW9uXG4gICAgICAvLyBpbnN0ZWFkIG9mIGEgaGFzaCBsb29rdXBcbiAgICAgIGlmIChob29rUkUudGVzdChldmVudCkpIHtcbiAgICAgICAgdm0uX2hhc0hvb2tFdmVudCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2bVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJG9uY2UgPSBmdW5jdGlvbiAoZXZlbnQsIGZuKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBmdW5jdGlvbiBvbiAoKSB7XG4gICAgICB2bS4kb2ZmKGV2ZW50LCBvbik7XG4gICAgICBmbi5hcHBseSh2bSwgYXJndW1lbnRzKTtcbiAgICB9XG4gICAgb24uZm4gPSBmbjtcbiAgICB2bS4kb24oZXZlbnQsIG9uKTtcbiAgICByZXR1cm4gdm1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRvZmYgPSBmdW5jdGlvbiAoZXZlbnQsIGZuKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICAvLyBhbGxcbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgIHZtLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgcmV0dXJuIHZtXG4gICAgfVxuICAgIC8vIGFycmF5IG9mIGV2ZW50c1xuICAgIGlmIChBcnJheS5pc0FycmF5KGV2ZW50KSkge1xuICAgICAgZm9yICh2YXIgaSQxID0gMCwgbCA9IGV2ZW50Lmxlbmd0aDsgaSQxIDwgbDsgaSQxKyspIHtcbiAgICAgICAgdm0uJG9mZihldmVudFtpJDFdLCBmbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4gICAgLy8gc3BlY2lmaWMgZXZlbnRcbiAgICB2YXIgY2JzID0gdm0uX2V2ZW50c1tldmVudF07XG4gICAgaWYgKCFjYnMpIHtcbiAgICAgIHJldHVybiB2bVxuICAgIH1cbiAgICBpZiAoIWZuKSB7XG4gICAgICB2bS5fZXZlbnRzW2V2ZW50XSA9IG51bGw7XG4gICAgICByZXR1cm4gdm1cbiAgICB9XG4gICAgLy8gc3BlY2lmaWMgaGFuZGxlclxuICAgIHZhciBjYjtcbiAgICB2YXIgaSA9IGNicy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgY2IgPSBjYnNbaV07XG4gICAgICBpZiAoY2IgPT09IGZuIHx8IGNiLmZuID09PSBmbikge1xuICAgICAgICBjYnMuc3BsaWNlKGksIDEpO1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdm1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRlbWl0ID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIGxvd2VyQ2FzZUV2ZW50ID0gZXZlbnQudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChsb3dlckNhc2VFdmVudCAhPT0gZXZlbnQgJiYgdm0uX2V2ZW50c1tsb3dlckNhc2VFdmVudF0pIHtcbiAgICAgICAgdGlwKFxuICAgICAgICAgIFwiRXZlbnQgXFxcIlwiICsgbG93ZXJDYXNlRXZlbnQgKyBcIlxcXCIgaXMgZW1pdHRlZCBpbiBjb21wb25lbnQgXCIgK1xuICAgICAgICAgIChmb3JtYXRDb21wb25lbnROYW1lKHZtKSkgKyBcIiBidXQgdGhlIGhhbmRsZXIgaXMgcmVnaXN0ZXJlZCBmb3IgXFxcIlwiICsgZXZlbnQgKyBcIlxcXCIuIFwiICtcbiAgICAgICAgICBcIk5vdGUgdGhhdCBIVE1MIGF0dHJpYnV0ZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUgYW5kIHlvdSBjYW5ub3QgdXNlIFwiICtcbiAgICAgICAgICBcInYtb24gdG8gbGlzdGVuIHRvIGNhbWVsQ2FzZSBldmVudHMgd2hlbiB1c2luZyBpbi1ET00gdGVtcGxhdGVzLiBcIiArXG4gICAgICAgICAgXCJZb3Ugc2hvdWxkIHByb2JhYmx5IHVzZSBcXFwiXCIgKyAoaHlwaGVuYXRlKGV2ZW50KSkgKyBcIlxcXCIgaW5zdGVhZCBvZiBcXFwiXCIgKyBldmVudCArIFwiXFxcIi5cIlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgY2JzID0gdm0uX2V2ZW50c1tldmVudF07XG4gICAgaWYgKGNicykge1xuICAgICAgY2JzID0gY2JzLmxlbmd0aCA+IDEgPyB0b0FycmF5KGNicykgOiBjYnM7XG4gICAgICB2YXIgYXJncyA9IHRvQXJyYXkoYXJndW1lbnRzLCAxKTtcbiAgICAgIHZhciBpbmZvID0gXCJldmVudCBoYW5kbGVyIGZvciBcXFwiXCIgKyBldmVudCArIFwiXFxcIlwiO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjYnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGludm9rZVdpdGhFcnJvckhhbmRsaW5nKGNic1tpXSwgdm0sIGFyZ3MsIHZtLCBpbmZvKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZtXG4gIH07XG59XG5cbi8qICAqL1xuXG52YXIgYWN0aXZlSW5zdGFuY2UgPSBudWxsO1xudmFyIGlzVXBkYXRpbmdDaGlsZENvbXBvbmVudCA9IGZhbHNlO1xuXG5mdW5jdGlvbiBzZXRBY3RpdmVJbnN0YW5jZSh2bSkge1xuICB2YXIgcHJldkFjdGl2ZUluc3RhbmNlID0gYWN0aXZlSW5zdGFuY2U7XG4gIGFjdGl2ZUluc3RhbmNlID0gdm07XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgYWN0aXZlSW5zdGFuY2UgPSBwcmV2QWN0aXZlSW5zdGFuY2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5pdExpZmVjeWNsZSAodm0pIHtcbiAgdmFyIG9wdGlvbnMgPSB2bS4kb3B0aW9ucztcblxuICAvLyBsb2NhdGUgZmlyc3Qgbm9uLWFic3RyYWN0IHBhcmVudFxuICB2YXIgcGFyZW50ID0gb3B0aW9ucy5wYXJlbnQ7XG4gIGlmIChwYXJlbnQgJiYgIW9wdGlvbnMuYWJzdHJhY3QpIHtcbiAgICB3aGlsZSAocGFyZW50LiRvcHRpb25zLmFic3RyYWN0ICYmIHBhcmVudC4kcGFyZW50KSB7XG4gICAgICBwYXJlbnQgPSBwYXJlbnQuJHBhcmVudDtcbiAgICB9XG4gICAgcGFyZW50LiRjaGlsZHJlbi5wdXNoKHZtKTtcbiAgfVxuXG4gIHZtLiRwYXJlbnQgPSBwYXJlbnQ7XG4gIHZtLiRyb290ID0gcGFyZW50ID8gcGFyZW50LiRyb290IDogdm07XG5cbiAgdm0uJGNoaWxkcmVuID0gW107XG4gIHZtLiRyZWZzID0ge307XG5cbiAgdm0uX3dhdGNoZXIgPSBudWxsO1xuICB2bS5faW5hY3RpdmUgPSBudWxsO1xuICB2bS5fZGlyZWN0SW5hY3RpdmUgPSBmYWxzZTtcbiAgdm0uX2lzTW91bnRlZCA9IGZhbHNlO1xuICB2bS5faXNEZXN0cm95ZWQgPSBmYWxzZTtcbiAgdm0uX2lzQmVpbmdEZXN0cm95ZWQgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbGlmZWN5Y2xlTWl4aW4gKFZ1ZSkge1xuICBWdWUucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAodm5vZGUsIGh5ZHJhdGluZykge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgdmFyIHByZXZFbCA9IHZtLiRlbDtcbiAgICB2YXIgcHJldlZub2RlID0gdm0uX3Zub2RlO1xuICAgIHZhciByZXN0b3JlQWN0aXZlSW5zdGFuY2UgPSBzZXRBY3RpdmVJbnN0YW5jZSh2bSk7XG4gICAgdm0uX3Zub2RlID0gdm5vZGU7XG4gICAgLy8gVnVlLnByb3RvdHlwZS5fX3BhdGNoX18gaXMgaW5qZWN0ZWQgaW4gZW50cnkgcG9pbnRzXG4gICAgLy8gYmFzZWQgb24gdGhlIHJlbmRlcmluZyBiYWNrZW5kIHVzZWQuXG4gICAgaWYgKCFwcmV2Vm5vZGUpIHtcbiAgICAgIC8vIGluaXRpYWwgcmVuZGVyXG4gICAgICB2bS4kZWwgPSB2bS5fX3BhdGNoX18odm0uJGVsLCB2bm9kZSwgaHlkcmF0aW5nLCBmYWxzZSAvKiByZW1vdmVPbmx5ICovKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdXBkYXRlc1xuICAgICAgdm0uJGVsID0gdm0uX19wYXRjaF9fKHByZXZWbm9kZSwgdm5vZGUpO1xuICAgIH1cbiAgICByZXN0b3JlQWN0aXZlSW5zdGFuY2UoKTtcbiAgICAvLyB1cGRhdGUgX192dWVfXyByZWZlcmVuY2VcbiAgICBpZiAocHJldkVsKSB7XG4gICAgICBwcmV2RWwuX192dWVfXyA9IG51bGw7XG4gICAgfVxuICAgIGlmICh2bS4kZWwpIHtcbiAgICAgIHZtLiRlbC5fX3Z1ZV9fID0gdm07XG4gICAgfVxuICAgIC8vIGlmIHBhcmVudCBpcyBhbiBIT0MsIHVwZGF0ZSBpdHMgJGVsIGFzIHdlbGxcbiAgICBpZiAodm0uJHZub2RlICYmIHZtLiRwYXJlbnQgJiYgdm0uJHZub2RlID09PSB2bS4kcGFyZW50Ll92bm9kZSkge1xuICAgICAgdm0uJHBhcmVudC4kZWwgPSB2bS4kZWw7XG4gICAgfVxuICAgIC8vIHVwZGF0ZWQgaG9vayBpcyBjYWxsZWQgYnkgdGhlIHNjaGVkdWxlciB0byBlbnN1cmUgdGhhdCBjaGlsZHJlbiBhcmVcbiAgICAvLyB1cGRhdGVkIGluIGEgcGFyZW50J3MgdXBkYXRlZCBob29rLlxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJGZvcmNlVXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciB2bSA9IHRoaXM7XG4gICAgaWYgKHZtLl93YXRjaGVyKSB7XG4gICAgICB2bS5fd2F0Y2hlci51cGRhdGUoKTtcbiAgICB9XG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS4kZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdm0gPSB0aGlzO1xuICAgIGlmICh2bS5faXNCZWluZ0Rlc3Ryb3llZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhbGxIb29rKHZtLCAnYmVmb3JlRGVzdHJveScpO1xuICAgIHZtLl9pc0JlaW5nRGVzdHJveWVkID0gdHJ1ZTtcbiAgICAvLyByZW1vdmUgc2VsZiBmcm9tIHBhcmVudFxuICAgIHZhciBwYXJlbnQgPSB2bS4kcGFyZW50O1xuICAgIGlmIChwYXJlbnQgJiYgIXBhcmVudC5faXNCZWluZ0Rlc3Ryb3llZCAmJiAhdm0uJG9wdGlvbnMuYWJzdHJhY3QpIHtcbiAgICAgIHJlbW92ZShwYXJlbnQuJGNoaWxkcmVuLCB2bSk7XG4gICAgfVxuICAgIC8vIHRlYXJkb3duIHdhdGNoZXJzXG4gICAgaWYgKHZtLl93YXRjaGVyKSB7XG4gICAgICB2bS5fd2F0Y2hlci50ZWFyZG93bigpO1xuICAgIH1cbiAgICB2YXIgaSA9IHZtLl93YXRjaGVycy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdm0uX3dhdGNoZXJzW2ldLnRlYXJkb3duKCk7XG4gICAgfVxuICAgIC8vIHJlbW92ZSByZWZlcmVuY2UgZnJvbSBkYXRhIG9iXG4gICAgLy8gZnJvemVuIG9iamVjdCBtYXkgbm90IGhhdmUgb2JzZXJ2ZXIuXG4gICAgaWYgKHZtLl9kYXRhLl9fb2JfXykge1xuICAgICAgdm0uX2RhdGEuX19vYl9fLnZtQ291bnQtLTtcbiAgICB9XG4gICAgLy8gY2FsbCB0aGUgbGFzdCBob29rLi4uXG4gICAgdm0uX2lzRGVzdHJveWVkID0gdHJ1ZTtcbiAgICAvLyBpbnZva2UgZGVzdHJveSBob29rcyBvbiBjdXJyZW50IHJlbmRlcmVkIHRyZWVcbiAgICB2bS5fX3BhdGNoX18odm0uX3Zub2RlLCBudWxsKTtcbiAgICAvLyBmaXJlIGRlc3Ryb3llZCBob29rXG4gICAgY2FsbEhvb2sodm0sICdkZXN0cm95ZWQnKTtcbiAgICAvLyB0dXJuIG9mZiBhbGwgaW5zdGFuY2UgbGlzdGVuZXJzLlxuICAgIHZtLiRvZmYoKTtcbiAgICAvLyByZW1vdmUgX192dWVfXyByZWZlcmVuY2VcbiAgICBpZiAodm0uJGVsKSB7XG4gICAgICB2bS4kZWwuX192dWVfXyA9IG51bGw7XG4gICAgfVxuICAgIC8vIHJlbGVhc2UgY2lyY3VsYXIgcmVmZXJlbmNlICgjNjc1OSlcbiAgICBpZiAodm0uJHZub2RlKSB7XG4gICAgICB2bS4kdm5vZGUucGFyZW50ID0gbnVsbDtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUNoaWxkQ29tcG9uZW50IChcbiAgdm0sXG4gIHByb3BzRGF0YSxcbiAgbGlzdGVuZXJzLFxuICBwYXJlbnRWbm9kZSxcbiAgcmVuZGVyQ2hpbGRyZW5cbikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlzVXBkYXRpbmdDaGlsZENvbXBvbmVudCA9IHRydWU7XG4gIH1cblxuICAvLyBkZXRlcm1pbmUgd2hldGhlciBjb21wb25lbnQgaGFzIHNsb3QgY2hpbGRyZW5cbiAgLy8gd2UgbmVlZCB0byBkbyB0aGlzIGJlZm9yZSBvdmVyd3JpdGluZyAkb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW4uXG5cbiAgLy8gY2hlY2sgaWYgdGhlcmUgYXJlIGR5bmFtaWMgc2NvcGVkU2xvdHMgKGhhbmQtd3JpdHRlbiBvciBjb21waWxlZCBidXQgd2l0aFxuICAvLyBkeW5hbWljIHNsb3QgbmFtZXMpLiBTdGF0aWMgc2NvcGVkIHNsb3RzIGNvbXBpbGVkIGZyb20gdGVtcGxhdGUgaGFzIHRoZVxuICAvLyBcIiRzdGFibGVcIiBtYXJrZXIuXG4gIHZhciBuZXdTY29wZWRTbG90cyA9IHBhcmVudFZub2RlLmRhdGEuc2NvcGVkU2xvdHM7XG4gIHZhciBvbGRTY29wZWRTbG90cyA9IHZtLiRzY29wZWRTbG90cztcbiAgdmFyIGhhc0R5bmFtaWNTY29wZWRTbG90ID0gISEoXG4gICAgKG5ld1Njb3BlZFNsb3RzICYmICFuZXdTY29wZWRTbG90cy4kc3RhYmxlKSB8fFxuICAgIChvbGRTY29wZWRTbG90cyAhPT0gZW1wdHlPYmplY3QgJiYgIW9sZFNjb3BlZFNsb3RzLiRzdGFibGUpIHx8XG4gICAgKG5ld1Njb3BlZFNsb3RzICYmIHZtLiRzY29wZWRTbG90cy4ka2V5ICE9PSBuZXdTY29wZWRTbG90cy4ka2V5KVxuICApO1xuXG4gIC8vIEFueSBzdGF0aWMgc2xvdCBjaGlsZHJlbiBmcm9tIHRoZSBwYXJlbnQgbWF5IGhhdmUgY2hhbmdlZCBkdXJpbmcgcGFyZW50J3NcbiAgLy8gdXBkYXRlLiBEeW5hbWljIHNjb3BlZCBzbG90cyBtYXkgYWxzbyBoYXZlIGNoYW5nZWQuIEluIHN1Y2ggY2FzZXMsIGEgZm9yY2VkXG4gIC8vIHVwZGF0ZSBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIGNvcnJlY3RuZXNzLlxuICB2YXIgbmVlZHNGb3JjZVVwZGF0ZSA9ICEhKFxuICAgIHJlbmRlckNoaWxkcmVuIHx8ICAgICAgICAgICAgICAgLy8gaGFzIG5ldyBzdGF0aWMgc2xvdHNcbiAgICB2bS4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW4gfHwgIC8vIGhhcyBvbGQgc3RhdGljIHNsb3RzXG4gICAgaGFzRHluYW1pY1Njb3BlZFNsb3RcbiAgKTtcblxuICB2bS4kb3B0aW9ucy5fcGFyZW50Vm5vZGUgPSBwYXJlbnRWbm9kZTtcbiAgdm0uJHZub2RlID0gcGFyZW50Vm5vZGU7IC8vIHVwZGF0ZSB2bSdzIHBsYWNlaG9sZGVyIG5vZGUgd2l0aG91dCByZS1yZW5kZXJcblxuICBpZiAodm0uX3Zub2RlKSB7IC8vIHVwZGF0ZSBjaGlsZCB0cmVlJ3MgcGFyZW50XG4gICAgdm0uX3Zub2RlLnBhcmVudCA9IHBhcmVudFZub2RlO1xuICB9XG4gIHZtLiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbiA9IHJlbmRlckNoaWxkcmVuO1xuXG4gIC8vIHVwZGF0ZSAkYXR0cnMgYW5kICRsaXN0ZW5lcnMgaGFzaFxuICAvLyB0aGVzZSBhcmUgYWxzbyByZWFjdGl2ZSBzbyB0aGV5IG1heSB0cmlnZ2VyIGNoaWxkIHVwZGF0ZSBpZiB0aGUgY2hpbGRcbiAgLy8gdXNlZCB0aGVtIGR1cmluZyByZW5kZXJcbiAgdm0uJGF0dHJzID0gcGFyZW50Vm5vZGUuZGF0YS5hdHRycyB8fCBlbXB0eU9iamVjdDtcbiAgdm0uJGxpc3RlbmVycyA9IGxpc3RlbmVycyB8fCBlbXB0eU9iamVjdDtcblxuICAvLyB1cGRhdGUgcHJvcHNcbiAgaWYgKHByb3BzRGF0YSAmJiB2bS4kb3B0aW9ucy5wcm9wcykge1xuICAgIHRvZ2dsZU9ic2VydmluZyhmYWxzZSk7XG4gICAgdmFyIHByb3BzID0gdm0uX3Byb3BzO1xuICAgIHZhciBwcm9wS2V5cyA9IHZtLiRvcHRpb25zLl9wcm9wS2V5cyB8fCBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIga2V5ID0gcHJvcEtleXNbaV07XG4gICAgICB2YXIgcHJvcE9wdGlvbnMgPSB2bS4kb3B0aW9ucy5wcm9wczsgLy8gd3RmIGZsb3c/XG4gICAgICBwcm9wc1trZXldID0gdmFsaWRhdGVQcm9wKGtleSwgcHJvcE9wdGlvbnMsIHByb3BzRGF0YSwgdm0pO1xuICAgIH1cbiAgICB0b2dnbGVPYnNlcnZpbmcodHJ1ZSk7XG4gICAgLy8ga2VlcCBhIGNvcHkgb2YgcmF3IHByb3BzRGF0YVxuICAgIHZtLiRvcHRpb25zLnByb3BzRGF0YSA9IHByb3BzRGF0YTtcbiAgfVxuXG4gIC8vIGZpeGVkIGJ5IHh4eHh4eCB1cGRhdGUgcHJvcGVydGllcyhtcCBydW50aW1lKVxuICB2bS5fJHVwZGF0ZVByb3BlcnRpZXMgJiYgdm0uXyR1cGRhdGVQcm9wZXJ0aWVzKHZtKTtcblxuICAvLyB1cGRhdGUgbGlzdGVuZXJzXG4gIGxpc3RlbmVycyA9IGxpc3RlbmVycyB8fCBlbXB0eU9iamVjdDtcbiAgdmFyIG9sZExpc3RlbmVycyA9IHZtLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM7XG4gIHZtLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnMgPSBsaXN0ZW5lcnM7XG4gIHVwZGF0ZUNvbXBvbmVudExpc3RlbmVycyh2bSwgbGlzdGVuZXJzLCBvbGRMaXN0ZW5lcnMpO1xuXG4gIC8vIHJlc29sdmUgc2xvdHMgKyBmb3JjZSB1cGRhdGUgaWYgaGFzIGNoaWxkcmVuXG4gIGlmIChuZWVkc0ZvcmNlVXBkYXRlKSB7XG4gICAgdm0uJHNsb3RzID0gcmVzb2x2ZVNsb3RzKHJlbmRlckNoaWxkcmVuLCBwYXJlbnRWbm9kZS5jb250ZXh0KTtcbiAgICB2bS4kZm9yY2VVcGRhdGUoKTtcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50ID0gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNJbkluYWN0aXZlVHJlZSAodm0pIHtcbiAgd2hpbGUgKHZtICYmICh2bSA9IHZtLiRwYXJlbnQpKSB7XG4gICAgaWYgKHZtLl9pbmFjdGl2ZSkgeyByZXR1cm4gdHJ1ZSB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQgKHZtLCBkaXJlY3QpIHtcbiAgaWYgKGRpcmVjdCkge1xuICAgIHZtLl9kaXJlY3RJbmFjdGl2ZSA9IGZhbHNlO1xuICAgIGlmIChpc0luSW5hY3RpdmVUcmVlKHZtKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICB9IGVsc2UgaWYgKHZtLl9kaXJlY3RJbmFjdGl2ZSkge1xuICAgIHJldHVyblxuICB9XG4gIGlmICh2bS5faW5hY3RpdmUgfHwgdm0uX2luYWN0aXZlID09PSBudWxsKSB7XG4gICAgdm0uX2luYWN0aXZlID0gZmFsc2U7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2bS4kY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQodm0uJGNoaWxkcmVuW2ldKTtcbiAgICB9XG4gICAgY2FsbEhvb2sodm0sICdhY3RpdmF0ZWQnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZWFjdGl2YXRlQ2hpbGRDb21wb25lbnQgKHZtLCBkaXJlY3QpIHtcbiAgaWYgKGRpcmVjdCkge1xuICAgIHZtLl9kaXJlY3RJbmFjdGl2ZSA9IHRydWU7XG4gICAgaWYgKGlzSW5JbmFjdGl2ZVRyZWUodm0pKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cbiAgaWYgKCF2bS5faW5hY3RpdmUpIHtcbiAgICB2bS5faW5hY3RpdmUgPSB0cnVlO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdm0uJGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZWFjdGl2YXRlQ2hpbGRDb21wb25lbnQodm0uJGNoaWxkcmVuW2ldKTtcbiAgICB9XG4gICAgY2FsbEhvb2sodm0sICdkZWFjdGl2YXRlZCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbGxIb29rICh2bSwgaG9vaykge1xuICAvLyAjNzU3MyBkaXNhYmxlIGRlcCBjb2xsZWN0aW9uIHdoZW4gaW52b2tpbmcgbGlmZWN5Y2xlIGhvb2tzXG4gIHB1c2hUYXJnZXQoKTtcbiAgdmFyIGhhbmRsZXJzID0gdm0uJG9wdGlvbnNbaG9va107XG4gIHZhciBpbmZvID0gaG9vayArIFwiIGhvb2tcIjtcbiAgaWYgKGhhbmRsZXJzKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGogPSBoYW5kbGVycy5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgIGludm9rZVdpdGhFcnJvckhhbmRsaW5nKGhhbmRsZXJzW2ldLCB2bSwgbnVsbCwgdm0sIGluZm8pO1xuICAgIH1cbiAgfVxuICBpZiAodm0uX2hhc0hvb2tFdmVudCkge1xuICAgIHZtLiRlbWl0KCdob29rOicgKyBob29rKTtcbiAgfVxuICBwb3BUYXJnZXQoKTtcbn1cblxuLyogICovXG5cbnZhciBNQVhfVVBEQVRFX0NPVU5UID0gMTAwO1xuXG52YXIgcXVldWUgPSBbXTtcbnZhciBhY3RpdmF0ZWRDaGlsZHJlbiA9IFtdO1xudmFyIGhhcyA9IHt9O1xudmFyIGNpcmN1bGFyID0ge307XG52YXIgd2FpdGluZyA9IGZhbHNlO1xudmFyIGZsdXNoaW5nID0gZmFsc2U7XG52YXIgaW5kZXggPSAwO1xuXG4vKipcbiAqIFJlc2V0IHRoZSBzY2hlZHVsZXIncyBzdGF0ZS5cbiAqL1xuZnVuY3Rpb24gcmVzZXRTY2hlZHVsZXJTdGF0ZSAoKSB7XG4gIGluZGV4ID0gcXVldWUubGVuZ3RoID0gYWN0aXZhdGVkQ2hpbGRyZW4ubGVuZ3RoID0gMDtcbiAgaGFzID0ge307XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY2lyY3VsYXIgPSB7fTtcbiAgfVxuICB3YWl0aW5nID0gZmx1c2hpbmcgPSBmYWxzZTtcbn1cblxuLy8gQXN5bmMgZWRnZSBjYXNlICM2NTY2IHJlcXVpcmVzIHNhdmluZyB0aGUgdGltZXN0YW1wIHdoZW4gZXZlbnQgbGlzdGVuZXJzIGFyZVxuLy8gYXR0YWNoZWQuIEhvd2V2ZXIsIGNhbGxpbmcgcGVyZm9ybWFuY2Uubm93KCkgaGFzIGEgcGVyZiBvdmVyaGVhZCBlc3BlY2lhbGx5XG4vLyBpZiB0aGUgcGFnZSBoYXMgdGhvdXNhbmRzIG9mIGV2ZW50IGxpc3RlbmVycy4gSW5zdGVhZCwgd2UgdGFrZSBhIHRpbWVzdGFtcFxuLy8gZXZlcnkgdGltZSB0aGUgc2NoZWR1bGVyIGZsdXNoZXMgYW5kIHVzZSB0aGF0IGZvciBhbGwgZXZlbnQgbGlzdGVuZXJzXG4vLyBhdHRhY2hlZCBkdXJpbmcgdGhhdCBmbHVzaC5cbnZhciBjdXJyZW50Rmx1c2hUaW1lc3RhbXAgPSAwO1xuXG4vLyBBc3luYyBlZGdlIGNhc2UgZml4IHJlcXVpcmVzIHN0b3JpbmcgYW4gZXZlbnQgbGlzdGVuZXIncyBhdHRhY2ggdGltZXN0YW1wLlxudmFyIGdldE5vdyA9IERhdGUubm93O1xuXG4vLyBEZXRlcm1pbmUgd2hhdCBldmVudCB0aW1lc3RhbXAgdGhlIGJyb3dzZXIgaXMgdXNpbmcuIEFubm95aW5nbHksIHRoZVxuLy8gdGltZXN0YW1wIGNhbiBlaXRoZXIgYmUgaGktcmVzIChyZWxhdGl2ZSB0byBwYWdlIGxvYWQpIG9yIGxvdy1yZXNcbi8vIChyZWxhdGl2ZSB0byBVTklYIGVwb2NoKSwgc28gaW4gb3JkZXIgdG8gY29tcGFyZSB0aW1lIHdlIGhhdmUgdG8gdXNlIHRoZVxuLy8gc2FtZSB0aW1lc3RhbXAgdHlwZSB3aGVuIHNhdmluZyB0aGUgZmx1c2ggdGltZXN0YW1wLlxuLy8gQWxsIElFIHZlcnNpb25zIHVzZSBsb3ctcmVzIGV2ZW50IHRpbWVzdGFtcHMsIGFuZCBoYXZlIHByb2JsZW1hdGljIGNsb2NrXG4vLyBpbXBsZW1lbnRhdGlvbnMgKCM5NjMyKVxuaWYgKGluQnJvd3NlciAmJiAhaXNJRSkge1xuICB2YXIgcGVyZm9ybWFuY2UgPSB3aW5kb3cucGVyZm9ybWFuY2U7XG4gIGlmIChcbiAgICBwZXJmb3JtYW5jZSAmJlxuICAgIHR5cGVvZiBwZXJmb3JtYW5jZS5ub3cgPT09ICdmdW5jdGlvbicgJiZcbiAgICBnZXROb3coKSA+IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpLnRpbWVTdGFtcFxuICApIHtcbiAgICAvLyBpZiB0aGUgZXZlbnQgdGltZXN0YW1wLCBhbHRob3VnaCBldmFsdWF0ZWQgQUZURVIgdGhlIERhdGUubm93KCksIGlzXG4gICAgLy8gc21hbGxlciB0aGFuIGl0LCBpdCBtZWFucyB0aGUgZXZlbnQgaXMgdXNpbmcgYSBoaS1yZXMgdGltZXN0YW1wLFxuICAgIC8vIGFuZCB3ZSBuZWVkIHRvIHVzZSB0aGUgaGktcmVzIHZlcnNpb24gZm9yIGV2ZW50IGxpc3RlbmVyIHRpbWVzdGFtcHMgYXNcbiAgICAvLyB3ZWxsLlxuICAgIGdldE5vdyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHBlcmZvcm1hbmNlLm5vdygpOyB9O1xuICB9XG59XG5cbi8qKlxuICogRmx1c2ggYm90aCBxdWV1ZXMgYW5kIHJ1biB0aGUgd2F0Y2hlcnMuXG4gKi9cbmZ1bmN0aW9uIGZsdXNoU2NoZWR1bGVyUXVldWUgKCkge1xuICBjdXJyZW50Rmx1c2hUaW1lc3RhbXAgPSBnZXROb3coKTtcbiAgZmx1c2hpbmcgPSB0cnVlO1xuICB2YXIgd2F0Y2hlciwgaWQ7XG5cbiAgLy8gU29ydCBxdWV1ZSBiZWZvcmUgZmx1c2guXG4gIC8vIFRoaXMgZW5zdXJlcyB0aGF0OlxuICAvLyAxLiBDb21wb25lbnRzIGFyZSB1cGRhdGVkIGZyb20gcGFyZW50IHRvIGNoaWxkLiAoYmVjYXVzZSBwYXJlbnQgaXMgYWx3YXlzXG4gIC8vICAgIGNyZWF0ZWQgYmVmb3JlIHRoZSBjaGlsZClcbiAgLy8gMi4gQSBjb21wb25lbnQncyB1c2VyIHdhdGNoZXJzIGFyZSBydW4gYmVmb3JlIGl0cyByZW5kZXIgd2F0Y2hlciAoYmVjYXVzZVxuICAvLyAgICB1c2VyIHdhdGNoZXJzIGFyZSBjcmVhdGVkIGJlZm9yZSB0aGUgcmVuZGVyIHdhdGNoZXIpXG4gIC8vIDMuIElmIGEgY29tcG9uZW50IGlzIGRlc3Ryb3llZCBkdXJpbmcgYSBwYXJlbnQgY29tcG9uZW50J3Mgd2F0Y2hlciBydW4sXG4gIC8vICAgIGl0cyB3YXRjaGVycyBjYW4gYmUgc2tpcHBlZC5cbiAgcXVldWUuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5pZCAtIGIuaWQ7IH0pO1xuXG4gIC8vIGRvIG5vdCBjYWNoZSBsZW5ndGggYmVjYXVzZSBtb3JlIHdhdGNoZXJzIG1pZ2h0IGJlIHB1c2hlZFxuICAvLyBhcyB3ZSBydW4gZXhpc3Rpbmcgd2F0Y2hlcnNcbiAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgcXVldWUubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgd2F0Y2hlciA9IHF1ZXVlW2luZGV4XTtcbiAgICBpZiAod2F0Y2hlci5iZWZvcmUpIHtcbiAgICAgIHdhdGNoZXIuYmVmb3JlKCk7XG4gICAgfVxuICAgIGlkID0gd2F0Y2hlci5pZDtcbiAgICBoYXNbaWRdID0gbnVsbDtcbiAgICB3YXRjaGVyLnJ1bigpO1xuICAgIC8vIGluIGRldiBidWlsZCwgY2hlY2sgYW5kIHN0b3AgY2lyY3VsYXIgdXBkYXRlcy5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBoYXNbaWRdICE9IG51bGwpIHtcbiAgICAgIGNpcmN1bGFyW2lkXSA9IChjaXJjdWxhcltpZF0gfHwgMCkgKyAxO1xuICAgICAgaWYgKGNpcmN1bGFyW2lkXSA+IE1BWF9VUERBVEVfQ09VTlQpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAnWW91IG1heSBoYXZlIGFuIGluZmluaXRlIHVwZGF0ZSBsb29wICcgKyAoXG4gICAgICAgICAgICB3YXRjaGVyLnVzZXJcbiAgICAgICAgICAgICAgPyAoXCJpbiB3YXRjaGVyIHdpdGggZXhwcmVzc2lvbiBcXFwiXCIgKyAod2F0Y2hlci5leHByZXNzaW9uKSArIFwiXFxcIlwiKVxuICAgICAgICAgICAgICA6IFwiaW4gYSBjb21wb25lbnQgcmVuZGVyIGZ1bmN0aW9uLlwiXG4gICAgICAgICAgKSxcbiAgICAgICAgICB3YXRjaGVyLnZtXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8ga2VlcCBjb3BpZXMgb2YgcG9zdCBxdWV1ZXMgYmVmb3JlIHJlc2V0dGluZyBzdGF0ZVxuICB2YXIgYWN0aXZhdGVkUXVldWUgPSBhY3RpdmF0ZWRDaGlsZHJlbi5zbGljZSgpO1xuICB2YXIgdXBkYXRlZFF1ZXVlID0gcXVldWUuc2xpY2UoKTtcblxuICByZXNldFNjaGVkdWxlclN0YXRlKCk7XG5cbiAgLy8gY2FsbCBjb21wb25lbnQgdXBkYXRlZCBhbmQgYWN0aXZhdGVkIGhvb2tzXG4gIGNhbGxBY3RpdmF0ZWRIb29rcyhhY3RpdmF0ZWRRdWV1ZSk7XG4gIGNhbGxVcGRhdGVkSG9va3ModXBkYXRlZFF1ZXVlKTtcblxuICAvLyBkZXZ0b29sIGhvb2tcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChkZXZ0b29scyAmJiBjb25maWcuZGV2dG9vbHMpIHtcbiAgICBkZXZ0b29scy5lbWl0KCdmbHVzaCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbGxVcGRhdGVkSG9va3MgKHF1ZXVlKSB7XG4gIHZhciBpID0gcXVldWUubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgdmFyIHdhdGNoZXIgPSBxdWV1ZVtpXTtcbiAgICB2YXIgdm0gPSB3YXRjaGVyLnZtO1xuICAgIGlmICh2bS5fd2F0Y2hlciA9PT0gd2F0Y2hlciAmJiB2bS5faXNNb3VudGVkICYmICF2bS5faXNEZXN0cm95ZWQpIHtcbiAgICAgIGNhbGxIb29rKHZtLCAndXBkYXRlZCcpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFF1ZXVlIGEga2VwdC1hbGl2ZSBjb21wb25lbnQgdGhhdCB3YXMgYWN0aXZhdGVkIGR1cmluZyBwYXRjaC5cbiAqIFRoZSBxdWV1ZSB3aWxsIGJlIHByb2Nlc3NlZCBhZnRlciB0aGUgZW50aXJlIHRyZWUgaGFzIGJlZW4gcGF0Y2hlZC5cbiAqL1xuZnVuY3Rpb24gcXVldWVBY3RpdmF0ZWRDb21wb25lbnQgKHZtKSB7XG4gIC8vIHNldHRpbmcgX2luYWN0aXZlIHRvIGZhbHNlIGhlcmUgc28gdGhhdCBhIHJlbmRlciBmdW5jdGlvbiBjYW5cbiAgLy8gcmVseSBvbiBjaGVja2luZyB3aGV0aGVyIGl0J3MgaW4gYW4gaW5hY3RpdmUgdHJlZSAoZS5nLiByb3V0ZXItdmlldylcbiAgdm0uX2luYWN0aXZlID0gZmFsc2U7XG4gIGFjdGl2YXRlZENoaWxkcmVuLnB1c2godm0pO1xufVxuXG5mdW5jdGlvbiBjYWxsQWN0aXZhdGVkSG9va3MgKHF1ZXVlKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcXVldWUubGVuZ3RoOyBpKyspIHtcbiAgICBxdWV1ZVtpXS5faW5hY3RpdmUgPSB0cnVlO1xuICAgIGFjdGl2YXRlQ2hpbGRDb21wb25lbnQocXVldWVbaV0sIHRydWUgLyogdHJ1ZSAqLyk7XG4gIH1cbn1cblxuLyoqXG4gKiBQdXNoIGEgd2F0Y2hlciBpbnRvIHRoZSB3YXRjaGVyIHF1ZXVlLlxuICogSm9icyB3aXRoIGR1cGxpY2F0ZSBJRHMgd2lsbCBiZSBza2lwcGVkIHVubGVzcyBpdCdzXG4gKiBwdXNoZWQgd2hlbiB0aGUgcXVldWUgaXMgYmVpbmcgZmx1c2hlZC5cbiAqL1xuZnVuY3Rpb24gcXVldWVXYXRjaGVyICh3YXRjaGVyKSB7XG4gIHZhciBpZCA9IHdhdGNoZXIuaWQ7XG4gIGlmIChoYXNbaWRdID09IG51bGwpIHtcbiAgICBoYXNbaWRdID0gdHJ1ZTtcbiAgICBpZiAoIWZsdXNoaW5nKSB7XG4gICAgICBxdWV1ZS5wdXNoKHdhdGNoZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpZiBhbHJlYWR5IGZsdXNoaW5nLCBzcGxpY2UgdGhlIHdhdGNoZXIgYmFzZWQgb24gaXRzIGlkXG4gICAgICAvLyBpZiBhbHJlYWR5IHBhc3QgaXRzIGlkLCBpdCB3aWxsIGJlIHJ1biBuZXh0IGltbWVkaWF0ZWx5LlxuICAgICAgdmFyIGkgPSBxdWV1ZS5sZW5ndGggLSAxO1xuICAgICAgd2hpbGUgKGkgPiBpbmRleCAmJiBxdWV1ZVtpXS5pZCA+IHdhdGNoZXIuaWQpIHtcbiAgICAgICAgaS0tO1xuICAgICAgfVxuICAgICAgcXVldWUuc3BsaWNlKGkgKyAxLCAwLCB3YXRjaGVyKTtcbiAgICB9XG4gICAgLy8gcXVldWUgdGhlIGZsdXNoXG4gICAgaWYgKCF3YWl0aW5nKSB7XG4gICAgICB3YWl0aW5nID0gdHJ1ZTtcblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIWNvbmZpZy5hc3luYykge1xuICAgICAgICBmbHVzaFNjaGVkdWxlclF1ZXVlKCk7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgbmV4dFRpY2soZmx1c2hTY2hlZHVsZXJRdWV1ZSk7XG4gICAgfVxuICB9XG59XG5cbi8qICAqL1xuXG5cblxudmFyIHVpZCQyID0gMDtcblxuLyoqXG4gKiBBIHdhdGNoZXIgcGFyc2VzIGFuIGV4cHJlc3Npb24sIGNvbGxlY3RzIGRlcGVuZGVuY2llcyxcbiAqIGFuZCBmaXJlcyBjYWxsYmFjayB3aGVuIHRoZSBleHByZXNzaW9uIHZhbHVlIGNoYW5nZXMuXG4gKiBUaGlzIGlzIHVzZWQgZm9yIGJvdGggdGhlICR3YXRjaCgpIGFwaSBhbmQgZGlyZWN0aXZlcy5cbiAqL1xudmFyIFdhdGNoZXIgPSBmdW5jdGlvbiBXYXRjaGVyIChcbiAgdm0sXG4gIGV4cE9yRm4sXG4gIGNiLFxuICBvcHRpb25zLFxuICBpc1JlbmRlcldhdGNoZXJcbikge1xuICB0aGlzLnZtID0gdm07XG4gIGlmIChpc1JlbmRlcldhdGNoZXIpIHtcbiAgICB2bS5fd2F0Y2hlciA9IHRoaXM7XG4gIH1cbiAgdm0uX3dhdGNoZXJzLnB1c2godGhpcyk7XG4gIC8vIG9wdGlvbnNcbiAgaWYgKG9wdGlvbnMpIHtcbiAgICB0aGlzLmRlZXAgPSAhIW9wdGlvbnMuZGVlcDtcbiAgICB0aGlzLnVzZXIgPSAhIW9wdGlvbnMudXNlcjtcbiAgICB0aGlzLmxhenkgPSAhIW9wdGlvbnMubGF6eTtcbiAgICB0aGlzLnN5bmMgPSAhIW9wdGlvbnMuc3luYztcbiAgICB0aGlzLmJlZm9yZSA9IG9wdGlvbnMuYmVmb3JlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuZGVlcCA9IHRoaXMudXNlciA9IHRoaXMubGF6eSA9IHRoaXMuc3luYyA9IGZhbHNlO1xuICB9XG4gIHRoaXMuY2IgPSBjYjtcbiAgdGhpcy5pZCA9ICsrdWlkJDI7IC8vIHVpZCBmb3IgYmF0Y2hpbmdcbiAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICB0aGlzLmRpcnR5ID0gdGhpcy5sYXp5OyAvLyBmb3IgbGF6eSB3YXRjaGVyc1xuICB0aGlzLmRlcHMgPSBbXTtcbiAgdGhpcy5uZXdEZXBzID0gW107XG4gIHRoaXMuZGVwSWRzID0gbmV3IF9TZXQoKTtcbiAgdGhpcy5uZXdEZXBJZHMgPSBuZXcgX1NldCgpO1xuICB0aGlzLmV4cHJlc3Npb24gPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nXG4gICAgPyBleHBPckZuLnRvU3RyaW5nKClcbiAgICA6ICcnO1xuICAvLyBwYXJzZSBleHByZXNzaW9uIGZvciBnZXR0ZXJcbiAgaWYgKHR5cGVvZiBleHBPckZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhpcy5nZXR0ZXIgPSBleHBPckZuO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuZ2V0dGVyID0gcGFyc2VQYXRoKGV4cE9yRm4pO1xuICAgIGlmICghdGhpcy5nZXR0ZXIpIHtcbiAgICAgIHRoaXMuZ2V0dGVyID0gbm9vcDtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICAgXCJGYWlsZWQgd2F0Y2hpbmcgcGF0aDogXFxcIlwiICsgZXhwT3JGbiArIFwiXFxcIiBcIiArXG4gICAgICAgICdXYXRjaGVyIG9ubHkgYWNjZXB0cyBzaW1wbGUgZG90LWRlbGltaXRlZCBwYXRocy4gJyArXG4gICAgICAgICdGb3IgZnVsbCBjb250cm9sLCB1c2UgYSBmdW5jdGlvbiBpbnN0ZWFkLicsXG4gICAgICAgIHZtXG4gICAgICApO1xuICAgIH1cbiAgfVxuICB0aGlzLnZhbHVlID0gdGhpcy5sYXp5XG4gICAgPyB1bmRlZmluZWRcbiAgICA6IHRoaXMuZ2V0KCk7XG59O1xuXG4vKipcbiAqIEV2YWx1YXRlIHRoZSBnZXR0ZXIsIGFuZCByZS1jb2xsZWN0IGRlcGVuZGVuY2llcy5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gZ2V0ICgpIHtcbiAgcHVzaFRhcmdldCh0aGlzKTtcbiAgdmFyIHZhbHVlO1xuICB2YXIgdm0gPSB0aGlzLnZtO1xuICB0cnkge1xuICAgIHZhbHVlID0gdGhpcy5nZXR0ZXIuY2FsbCh2bSwgdm0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKHRoaXMudXNlcikge1xuICAgICAgaGFuZGxlRXJyb3IoZSwgdm0sIChcImdldHRlciBmb3Igd2F0Y2hlciBcXFwiXCIgKyAodGhpcy5leHByZXNzaW9uKSArIFwiXFxcIlwiKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGVcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgLy8gXCJ0b3VjaFwiIGV2ZXJ5IHByb3BlcnR5IHNvIHRoZXkgYXJlIGFsbCB0cmFja2VkIGFzXG4gICAgLy8gZGVwZW5kZW5jaWVzIGZvciBkZWVwIHdhdGNoaW5nXG4gICAgaWYgKHRoaXMuZGVlcCkge1xuICAgICAgdHJhdmVyc2UodmFsdWUpO1xuICAgIH1cbiAgICBwb3BUYXJnZXQoKTtcbiAgICB0aGlzLmNsZWFudXBEZXBzKCk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlXG59O1xuXG4vKipcbiAqIEFkZCBhIGRlcGVuZGVuY3kgdG8gdGhpcyBkaXJlY3RpdmUuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLmFkZERlcCA9IGZ1bmN0aW9uIGFkZERlcCAoZGVwKSB7XG4gIHZhciBpZCA9IGRlcC5pZDtcbiAgaWYgKCF0aGlzLm5ld0RlcElkcy5oYXMoaWQpKSB7XG4gICAgdGhpcy5uZXdEZXBJZHMuYWRkKGlkKTtcbiAgICB0aGlzLm5ld0RlcHMucHVzaChkZXApO1xuICAgIGlmICghdGhpcy5kZXBJZHMuaGFzKGlkKSkge1xuICAgICAgZGVwLmFkZFN1Yih0aGlzKTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogQ2xlYW4gdXAgZm9yIGRlcGVuZGVuY3kgY29sbGVjdGlvbi5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuY2xlYW51cERlcHMgPSBmdW5jdGlvbiBjbGVhbnVwRGVwcyAoKSB7XG4gIHZhciBpID0gdGhpcy5kZXBzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIHZhciBkZXAgPSB0aGlzLmRlcHNbaV07XG4gICAgaWYgKCF0aGlzLm5ld0RlcElkcy5oYXMoZGVwLmlkKSkge1xuICAgICAgZGVwLnJlbW92ZVN1Yih0aGlzKTtcbiAgICB9XG4gIH1cbiAgdmFyIHRtcCA9IHRoaXMuZGVwSWRzO1xuICB0aGlzLmRlcElkcyA9IHRoaXMubmV3RGVwSWRzO1xuICB0aGlzLm5ld0RlcElkcyA9IHRtcDtcbiAgdGhpcy5uZXdEZXBJZHMuY2xlYXIoKTtcbiAgdG1wID0gdGhpcy5kZXBzO1xuICB0aGlzLmRlcHMgPSB0aGlzLm5ld0RlcHM7XG4gIHRoaXMubmV3RGVwcyA9IHRtcDtcbiAgdGhpcy5uZXdEZXBzLmxlbmd0aCA9IDA7XG59O1xuXG4vKipcbiAqIFN1YnNjcmliZXIgaW50ZXJmYWNlLlxuICogV2lsbCBiZSBjYWxsZWQgd2hlbiBhIGRlcGVuZGVuY3kgY2hhbmdlcy5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlICgpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKHRoaXMubGF6eSkge1xuICAgIHRoaXMuZGlydHkgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHRoaXMuc3luYykge1xuICAgIHRoaXMucnVuKCk7XG4gIH0gZWxzZSB7XG4gICAgcXVldWVXYXRjaGVyKHRoaXMpO1xuICB9XG59O1xuXG4vKipcbiAqIFNjaGVkdWxlciBqb2IgaW50ZXJmYWNlLlxuICogV2lsbCBiZSBjYWxsZWQgYnkgdGhlIHNjaGVkdWxlci5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gcnVuICgpIHtcbiAgaWYgKHRoaXMuYWN0aXZlKSB7XG4gICAgdmFyIHZhbHVlID0gdGhpcy5nZXQoKTtcbiAgICBpZiAoXG4gICAgICB2YWx1ZSAhPT0gdGhpcy52YWx1ZSB8fFxuICAgICAgLy8gRGVlcCB3YXRjaGVycyBhbmQgd2F0Y2hlcnMgb24gT2JqZWN0L0FycmF5cyBzaG91bGQgZmlyZSBldmVuXG4gICAgICAvLyB3aGVuIHRoZSB2YWx1ZSBpcyB0aGUgc2FtZSwgYmVjYXVzZSB0aGUgdmFsdWUgbWF5XG4gICAgICAvLyBoYXZlIG11dGF0ZWQuXG4gICAgICBpc09iamVjdCh2YWx1ZSkgfHxcbiAgICAgIHRoaXMuZGVlcFxuICAgICkge1xuICAgICAgLy8gc2V0IG5ldyB2YWx1ZVxuICAgICAgdmFyIG9sZFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIGlmICh0aGlzLnVzZXIpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLmNiLmNhbGwodGhpcy52bSwgdmFsdWUsIG9sZFZhbHVlKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGhhbmRsZUVycm9yKGUsIHRoaXMudm0sIChcImNhbGxiYWNrIGZvciB3YXRjaGVyIFxcXCJcIiArICh0aGlzLmV4cHJlc3Npb24pICsgXCJcXFwiXCIpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYi5jYWxsKHRoaXMudm0sIHZhbHVlLCBvbGRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIEV2YWx1YXRlIHRoZSB2YWx1ZSBvZiB0aGUgd2F0Y2hlci5cbiAqIFRoaXMgb25seSBnZXRzIGNhbGxlZCBmb3IgbGF6eSB3YXRjaGVycy5cbiAqL1xuV2F0Y2hlci5wcm90b3R5cGUuZXZhbHVhdGUgPSBmdW5jdGlvbiBldmFsdWF0ZSAoKSB7XG4gIHRoaXMudmFsdWUgPSB0aGlzLmdldCgpO1xuICB0aGlzLmRpcnR5ID0gZmFsc2U7XG59O1xuXG4vKipcbiAqIERlcGVuZCBvbiBhbGwgZGVwcyBjb2xsZWN0ZWQgYnkgdGhpcyB3YXRjaGVyLlxuICovXG5XYXRjaGVyLnByb3RvdHlwZS5kZXBlbmQgPSBmdW5jdGlvbiBkZXBlbmQgKCkge1xuICB2YXIgaSA9IHRoaXMuZGVwcy5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICB0aGlzLmRlcHNbaV0uZGVwZW5kKCk7XG4gIH1cbn07XG5cbi8qKlxuICogUmVtb3ZlIHNlbGYgZnJvbSBhbGwgZGVwZW5kZW5jaWVzJyBzdWJzY3JpYmVyIGxpc3QuXG4gKi9cbldhdGNoZXIucHJvdG90eXBlLnRlYXJkb3duID0gZnVuY3Rpb24gdGVhcmRvd24gKCkge1xuICBpZiAodGhpcy5hY3RpdmUpIHtcbiAgICAvLyByZW1vdmUgc2VsZiBmcm9tIHZtJ3Mgd2F0Y2hlciBsaXN0XG4gICAgLy8gdGhpcyBpcyBhIHNvbWV3aGF0IGV4cGVuc2l2ZSBvcGVyYXRpb24gc28gd2Ugc2tpcCBpdFxuICAgIC8vIGlmIHRoZSB2bSBpcyBiZWluZyBkZXN0cm95ZWQuXG4gICAgaWYgKCF0aGlzLnZtLl9pc0JlaW5nRGVzdHJveWVkKSB7XG4gICAgICByZW1vdmUodGhpcy52bS5fd2F0Y2hlcnMsIHRoaXMpO1xuICAgIH1cbiAgICB2YXIgaSA9IHRoaXMuZGVwcy5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgdGhpcy5kZXBzW2ldLnJlbW92ZVN1Yih0aGlzKTtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgfVxufTtcblxuLyogICovXG5cbnZhciBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24gPSB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBub29wLFxuICBzZXQ6IG5vb3Bcbn07XG5cbmZ1bmN0aW9uIHByb3h5ICh0YXJnZXQsIHNvdXJjZUtleSwga2V5KSB7XG4gIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5nZXQgPSBmdW5jdGlvbiBwcm94eUdldHRlciAoKSB7XG4gICAgcmV0dXJuIHRoaXNbc291cmNlS2V5XVtrZXldXG4gIH07XG4gIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPSBmdW5jdGlvbiBwcm94eVNldHRlciAodmFsKSB7XG4gICAgdGhpc1tzb3VyY2VLZXldW2tleV0gPSB2YWw7XG4gIH07XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uKTtcbn1cblxuZnVuY3Rpb24gaW5pdFN0YXRlICh2bSkge1xuICB2bS5fd2F0Y2hlcnMgPSBbXTtcbiAgdmFyIG9wdHMgPSB2bS4kb3B0aW9ucztcbiAgaWYgKG9wdHMucHJvcHMpIHsgaW5pdFByb3BzKHZtLCBvcHRzLnByb3BzKTsgfVxuICBpZiAob3B0cy5tZXRob2RzKSB7IGluaXRNZXRob2RzKHZtLCBvcHRzLm1ldGhvZHMpOyB9XG4gIGlmIChvcHRzLmRhdGEpIHtcbiAgICBpbml0RGF0YSh2bSk7XG4gIH0gZWxzZSB7XG4gICAgb2JzZXJ2ZSh2bS5fZGF0YSA9IHt9LCB0cnVlIC8qIGFzUm9vdERhdGEgKi8pO1xuICB9XG4gIGlmIChvcHRzLmNvbXB1dGVkKSB7IGluaXRDb21wdXRlZCh2bSwgb3B0cy5jb21wdXRlZCk7IH1cbiAgaWYgKG9wdHMud2F0Y2ggJiYgb3B0cy53YXRjaCAhPT0gbmF0aXZlV2F0Y2gpIHtcbiAgICBpbml0V2F0Y2godm0sIG9wdHMud2F0Y2gpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRQcm9wcyAodm0sIHByb3BzT3B0aW9ucykge1xuICB2YXIgcHJvcHNEYXRhID0gdm0uJG9wdGlvbnMucHJvcHNEYXRhIHx8IHt9O1xuICB2YXIgcHJvcHMgPSB2bS5fcHJvcHMgPSB7fTtcbiAgLy8gY2FjaGUgcHJvcCBrZXlzIHNvIHRoYXQgZnV0dXJlIHByb3BzIHVwZGF0ZXMgY2FuIGl0ZXJhdGUgdXNpbmcgQXJyYXlcbiAgLy8gaW5zdGVhZCBvZiBkeW5hbWljIG9iamVjdCBrZXkgZW51bWVyYXRpb24uXG4gIHZhciBrZXlzID0gdm0uJG9wdGlvbnMuX3Byb3BLZXlzID0gW107XG4gIHZhciBpc1Jvb3QgPSAhdm0uJHBhcmVudDtcbiAgLy8gcm9vdCBpbnN0YW5jZSBwcm9wcyBzaG91bGQgYmUgY29udmVydGVkXG4gIGlmICghaXNSb290KSB7XG4gICAgdG9nZ2xlT2JzZXJ2aW5nKGZhbHNlKTtcbiAgfVxuICB2YXIgbG9vcCA9IGZ1bmN0aW9uICgga2V5ICkge1xuICAgIGtleXMucHVzaChrZXkpO1xuICAgIHZhciB2YWx1ZSA9IHZhbGlkYXRlUHJvcChrZXksIHByb3BzT3B0aW9ucywgcHJvcHNEYXRhLCB2bSk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIGh5cGhlbmF0ZWRLZXkgPSBoeXBoZW5hdGUoa2V5KTtcbiAgICAgIGlmIChpc1Jlc2VydmVkQXR0cmlidXRlKGh5cGhlbmF0ZWRLZXkpIHx8XG4gICAgICAgICAgY29uZmlnLmlzUmVzZXJ2ZWRBdHRyKGh5cGhlbmF0ZWRLZXkpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgKFwiXFxcIlwiICsgaHlwaGVuYXRlZEtleSArIFwiXFxcIiBpcyBhIHJlc2VydmVkIGF0dHJpYnV0ZSBhbmQgY2Fubm90IGJlIHVzZWQgYXMgY29tcG9uZW50IHByb3AuXCIpLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBkZWZpbmVSZWFjdGl2ZSQkMShwcm9wcywga2V5LCB2YWx1ZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIWlzUm9vdCAmJiAhaXNVcGRhdGluZ0NoaWxkQ29tcG9uZW50KSB7XG4gICAgICAgICAge1xuICAgICAgICAgICAgaWYodm0ubXBIb3N0ID09PSAnbXAtYmFpZHUnIHx8IHZtLm1wSG9zdCA9PT0gJ21wLWt1YWlzaG91Jyl7Ly/nmb7luqbjgIHlv6vmiYsgb2JzZXJ2ZXIg5ZyoIHNldERhdGEgY2FsbGJhY2sg5LmL5ZCO6Kem5Y+R77yM55u05o6l5b+955Wl6K+lIHdhcm5cbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vZml4ZWQgYnkgeHh4eHh4IF9fbmV4dF90aWNrX3BlbmRpbmcsdW5pOi8vZm9ybS1maWVsZCDml7bkuI3lkYroraZcbiAgICAgICAgICAgIGlmKFxuICAgICAgICAgICAgICAgIGtleSA9PT0gJ3ZhbHVlJyAmJlxuICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkodm0uJG9wdGlvbnMuYmVoYXZpb3JzKSAmJlxuICAgICAgICAgICAgICAgIHZtLiRvcHRpb25zLmJlaGF2aW9ycy5pbmRleE9mKCd1bmk6Ly9mb3JtLWZpZWxkJykgIT09IC0xXG4gICAgICAgICAgICAgICl7XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYodm0uX2dldEZvcm1EYXRhKXtcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgJHBhcmVudCA9IHZtLiRwYXJlbnQ7XG4gICAgICAgICAgICB3aGlsZSgkcGFyZW50KXtcbiAgICAgICAgICAgICAgaWYoJHBhcmVudC5fX25leHRfdGlja19wZW5kaW5nKXtcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAkcGFyZW50ID0gJHBhcmVudC4kcGFyZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB3YXJuKFxuICAgICAgICAgICAgXCJBdm9pZCBtdXRhdGluZyBhIHByb3AgZGlyZWN0bHkgc2luY2UgdGhlIHZhbHVlIHdpbGwgYmUgXCIgK1xuICAgICAgICAgICAgXCJvdmVyd3JpdHRlbiB3aGVuZXZlciB0aGUgcGFyZW50IGNvbXBvbmVudCByZS1yZW5kZXJzLiBcIiArXG4gICAgICAgICAgICBcIkluc3RlYWQsIHVzZSBhIGRhdGEgb3IgY29tcHV0ZWQgcHJvcGVydHkgYmFzZWQgb24gdGhlIHByb3AncyBcIiArXG4gICAgICAgICAgICBcInZhbHVlLiBQcm9wIGJlaW5nIG11dGF0ZWQ6IFxcXCJcIiArIGtleSArIFwiXFxcIlwiLFxuICAgICAgICAgICAgdm1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVmaW5lUmVhY3RpdmUkJDEocHJvcHMsIGtleSwgdmFsdWUpO1xuICAgIH1cbiAgICAvLyBzdGF0aWMgcHJvcHMgYXJlIGFscmVhZHkgcHJveGllZCBvbiB0aGUgY29tcG9uZW50J3MgcHJvdG90eXBlXG4gICAgLy8gZHVyaW5nIFZ1ZS5leHRlbmQoKS4gV2Ugb25seSBuZWVkIHRvIHByb3h5IHByb3BzIGRlZmluZWQgYXRcbiAgICAvLyBpbnN0YW50aWF0aW9uIGhlcmUuXG4gICAgaWYgKCEoa2V5IGluIHZtKSkge1xuICAgICAgcHJveHkodm0sIFwiX3Byb3BzXCIsIGtleSk7XG4gICAgfVxuICB9O1xuXG4gIGZvciAodmFyIGtleSBpbiBwcm9wc09wdGlvbnMpIGxvb3AoIGtleSApO1xuICB0b2dnbGVPYnNlcnZpbmcodHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIGluaXREYXRhICh2bSkge1xuICB2YXIgZGF0YSA9IHZtLiRvcHRpb25zLmRhdGE7XG4gIGRhdGEgPSB2bS5fZGF0YSA9IHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nXG4gICAgPyBnZXREYXRhKGRhdGEsIHZtKVxuICAgIDogZGF0YSB8fCB7fTtcbiAgaWYgKCFpc1BsYWluT2JqZWN0KGRhdGEpKSB7XG4gICAgZGF0YSA9IHt9O1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgd2FybihcbiAgICAgICdkYXRhIGZ1bmN0aW9ucyBzaG91bGQgcmV0dXJuIGFuIG9iamVjdDpcXG4nICtcbiAgICAgICdodHRwczovL3Z1ZWpzLm9yZy92Mi9ndWlkZS9jb21wb25lbnRzLmh0bWwjZGF0YS1NdXN0LUJlLWEtRnVuY3Rpb24nLFxuICAgICAgdm1cbiAgICApO1xuICB9XG4gIC8vIHByb3h5IGRhdGEgb24gaW5zdGFuY2VcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhkYXRhKTtcbiAgdmFyIHByb3BzID0gdm0uJG9wdGlvbnMucHJvcHM7XG4gIHZhciBtZXRob2RzID0gdm0uJG9wdGlvbnMubWV0aG9kcztcbiAgdmFyIGkgPSBrZXlzLmxlbmd0aDtcbiAgd2hpbGUgKGktLSkge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAobWV0aG9kcyAmJiBoYXNPd24obWV0aG9kcywga2V5KSkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgIChcIk1ldGhvZCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaGFzIGFscmVhZHkgYmVlbiBkZWZpbmVkIGFzIGEgZGF0YSBwcm9wZXJ0eS5cIiksXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHByb3BzICYmIGhhc093bihwcm9wcywga2V5KSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB3YXJuKFxuICAgICAgICBcIlRoZSBkYXRhIHByb3BlcnR5IFxcXCJcIiArIGtleSArIFwiXFxcIiBpcyBhbHJlYWR5IGRlY2xhcmVkIGFzIGEgcHJvcC4gXCIgK1xuICAgICAgICBcIlVzZSBwcm9wIGRlZmF1bHQgdmFsdWUgaW5zdGVhZC5cIixcbiAgICAgICAgdm1cbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICghaXNSZXNlcnZlZChrZXkpKSB7XG4gICAgICBwcm94eSh2bSwgXCJfZGF0YVwiLCBrZXkpO1xuICAgIH1cbiAgfVxuICAvLyBvYnNlcnZlIGRhdGFcbiAgb2JzZXJ2ZShkYXRhLCB0cnVlIC8qIGFzUm9vdERhdGEgKi8pO1xufVxuXG5mdW5jdGlvbiBnZXREYXRhIChkYXRhLCB2bSkge1xuICAvLyAjNzU3MyBkaXNhYmxlIGRlcCBjb2xsZWN0aW9uIHdoZW4gaW52b2tpbmcgZGF0YSBnZXR0ZXJzXG4gIHB1c2hUYXJnZXQoKTtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZGF0YS5jYWxsKHZtLCB2bSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGhhbmRsZUVycm9yKGUsIHZtLCBcImRhdGEoKVwiKTtcbiAgICByZXR1cm4ge31cbiAgfSBmaW5hbGx5IHtcbiAgICBwb3BUYXJnZXQoKTtcbiAgfVxufVxuXG52YXIgY29tcHV0ZWRXYXRjaGVyT3B0aW9ucyA9IHsgbGF6eTogdHJ1ZSB9O1xuXG5mdW5jdGlvbiBpbml0Q29tcHV0ZWQgKHZtLCBjb21wdXRlZCkge1xuICAvLyAkZmxvdy1kaXNhYmxlLWxpbmVcbiAgdmFyIHdhdGNoZXJzID0gdm0uX2NvbXB1dGVkV2F0Y2hlcnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAvLyBjb21wdXRlZCBwcm9wZXJ0aWVzIGFyZSBqdXN0IGdldHRlcnMgZHVyaW5nIFNTUlxuICB2YXIgaXNTU1IgPSBpc1NlcnZlclJlbmRlcmluZygpO1xuXG4gIGZvciAodmFyIGtleSBpbiBjb21wdXRlZCkge1xuICAgIHZhciB1c2VyRGVmID0gY29tcHV0ZWRba2V5XTtcbiAgICB2YXIgZ2V0dGVyID0gdHlwZW9mIHVzZXJEZWYgPT09ICdmdW5jdGlvbicgPyB1c2VyRGVmIDogdXNlckRlZi5nZXQ7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZ2V0dGVyID09IG51bGwpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIChcIkdldHRlciBpcyBtaXNzaW5nIGZvciBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIuXCIpLFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzU1NSKSB7XG4gICAgICAvLyBjcmVhdGUgaW50ZXJuYWwgd2F0Y2hlciBmb3IgdGhlIGNvbXB1dGVkIHByb3BlcnR5LlxuICAgICAgd2F0Y2hlcnNba2V5XSA9IG5ldyBXYXRjaGVyKFxuICAgICAgICB2bSxcbiAgICAgICAgZ2V0dGVyIHx8IG5vb3AsXG4gICAgICAgIG5vb3AsXG4gICAgICAgIGNvbXB1dGVkV2F0Y2hlck9wdGlvbnNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gY29tcG9uZW50LWRlZmluZWQgY29tcHV0ZWQgcHJvcGVydGllcyBhcmUgYWxyZWFkeSBkZWZpbmVkIG9uIHRoZVxuICAgIC8vIGNvbXBvbmVudCBwcm90b3R5cGUuIFdlIG9ubHkgbmVlZCB0byBkZWZpbmUgY29tcHV0ZWQgcHJvcGVydGllcyBkZWZpbmVkXG4gICAgLy8gYXQgaW5zdGFudGlhdGlvbiBoZXJlLlxuICAgIGlmICghKGtleSBpbiB2bSkpIHtcbiAgICAgIGRlZmluZUNvbXB1dGVkKHZtLCBrZXksIHVzZXJEZWYpO1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGtleSBpbiB2bS4kZGF0YSkge1xuICAgICAgICB3YXJuKChcIlRoZSBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgYWxyZWFkeSBkZWZpbmVkIGluIGRhdGEuXCIpLCB2bSk7XG4gICAgICB9IGVsc2UgaWYgKHZtLiRvcHRpb25zLnByb3BzICYmIGtleSBpbiB2bS4kb3B0aW9ucy5wcm9wcykge1xuICAgICAgICB3YXJuKChcIlRoZSBjb21wdXRlZCBwcm9wZXJ0eSBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgaXMgYWxyZWFkeSBkZWZpbmVkIGFzIGEgcHJvcC5cIiksIHZtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVmaW5lQ29tcHV0ZWQgKFxuICB0YXJnZXQsXG4gIGtleSxcbiAgdXNlckRlZlxuKSB7XG4gIHZhciBzaG91bGRDYWNoZSA9ICFpc1NlcnZlclJlbmRlcmluZygpO1xuICBpZiAodHlwZW9mIHVzZXJEZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uZ2V0ID0gc2hvdWxkQ2FjaGVcbiAgICAgID8gY3JlYXRlQ29tcHV0ZWRHZXR0ZXIoa2V5KVxuICAgICAgOiBjcmVhdGVHZXR0ZXJJbnZva2VyKHVzZXJEZWYpO1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPSBub29wO1xuICB9IGVsc2Uge1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5nZXQgPSB1c2VyRGVmLmdldFxuICAgICAgPyBzaG91bGRDYWNoZSAmJiB1c2VyRGVmLmNhY2hlICE9PSBmYWxzZVxuICAgICAgICA/IGNyZWF0ZUNvbXB1dGVkR2V0dGVyKGtleSlcbiAgICAgICAgOiBjcmVhdGVHZXR0ZXJJbnZva2VyKHVzZXJEZWYuZ2V0KVxuICAgICAgOiBub29wO1xuICAgIHNoYXJlZFByb3BlcnR5RGVmaW5pdGlvbi5zZXQgPSB1c2VyRGVmLnNldCB8fCBub29wO1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgICBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24uc2V0ID09PSBub29wKSB7XG4gICAgc2hhcmVkUHJvcGVydHlEZWZpbml0aW9uLnNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgIChcIkNvbXB1dGVkIHByb3BlcnR5IFxcXCJcIiArIGtleSArIFwiXFxcIiB3YXMgYXNzaWduZWQgdG8gYnV0IGl0IGhhcyBubyBzZXR0ZXIuXCIpLFxuICAgICAgICB0aGlzXG4gICAgICApO1xuICAgIH07XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzaGFyZWRQcm9wZXJ0eURlZmluaXRpb24pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVDb21wdXRlZEdldHRlciAoa2V5KSB7XG4gIHJldHVybiBmdW5jdGlvbiBjb21wdXRlZEdldHRlciAoKSB7XG4gICAgdmFyIHdhdGNoZXIgPSB0aGlzLl9jb21wdXRlZFdhdGNoZXJzICYmIHRoaXMuX2NvbXB1dGVkV2F0Y2hlcnNba2V5XTtcbiAgICBpZiAod2F0Y2hlcikge1xuICAgICAgaWYgKHdhdGNoZXIuZGlydHkpIHtcbiAgICAgICAgd2F0Y2hlci5ldmFsdWF0ZSgpO1xuICAgICAgfVxuICAgICAgaWYgKERlcC5TaGFyZWRPYmplY3QudGFyZ2V0KSB7Ly8gZml4ZWQgYnkgeHh4eHh4XG4gICAgICAgIHdhdGNoZXIuZGVwZW5kKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gd2F0Y2hlci52YWx1ZVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVHZXR0ZXJJbnZva2VyKGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiBjb21wdXRlZEdldHRlciAoKSB7XG4gICAgcmV0dXJuIGZuLmNhbGwodGhpcywgdGhpcylcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0TWV0aG9kcyAodm0sIG1ldGhvZHMpIHtcbiAgdmFyIHByb3BzID0gdm0uJG9wdGlvbnMucHJvcHM7XG4gIGZvciAodmFyIGtleSBpbiBtZXRob2RzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICh0eXBlb2YgbWV0aG9kc1trZXldICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJNZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGhhcyB0eXBlIFxcXCJcIiArICh0eXBlb2YgbWV0aG9kc1trZXldKSArIFwiXFxcIiBpbiB0aGUgY29tcG9uZW50IGRlZmluaXRpb24uIFwiICtcbiAgICAgICAgICBcIkRpZCB5b3UgcmVmZXJlbmNlIHRoZSBmdW5jdGlvbiBjb3JyZWN0bHk/XCIsXG4gICAgICAgICAgdm1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcyAmJiBoYXNPd24ocHJvcHMsIGtleSkpIHtcbiAgICAgICAgd2FybihcbiAgICAgICAgICAoXCJNZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGhhcyBhbHJlYWR5IGJlZW4gZGVmaW5lZCBhcyBhIHByb3AuXCIpLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoKGtleSBpbiB2bSkgJiYgaXNSZXNlcnZlZChrZXkpKSB7XG4gICAgICAgIHdhcm4oXG4gICAgICAgICAgXCJNZXRob2QgXFxcIlwiICsga2V5ICsgXCJcXFwiIGNvbmZsaWN0cyB3aXRoIGFuIGV4aXN0aW5nIFZ1ZSBpbnN0YW5jZSBtZXRob2QuIFwiICtcbiAgICAgICAgICBcIkF2b2lkIGRlZmluaW5nIGNvbXBvbmVudCBtZXRob2RzIHRoYXQgc3RhcnQgd2l0aCBfIG9yICQuXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdm1ba2V5XSA9IHR5cGVvZiBtZXRob2RzW2tleV0gIT09ICdmdW5jdGlvbicgPyBub29wIDogYmluZChtZXRob2RzW2tleV0sIHZtKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0V2F0Y2ggKHZtLCB3YXRjaCkge1xuICBmb3IgKHZhciBrZXkgaW4gd2F0Y2gpIHtcbiAgICB2YXIgaGFuZGxlciA9IHdhdGNoW2tleV07XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaGFuZGxlcikpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGFuZGxlci5sZW5ndGg7IGkrKykge1xuICAgICAgICBjcmVhdGVXYXRjaGVyKHZtLCBrZXksIGhhbmRsZXJbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjcmVhdGVXYXRjaGVyKHZtLCBrZXksIGhhbmRsZXIpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVXYXRjaGVyIChcbiAgdm0sXG4gIGV4cE9yRm4sXG4gIGhhbmRsZXIsXG4gIG9wdGlvbnNcbikge1xuICBpZiAoaXNQbGFpbk9iamVjdChoYW5kbGVyKSkge1xuICAgIG9wdGlvbnMgPSBoYW5kbGVyO1xuICAgIGhhbmRsZXIgPSBoYW5kbGVyLmhhbmRsZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiBoYW5kbGVyID09PSAnc3RyaW5nJykge1xuICAgIGhhbmRsZXIgPSB2bVtoYW5kbGVyXTtcbiAgfVxuICByZXR1cm4gdm0uJHdhdGNoKGV4cE9yRm4sIGhhbmRsZXIsIG9wdGlvbnMpXG59XG5cbmZ1bmN0aW9uIHN0YXRlTWl4aW4gKFZ1ZSkge1xuICAvLyBmbG93IHNvbWVob3cgaGFzIHByb2JsZW1zIHdpdGggZGlyZWN0bHkgZGVjbGFyZWQgZGVmaW5pdGlvbiBvYmplY3RcbiAgLy8gd2hlbiB1c2luZyBPYmplY3QuZGVmaW5lUHJvcGVydHksIHNvIHdlIGhhdmUgdG8gcHJvY2VkdXJhbGx5IGJ1aWxkIHVwXG4gIC8vIHRoZSBvYmplY3QgaGVyZS5cbiAgdmFyIGRhdGFEZWYgPSB7fTtcbiAgZGF0YURlZi5nZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9kYXRhIH07XG4gIHZhciBwcm9wc0RlZiA9IHt9O1xuICBwcm9wc0RlZi5nZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9wcm9wcyB9O1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGRhdGFEZWYuc2V0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgd2FybihcbiAgICAgICAgJ0F2b2lkIHJlcGxhY2luZyBpbnN0YW5jZSByb290ICRkYXRhLiAnICtcbiAgICAgICAgJ1VzZSBuZXN0ZWQgZGF0YSBwcm9wZXJ0aWVzIGluc3RlYWQuJyxcbiAgICAgICAgdGhpc1xuICAgICAgKTtcbiAgICB9O1xuICAgIHByb3BzRGVmLnNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdhcm4oXCIkcHJvcHMgaXMgcmVhZG9ubHkuXCIsIHRoaXMpO1xuICAgIH07XG4gIH1cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFZ1ZS5wcm90b3R5cGUsICckZGF0YScsIGRhdGFEZWYpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLnByb3RvdHlwZSwgJyRwcm9wcycsIHByb3BzRGVmKTtcblxuICBWdWUucHJvdG90eXBlLiRzZXQgPSBzZXQ7XG4gIFZ1ZS5wcm90b3R5cGUuJGRlbGV0ZSA9IGRlbDtcblxuICBWdWUucHJvdG90eXBlLiR3YXRjaCA9IGZ1bmN0aW9uIChcbiAgICBleHBPckZuLFxuICAgIGNiLFxuICAgIG9wdGlvbnNcbiAgKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICBpZiAoaXNQbGFpbk9iamVjdChjYikpIHtcbiAgICAgIHJldHVybiBjcmVhdGVXYXRjaGVyKHZtLCBleHBPckZuLCBjYiwgb3B0aW9ucylcbiAgICB9XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgb3B0aW9ucy51c2VyID0gdHJ1ZTtcbiAgICB2YXIgd2F0Y2hlciA9IG5ldyBXYXRjaGVyKHZtLCBleHBPckZuLCBjYiwgb3B0aW9ucyk7XG4gICAgaWYgKG9wdGlvbnMuaW1tZWRpYXRlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjYi5jYWxsKHZtLCB3YXRjaGVyLnZhbHVlKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGhhbmRsZUVycm9yKGVycm9yLCB2bSwgKFwiY2FsbGJhY2sgZm9yIGltbWVkaWF0ZSB3YXRjaGVyIFxcXCJcIiArICh3YXRjaGVyLmV4cHJlc3Npb24pICsgXCJcXFwiXCIpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVud2F0Y2hGbiAoKSB7XG4gICAgICB3YXRjaGVyLnRlYXJkb3duKCk7XG4gICAgfVxuICB9O1xufVxuXG4vKiAgKi9cblxudmFyIHVpZCQzID0gMDtcblxuZnVuY3Rpb24gaW5pdE1peGluIChWdWUpIHtcbiAgVnVlLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICAvLyBhIHVpZFxuICAgIHZtLl91aWQgPSB1aWQkMysrO1xuXG4gICAgdmFyIHN0YXJ0VGFnLCBlbmRUYWc7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgY29uZmlnLnBlcmZvcm1hbmNlICYmIG1hcmspIHtcbiAgICAgIHN0YXJ0VGFnID0gXCJ2dWUtcGVyZi1zdGFydDpcIiArICh2bS5fdWlkKTtcbiAgICAgIGVuZFRhZyA9IFwidnVlLXBlcmYtZW5kOlwiICsgKHZtLl91aWQpO1xuICAgICAgbWFyayhzdGFydFRhZyk7XG4gICAgfVxuXG4gICAgLy8gYSBmbGFnIHRvIGF2b2lkIHRoaXMgYmVpbmcgb2JzZXJ2ZWRcbiAgICB2bS5faXNWdWUgPSB0cnVlO1xuICAgIC8vIG1lcmdlIG9wdGlvbnNcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLl9pc0NvbXBvbmVudCkge1xuICAgICAgLy8gb3B0aW1pemUgaW50ZXJuYWwgY29tcG9uZW50IGluc3RhbnRpYXRpb25cbiAgICAgIC8vIHNpbmNlIGR5bmFtaWMgb3B0aW9ucyBtZXJnaW5nIGlzIHByZXR0eSBzbG93LCBhbmQgbm9uZSBvZiB0aGVcbiAgICAgIC8vIGludGVybmFsIGNvbXBvbmVudCBvcHRpb25zIG5lZWRzIHNwZWNpYWwgdHJlYXRtZW50LlxuICAgICAgaW5pdEludGVybmFsQ29tcG9uZW50KHZtLCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uJG9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoXG4gICAgICAgIHJlc29sdmVDb25zdHJ1Y3Rvck9wdGlvbnModm0uY29uc3RydWN0b3IpLFxuICAgICAgICBvcHRpb25zIHx8IHt9LFxuICAgICAgICB2bVxuICAgICAgKTtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaW5pdFByb3h5KHZtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uX3JlbmRlclByb3h5ID0gdm07XG4gICAgfVxuICAgIC8vIGV4cG9zZSByZWFsIHNlbGZcbiAgICB2bS5fc2VsZiA9IHZtO1xuICAgIGluaXRMaWZlY3ljbGUodm0pO1xuICAgIGluaXRFdmVudHModm0pO1xuICAgIGluaXRSZW5kZXIodm0pO1xuICAgIGNhbGxIb29rKHZtLCAnYmVmb3JlQ3JlYXRlJyk7XG4gICAgIXZtLl8kZmFsbGJhY2sgJiYgaW5pdEluamVjdGlvbnModm0pOyAvLyByZXNvbHZlIGluamVjdGlvbnMgYmVmb3JlIGRhdGEvcHJvcHNcbiAgICBpbml0U3RhdGUodm0pO1xuICAgICF2bS5fJGZhbGxiYWNrICYmIGluaXRQcm92aWRlKHZtKTsgLy8gcmVzb2x2ZSBwcm92aWRlIGFmdGVyIGRhdGEvcHJvcHNcbiAgICAhdm0uXyRmYWxsYmFjayAmJiBjYWxsSG9vayh2bSwgJ2NyZWF0ZWQnKTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGNvbmZpZy5wZXJmb3JtYW5jZSAmJiBtYXJrKSB7XG4gICAgICB2bS5fbmFtZSA9IGZvcm1hdENvbXBvbmVudE5hbWUodm0sIGZhbHNlKTtcbiAgICAgIG1hcmsoZW5kVGFnKTtcbiAgICAgIG1lYXN1cmUoKFwidnVlIFwiICsgKHZtLl9uYW1lKSArIFwiIGluaXRcIiksIHN0YXJ0VGFnLCBlbmRUYWcpO1xuICAgIH1cblxuICAgIGlmICh2bS4kb3B0aW9ucy5lbCkge1xuICAgICAgdm0uJG1vdW50KHZtLiRvcHRpb25zLmVsKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGluaXRJbnRlcm5hbENvbXBvbmVudCAodm0sIG9wdGlvbnMpIHtcbiAgdmFyIG9wdHMgPSB2bS4kb3B0aW9ucyA9IE9iamVjdC5jcmVhdGUodm0uY29uc3RydWN0b3Iub3B0aW9ucyk7XG4gIC8vIGRvaW5nIHRoaXMgYmVjYXVzZSBpdCdzIGZhc3RlciB0aGFuIGR5bmFtaWMgZW51bWVyYXRpb24uXG4gIHZhciBwYXJlbnRWbm9kZSA9IG9wdGlvbnMuX3BhcmVudFZub2RlO1xuICBvcHRzLnBhcmVudCA9IG9wdGlvbnMucGFyZW50O1xuICBvcHRzLl9wYXJlbnRWbm9kZSA9IHBhcmVudFZub2RlO1xuXG4gIHZhciB2bm9kZUNvbXBvbmVudE9wdGlvbnMgPSBwYXJlbnRWbm9kZS5jb21wb25lbnRPcHRpb25zO1xuICBvcHRzLnByb3BzRGF0YSA9IHZub2RlQ29tcG9uZW50T3B0aW9ucy5wcm9wc0RhdGE7XG4gIG9wdHMuX3BhcmVudExpc3RlbmVycyA9IHZub2RlQ29tcG9uZW50T3B0aW9ucy5saXN0ZW5lcnM7XG4gIG9wdHMuX3JlbmRlckNoaWxkcmVuID0gdm5vZGVDb21wb25lbnRPcHRpb25zLmNoaWxkcmVuO1xuICBvcHRzLl9jb21wb25lbnRUYWcgPSB2bm9kZUNvbXBvbmVudE9wdGlvbnMudGFnO1xuXG4gIGlmIChvcHRpb25zLnJlbmRlcikge1xuICAgIG9wdHMucmVuZGVyID0gb3B0aW9ucy5yZW5kZXI7XG4gICAgb3B0cy5zdGF0aWNSZW5kZXJGbnMgPSBvcHRpb25zLnN0YXRpY1JlbmRlckZucztcbiAgfVxufVxuXG5mdW5jdGlvbiByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zIChDdG9yKSB7XG4gIHZhciBvcHRpb25zID0gQ3Rvci5vcHRpb25zO1xuICBpZiAoQ3Rvci5zdXBlcikge1xuICAgIHZhciBzdXBlck9wdGlvbnMgPSByZXNvbHZlQ29uc3RydWN0b3JPcHRpb25zKEN0b3Iuc3VwZXIpO1xuICAgIHZhciBjYWNoZWRTdXBlck9wdGlvbnMgPSBDdG9yLnN1cGVyT3B0aW9ucztcbiAgICBpZiAoc3VwZXJPcHRpb25zICE9PSBjYWNoZWRTdXBlck9wdGlvbnMpIHtcbiAgICAgIC8vIHN1cGVyIG9wdGlvbiBjaGFuZ2VkLFxuICAgICAgLy8gbmVlZCB0byByZXNvbHZlIG5ldyBvcHRpb25zLlxuICAgICAgQ3Rvci5zdXBlck9wdGlvbnMgPSBzdXBlck9wdGlvbnM7XG4gICAgICAvLyBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGxhdGUtbW9kaWZpZWQvYXR0YWNoZWQgb3B0aW9ucyAoIzQ5NzYpXG4gICAgICB2YXIgbW9kaWZpZWRPcHRpb25zID0gcmVzb2x2ZU1vZGlmaWVkT3B0aW9ucyhDdG9yKTtcbiAgICAgIC8vIHVwZGF0ZSBiYXNlIGV4dGVuZCBvcHRpb25zXG4gICAgICBpZiAobW9kaWZpZWRPcHRpb25zKSB7XG4gICAgICAgIGV4dGVuZChDdG9yLmV4dGVuZE9wdGlvbnMsIG1vZGlmaWVkT3B0aW9ucyk7XG4gICAgICB9XG4gICAgICBvcHRpb25zID0gQ3Rvci5vcHRpb25zID0gbWVyZ2VPcHRpb25zKHN1cGVyT3B0aW9ucywgQ3Rvci5leHRlbmRPcHRpb25zKTtcbiAgICAgIGlmIChvcHRpb25zLm5hbWUpIHtcbiAgICAgICAgb3B0aW9ucy5jb21wb25lbnRzW29wdGlvbnMubmFtZV0gPSBDdG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiByZXNvbHZlTW9kaWZpZWRPcHRpb25zIChDdG9yKSB7XG4gIHZhciBtb2RpZmllZDtcbiAgdmFyIGxhdGVzdCA9IEN0b3Iub3B0aW9ucztcbiAgdmFyIHNlYWxlZCA9IEN0b3Iuc2VhbGVkT3B0aW9ucztcbiAgZm9yICh2YXIga2V5IGluIGxhdGVzdCkge1xuICAgIGlmIChsYXRlc3Rba2V5XSAhPT0gc2VhbGVkW2tleV0pIHtcbiAgICAgIGlmICghbW9kaWZpZWQpIHsgbW9kaWZpZWQgPSB7fTsgfVxuICAgICAgbW9kaWZpZWRba2V5XSA9IGxhdGVzdFtrZXldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbW9kaWZpZWRcbn1cblxuZnVuY3Rpb24gVnVlIChvcHRpb25zKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmXG4gICAgISh0aGlzIGluc3RhbmNlb2YgVnVlKVxuICApIHtcbiAgICB3YXJuKCdWdWUgaXMgYSBjb25zdHJ1Y3RvciBhbmQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHRoZSBgbmV3YCBrZXl3b3JkJyk7XG4gIH1cbiAgdGhpcy5faW5pdChvcHRpb25zKTtcbn1cblxuaW5pdE1peGluKFZ1ZSk7XG5zdGF0ZU1peGluKFZ1ZSk7XG5ldmVudHNNaXhpbihWdWUpO1xubGlmZWN5Y2xlTWl4aW4oVnVlKTtcbnJlbmRlck1peGluKFZ1ZSk7XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0VXNlIChWdWUpIHtcbiAgVnVlLnVzZSA9IGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAgICB2YXIgaW5zdGFsbGVkUGx1Z2lucyA9ICh0aGlzLl9pbnN0YWxsZWRQbHVnaW5zIHx8ICh0aGlzLl9pbnN0YWxsZWRQbHVnaW5zID0gW10pKTtcbiAgICBpZiAoaW5zdGFsbGVkUGx1Z2lucy5pbmRleE9mKHBsdWdpbikgPiAtMSkge1xuICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICAvLyBhZGRpdGlvbmFsIHBhcmFtZXRlcnNcbiAgICB2YXIgYXJncyA9IHRvQXJyYXkoYXJndW1lbnRzLCAxKTtcbiAgICBhcmdzLnVuc2hpZnQodGhpcyk7XG4gICAgaWYgKHR5cGVvZiBwbHVnaW4uaW5zdGFsbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGx1Z2luLmluc3RhbGwuYXBwbHkocGx1Z2luLCBhcmdzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBwbHVnaW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHBsdWdpbi5hcHBseShudWxsLCBhcmdzKTtcbiAgICB9XG4gICAgaW5zdGFsbGVkUGx1Z2lucy5wdXNoKHBsdWdpbik7XG4gICAgcmV0dXJuIHRoaXNcbiAgfTtcbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRNaXhpbiQxIChWdWUpIHtcbiAgVnVlLm1peGluID0gZnVuY3Rpb24gKG1peGluKSB7XG4gICAgdGhpcy5vcHRpb25zID0gbWVyZ2VPcHRpb25zKHRoaXMub3B0aW9ucywgbWl4aW4pO1xuICAgIHJldHVybiB0aGlzXG4gIH07XG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBpbml0RXh0ZW5kIChWdWUpIHtcbiAgLyoqXG4gICAqIEVhY2ggaW5zdGFuY2UgY29uc3RydWN0b3IsIGluY2x1ZGluZyBWdWUsIGhhcyBhIHVuaXF1ZVxuICAgKiBjaWQuIFRoaXMgZW5hYmxlcyB1cyB0byBjcmVhdGUgd3JhcHBlZCBcImNoaWxkXG4gICAqIGNvbnN0cnVjdG9yc1wiIGZvciBwcm90b3R5cGFsIGluaGVyaXRhbmNlIGFuZCBjYWNoZSB0aGVtLlxuICAgKi9cbiAgVnVlLmNpZCA9IDA7XG4gIHZhciBjaWQgPSAxO1xuXG4gIC8qKlxuICAgKiBDbGFzcyBpbmhlcml0YW5jZVxuICAgKi9cbiAgVnVlLmV4dGVuZCA9IGZ1bmN0aW9uIChleHRlbmRPcHRpb25zKSB7XG4gICAgZXh0ZW5kT3B0aW9ucyA9IGV4dGVuZE9wdGlvbnMgfHwge307XG4gICAgdmFyIFN1cGVyID0gdGhpcztcbiAgICB2YXIgU3VwZXJJZCA9IFN1cGVyLmNpZDtcbiAgICB2YXIgY2FjaGVkQ3RvcnMgPSBleHRlbmRPcHRpb25zLl9DdG9yIHx8IChleHRlbmRPcHRpb25zLl9DdG9yID0ge30pO1xuICAgIGlmIChjYWNoZWRDdG9yc1tTdXBlcklkXSkge1xuICAgICAgcmV0dXJuIGNhY2hlZEN0b3JzW1N1cGVySWRdXG4gICAgfVxuXG4gICAgdmFyIG5hbWUgPSBleHRlbmRPcHRpb25zLm5hbWUgfHwgU3VwZXIub3B0aW9ucy5uYW1lO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIG5hbWUpIHtcbiAgICAgIHZhbGlkYXRlQ29tcG9uZW50TmFtZShuYW1lKTtcbiAgICB9XG5cbiAgICB2YXIgU3ViID0gZnVuY3Rpb24gVnVlQ29tcG9uZW50IChvcHRpb25zKSB7XG4gICAgICB0aGlzLl9pbml0KG9wdGlvbnMpO1xuICAgIH07XG4gICAgU3ViLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU3VwZXIucHJvdG90eXBlKTtcbiAgICBTdWIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU3ViO1xuICAgIFN1Yi5jaWQgPSBjaWQrKztcbiAgICBTdWIub3B0aW9ucyA9IG1lcmdlT3B0aW9ucyhcbiAgICAgIFN1cGVyLm9wdGlvbnMsXG4gICAgICBleHRlbmRPcHRpb25zXG4gICAgKTtcbiAgICBTdWJbJ3N1cGVyJ10gPSBTdXBlcjtcblxuICAgIC8vIEZvciBwcm9wcyBhbmQgY29tcHV0ZWQgcHJvcGVydGllcywgd2UgZGVmaW5lIHRoZSBwcm94eSBnZXR0ZXJzIG9uXG4gICAgLy8gdGhlIFZ1ZSBpbnN0YW5jZXMgYXQgZXh0ZW5zaW9uIHRpbWUsIG9uIHRoZSBleHRlbmRlZCBwcm90b3R5cGUuIFRoaXNcbiAgICAvLyBhdm9pZHMgT2JqZWN0LmRlZmluZVByb3BlcnR5IGNhbGxzIGZvciBlYWNoIGluc3RhbmNlIGNyZWF0ZWQuXG4gICAgaWYgKFN1Yi5vcHRpb25zLnByb3BzKSB7XG4gICAgICBpbml0UHJvcHMkMShTdWIpO1xuICAgIH1cbiAgICBpZiAoU3ViLm9wdGlvbnMuY29tcHV0ZWQpIHtcbiAgICAgIGluaXRDb21wdXRlZCQxKFN1Yik7XG4gICAgfVxuXG4gICAgLy8gYWxsb3cgZnVydGhlciBleHRlbnNpb24vbWl4aW4vcGx1Z2luIHVzYWdlXG4gICAgU3ViLmV4dGVuZCA9IFN1cGVyLmV4dGVuZDtcbiAgICBTdWIubWl4aW4gPSBTdXBlci5taXhpbjtcbiAgICBTdWIudXNlID0gU3VwZXIudXNlO1xuXG4gICAgLy8gY3JlYXRlIGFzc2V0IHJlZ2lzdGVycywgc28gZXh0ZW5kZWQgY2xhc3Nlc1xuICAgIC8vIGNhbiBoYXZlIHRoZWlyIHByaXZhdGUgYXNzZXRzIHRvby5cbiAgICBBU1NFVF9UWVBFUy5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgICBTdWJbdHlwZV0gPSBTdXBlclt0eXBlXTtcbiAgICB9KTtcbiAgICAvLyBlbmFibGUgcmVjdXJzaXZlIHNlbGYtbG9va3VwXG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIFN1Yi5vcHRpb25zLmNvbXBvbmVudHNbbmFtZV0gPSBTdWI7XG4gICAgfVxuXG4gICAgLy8ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgc3VwZXIgb3B0aW9ucyBhdCBleHRlbnNpb24gdGltZS5cbiAgICAvLyBsYXRlciBhdCBpbnN0YW50aWF0aW9uIHdlIGNhbiBjaGVjayBpZiBTdXBlcidzIG9wdGlvbnMgaGF2ZVxuICAgIC8vIGJlZW4gdXBkYXRlZC5cbiAgICBTdWIuc3VwZXJPcHRpb25zID0gU3VwZXIub3B0aW9ucztcbiAgICBTdWIuZXh0ZW5kT3B0aW9ucyA9IGV4dGVuZE9wdGlvbnM7XG4gICAgU3ViLnNlYWxlZE9wdGlvbnMgPSBleHRlbmQoe30sIFN1Yi5vcHRpb25zKTtcblxuICAgIC8vIGNhY2hlIGNvbnN0cnVjdG9yXG4gICAgY2FjaGVkQ3RvcnNbU3VwZXJJZF0gPSBTdWI7XG4gICAgcmV0dXJuIFN1YlxuICB9O1xufVxuXG5mdW5jdGlvbiBpbml0UHJvcHMkMSAoQ29tcCkge1xuICB2YXIgcHJvcHMgPSBDb21wLm9wdGlvbnMucHJvcHM7XG4gIGZvciAodmFyIGtleSBpbiBwcm9wcykge1xuICAgIHByb3h5KENvbXAucHJvdG90eXBlLCBcIl9wcm9wc1wiLCBrZXkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluaXRDb21wdXRlZCQxIChDb21wKSB7XG4gIHZhciBjb21wdXRlZCA9IENvbXAub3B0aW9ucy5jb21wdXRlZDtcbiAgZm9yICh2YXIga2V5IGluIGNvbXB1dGVkKSB7XG4gICAgZGVmaW5lQ29tcHV0ZWQoQ29tcC5wcm90b3R5cGUsIGtleSwgY29tcHV0ZWRba2V5XSk7XG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGluaXRBc3NldFJlZ2lzdGVycyAoVnVlKSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgYXNzZXQgcmVnaXN0cmF0aW9uIG1ldGhvZHMuXG4gICAqL1xuICBBU1NFVF9UWVBFUy5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgVnVlW3R5cGVdID0gZnVuY3Rpb24gKFxuICAgICAgaWQsXG4gICAgICBkZWZpbml0aW9uXG4gICAgKSB7XG4gICAgICBpZiAoIWRlZmluaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc1t0eXBlICsgJ3MnXVtpZF1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB0eXBlID09PSAnY29tcG9uZW50Jykge1xuICAgICAgICAgIHZhbGlkYXRlQ29tcG9uZW50TmFtZShpZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUgPT09ICdjb21wb25lbnQnICYmIGlzUGxhaW5PYmplY3QoZGVmaW5pdGlvbikpIHtcbiAgICAgICAgICBkZWZpbml0aW9uLm5hbWUgPSBkZWZpbml0aW9uLm5hbWUgfHwgaWQ7XG4gICAgICAgICAgZGVmaW5pdGlvbiA9IHRoaXMub3B0aW9ucy5fYmFzZS5leHRlbmQoZGVmaW5pdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUgPT09ICdkaXJlY3RpdmUnICYmIHR5cGVvZiBkZWZpbml0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgZGVmaW5pdGlvbiA9IHsgYmluZDogZGVmaW5pdGlvbiwgdXBkYXRlOiBkZWZpbml0aW9uIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcHRpb25zW3R5cGUgKyAncyddW2lkXSA9IGRlZmluaXRpb247XG4gICAgICAgIHJldHVybiBkZWZpbml0aW9uXG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG59XG5cbi8qICAqL1xuXG5cblxuZnVuY3Rpb24gZ2V0Q29tcG9uZW50TmFtZSAob3B0cykge1xuICByZXR1cm4gb3B0cyAmJiAob3B0cy5DdG9yLm9wdGlvbnMubmFtZSB8fCBvcHRzLnRhZylcbn1cblxuZnVuY3Rpb24gbWF0Y2hlcyAocGF0dGVybiwgbmFtZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShwYXR0ZXJuKSkge1xuICAgIHJldHVybiBwYXR0ZXJuLmluZGV4T2YobmFtZSkgPiAtMVxuICB9IGVsc2UgaWYgKHR5cGVvZiBwYXR0ZXJuID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBwYXR0ZXJuLnNwbGl0KCcsJykuaW5kZXhPZihuYW1lKSA+IC0xXG4gIH0gZWxzZSBpZiAoaXNSZWdFeHAocGF0dGVybikpIHtcbiAgICByZXR1cm4gcGF0dGVybi50ZXN0KG5hbWUpXG4gIH1cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIHBydW5lQ2FjaGUgKGtlZXBBbGl2ZUluc3RhbmNlLCBmaWx0ZXIpIHtcbiAgdmFyIGNhY2hlID0ga2VlcEFsaXZlSW5zdGFuY2UuY2FjaGU7XG4gIHZhciBrZXlzID0ga2VlcEFsaXZlSW5zdGFuY2Uua2V5cztcbiAgdmFyIF92bm9kZSA9IGtlZXBBbGl2ZUluc3RhbmNlLl92bm9kZTtcbiAgZm9yICh2YXIga2V5IGluIGNhY2hlKSB7XG4gICAgdmFyIGNhY2hlZE5vZGUgPSBjYWNoZVtrZXldO1xuICAgIGlmIChjYWNoZWROb2RlKSB7XG4gICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWUoY2FjaGVkTm9kZS5jb21wb25lbnRPcHRpb25zKTtcbiAgICAgIGlmIChuYW1lICYmICFmaWx0ZXIobmFtZSkpIHtcbiAgICAgICAgcHJ1bmVDYWNoZUVudHJ5KGNhY2hlLCBrZXksIGtleXMsIF92bm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHBydW5lQ2FjaGVFbnRyeSAoXG4gIGNhY2hlLFxuICBrZXksXG4gIGtleXMsXG4gIGN1cnJlbnRcbikge1xuICB2YXIgY2FjaGVkJCQxID0gY2FjaGVba2V5XTtcbiAgaWYgKGNhY2hlZCQkMSAmJiAoIWN1cnJlbnQgfHwgY2FjaGVkJCQxLnRhZyAhPT0gY3VycmVudC50YWcpKSB7XG4gICAgY2FjaGVkJCQxLmNvbXBvbmVudEluc3RhbmNlLiRkZXN0cm95KCk7XG4gIH1cbiAgY2FjaGVba2V5XSA9IG51bGw7XG4gIHJlbW92ZShrZXlzLCBrZXkpO1xufVxuXG52YXIgcGF0dGVyblR5cGVzID0gW1N0cmluZywgUmVnRXhwLCBBcnJheV07XG5cbnZhciBLZWVwQWxpdmUgPSB7XG4gIG5hbWU6ICdrZWVwLWFsaXZlJyxcbiAgYWJzdHJhY3Q6IHRydWUsXG5cbiAgcHJvcHM6IHtcbiAgICBpbmNsdWRlOiBwYXR0ZXJuVHlwZXMsXG4gICAgZXhjbHVkZTogcGF0dGVyblR5cGVzLFxuICAgIG1heDogW1N0cmluZywgTnVtYmVyXVxuICB9LFxuXG4gIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQgKCkge1xuICAgIHRoaXMuY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHRoaXMua2V5cyA9IFtdO1xuICB9LFxuXG4gIGRlc3Ryb3llZDogZnVuY3Rpb24gZGVzdHJveWVkICgpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5jYWNoZSkge1xuICAgICAgcHJ1bmVDYWNoZUVudHJ5KHRoaXMuY2FjaGUsIGtleSwgdGhpcy5rZXlzKTtcbiAgICB9XG4gIH0sXG5cbiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCAoKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICB0aGlzLiR3YXRjaCgnaW5jbHVkZScsIGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgIHBydW5lQ2FjaGUodGhpcyQxLCBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gbWF0Y2hlcyh2YWwsIG5hbWUpOyB9KTtcbiAgICB9KTtcbiAgICB0aGlzLiR3YXRjaCgnZXhjbHVkZScsIGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgIHBydW5lQ2FjaGUodGhpcyQxLCBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gIW1hdGNoZXModmFsLCBuYW1lKTsgfSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIgKCkge1xuICAgIHZhciBzbG90ID0gdGhpcy4kc2xvdHMuZGVmYXVsdDtcbiAgICB2YXIgdm5vZGUgPSBnZXRGaXJzdENvbXBvbmVudENoaWxkKHNsb3QpO1xuICAgIHZhciBjb21wb25lbnRPcHRpb25zID0gdm5vZGUgJiYgdm5vZGUuY29tcG9uZW50T3B0aW9ucztcbiAgICBpZiAoY29tcG9uZW50T3B0aW9ucykge1xuICAgICAgLy8gY2hlY2sgcGF0dGVyblxuICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lKGNvbXBvbmVudE9wdGlvbnMpO1xuICAgICAgdmFyIHJlZiA9IHRoaXM7XG4gICAgICB2YXIgaW5jbHVkZSA9IHJlZi5pbmNsdWRlO1xuICAgICAgdmFyIGV4Y2x1ZGUgPSByZWYuZXhjbHVkZTtcbiAgICAgIGlmIChcbiAgICAgICAgLy8gbm90IGluY2x1ZGVkXG4gICAgICAgIChpbmNsdWRlICYmICghbmFtZSB8fCAhbWF0Y2hlcyhpbmNsdWRlLCBuYW1lKSkpIHx8XG4gICAgICAgIC8vIGV4Y2x1ZGVkXG4gICAgICAgIChleGNsdWRlICYmIG5hbWUgJiYgbWF0Y2hlcyhleGNsdWRlLCBuYW1lKSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gdm5vZGVcbiAgICAgIH1cblxuICAgICAgdmFyIHJlZiQxID0gdGhpcztcbiAgICAgIHZhciBjYWNoZSA9IHJlZiQxLmNhY2hlO1xuICAgICAgdmFyIGtleXMgPSByZWYkMS5rZXlzO1xuICAgICAgdmFyIGtleSA9IHZub2RlLmtleSA9PSBudWxsXG4gICAgICAgIC8vIHNhbWUgY29uc3RydWN0b3IgbWF5IGdldCByZWdpc3RlcmVkIGFzIGRpZmZlcmVudCBsb2NhbCBjb21wb25lbnRzXG4gICAgICAgIC8vIHNvIGNpZCBhbG9uZSBpcyBub3QgZW5vdWdoICgjMzI2OSlcbiAgICAgICAgPyBjb21wb25lbnRPcHRpb25zLkN0b3IuY2lkICsgKGNvbXBvbmVudE9wdGlvbnMudGFnID8gKFwiOjpcIiArIChjb21wb25lbnRPcHRpb25zLnRhZykpIDogJycpXG4gICAgICAgIDogdm5vZGUua2V5O1xuICAgICAgaWYgKGNhY2hlW2tleV0pIHtcbiAgICAgICAgdm5vZGUuY29tcG9uZW50SW5zdGFuY2UgPSBjYWNoZVtrZXldLmNvbXBvbmVudEluc3RhbmNlO1xuICAgICAgICAvLyBtYWtlIGN1cnJlbnQga2V5IGZyZXNoZXN0XG4gICAgICAgIHJlbW92ZShrZXlzLCBrZXkpO1xuICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhY2hlW2tleV0gPSB2bm9kZTtcbiAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICAgIC8vIHBydW5lIG9sZGVzdCBlbnRyeVxuICAgICAgICBpZiAodGhpcy5tYXggJiYga2V5cy5sZW5ndGggPiBwYXJzZUludCh0aGlzLm1heCkpIHtcbiAgICAgICAgICBwcnVuZUNhY2hlRW50cnkoY2FjaGUsIGtleXNbMF0sIGtleXMsIHRoaXMuX3Zub2RlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2bm9kZS5kYXRhLmtlZXBBbGl2ZSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB2bm9kZSB8fCAoc2xvdCAmJiBzbG90WzBdKVxuICB9XG59O1xuXG52YXIgYnVpbHRJbkNvbXBvbmVudHMgPSB7XG4gIEtlZXBBbGl2ZTogS2VlcEFsaXZlXG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gaW5pdEdsb2JhbEFQSSAoVnVlKSB7XG4gIC8vIGNvbmZpZ1xuICB2YXIgY29uZmlnRGVmID0ge307XG4gIGNvbmZpZ0RlZi5nZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBjb25maWc7IH07XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY29uZmlnRGVmLnNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdhcm4oXG4gICAgICAgICdEbyBub3QgcmVwbGFjZSB0aGUgVnVlLmNvbmZpZyBvYmplY3QsIHNldCBpbmRpdmlkdWFsIGZpZWxkcyBpbnN0ZWFkLidcbiAgICAgICk7XG4gICAgfTtcbiAgfVxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLCAnY29uZmlnJywgY29uZmlnRGVmKTtcblxuICAvLyBleHBvc2VkIHV0aWwgbWV0aG9kcy5cbiAgLy8gTk9URTogdGhlc2UgYXJlIG5vdCBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkgLSBhdm9pZCByZWx5aW5nIG9uXG4gIC8vIHRoZW0gdW5sZXNzIHlvdSBhcmUgYXdhcmUgb2YgdGhlIHJpc2suXG4gIFZ1ZS51dGlsID0ge1xuICAgIHdhcm46IHdhcm4sXG4gICAgZXh0ZW5kOiBleHRlbmQsXG4gICAgbWVyZ2VPcHRpb25zOiBtZXJnZU9wdGlvbnMsXG4gICAgZGVmaW5lUmVhY3RpdmU6IGRlZmluZVJlYWN0aXZlJCQxXG4gIH07XG5cbiAgVnVlLnNldCA9IHNldDtcbiAgVnVlLmRlbGV0ZSA9IGRlbDtcbiAgVnVlLm5leHRUaWNrID0gbmV4dFRpY2s7XG5cbiAgLy8gMi42IGV4cGxpY2l0IG9ic2VydmFibGUgQVBJXG4gIFZ1ZS5vYnNlcnZhYmxlID0gZnVuY3Rpb24gKG9iaikge1xuICAgIG9ic2VydmUob2JqKTtcbiAgICByZXR1cm4gb2JqXG4gIH07XG5cbiAgVnVlLm9wdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBBU1NFVF9UWVBFUy5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgVnVlLm9wdGlvbnNbdHlwZSArICdzJ10gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB9KTtcblxuICAvLyB0aGlzIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIFwiYmFzZVwiIGNvbnN0cnVjdG9yIHRvIGV4dGVuZCBhbGwgcGxhaW4tb2JqZWN0XG4gIC8vIGNvbXBvbmVudHMgd2l0aCBpbiBXZWV4J3MgbXVsdGktaW5zdGFuY2Ugc2NlbmFyaW9zLlxuICBWdWUub3B0aW9ucy5fYmFzZSA9IFZ1ZTtcblxuICBleHRlbmQoVnVlLm9wdGlvbnMuY29tcG9uZW50cywgYnVpbHRJbkNvbXBvbmVudHMpO1xuXG4gIGluaXRVc2UoVnVlKTtcbiAgaW5pdE1peGluJDEoVnVlKTtcbiAgaW5pdEV4dGVuZChWdWUpO1xuICBpbml0QXNzZXRSZWdpc3RlcnMoVnVlKTtcbn1cblxuaW5pdEdsb2JhbEFQSShWdWUpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLnByb3RvdHlwZSwgJyRpc1NlcnZlcicsIHtcbiAgZ2V0OiBpc1NlcnZlclJlbmRlcmluZ1xufSk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUucHJvdG90eXBlLCAnJHNzckNvbnRleHQnLCB7XG4gIGdldDogZnVuY3Rpb24gZ2V0ICgpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiB0aGlzLiR2bm9kZSAmJiB0aGlzLiR2bm9kZS5zc3JDb250ZXh0XG4gIH1cbn0pO1xuXG4vLyBleHBvc2UgRnVuY3Rpb25hbFJlbmRlckNvbnRleHQgZm9yIHNzciBydW50aW1lIGhlbHBlciBpbnN0YWxsYXRpb25cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWUsICdGdW5jdGlvbmFsUmVuZGVyQ29udGV4dCcsIHtcbiAgdmFsdWU6IEZ1bmN0aW9uYWxSZW5kZXJDb250ZXh0XG59KTtcblxuVnVlLnZlcnNpb24gPSAnMi42LjExJztcblxuLyoqXG4gKiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vVGVuY2VudC93ZXN0b3JlL21hc3Rlci9wYWNrYWdlcy93ZXN0b3JlL3V0aWxzL2RpZmYuanNcbiAqL1xudmFyIEFSUkFZVFlQRSA9ICdbb2JqZWN0IEFycmF5XSc7XG52YXIgT0JKRUNUVFlQRSA9ICdbb2JqZWN0IE9iamVjdF0nO1xuLy8gY29uc3QgRlVOQ1RJT05UWVBFID0gJ1tvYmplY3QgRnVuY3Rpb25dJ1xuXG5mdW5jdGlvbiBkaWZmKGN1cnJlbnQsIHByZSkge1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICBzeW5jS2V5cyhjdXJyZW50LCBwcmUpO1xuICAgIF9kaWZmKGN1cnJlbnQsIHByZSwgJycsIHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdFxufVxuXG5mdW5jdGlvbiBzeW5jS2V5cyhjdXJyZW50LCBwcmUpIHtcbiAgICBpZiAoY3VycmVudCA9PT0gcHJlKSB7IHJldHVybiB9XG4gICAgdmFyIHJvb3RDdXJyZW50VHlwZSA9IHR5cGUoY3VycmVudCk7XG4gICAgdmFyIHJvb3RQcmVUeXBlID0gdHlwZShwcmUpO1xuICAgIGlmIChyb290Q3VycmVudFR5cGUgPT0gT0JKRUNUVFlQRSAmJiByb290UHJlVHlwZSA9PSBPQkpFQ1RUWVBFKSB7XG4gICAgICAgIGlmKE9iamVjdC5rZXlzKGN1cnJlbnQpLmxlbmd0aCA+PSBPYmplY3Qua2V5cyhwcmUpLmxlbmd0aCl7XG4gICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gcHJlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRWYWx1ZSA9IGN1cnJlbnRba2V5XTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFtrZXldID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzeW5jS2V5cyhjdXJyZW50VmFsdWUsIHByZVtrZXldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHJvb3RDdXJyZW50VHlwZSA9PSBBUlJBWVRZUEUgJiYgcm9vdFByZVR5cGUgPT0gQVJSQVlUWVBFKSB7XG4gICAgICAgIGlmIChjdXJyZW50Lmxlbmd0aCA+PSBwcmUubGVuZ3RoKSB7XG4gICAgICAgICAgICBwcmUuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgICBzeW5jS2V5cyhjdXJyZW50W2luZGV4XSwgaXRlbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gX2RpZmYoY3VycmVudCwgcHJlLCBwYXRoLCByZXN1bHQpIHtcbiAgICBpZiAoY3VycmVudCA9PT0gcHJlKSB7IHJldHVybiB9XG4gICAgdmFyIHJvb3RDdXJyZW50VHlwZSA9IHR5cGUoY3VycmVudCk7XG4gICAgdmFyIHJvb3RQcmVUeXBlID0gdHlwZShwcmUpO1xuICAgIGlmIChyb290Q3VycmVudFR5cGUgPT0gT0JKRUNUVFlQRSkge1xuICAgICAgICBpZiAocm9vdFByZVR5cGUgIT0gT0JKRUNUVFlQRSB8fCBPYmplY3Qua2V5cyhjdXJyZW50KS5sZW5ndGggPCBPYmplY3Qua2V5cyhwcmUpLmxlbmd0aCkge1xuICAgICAgICAgICAgc2V0UmVzdWx0KHJlc3VsdCwgcGF0aCwgY3VycmVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgbG9vcCA9IGZ1bmN0aW9uICgga2V5ICkge1xuICAgICAgICAgICAgICAgIHZhciBjdXJyZW50VmFsdWUgPSBjdXJyZW50W2tleV07XG4gICAgICAgICAgICAgICAgdmFyIHByZVZhbHVlID0gcHJlW2tleV07XG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRUeXBlID0gdHlwZShjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgIHZhciBwcmVUeXBlID0gdHlwZShwcmVWYWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRUeXBlICE9IEFSUkFZVFlQRSAmJiBjdXJyZW50VHlwZSAhPSBPQkpFQ1RUWVBFKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE5PVEUg5q2k5aSE5bCGICE9IOS/ruaUueS4uiAhPT3jgILmtonlj4rlnLDmlrnlpKrlpJrmgZDmgJXmtYvor5XkuI3liLDvvIzlpoLmnpzlh7rnjrDmlbDmja7lr7nmr5Tpl67popjvvIzlsIblhbbkv67mlLnlm57mnaXjgIJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSAhPT0gcHJlW2tleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChyZXN1bHQsIChwYXRoID09ICcnID8gJycgOiBwYXRoICsgXCIuXCIpICsga2V5LCBjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50VHlwZSA9PSBBUlJBWVRZUEUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZVR5cGUgIT0gQVJSQVlUWVBFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQocmVzdWx0LCAocGF0aCA9PSAnJyA/ICcnIDogcGF0aCArIFwiLlwiKSArIGtleSwgY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VmFsdWUubGVuZ3RoIDwgcHJlVmFsdWUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KHJlc3VsdCwgKHBhdGggPT0gJycgPyAnJyA6IHBhdGggKyBcIi5cIikgKyBrZXksIGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZGlmZihpdGVtLCBwcmVWYWx1ZVtpbmRleF0sIChwYXRoID09ICcnID8gJycgOiBwYXRoICsgXCIuXCIpICsga2V5ICsgJ1snICsgaW5kZXggKyAnXScsIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRUeXBlID09IE9CSkVDVFRZUEUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZVR5cGUgIT0gT0JKRUNUVFlQRSB8fCBPYmplY3Qua2V5cyhjdXJyZW50VmFsdWUpLmxlbmd0aCA8IE9iamVjdC5rZXlzKHByZVZhbHVlKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChyZXN1bHQsIChwYXRoID09ICcnID8gJycgOiBwYXRoICsgXCIuXCIpICsga2V5LCBjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgc3ViS2V5IGluIGN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kaWZmKGN1cnJlbnRWYWx1ZVtzdWJLZXldLCBwcmVWYWx1ZVtzdWJLZXldLCAocGF0aCA9PSAnJyA/ICcnIDogcGF0aCArIFwiLlwiKSArIGtleSArICcuJyArIHN1YktleSwgcmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBjdXJyZW50KSBsb29wKCBrZXkgKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAocm9vdEN1cnJlbnRUeXBlID09IEFSUkFZVFlQRSkge1xuICAgICAgICBpZiAocm9vdFByZVR5cGUgIT0gQVJSQVlUWVBFKSB7XG4gICAgICAgICAgICBzZXRSZXN1bHQocmVzdWx0LCBwYXRoLCBjdXJyZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50Lmxlbmd0aCA8IHByZS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQocmVzdWx0LCBwYXRoLCBjdXJyZW50KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VycmVudC5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICBfZGlmZihpdGVtLCBwcmVbaW5kZXhdLCBwYXRoICsgJ1snICsgaW5kZXggKyAnXScsIHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBzZXRSZXN1bHQocmVzdWx0LCBwYXRoLCBjdXJyZW50KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHNldFJlc3VsdChyZXN1bHQsIGssIHYpIHtcbiAgICAvLyBpZiAodHlwZSh2KSAhPSBGVU5DVElPTlRZUEUpIHtcbiAgICAgICAgcmVzdWx0W2tdID0gdjtcbiAgICAvLyB9XG59XG5cbmZ1bmN0aW9uIHR5cGUob2JqKSB7XG4gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBmbHVzaENhbGxiYWNrcyQxKHZtKSB7XG4gICAgaWYgKHZtLl9fbmV4dF90aWNrX2NhbGxiYWNrcyAmJiB2bS5fX25leHRfdGlja19jYWxsYmFja3MubGVuZ3RoKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5WVUVfQVBQX0RFQlVHKSB7XG4gICAgICAgICAgICB2YXIgbXBJbnN0YW5jZSA9IHZtLiRzY29wZTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbJyArICgrbmV3IERhdGUpICsgJ11bJyArIChtcEluc3RhbmNlLmlzIHx8IG1wSW5zdGFuY2Uucm91dGUpICsgJ11bJyArIHZtLl91aWQgK1xuICAgICAgICAgICAgICAgICddOmZsdXNoQ2FsbGJhY2tzWycgKyB2bS5fX25leHRfdGlja19jYWxsYmFja3MubGVuZ3RoICsgJ10nKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY29waWVzID0gdm0uX19uZXh0X3RpY2tfY2FsbGJhY2tzLnNsaWNlKDApO1xuICAgICAgICB2bS5fX25leHRfdGlja19jYWxsYmFja3MubGVuZ3RoID0gMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3BpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvcGllc1tpXSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBoYXNSZW5kZXJXYXRjaGVyKHZtKSB7XG4gICAgcmV0dXJuIHF1ZXVlLmZpbmQoZnVuY3Rpb24gKHdhdGNoZXIpIHsgcmV0dXJuIHZtLl93YXRjaGVyID09PSB3YXRjaGVyOyB9KVxufVxuXG5mdW5jdGlvbiBuZXh0VGljayQxKHZtLCBjYikge1xuICAgIC8vMS5uZXh0VGljayDkuYvliY0g5beyIHNldERhdGEg5LiUIHNldERhdGEg6L+Y5pyq5Zue6LCD5a6M5oiQXG4gICAgLy8yLm5leHRUaWNrIOS5i+WJjeWtmOWcqCByZW5kZXIgd2F0Y2hlclxuICAgIGlmICghdm0uX19uZXh0X3RpY2tfcGVuZGluZyAmJiAhaGFzUmVuZGVyV2F0Y2hlcih2bSkpIHtcbiAgICAgICAgaWYocHJvY2Vzcy5lbnYuVlVFX0FQUF9ERUJVRyl7XG4gICAgICAgICAgICB2YXIgbXBJbnN0YW5jZSA9IHZtLiRzY29wZTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbJyArICgrbmV3IERhdGUpICsgJ11bJyArIChtcEluc3RhbmNlLmlzIHx8IG1wSW5zdGFuY2Uucm91dGUpICsgJ11bJyArIHZtLl91aWQgK1xuICAgICAgICAgICAgICAgICddOm5leHRWdWVUaWNrJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5leHRUaWNrKGNiLCB2bSlcbiAgICB9ZWxzZXtcbiAgICAgICAgaWYocHJvY2Vzcy5lbnYuVlVFX0FQUF9ERUJVRyl7XG4gICAgICAgICAgICB2YXIgbXBJbnN0YW5jZSQxID0gdm0uJHNjb3BlO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1snICsgKCtuZXcgRGF0ZSkgKyAnXVsnICsgKG1wSW5zdGFuY2UkMS5pcyB8fCBtcEluc3RhbmNlJDEucm91dGUpICsgJ11bJyArIHZtLl91aWQgK1xuICAgICAgICAgICAgICAgICddOm5leHRNUFRpY2snKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgX3Jlc29sdmU7XG4gICAgaWYgKCF2bS5fX25leHRfdGlja19jYWxsYmFja3MpIHtcbiAgICAgICAgdm0uX19uZXh0X3RpY2tfY2FsbGJhY2tzID0gW107XG4gICAgfVxuICAgIHZtLl9fbmV4dF90aWNrX2NhbGxiYWNrcy5wdXNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGNiKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNiLmNhbGwodm0pO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGhhbmRsZUVycm9yKGUsIHZtLCAnbmV4dFRpY2snKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChfcmVzb2x2ZSkge1xuICAgICAgICAgICAgX3Jlc29sdmUodm0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgLy8gJGZsb3ctZGlzYWJsZS1saW5lXG4gICAgaWYgKCFjYiAmJiB0eXBlb2YgUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgICAgICBfcmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgIH0pXG4gICAgfVxufVxuXG4vKiAgKi9cblxuZnVuY3Rpb24gY2xvbmVXaXRoRGF0YSh2bSkge1xuICAvLyDnoa7kv53lvZPliY0gdm0g5omA5pyJ5pWw5o2u6KKr5ZCM5q2lXG4gIHZhciByZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB2YXIgZGF0YUtleXMgPSBbXS5jb25jYXQoXG4gICAgT2JqZWN0LmtleXModm0uX2RhdGEgfHwge30pLFxuICAgIE9iamVjdC5rZXlzKHZtLl9jb21wdXRlZFdhdGNoZXJzIHx8IHt9KSk7XG5cbiAgZGF0YUtleXMucmVkdWNlKGZ1bmN0aW9uKHJldCwga2V5KSB7XG4gICAgcmV0W2tleV0gPSB2bVtrZXldO1xuICAgIHJldHVybiByZXRcbiAgfSwgcmV0KTtcblxuICAvLyB2dWUtY29tcG9zaXRpb24tYXBpXG4gIHZhciBjb21wb3NpdGlvbkFwaVN0YXRlID0gdm0uX19jb21wb3NpdGlvbl9hcGlfc3RhdGVfXyB8fCB2bS5fX3NlY3JldF92ZmFfc3RhdGVfXztcbiAgdmFyIHJhd0JpbmRpbmdzID0gY29tcG9zaXRpb25BcGlTdGF0ZSAmJiBjb21wb3NpdGlvbkFwaVN0YXRlLnJhd0JpbmRpbmdzO1xuICBpZiAocmF3QmluZGluZ3MpIHtcbiAgICBPYmplY3Qua2V5cyhyYXdCaW5kaW5ncykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICByZXRba2V5XSA9IHZtW2tleV07XG4gICAgfSk7XG4gIH1cblxuICAvL1RPRE8g6ZyA6KaB5oqK5peg55So5pWw5o2u5aSE55CG5o6J77yM5q+U5aaCIGxpc3Q9PmwwIOWImSBsaXN0IOmcgOimgeenu+mZpO+8jOWQpuWImeWkmuS8oOi+k+S4gOS7veaVsOaNrlxuICBPYmplY3QuYXNzaWduKHJldCwgdm0uJG1wLmRhdGEgfHwge30pO1xuICBpZiAoXG4gICAgQXJyYXkuaXNBcnJheSh2bS4kb3B0aW9ucy5iZWhhdmlvcnMpICYmXG4gICAgdm0uJG9wdGlvbnMuYmVoYXZpb3JzLmluZGV4T2YoJ3VuaTovL2Zvcm0tZmllbGQnKSAhPT0gLTFcbiAgKSB7IC8vZm9ybS1maWVsZFxuICAgIHJldFsnbmFtZSddID0gdm0ubmFtZTtcbiAgICByZXRbJ3ZhbHVlJ10gPSB2bS52YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJldCkpXG59XG5cbnZhciBwYXRjaCA9IGZ1bmN0aW9uKG9sZFZub2RlLCB2bm9kZSkge1xuICB2YXIgdGhpcyQxID0gdGhpcztcblxuICBpZiAodm5vZGUgPT09IG51bGwpIHsgLy9kZXN0cm95XG4gICAgcmV0dXJuXG4gIH1cbiAgaWYgKHRoaXMubXBUeXBlID09PSAncGFnZScgfHwgdGhpcy5tcFR5cGUgPT09ICdjb21wb25lbnQnKSB7XG4gICAgdmFyIG1wSW5zdGFuY2UgPSB0aGlzLiRzY29wZTtcbiAgICB2YXIgZGF0YSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdHJ5IHtcbiAgICAgIGRhdGEgPSBjbG9uZVdpdGhEYXRhKHRoaXMpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgIH1cbiAgICBkYXRhLl9fd2Vidmlld0lkX18gPSBtcEluc3RhbmNlLmRhdGEuX193ZWJ2aWV3SWRfXztcbiAgICB2YXIgbXBEYXRhID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICBPYmplY3Qua2V5cyhkYXRhKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgLy/ku4XlkIzmraUgZGF0YSDkuK3mnInnmoTmlbDmja5cbiAgICAgIG1wRGF0YVtrZXldID0gbXBJbnN0YW5jZS5kYXRhW2tleV07XG4gICAgfSk7XG4gICAgdmFyIGRpZmZEYXRhID0gdGhpcy4kc2hvdWxkRGlmZkRhdGEgPT09IGZhbHNlID8gZGF0YSA6IGRpZmYoZGF0YSwgbXBEYXRhKTtcbiAgICBpZiAoT2JqZWN0LmtleXMoZGlmZkRhdGEpLmxlbmd0aCkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52LlZVRV9BUFBfREVCVUcpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1snICsgKCtuZXcgRGF0ZSkgKyAnXVsnICsgKG1wSW5zdGFuY2UuaXMgfHwgbXBJbnN0YW5jZS5yb3V0ZSkgKyAnXVsnICsgdGhpcy5fdWlkICtcbiAgICAgICAgICAnXeW3rumHj+abtOaWsCcsXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGlmZkRhdGEpKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX19uZXh0X3RpY2tfcGVuZGluZyA9IHRydWU7XG4gICAgICBtcEluc3RhbmNlLnNldERhdGEoZGlmZkRhdGEsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcyQxLl9fbmV4dF90aWNrX3BlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgZmx1c2hDYWxsYmFja3MkMSh0aGlzJDEpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZsdXNoQ2FsbGJhY2tzJDEodGhpcyk7XG4gICAgfVxuICB9XG59O1xuXG4vKiAgKi9cblxuZnVuY3Rpb24gY3JlYXRlRW1wdHlSZW5kZXIoKSB7XG5cbn1cblxuZnVuY3Rpb24gbW91bnRDb21wb25lbnQkMShcbiAgdm0sXG4gIGVsLFxuICBoeWRyYXRpbmdcbikge1xuICBpZiAoIXZtLm1wVHlwZSkgey8vbWFpbi5qcyDkuK3nmoQgbmV3IFZ1ZVxuICAgIHJldHVybiB2bVxuICB9XG4gIGlmICh2bS5tcFR5cGUgPT09ICdhcHAnKSB7XG4gICAgdm0uJG9wdGlvbnMucmVuZGVyID0gY3JlYXRlRW1wdHlSZW5kZXI7XG4gIH1cbiAgaWYgKCF2bS4kb3B0aW9ucy5yZW5kZXIpIHtcbiAgICB2bS4kb3B0aW9ucy5yZW5kZXIgPSBjcmVhdGVFbXB0eVJlbmRlcjtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoKHZtLiRvcHRpb25zLnRlbXBsYXRlICYmIHZtLiRvcHRpb25zLnRlbXBsYXRlLmNoYXJBdCgwKSAhPT0gJyMnKSB8fFxuICAgICAgICB2bS4kb3B0aW9ucy5lbCB8fCBlbCkge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdZb3UgYXJlIHVzaW5nIHRoZSBydW50aW1lLW9ubHkgYnVpbGQgb2YgVnVlIHdoZXJlIHRoZSB0ZW1wbGF0ZSAnICtcbiAgICAgICAgICAnY29tcGlsZXIgaXMgbm90IGF2YWlsYWJsZS4gRWl0aGVyIHByZS1jb21waWxlIHRoZSB0ZW1wbGF0ZXMgaW50byAnICtcbiAgICAgICAgICAncmVuZGVyIGZ1bmN0aW9ucywgb3IgdXNlIHRoZSBjb21waWxlci1pbmNsdWRlZCBidWlsZC4nLFxuICAgICAgICAgIHZtXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3YXJuKFxuICAgICAgICAgICdGYWlsZWQgdG8gbW91bnQgY29tcG9uZW50OiB0ZW1wbGF0ZSBvciByZW5kZXIgZnVuY3Rpb24gbm90IGRlZmluZWQuJyxcbiAgICAgICAgICB2bVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICF2bS5fJGZhbGxiYWNrICYmIGNhbGxIb29rKHZtLCAnYmVmb3JlTW91bnQnKTtcblxuICB2YXIgdXBkYXRlQ29tcG9uZW50ID0gZnVuY3Rpb24gKCkge1xuICAgIHZtLl91cGRhdGUodm0uX3JlbmRlcigpLCBoeWRyYXRpbmcpO1xuICB9O1xuXG4gIC8vIHdlIHNldCB0aGlzIHRvIHZtLl93YXRjaGVyIGluc2lkZSB0aGUgd2F0Y2hlcidzIGNvbnN0cnVjdG9yXG4gIC8vIHNpbmNlIHRoZSB3YXRjaGVyJ3MgaW5pdGlhbCBwYXRjaCBtYXkgY2FsbCAkZm9yY2VVcGRhdGUgKGUuZy4gaW5zaWRlIGNoaWxkXG4gIC8vIGNvbXBvbmVudCdzIG1vdW50ZWQgaG9vayksIHdoaWNoIHJlbGllcyBvbiB2bS5fd2F0Y2hlciBiZWluZyBhbHJlYWR5IGRlZmluZWRcbiAgbmV3IFdhdGNoZXIodm0sIHVwZGF0ZUNvbXBvbmVudCwgbm9vcCwge1xuICAgIGJlZm9yZTogZnVuY3Rpb24gYmVmb3JlKCkge1xuICAgICAgaWYgKHZtLl9pc01vdW50ZWQgJiYgIXZtLl9pc0Rlc3Ryb3llZCkge1xuICAgICAgICBjYWxsSG9vayh2bSwgJ2JlZm9yZVVwZGF0ZScpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgdHJ1ZSAvKiBpc1JlbmRlcldhdGNoZXIgKi8pO1xuICBoeWRyYXRpbmcgPSBmYWxzZTtcbiAgcmV0dXJuIHZtXG59XG5cbi8qICAqL1xuXG5mdW5jdGlvbiByZW5kZXJDbGFzcyAoXG4gIHN0YXRpY0NsYXNzLFxuICBkeW5hbWljQ2xhc3Ncbikge1xuICBpZiAoaXNEZWYoc3RhdGljQ2xhc3MpIHx8IGlzRGVmKGR5bmFtaWNDbGFzcykpIHtcbiAgICByZXR1cm4gY29uY2F0KHN0YXRpY0NsYXNzLCBzdHJpbmdpZnlDbGFzcyhkeW5hbWljQ2xhc3MpKVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiAnJ1xufVxuXG5mdW5jdGlvbiBjb25jYXQgKGEsIGIpIHtcbiAgcmV0dXJuIGEgPyBiID8gKGEgKyAnICcgKyBiKSA6IGEgOiAoYiB8fCAnJylcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5Q2xhc3MgKHZhbHVlKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBzdHJpbmdpZnlBcnJheSh2YWx1ZSlcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIHN0cmluZ2lmeU9iamVjdCh2YWx1ZSlcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZVxuICB9XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHJldHVybiAnJ1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlBcnJheSAodmFsdWUpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICB2YXIgc3RyaW5naWZpZWQ7XG4gIGZvciAodmFyIGkgPSAwLCBsID0gdmFsdWUubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgaWYgKGlzRGVmKHN0cmluZ2lmaWVkID0gc3RyaW5naWZ5Q2xhc3ModmFsdWVbaV0pKSAmJiBzdHJpbmdpZmllZCAhPT0gJycpIHtcbiAgICAgIGlmIChyZXMpIHsgcmVzICs9ICcgJzsgfVxuICAgICAgcmVzICs9IHN0cmluZ2lmaWVkO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeU9iamVjdCAodmFsdWUpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICBpZiAodmFsdWVba2V5XSkge1xuICAgICAgaWYgKHJlcykgeyByZXMgKz0gJyAnOyB9XG4gICAgICByZXMgKz0ga2V5O1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbi8qICAqL1xuXG52YXIgcGFyc2VTdHlsZVRleHQgPSBjYWNoZWQoZnVuY3Rpb24gKGNzc1RleHQpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICB2YXIgbGlzdERlbGltaXRlciA9IC87KD8hW14oXSpcXCkpL2c7XG4gIHZhciBwcm9wZXJ0eURlbGltaXRlciA9IC86KC4rKS87XG4gIGNzc1RleHQuc3BsaXQobGlzdERlbGltaXRlcikuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xuICAgIGlmIChpdGVtKSB7XG4gICAgICB2YXIgdG1wID0gaXRlbS5zcGxpdChwcm9wZXJ0eURlbGltaXRlcik7XG4gICAgICB0bXAubGVuZ3RoID4gMSAmJiAocmVzW3RtcFswXS50cmltKCldID0gdG1wWzFdLnRyaW0oKSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc1xufSk7XG5cbi8vIG5vcm1hbGl6ZSBwb3NzaWJsZSBhcnJheSAvIHN0cmluZyB2YWx1ZXMgaW50byBPYmplY3RcbmZ1bmN0aW9uIG5vcm1hbGl6ZVN0eWxlQmluZGluZyAoYmluZGluZ1N0eWxlKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGJpbmRpbmdTdHlsZSkpIHtcbiAgICByZXR1cm4gdG9PYmplY3QoYmluZGluZ1N0eWxlKVxuICB9XG4gIGlmICh0eXBlb2YgYmluZGluZ1N0eWxlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBwYXJzZVN0eWxlVGV4dChiaW5kaW5nU3R5bGUpXG4gIH1cbiAgcmV0dXJuIGJpbmRpbmdTdHlsZVxufVxuXG4vKiAgKi9cblxudmFyIE1QX01FVEhPRFMgPSBbJ2NyZWF0ZVNlbGVjdG9yUXVlcnknLCAnY3JlYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXInLCAnc2VsZWN0QWxsQ29tcG9uZW50cycsICdzZWxlY3RDb21wb25lbnQnXTtcblxuZnVuY3Rpb24gZ2V0VGFyZ2V0KG9iaiwgcGF0aCkge1xuICB2YXIgcGFydHMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gIHZhciBrZXkgPSBwYXJ0c1swXTtcbiAgaWYgKGtleS5pbmRleE9mKCdfXyRuJykgPT09IDApIHsgLy9udW1iZXIgaW5kZXhcbiAgICBrZXkgPSBwYXJzZUludChrZXkucmVwbGFjZSgnX18kbicsICcnKSk7XG4gIH1cbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBvYmpba2V5XVxuICB9XG4gIHJldHVybiBnZXRUYXJnZXQob2JqW2tleV0sIHBhcnRzLnNsaWNlKDEpLmpvaW4oJy4nKSlcbn1cblxuZnVuY3Rpb24gaW50ZXJuYWxNaXhpbihWdWUpIHtcblxuICBWdWUuY29uZmlnLmVycm9ySGFuZGxlciA9IGZ1bmN0aW9uKGVyciwgdm0sIGluZm8pIHtcbiAgICBWdWUudXRpbC53YXJuKChcIkVycm9yIGluIFwiICsgaW5mbyArIFwiOiBcXFwiXCIgKyAoZXJyLnRvU3RyaW5nKCkpICsgXCJcXFwiXCIpLCB2bSk7XG4gICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmICovXG4gICAgdmFyIGFwcCA9IHR5cGVvZiBnZXRBcHAgPT09ICdmdW5jdGlvbicgJiYgZ2V0QXBwKCk7XG4gICAgaWYgKGFwcCAmJiBhcHAub25FcnJvcikge1xuICAgICAgYXBwLm9uRXJyb3IoZXJyKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIG9sZEVtaXQgPSBWdWUucHJvdG90eXBlLiRlbWl0O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJGVtaXQgPSBmdW5jdGlvbihldmVudCkge1xuICAgIGlmICh0aGlzLiRzY29wZSAmJiBldmVudCkge1xuICAgICAgKHRoaXMuJHNjb3BlWydfdHJpZ2dlckV2ZW50J10gfHwgdGhpcy4kc2NvcGVbJ3RyaWdnZXJFdmVudCddKVxuICAgICAgICAuY2FsbCh0aGlzLiRzY29wZSwgZXZlbnQsIHtcbiAgICAgICAgICBfX2FyZ3NfXzogdG9BcnJheShhcmd1bWVudHMsIDEpXG4gICAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiBvbGRFbWl0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRuZXh0VGljayA9IGZ1bmN0aW9uKGZuKSB7XG4gICAgcmV0dXJuIG5leHRUaWNrJDEodGhpcywgZm4pXG4gIH07XG5cbiAgTVBfTUVUSE9EUy5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgICBWdWUucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbihhcmdzKSB7XG4gICAgICBpZiAodGhpcy4kc2NvcGUgJiYgdGhpcy4kc2NvcGVbbWV0aG9kXSkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc2NvcGVbbWV0aG9kXShhcmdzKVxuICAgICAgfVxuICAgICAgLy8gbXAtYWxpcGF5XG4gICAgICBpZiAodHlwZW9mIG15ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmIChtZXRob2QgPT09ICdjcmVhdGVTZWxlY3RvclF1ZXJ5Jykge1xuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlZiAqL1xuICAgICAgICByZXR1cm4gbXkuY3JlYXRlU2VsZWN0b3JRdWVyeShhcmdzKVxuICAgICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdjcmVhdGVJbnRlcnNlY3Rpb25PYnNlcnZlcicpIHtcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZWYgKi9cbiAgICAgICAgcmV0dXJuIG15LmNyZWF0ZUludGVyc2VjdGlvbk9ic2VydmVyKGFyZ3MpXG4gICAgICB9XG4gICAgICAvLyBUT0RPIG1wLWFsaXBheSDmmoLkuI3mlK/mjIEgc2VsZWN0QWxsQ29tcG9uZW50cyxzZWxlY3RDb21wb25lbnRcbiAgICB9O1xuICB9KTtcblxuICBWdWUucHJvdG90eXBlLl9faW5pdF9wcm92aWRlID0gaW5pdFByb3ZpZGU7XG5cbiAgVnVlLnByb3RvdHlwZS5fX2luaXRfaW5qZWN0aW9ucyA9IGluaXRJbmplY3Rpb25zO1xuXG4gIFZ1ZS5wcm90b3R5cGUuX19jYWxsX2hvb2sgPSBmdW5jdGlvbihob29rLCBhcmdzKSB7XG4gICAgdmFyIHZtID0gdGhpcztcbiAgICAvLyAjNzU3MyBkaXNhYmxlIGRlcCBjb2xsZWN0aW9uIHdoZW4gaW52b2tpbmcgbGlmZWN5Y2xlIGhvb2tzXG4gICAgcHVzaFRhcmdldCgpO1xuICAgIHZhciBoYW5kbGVycyA9IHZtLiRvcHRpb25zW2hvb2tdO1xuICAgIHZhciBpbmZvID0gaG9vayArIFwiIGhvb2tcIjtcbiAgICB2YXIgcmV0O1xuICAgIGlmIChoYW5kbGVycykge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGogPSBoYW5kbGVycy5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgICAgcmV0ID0gaW52b2tlV2l0aEVycm9ySGFuZGxpbmcoaGFuZGxlcnNbaV0sIHZtLCBhcmdzID8gW2FyZ3NdIDogbnVsbCwgdm0sIGluZm8pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodm0uX2hhc0hvb2tFdmVudCkge1xuICAgICAgdm0uJGVtaXQoJ2hvb2s6JyArIGhvb2ssIGFyZ3MpO1xuICAgIH1cbiAgICBwb3BUYXJnZXQoKTtcbiAgICByZXR1cm4gcmV0XG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS5fX3NldF9tb2RlbCA9IGZ1bmN0aW9uKHRhcmdldCwga2V5LCB2YWx1ZSwgbW9kaWZpZXJzKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkobW9kaWZpZXJzKSkge1xuICAgICAgaWYgKG1vZGlmaWVycy5pbmRleE9mKCd0cmltJykgIT09IC0xKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUudHJpbSgpO1xuICAgICAgfVxuICAgICAgaWYgKG1vZGlmaWVycy5pbmRleE9mKCdudW1iZXInKSAhPT0gLTEpIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzLl9uKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIHRhcmdldCA9IHRoaXM7XG4gICAgfVxuICAgIC8vIOino+WGs+WKqOaAgeWxnuaAp+a3u+WKoFxuICAgIFZ1ZS5zZXQodGFyZ2V0LCBrZXksIHZhbHVlKVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuX19zZXRfc3luYyA9IGZ1bmN0aW9uKHRhcmdldCwga2V5LCB2YWx1ZSkge1xuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICB0YXJnZXQgPSB0aGlzO1xuICAgIH1cbiAgICAvLyDop6PlhrPliqjmgIHlsZ7mgKfmt7vliqBcbiAgICBWdWUuc2V0KHRhcmdldCwga2V5LCB2YWx1ZSlcbiAgfTtcblxuICBWdWUucHJvdG90eXBlLl9fZ2V0X29yaWcgPSBmdW5jdGlvbihpdGVtKSB7XG4gICAgaWYgKGlzUGxhaW5PYmplY3QoaXRlbSkpIHtcbiAgICAgIHJldHVybiBpdGVtWyckb3JpZyddIHx8IGl0ZW1cbiAgICB9XG4gICAgcmV0dXJuIGl0ZW1cbiAgfTtcblxuICBWdWUucHJvdG90eXBlLl9fZ2V0X3ZhbHVlID0gZnVuY3Rpb24oZGF0YVBhdGgsIHRhcmdldCkge1xuICAgIHJldHVybiBnZXRUYXJnZXQodGFyZ2V0IHx8IHRoaXMsIGRhdGFQYXRoKVxuICB9O1xuXG5cbiAgVnVlLnByb3RvdHlwZS5fX2dldF9jbGFzcyA9IGZ1bmN0aW9uKGR5bmFtaWNDbGFzcywgc3RhdGljQ2xhc3MpIHtcbiAgICByZXR1cm4gcmVuZGVyQ2xhc3Moc3RhdGljQ2xhc3MsIGR5bmFtaWNDbGFzcylcbiAgfTtcblxuICBWdWUucHJvdG90eXBlLl9fZ2V0X3N0eWxlID0gZnVuY3Rpb24oZHluYW1pY1N0eWxlLCBzdGF0aWNTdHlsZSkge1xuICAgIGlmICghZHluYW1pY1N0eWxlICYmICFzdGF0aWNTdHlsZSkge1xuICAgICAgcmV0dXJuICcnXG4gICAgfVxuICAgIHZhciBkeW5hbWljU3R5bGVPYmogPSBub3JtYWxpemVTdHlsZUJpbmRpbmcoZHluYW1pY1N0eWxlKTtcbiAgICB2YXIgc3R5bGVPYmogPSBzdGF0aWNTdHlsZSA/IGV4dGVuZChzdGF0aWNTdHlsZSwgZHluYW1pY1N0eWxlT2JqKSA6IGR5bmFtaWNTdHlsZU9iajtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoc3R5bGVPYmopLm1hcChmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gKChoeXBoZW5hdGUobmFtZSkpICsgXCI6XCIgKyAoc3R5bGVPYmpbbmFtZV0pKTsgfSkuam9pbignOycpXG4gIH07XG5cbiAgVnVlLnByb3RvdHlwZS5fX21hcCA9IGZ1bmN0aW9uKHZhbCwgaXRlcmF0ZWUpIHtcbiAgICAvL1RPRE8g5pqC5LiN6ICD6JmRIHN0cmluZ1xuICAgIHZhciByZXQsIGksIGwsIGtleXMsIGtleTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICByZXQgPSBuZXcgQXJyYXkodmFsLmxlbmd0aCk7XG4gICAgICBmb3IgKGkgPSAwLCBsID0gdmFsLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICByZXRbaV0gPSBpdGVyYXRlZSh2YWxbaV0sIGkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJldFxuICAgIH0gZWxzZSBpZiAoaXNPYmplY3QodmFsKSkge1xuICAgICAga2V5cyA9IE9iamVjdC5rZXlzKHZhbCk7XG4gICAgICByZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgZm9yIChpID0gMCwgbCA9IGtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICAgIHJldFtrZXldID0gaXRlcmF0ZWUodmFsW2tleV0sIGtleSwgaSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0ID0gbmV3IEFycmF5KHZhbCk7XG4gICAgICBmb3IgKGkgPSAwLCBsID0gdmFsOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIC8vIOesrOS4gOS4quWPguaVsOaaguaXtuS7jeWSjOWwj+eoi+W6j+S4gOiHtFxuICAgICAgICByZXRbaV0gPSBpdGVyYXRlZShpLCBpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXRcbiAgICB9XG4gICAgcmV0dXJuIFtdXG4gIH07XG5cbn1cblxuLyogICovXG5cbnZhciBMSUZFQ1lDTEVfSE9PS1MkMSA9IFtcbiAgICAvL0FwcFxuICAgICdvbkxhdW5jaCcsXG4gICAgJ29uU2hvdycsXG4gICAgJ29uSGlkZScsXG4gICAgJ29uVW5pTlZpZXdNZXNzYWdlJyxcbiAgICAnb25QYWdlTm90Rm91bmQnLFxuICAgICdvblRoZW1lQ2hhbmdlJyxcbiAgICAnb25FcnJvcicsXG4gICAgJ29uVW5oYW5kbGVkUmVqZWN0aW9uJyxcbiAgICAvL1BhZ2VcbiAgICAnb25Jbml0JyxcbiAgICAnb25Mb2FkJyxcbiAgICAvLyAnb25TaG93JyxcbiAgICAnb25SZWFkeScsXG4gICAgLy8gJ29uSGlkZScsXG4gICAgJ29uVW5sb2FkJyxcbiAgICAnb25QdWxsRG93blJlZnJlc2gnLFxuICAgICdvblJlYWNoQm90dG9tJyxcbiAgICAnb25UYWJJdGVtVGFwJyxcbiAgICAnb25BZGRUb0Zhdm9yaXRlcycsXG4gICAgJ29uU2hhcmVUaW1lbGluZScsXG4gICAgJ29uU2hhcmVBcHBNZXNzYWdlJyxcbiAgICAnb25SZXNpemUnLFxuICAgICdvblBhZ2VTY3JvbGwnLFxuICAgICdvbk5hdmlnYXRpb25CYXJCdXR0b25UYXAnLFxuICAgICdvbkJhY2tQcmVzcycsXG4gICAgJ29uTmF2aWdhdGlvbkJhclNlYXJjaElucHV0Q2hhbmdlZCcsXG4gICAgJ29uTmF2aWdhdGlvbkJhclNlYXJjaElucHV0Q29uZmlybWVkJyxcbiAgICAnb25OYXZpZ2F0aW9uQmFyU2VhcmNoSW5wdXRDbGlja2VkJyxcbiAgICAvL0NvbXBvbmVudFxuICAgIC8vICdvblJlYWR5JywgLy8g5YW85a655pen54mI5pys77yM5bqU6K+l56e76Zmk6K+l5LqL5Lu2XG4gICAgJ29uUGFnZVNob3cnLFxuICAgICdvblBhZ2VIaWRlJyxcbiAgICAnb25QYWdlUmVzaXplJ1xuXTtcbmZ1bmN0aW9uIGxpZmVjeWNsZU1peGluJDEoVnVlKSB7XG5cbiAgICAvL2ZpeGVkIHZ1ZS1jbGFzcy1jb21wb25lbnRcbiAgICB2YXIgb2xkRXh0ZW5kID0gVnVlLmV4dGVuZDtcbiAgICBWdWUuZXh0ZW5kID0gZnVuY3Rpb24oZXh0ZW5kT3B0aW9ucykge1xuICAgICAgICBleHRlbmRPcHRpb25zID0gZXh0ZW5kT3B0aW9ucyB8fCB7fTtcblxuICAgICAgICB2YXIgbWV0aG9kcyA9IGV4dGVuZE9wdGlvbnMubWV0aG9kcztcbiAgICAgICAgaWYgKG1ldGhvZHMpIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKG1ldGhvZHMpLmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZE5hbWUpIHtcbiAgICAgICAgICAgICAgICBpZiAoTElGRUNZQ0xFX0hPT0tTJDEuaW5kZXhPZihtZXRob2ROYW1lKSE9PS0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4dGVuZE9wdGlvbnNbbWV0aG9kTmFtZV0gPSBtZXRob2RzW21ldGhvZE5hbWVdO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbWV0aG9kc1ttZXRob2ROYW1lXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvbGRFeHRlbmQuY2FsbCh0aGlzLCBleHRlbmRPcHRpb25zKVxuICAgIH07XG5cbiAgICB2YXIgc3RyYXRlZ2llcyA9IFZ1ZS5jb25maWcub3B0aW9uTWVyZ2VTdHJhdGVnaWVzO1xuICAgIHZhciBtZXJnZUhvb2sgPSBzdHJhdGVnaWVzLmNyZWF0ZWQ7XG4gICAgTElGRUNZQ0xFX0hPT0tTJDEuZm9yRWFjaChmdW5jdGlvbiAoaG9vaykge1xuICAgICAgICBzdHJhdGVnaWVzW2hvb2tdID0gbWVyZ2VIb29rO1xuICAgIH0pO1xuXG4gICAgVnVlLnByb3RvdHlwZS5fX2xpZmVjeWNsZV9ob29rc19fID0gTElGRUNZQ0xFX0hPT0tTJDE7XG59XG5cbi8qICAqL1xuXG4vLyBpbnN0YWxsIHBsYXRmb3JtIHBhdGNoIGZ1bmN0aW9uXG5WdWUucHJvdG90eXBlLl9fcGF0Y2hfXyA9IHBhdGNoO1xuXG4vLyBwdWJsaWMgbW91bnQgbWV0aG9kXG5WdWUucHJvdG90eXBlLiRtb3VudCA9IGZ1bmN0aW9uKFxuICAgIGVsICxcbiAgICBoeWRyYXRpbmdcbikge1xuICAgIHJldHVybiBtb3VudENvbXBvbmVudCQxKHRoaXMsIGVsLCBoeWRyYXRpbmcpXG59O1xuXG5saWZlY3ljbGVNaXhpbiQxKFZ1ZSk7XG5pbnRlcm5hbE1peGluKFZ1ZSk7XG5cbi8qICAqL1xuXG5leHBvcnQgZGVmYXVsdCBWdWU7XG4iLCJjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcclxuY29uc3QgaXNPYmplY3QgPSAodmFsKSA9PiB2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCc7XHJcbmNvbnN0IGRlZmF1bHREZWxpbWl0ZXJzID0gWyd7JywgJ30nXTtcclxuY2xhc3MgQmFzZUZvcm1hdHRlciB7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLl9jYWNoZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xyXG4gICAgfVxyXG4gICAgaW50ZXJwb2xhdGUobWVzc2FnZSwgdmFsdWVzLCBkZWxpbWl0ZXJzID0gZGVmYXVsdERlbGltaXRlcnMpIHtcclxuICAgICAgICBpZiAoIXZhbHVlcykge1xyXG4gICAgICAgICAgICByZXR1cm4gW21lc3NhZ2VdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdG9rZW5zID0gdGhpcy5fY2FjaGVzW21lc3NhZ2VdO1xyXG4gICAgICAgIGlmICghdG9rZW5zKSB7XHJcbiAgICAgICAgICAgIHRva2VucyA9IHBhcnNlKG1lc3NhZ2UsIGRlbGltaXRlcnMpO1xyXG4gICAgICAgICAgICB0aGlzLl9jYWNoZXNbbWVzc2FnZV0gPSB0b2tlbnM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjb21waWxlKHRva2VucywgdmFsdWVzKTtcclxuICAgIH1cclxufVxyXG5jb25zdCBSRV9UT0tFTl9MSVNUX1ZBTFVFID0gL14oPzpcXGQpKy87XHJcbmNvbnN0IFJFX1RPS0VOX05BTUVEX1ZBTFVFID0gL14oPzpcXHcpKy87XHJcbmZ1bmN0aW9uIHBhcnNlKGZvcm1hdCwgW3N0YXJ0RGVsaW1pdGVyLCBlbmREZWxpbWl0ZXJdKSB7XHJcbiAgICBjb25zdCB0b2tlbnMgPSBbXTtcclxuICAgIGxldCBwb3NpdGlvbiA9IDA7XHJcbiAgICBsZXQgdGV4dCA9ICcnO1xyXG4gICAgd2hpbGUgKHBvc2l0aW9uIDwgZm9ybWF0Lmxlbmd0aCkge1xyXG4gICAgICAgIGxldCBjaGFyID0gZm9ybWF0W3Bvc2l0aW9uKytdO1xyXG4gICAgICAgIGlmIChjaGFyID09PSBzdGFydERlbGltaXRlcikge1xyXG4gICAgICAgICAgICBpZiAodGV4dCkge1xyXG4gICAgICAgICAgICAgICAgdG9rZW5zLnB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlOiB0ZXh0IH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRleHQgPSAnJztcclxuICAgICAgICAgICAgbGV0IHN1YiA9ICcnO1xyXG4gICAgICAgICAgICBjaGFyID0gZm9ybWF0W3Bvc2l0aW9uKytdO1xyXG4gICAgICAgICAgICB3aGlsZSAoY2hhciAhPT0gdW5kZWZpbmVkICYmIGNoYXIgIT09IGVuZERlbGltaXRlcikge1xyXG4gICAgICAgICAgICAgICAgc3ViICs9IGNoYXI7XHJcbiAgICAgICAgICAgICAgICBjaGFyID0gZm9ybWF0W3Bvc2l0aW9uKytdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGlzQ2xvc2VkID0gY2hhciA9PT0gZW5kRGVsaW1pdGVyO1xyXG4gICAgICAgICAgICBjb25zdCB0eXBlID0gUkVfVE9LRU5fTElTVF9WQUxVRS50ZXN0KHN1YilcclxuICAgICAgICAgICAgICAgID8gJ2xpc3QnXHJcbiAgICAgICAgICAgICAgICA6IGlzQ2xvc2VkICYmIFJFX1RPS0VOX05BTUVEX1ZBTFVFLnRlc3Qoc3ViKVxyXG4gICAgICAgICAgICAgICAgICAgID8gJ25hbWVkJ1xyXG4gICAgICAgICAgICAgICAgICAgIDogJ3Vua25vd24nO1xyXG4gICAgICAgICAgICB0b2tlbnMucHVzaCh7IHZhbHVlOiBzdWIsIHR5cGUgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vICBlbHNlIGlmIChjaGFyID09PSAnJScpIHtcclxuICAgICAgICAvLyAgIC8vIHdoZW4gZm91bmQgcmFpbHMgaTE4biBzeW50YXgsIHNraXAgdGV4dCBjYXB0dXJlXHJcbiAgICAgICAgLy8gICBpZiAoZm9ybWF0W3Bvc2l0aW9uXSAhPT0gJ3snKSB7XHJcbiAgICAgICAgLy8gICAgIHRleHQgKz0gY2hhclxyXG4gICAgICAgIC8vICAgfVxyXG4gICAgICAgIC8vIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGV4dCArPSBjaGFyO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHRleHQgJiYgdG9rZW5zLnB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlOiB0ZXh0IH0pO1xyXG4gICAgcmV0dXJuIHRva2VucztcclxufVxyXG5mdW5jdGlvbiBjb21waWxlKHRva2VucywgdmFsdWVzKSB7XHJcbiAgICBjb25zdCBjb21waWxlZCA9IFtdO1xyXG4gICAgbGV0IGluZGV4ID0gMDtcclxuICAgIGNvbnN0IG1vZGUgPSBpc0FycmF5KHZhbHVlcylcclxuICAgICAgICA/ICdsaXN0J1xyXG4gICAgICAgIDogaXNPYmplY3QodmFsdWVzKVxyXG4gICAgICAgICAgICA/ICduYW1lZCdcclxuICAgICAgICAgICAgOiAndW5rbm93bic7XHJcbiAgICBpZiAobW9kZSA9PT0gJ3Vua25vd24nKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbXBpbGVkO1xyXG4gICAgfVxyXG4gICAgd2hpbGUgKGluZGV4IDwgdG9rZW5zLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IHRva2VuID0gdG9rZW5zW2luZGV4XTtcclxuICAgICAgICBzd2l0Y2ggKHRva2VuLnR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSAndGV4dCc6XHJcbiAgICAgICAgICAgICAgICBjb21waWxlZC5wdXNoKHRva2VuLnZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdsaXN0JzpcclxuICAgICAgICAgICAgICAgIGNvbXBpbGVkLnB1c2godmFsdWVzW3BhcnNlSW50KHRva2VuLnZhbHVlLCAxMCldKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICduYW1lZCc6XHJcbiAgICAgICAgICAgICAgICBpZiAobW9kZSA9PT0gJ25hbWVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBpbGVkLnB1c2godmFsdWVzW3Rva2VuLnZhbHVlXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFR5cGUgb2YgdG9rZW4gJyR7dG9rZW4udHlwZX0nIGFuZCBmb3JtYXQgb2YgdmFsdWUgJyR7bW9kZX0nIGRvbid0IG1hdGNoIWApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICd1bmtub3duJzpcclxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBEZXRlY3QgJ3Vua25vd24nIHR5cGUgb2YgdG9rZW4hYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgaW5kZXgrKztcclxuICAgIH1cclxuICAgIHJldHVybiBjb21waWxlZDtcclxufVxyXG5cclxuY29uc3QgTE9DQUxFX1pIX0hBTlMgPSAnemgtSGFucyc7XHJcbmNvbnN0IExPQ0FMRV9aSF9IQU5UID0gJ3poLUhhbnQnO1xyXG5jb25zdCBMT0NBTEVfRU4gPSAnZW4nO1xyXG5jb25zdCBMT0NBTEVfRlIgPSAnZnInO1xyXG5jb25zdCBMT0NBTEVfRVMgPSAnZXMnO1xyXG5jb25zdCBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XHJcbmNvbnN0IGhhc093biA9ICh2YWwsIGtleSkgPT4gaGFzT3duUHJvcGVydHkuY2FsbCh2YWwsIGtleSk7XHJcbmNvbnN0IGRlZmF1bHRGb3JtYXR0ZXIgPSBuZXcgQmFzZUZvcm1hdHRlcigpO1xyXG5mdW5jdGlvbiBpbmNsdWRlKHN0ciwgcGFydHMpIHtcclxuICAgIHJldHVybiAhIXBhcnRzLmZpbmQoKHBhcnQpID0+IHN0ci5pbmRleE9mKHBhcnQpICE9PSAtMSk7XHJcbn1cclxuZnVuY3Rpb24gc3RhcnRzV2l0aChzdHIsIHBhcnRzKSB7XHJcbiAgICByZXR1cm4gcGFydHMuZmluZCgocGFydCkgPT4gc3RyLmluZGV4T2YocGFydCkgPT09IDApO1xyXG59XHJcbmZ1bmN0aW9uIG5vcm1hbGl6ZUxvY2FsZShsb2NhbGUsIG1lc3NhZ2VzKSB7XHJcbiAgICBpZiAoIWxvY2FsZSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxvY2FsZSA9IGxvY2FsZS50cmltKCkucmVwbGFjZSgvXy9nLCAnLScpO1xyXG4gICAgaWYgKG1lc3NhZ2VzICYmIG1lc3NhZ2VzW2xvY2FsZV0pIHtcclxuICAgICAgICByZXR1cm4gbG9jYWxlO1xyXG4gICAgfVxyXG4gICAgbG9jYWxlID0gbG9jYWxlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBpZiAobG9jYWxlLmluZGV4T2YoJ3poJykgPT09IDApIHtcclxuICAgICAgICBpZiAobG9jYWxlLmluZGV4T2YoJy1oYW5zJykgPiAtMSkge1xyXG4gICAgICAgICAgICByZXR1cm4gTE9DQUxFX1pIX0hBTlM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsb2NhbGUuaW5kZXhPZignLWhhbnQnKSA+IC0xKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBMT0NBTEVfWkhfSEFOVDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGluY2x1ZGUobG9jYWxlLCBbJy10dycsICctaGsnLCAnLW1vJywgJy1jaHQnXSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIExPQ0FMRV9aSF9IQU5UO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gTE9DQUxFX1pIX0hBTlM7XHJcbiAgICB9XHJcbiAgICBjb25zdCBsYW5nID0gc3RhcnRzV2l0aChsb2NhbGUsIFtMT0NBTEVfRU4sIExPQ0FMRV9GUiwgTE9DQUxFX0VTXSk7XHJcbiAgICBpZiAobGFuZykge1xyXG4gICAgICAgIHJldHVybiBsYW5nO1xyXG4gICAgfVxyXG59XHJcbmNsYXNzIEkxOG4ge1xyXG4gICAgY29uc3RydWN0b3IoeyBsb2NhbGUsIGZhbGxiYWNrTG9jYWxlLCBtZXNzYWdlcywgd2F0Y2hlciwgZm9ybWF0ZXIsIH0pIHtcclxuICAgICAgICB0aGlzLmxvY2FsZSA9IExPQ0FMRV9FTjtcclxuICAgICAgICB0aGlzLmZhbGxiYWNrTG9jYWxlID0gTE9DQUxFX0VOO1xyXG4gICAgICAgIHRoaXMubWVzc2FnZSA9IHt9O1xyXG4gICAgICAgIHRoaXMubWVzc2FnZXMgPSB7fTtcclxuICAgICAgICB0aGlzLndhdGNoZXJzID0gW107XHJcbiAgICAgICAgaWYgKGZhbGxiYWNrTG9jYWxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmFsbGJhY2tMb2NhbGUgPSBmYWxsYmFja0xvY2FsZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5mb3JtYXRlciA9IGZvcm1hdGVyIHx8IGRlZmF1bHRGb3JtYXR0ZXI7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlcyA9IG1lc3NhZ2VzIHx8IHt9O1xyXG4gICAgICAgIHRoaXMuc2V0TG9jYWxlKGxvY2FsZSB8fCBMT0NBTEVfRU4pO1xyXG4gICAgICAgIGlmICh3YXRjaGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMud2F0Y2hMb2NhbGUod2F0Y2hlcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgc2V0TG9jYWxlKGxvY2FsZSkge1xyXG4gICAgICAgIGNvbnN0IG9sZExvY2FsZSA9IHRoaXMubG9jYWxlO1xyXG4gICAgICAgIHRoaXMubG9jYWxlID0gbm9ybWFsaXplTG9jYWxlKGxvY2FsZSwgdGhpcy5tZXNzYWdlcykgfHwgdGhpcy5mYWxsYmFja0xvY2FsZTtcclxuICAgICAgICBpZiAoIXRoaXMubWVzc2FnZXNbdGhpcy5sb2NhbGVdKSB7XHJcbiAgICAgICAgICAgIC8vIOWPr+iDveWIneWni+WMluaXtuS4jeWtmOWcqFxyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VzW3RoaXMubG9jYWxlXSA9IHt9O1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2VzW3RoaXMubG9jYWxlXTtcclxuICAgICAgICAvLyDku4Xlj5HnlJ/lj5jljJbml7bvvIzpgJrnn6VcclxuICAgICAgICBpZiAob2xkTG9jYWxlICE9PSB0aGlzLmxvY2FsZSkge1xyXG4gICAgICAgICAgICB0aGlzLndhdGNoZXJzLmZvckVhY2goKHdhdGNoZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIHdhdGNoZXIodGhpcy5sb2NhbGUsIG9sZExvY2FsZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldExvY2FsZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGU7XHJcbiAgICB9XHJcbiAgICB3YXRjaExvY2FsZShmbikge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy53YXRjaGVycy5wdXNoKGZuKSAtIDE7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy53YXRjaGVycy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICBhZGQobG9jYWxlLCBtZXNzYWdlLCBvdmVycmlkZSA9IHRydWUpIHtcclxuICAgICAgICBjb25zdCBjdXJNZXNzYWdlcyA9IHRoaXMubWVzc2FnZXNbbG9jYWxlXTtcclxuICAgICAgICBpZiAoY3VyTWVzc2FnZXMpIHtcclxuICAgICAgICAgICAgaWYgKG92ZXJyaWRlKSB7XHJcbiAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKGN1ck1lc3NhZ2VzLCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKG1lc3NhZ2UpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghaGFzT3duKGN1ck1lc3NhZ2VzLCBrZXkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1ck1lc3NhZ2VzW2tleV0gPSBtZXNzYWdlW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZXNbbG9jYWxlXSA9IG1lc3NhZ2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZihtZXNzYWdlLCB2YWx1ZXMsIGRlbGltaXRlcnMpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRlci5pbnRlcnBvbGF0ZShtZXNzYWdlLCB2YWx1ZXMsIGRlbGltaXRlcnMpLmpvaW4oJycpO1xyXG4gICAgfVxyXG4gICAgdChrZXksIGxvY2FsZSwgdmFsdWVzKSB7XHJcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2U7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBsb2NhbGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGxvY2FsZSA9IG5vcm1hbGl6ZUxvY2FsZShsb2NhbGUsIHRoaXMubWVzc2FnZXMpO1xyXG4gICAgICAgICAgICBsb2NhbGUgJiYgKG1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2VzW2xvY2FsZV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdmFsdWVzID0gbG9jYWxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWhhc093bihtZXNzYWdlLCBrZXkpKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgQ2Fubm90IHRyYW5zbGF0ZSB0aGUgdmFsdWUgb2Yga2V5cGF0aCAke2tleX0uIFVzZSB0aGUgdmFsdWUgb2Yga2V5cGF0aCBhcyBkZWZhdWx0LmApO1xyXG4gICAgICAgICAgICByZXR1cm4ga2V5O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXRlci5pbnRlcnBvbGF0ZShtZXNzYWdlW2tleV0sIHZhbHVlcykuam9pbignJyk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHdhdGNoQXBwTG9jYWxlKGFwcFZtLCBpMThuKSB7XHJcbiAgICAvLyDpnIDopoHkv53or4Egd2F0Y2gg55qE6Kem5Y+R5Zyo57uE5Lu25riy5p+T5LmL5YmNXHJcbiAgICBpZiAoYXBwVm0uJHdhdGNoTG9jYWxlKSB7XHJcbiAgICAgICAgLy8gdnVlMlxyXG4gICAgICAgIGFwcFZtLiR3YXRjaExvY2FsZSgobmV3TG9jYWxlKSA9PiB7XHJcbiAgICAgICAgICAgIGkxOG4uc2V0TG9jYWxlKG5ld0xvY2FsZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBhcHBWbS4kd2F0Y2goKCkgPT4gYXBwVm0uJGxvY2FsZSwgKG5ld0xvY2FsZSkgPT4ge1xyXG4gICAgICAgICAgICBpMThuLnNldExvY2FsZShuZXdMb2NhbGUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGdldERlZmF1bHRMb2NhbGUoKSB7XHJcbiAgICBpZiAodHlwZW9mIHVuaSAhPT0gJ3VuZGVmaW5lZCcgJiYgdW5pLmdldExvY2FsZSkge1xyXG4gICAgICAgIHJldHVybiB1bmkuZ2V0TG9jYWxlKCk7XHJcbiAgICB9XHJcbiAgICAvLyDlsI/nqIvluo/lubPlj7DvvIx1bmkg5ZKMIHVuaS1pMThuIOS6kuebuOW8leeUqO+8jOWvvOiHtOiuv+mXruS4jeWIsCB1bmnvvIzmlYXlnKggZ2xvYmFsIOS4iuaMguS6hiBnZXRMb2NhbGVcclxuICAgIGlmICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWwuZ2V0TG9jYWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGdsb2JhbC5nZXRMb2NhbGUoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBMT0NBTEVfRU47XHJcbn1cclxuZnVuY3Rpb24gaW5pdFZ1ZUkxOG4obG9jYWxlLCBtZXNzYWdlcyA9IHt9LCBmYWxsYmFja0xvY2FsZSwgd2F0Y2hlcikge1xyXG4gICAgLy8g5YW85a655pen54mI5pys5YWl5Y+CXHJcbiAgICBpZiAodHlwZW9mIGxvY2FsZSAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICBbbG9jYWxlLCBtZXNzYWdlc10gPSBbXHJcbiAgICAgICAgICAgIG1lc3NhZ2VzLFxyXG4gICAgICAgICAgICBsb2NhbGUsXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgbG9jYWxlICE9PSAnc3RyaW5nJykge1xyXG4gICAgICAgIC8vIOWboOS4uuWwj+eoi+W6j+W5s+WPsO+8jHVuaS1pMThuIOWSjCB1bmkg5LqS55u45byV55So77yM5a+86Ie05q2k5pe26K6/6ZeuIHVuaSDml7bvvIzkuLogdW5kZWZpbmVkXHJcbiAgICAgICAgbG9jYWxlID0gZ2V0RGVmYXVsdExvY2FsZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBmYWxsYmFja0xvY2FsZSAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICBmYWxsYmFja0xvY2FsZSA9XHJcbiAgICAgICAgICAgICh0eXBlb2YgX191bmlDb25maWcgIT09ICd1bmRlZmluZWQnICYmIF9fdW5pQ29uZmlnLmZhbGxiYWNrTG9jYWxlKSB8fFxyXG4gICAgICAgICAgICAgICAgTE9DQUxFX0VOO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaTE4biA9IG5ldyBJMThuKHtcclxuICAgICAgICBsb2NhbGUsXHJcbiAgICAgICAgZmFsbGJhY2tMb2NhbGUsXHJcbiAgICAgICAgbWVzc2FnZXMsXHJcbiAgICAgICAgd2F0Y2hlcixcclxuICAgIH0pO1xyXG4gICAgbGV0IHQgPSAoa2V5LCB2YWx1ZXMpID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIGdldEFwcCAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAvLyBhcHAgdmlld1xyXG4gICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1mdW5jLWFzc2lnbiAqL1xyXG4gICAgICAgICAgICB0ID0gZnVuY3Rpb24gKGtleSwgdmFsdWVzKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gaTE4bi50KGtleSwgdmFsdWVzKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBpc1dhdGNoZWRBcHBMb2NhbGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlcykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYXBwVm0gPSBnZXRBcHAoKS4kdm07XHJcbiAgICAgICAgICAgICAgICAvLyDlj6/og70kdm3ov5jkuI3lrZjlnKjvvIzmr5TlpoLlnKjmlK/ku5jlrp3lsI/nqIvluo/kuK3vvIznu4Tku7blrprkuYnovoPml6nvvIzlnKhwcm9wc+eahGRlZmF1bHTph4zkvb/nlKjkuoZ0KCnlh73mlbDvvIjlpoJ1bmktZ29vZHMtbmF277yJ77yM5q2k5pe2YXBw6L+Y5pyq5Yid5aeL5YyWXHJcbiAgICAgICAgICAgICAgICAvLyBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgICAvLyBcdHR5cGU6IEFycmF5LFxyXG4gICAgICAgICAgICAgICAgLy8gXHRkZWZhdWx0ICgpIHtcclxuICAgICAgICAgICAgICAgIC8vIFx0XHRyZXR1cm4gW3tcclxuICAgICAgICAgICAgICAgIC8vIFx0XHRcdGljb246ICdzaG9wJyxcclxuICAgICAgICAgICAgICAgIC8vIFx0XHRcdHRleHQ6IHQoXCJ1bmktZ29vZHMtbmF2Lm9wdGlvbnMuc2hvcFwiKSxcclxuICAgICAgICAgICAgICAgIC8vIFx0XHR9LCB7XHJcbiAgICAgICAgICAgICAgICAvLyBcdFx0XHRpY29uOiAnY2FydCcsXHJcbiAgICAgICAgICAgICAgICAvLyBcdFx0XHR0ZXh0OiB0KFwidW5pLWdvb2RzLW5hdi5vcHRpb25zLmNhcnRcIilcclxuICAgICAgICAgICAgICAgIC8vIFx0XHR9XVxyXG4gICAgICAgICAgICAgICAgLy8gXHR9XHJcbiAgICAgICAgICAgICAgICAvLyB9LFxyXG4gICAgICAgICAgICAgICAgaWYgKGFwcFZtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g6Kem5Y+R5ZON5bqU5byPXHJcbiAgICAgICAgICAgICAgICAgICAgYXBwVm0uJGxvY2FsZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWlzV2F0Y2hlZEFwcExvY2FsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1dhdGNoZWRBcHBMb2NhbGUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YXRjaEFwcExvY2FsZShhcHBWbSwgaTE4bik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGkxOG4udChrZXksIHZhbHVlcyk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0KGtleSwgdmFsdWVzKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIGkxOG4sXHJcbiAgICAgICAgZihtZXNzYWdlLCB2YWx1ZXMsIGRlbGltaXRlcnMpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGkxOG4uZihtZXNzYWdlLCB2YWx1ZXMsIGRlbGltaXRlcnMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdChrZXksIHZhbHVlcykge1xyXG4gICAgICAgICAgICByZXR1cm4gdChrZXksIHZhbHVlcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBhZGQobG9jYWxlLCBtZXNzYWdlLCBvdmVycmlkZSA9IHRydWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGkxOG4uYWRkKGxvY2FsZSwgbWVzc2FnZSwgb3ZlcnJpZGUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgd2F0Y2goZm4pIHtcclxuICAgICAgICAgICAgcmV0dXJuIGkxOG4ud2F0Y2hMb2NhbGUoZm4pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZ2V0TG9jYWxlKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gaTE4bi5nZXRMb2NhbGUoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNldExvY2FsZShuZXdMb2NhbGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGkxOG4uc2V0TG9jYWxlKG5ld0xvY2FsZSk7XHJcbiAgICAgICAgfSxcclxuICAgIH07XHJcbn1cclxuXHJcbmNvbnN0IGlzU3RyaW5nID0gKHZhbCkgPT4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZyc7XHJcbmxldCBmb3JtYXRlcjtcclxuZnVuY3Rpb24gaGFzSTE4bkpzb24oanNvbk9iaiwgZGVsaW1pdGVycykge1xyXG4gICAgaWYgKCFmb3JtYXRlcikge1xyXG4gICAgICAgIGZvcm1hdGVyID0gbmV3IEJhc2VGb3JtYXR0ZXIoKTtcclxuICAgIH1cclxuICAgIHJldHVybiB3YWxrSnNvbk9iaihqc29uT2JqLCAoanNvbk9iaiwga2V5KSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBqc29uT2JqW2tleV07XHJcbiAgICAgICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xyXG4gICAgICAgICAgICBpZiAoaXNJMThuU3RyKHZhbHVlLCBkZWxpbWl0ZXJzKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBoYXNJMThuSnNvbih2YWx1ZSwgZGVsaW1pdGVycyk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuZnVuY3Rpb24gcGFyc2VJMThuSnNvbihqc29uT2JqLCB2YWx1ZXMsIGRlbGltaXRlcnMpIHtcclxuICAgIGlmICghZm9ybWF0ZXIpIHtcclxuICAgICAgICBmb3JtYXRlciA9IG5ldyBCYXNlRm9ybWF0dGVyKCk7XHJcbiAgICB9XHJcbiAgICB3YWxrSnNvbk9iaihqc29uT2JqLCAoanNvbk9iaiwga2V5KSA9PiB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBqc29uT2JqW2tleV07XHJcbiAgICAgICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xyXG4gICAgICAgICAgICBpZiAoaXNJMThuU3RyKHZhbHVlLCBkZWxpbWl0ZXJzKSkge1xyXG4gICAgICAgICAgICAgICAganNvbk9ialtrZXldID0gY29tcGlsZVN0cih2YWx1ZSwgdmFsdWVzLCBkZWxpbWl0ZXJzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcGFyc2VJMThuSnNvbih2YWx1ZSwgdmFsdWVzLCBkZWxpbWl0ZXJzKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBqc29uT2JqO1xyXG59XHJcbmZ1bmN0aW9uIGNvbXBpbGVJMThuSnNvblN0cihqc29uU3RyLCB7IGxvY2FsZSwgbG9jYWxlcywgZGVsaW1pdGVycywgfSkge1xyXG4gICAgaWYgKCFpc0kxOG5TdHIoanNvblN0ciwgZGVsaW1pdGVycykpIHtcclxuICAgICAgICByZXR1cm4ganNvblN0cjtcclxuICAgIH1cclxuICAgIGlmICghZm9ybWF0ZXIpIHtcclxuICAgICAgICBmb3JtYXRlciA9IG5ldyBCYXNlRm9ybWF0dGVyKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBsb2NhbGVWYWx1ZXMgPSBbXTtcclxuICAgIE9iamVjdC5rZXlzKGxvY2FsZXMpLmZvckVhY2goKG5hbWUpID0+IHtcclxuICAgICAgICBpZiAobmFtZSAhPT0gbG9jYWxlKSB7XHJcbiAgICAgICAgICAgIGxvY2FsZVZhbHVlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGxvY2FsZTogbmFtZSxcclxuICAgICAgICAgICAgICAgIHZhbHVlczogbG9jYWxlc1tuYW1lXSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBsb2NhbGVWYWx1ZXMudW5zaGlmdCh7IGxvY2FsZSwgdmFsdWVzOiBsb2NhbGVzW2xvY2FsZV0gfSk7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShjb21waWxlSnNvbk9iaihKU09OLnBhcnNlKGpzb25TdHIpLCBsb2NhbGVWYWx1ZXMsIGRlbGltaXRlcnMpLCBudWxsLCAyKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlKSB7IH1cclxuICAgIHJldHVybiBqc29uU3RyO1xyXG59XHJcbmZ1bmN0aW9uIGlzSTE4blN0cih2YWx1ZSwgZGVsaW1pdGVycykge1xyXG4gICAgcmV0dXJuIHZhbHVlLmluZGV4T2YoZGVsaW1pdGVyc1swXSkgPiAtMTtcclxufVxyXG5mdW5jdGlvbiBjb21waWxlU3RyKHZhbHVlLCB2YWx1ZXMsIGRlbGltaXRlcnMpIHtcclxuICAgIHJldHVybiBmb3JtYXRlci5pbnRlcnBvbGF0ZSh2YWx1ZSwgdmFsdWVzLCBkZWxpbWl0ZXJzKS5qb2luKCcnKTtcclxufVxyXG5mdW5jdGlvbiBjb21waWxlVmFsdWUoanNvbk9iaiwga2V5LCBsb2NhbGVWYWx1ZXMsIGRlbGltaXRlcnMpIHtcclxuICAgIGNvbnN0IHZhbHVlID0ganNvbk9ialtrZXldO1xyXG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xyXG4gICAgICAgIC8vIOWtmOWcqOWbvemZheWMllxyXG4gICAgICAgIGlmIChpc0kxOG5TdHIodmFsdWUsIGRlbGltaXRlcnMpKSB7XHJcbiAgICAgICAgICAgIGpzb25PYmpba2V5XSA9IGNvbXBpbGVTdHIodmFsdWUsIGxvY2FsZVZhbHVlc1swXS52YWx1ZXMsIGRlbGltaXRlcnMpO1xyXG4gICAgICAgICAgICBpZiAobG9jYWxlVmFsdWVzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgIC8vIOagvOW8j+WMluWbvemZheWMluivreiogFxyXG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWVMb2NhbGVzID0gKGpzb25PYmpba2V5ICsgJ0xvY2FsZXMnXSA9IHt9KTtcclxuICAgICAgICAgICAgICAgIGxvY2FsZVZhbHVlcy5mb3JFYWNoKChsb2NhbFZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVMb2NhbGVzW2xvY2FsVmFsdWUubG9jYWxlXSA9IGNvbXBpbGVTdHIodmFsdWUsIGxvY2FsVmFsdWUudmFsdWVzLCBkZWxpbWl0ZXJzKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgY29tcGlsZUpzb25PYmoodmFsdWUsIGxvY2FsZVZhbHVlcywgZGVsaW1pdGVycyk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY29tcGlsZUpzb25PYmooanNvbk9iaiwgbG9jYWxlVmFsdWVzLCBkZWxpbWl0ZXJzKSB7XHJcbiAgICB3YWxrSnNvbk9iaihqc29uT2JqLCAoanNvbk9iaiwga2V5KSA9PiB7XHJcbiAgICAgICAgY29tcGlsZVZhbHVlKGpzb25PYmosIGtleSwgbG9jYWxlVmFsdWVzLCBkZWxpbWl0ZXJzKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGpzb25PYmo7XHJcbn1cclxuZnVuY3Rpb24gd2Fsa0pzb25PYmooanNvbk9iaiwgd2Fsaykge1xyXG4gICAgaWYgKGlzQXJyYXkoanNvbk9iaikpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGpzb25PYmoubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHdhbGsoanNvbk9iaiwgaSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoaXNPYmplY3QoanNvbk9iaikpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBqc29uT2JqKSB7XHJcbiAgICAgICAgICAgIGlmICh3YWxrKGpzb25PYmosIGtleSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG5mdW5jdGlvbiByZXNvbHZlTG9jYWxlKGxvY2FsZXMpIHtcclxuICAgIHJldHVybiAobG9jYWxlKSA9PiB7XHJcbiAgICAgICAgaWYgKCFsb2NhbGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbG9jYWxlID0gbm9ybWFsaXplTG9jYWxlKGxvY2FsZSkgfHwgbG9jYWxlO1xyXG4gICAgICAgIHJldHVybiByZXNvbHZlTG9jYWxlQ2hhaW4obG9jYWxlKS5maW5kKChsb2NhbGUpID0+IGxvY2FsZXMuaW5kZXhPZihsb2NhbGUpID4gLTEpO1xyXG4gICAgfTtcclxufVxyXG5mdW5jdGlvbiByZXNvbHZlTG9jYWxlQ2hhaW4obG9jYWxlKSB7XHJcbiAgICBjb25zdCBjaGFpbiA9IFtdO1xyXG4gICAgY29uc3QgdG9rZW5zID0gbG9jYWxlLnNwbGl0KCctJyk7XHJcbiAgICB3aGlsZSAodG9rZW5zLmxlbmd0aCkge1xyXG4gICAgICAgIGNoYWluLnB1c2godG9rZW5zLmpvaW4oJy0nKSk7XHJcbiAgICAgICAgdG9rZW5zLnBvcCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNoYWluO1xyXG59XHJcblxyXG5leHBvcnQgeyBCYXNlRm9ybWF0dGVyIGFzIEZvcm1hdHRlciwgSTE4biwgTE9DQUxFX0VOLCBMT0NBTEVfRVMsIExPQ0FMRV9GUiwgTE9DQUxFX1pIX0hBTlMsIExPQ0FMRV9aSF9IQU5ULCBjb21waWxlSTE4bkpzb25TdHIsIGhhc0kxOG5Kc29uLCBpbml0VnVlSTE4biwgaXNJMThuU3RyLCBpc1N0cmluZywgbm9ybWFsaXplTG9jYWxlLCBwYXJzZUkxOG5Kc29uLCByZXNvbHZlTG9jYWxlIH07XHJcbiIsIi8qIGdsb2JhbHMgX19WVUVfU1NSX0NPTlRFWFRfXyAqL1xuXG4vLyBJTVBPUlRBTlQ6IERvIE5PVCB1c2UgRVMyMDE1IGZlYXR1cmVzIGluIHRoaXMgZmlsZSAoZXhjZXB0IGZvciBtb2R1bGVzKS5cbi8vIFRoaXMgbW9kdWxlIGlzIGEgcnVudGltZSB1dGlsaXR5IGZvciBjbGVhbmVyIGNvbXBvbmVudCBtb2R1bGUgb3V0cHV0IGFuZCB3aWxsXG4vLyBiZSBpbmNsdWRlZCBpbiB0aGUgZmluYWwgd2VicGFjayB1c2VyIGJ1bmRsZS5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbm9ybWFsaXplQ29tcG9uZW50IChcbiAgc2NyaXB0RXhwb3J0cyxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZ1bmN0aW9uYWxUZW1wbGF0ZSxcbiAgaW5qZWN0U3R5bGVzLFxuICBzY29wZUlkLFxuICBtb2R1bGVJZGVudGlmaWVyLCAvKiBzZXJ2ZXIgb25seSAqL1xuICBzaGFkb3dNb2RlLCAvKiB2dWUtY2xpIG9ubHkgKi9cbiAgY29tcG9uZW50cywgLy8gZml4ZWQgYnkgeHh4eHh4IGF1dG8gY29tcG9uZW50c1xuICByZW5kZXJqcyAvLyBmaXhlZCBieSB4eHh4eHggcmVuZGVyanNcbikge1xuICAvLyBWdWUuZXh0ZW5kIGNvbnN0cnVjdG9yIGV4cG9ydCBpbnRlcm9wXG4gIHZhciBvcHRpb25zID0gdHlwZW9mIHNjcmlwdEV4cG9ydHMgPT09ICdmdW5jdGlvbidcbiAgICA/IHNjcmlwdEV4cG9ydHMub3B0aW9uc1xuICAgIDogc2NyaXB0RXhwb3J0c1xuXG4gIC8vIGZpeGVkIGJ5IHh4eHh4eCBhdXRvIGNvbXBvbmVudHNcbiAgaWYgKGNvbXBvbmVudHMpIHtcbiAgICBpZiAoIW9wdGlvbnMuY29tcG9uZW50cykge1xuICAgICAgb3B0aW9ucy5jb21wb25lbnRzID0ge31cbiAgICB9XG4gICAgdmFyIGhhc093biA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHlcbiAgICBmb3IgKHZhciBuYW1lIGluIGNvbXBvbmVudHMpIHtcbiAgICAgIGlmIChoYXNPd24uY2FsbChjb21wb25lbnRzLCBuYW1lKSAmJiAhaGFzT3duLmNhbGwob3B0aW9ucy5jb21wb25lbnRzLCBuYW1lKSkge1xuICAgICAgICBvcHRpb25zLmNvbXBvbmVudHNbbmFtZV0gPSBjb21wb25lbnRzW25hbWVdXG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vIGZpeGVkIGJ5IHh4eHh4eCByZW5kZXJqc1xuICBpZiAocmVuZGVyanMpIHtcbiAgICAocmVuZGVyanMuYmVmb3JlQ3JlYXRlIHx8IChyZW5kZXJqcy5iZWZvcmVDcmVhdGUgPSBbXSkpLnVuc2hpZnQoZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzW3JlbmRlcmpzLl9fbW9kdWxlXSA9IHRoaXNcbiAgICB9KTtcbiAgICAob3B0aW9ucy5taXhpbnMgfHwgKG9wdGlvbnMubWl4aW5zID0gW10pKS5wdXNoKHJlbmRlcmpzKVxuICB9XG5cbiAgLy8gcmVuZGVyIGZ1bmN0aW9uc1xuICBpZiAocmVuZGVyKSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSByZW5kZXJcbiAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZuc1xuICAgIG9wdGlvbnMuX2NvbXBpbGVkID0gdHJ1ZVxuICB9XG5cbiAgLy8gZnVuY3Rpb25hbCB0ZW1wbGF0ZVxuICBpZiAoZnVuY3Rpb25hbFRlbXBsYXRlKSB7XG4gICAgb3B0aW9ucy5mdW5jdGlvbmFsID0gdHJ1ZVxuICB9XG5cbiAgLy8gc2NvcGVkSWRcbiAgaWYgKHNjb3BlSWQpIHtcbiAgICBvcHRpb25zLl9zY29wZUlkID0gJ2RhdGEtdi0nICsgc2NvcGVJZFxuICB9XG5cbiAgdmFyIGhvb2tcbiAgaWYgKG1vZHVsZUlkZW50aWZpZXIpIHsgLy8gc2VydmVyIGJ1aWxkXG4gICAgaG9vayA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAvLyAyLjMgaW5qZWN0aW9uXG4gICAgICBjb250ZXh0ID1cbiAgICAgICAgY29udGV4dCB8fCAvLyBjYWNoZWQgY2FsbFxuICAgICAgICAodGhpcy4kdm5vZGUgJiYgdGhpcy4kdm5vZGUuc3NyQ29udGV4dCkgfHwgLy8gc3RhdGVmdWxcbiAgICAgICAgKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LiR2bm9kZSAmJiB0aGlzLnBhcmVudC4kdm5vZGUuc3NyQ29udGV4dCkgLy8gZnVuY3Rpb25hbFxuICAgICAgLy8gMi4yIHdpdGggcnVuSW5OZXdDb250ZXh0OiB0cnVlXG4gICAgICBpZiAoIWNvbnRleHQgJiYgdHlwZW9mIF9fVlVFX1NTUl9DT05URVhUX18gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnRleHQgPSBfX1ZVRV9TU1JfQ09OVEVYVF9fXG4gICAgICB9XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHN0eWxlc1xuICAgICAgaWYgKGluamVjdFN0eWxlcykge1xuICAgICAgICBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCBjb250ZXh0KVxuICAgICAgfVxuICAgICAgLy8gcmVnaXN0ZXIgY29tcG9uZW50IG1vZHVsZSBpZGVudGlmaWVyIGZvciBhc3luYyBjaHVuayBpbmZlcnJlbmNlXG4gICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cykge1xuICAgICAgICBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cy5hZGQobW9kdWxlSWRlbnRpZmllcilcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdXNlZCBieSBzc3IgaW4gY2FzZSBjb21wb25lbnQgaXMgY2FjaGVkIGFuZCBiZWZvcmVDcmVhdGVcbiAgICAvLyBuZXZlciBnZXRzIGNhbGxlZFxuICAgIG9wdGlvbnMuX3NzclJlZ2lzdGVyID0gaG9va1xuICB9IGVsc2UgaWYgKGluamVjdFN0eWxlcykge1xuICAgIGhvb2sgPSBzaGFkb3dNb2RlXG4gICAgICA/IGZ1bmN0aW9uICgpIHsgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgdGhpcy4kcm9vdC4kb3B0aW9ucy5zaGFkb3dSb290KSB9XG4gICAgICA6IGluamVjdFN0eWxlc1xuICB9XG5cbiAgaWYgKGhvb2spIHtcbiAgICBpZiAob3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgICAvLyBmb3IgdGVtcGxhdGUtb25seSBob3QtcmVsb2FkIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHRoZSByZW5kZXIgZm4gZG9lc24ndFxuICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgbm9ybWFsaXplclxuICAgICAgb3B0aW9ucy5faW5qZWN0U3R5bGVzID0gaG9va1xuICAgICAgLy8gcmVnaXN0ZXIgZm9yIGZ1bmN0aW9hbCBjb21wb25lbnQgaW4gdnVlIGZpbGVcbiAgICAgIHZhciBvcmlnaW5hbFJlbmRlciA9IG9wdGlvbnMucmVuZGVyXG4gICAgICBvcHRpb25zLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcldpdGhTdHlsZUluamVjdGlvbiAoaCwgY29udGV4dCkge1xuICAgICAgICBob29rLmNhbGwoY29udGV4dClcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVuZGVyKGgsIGNvbnRleHQpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgcmVnaXN0cmF0aW9uIGFzIGJlZm9yZUNyZWF0ZSBob29rXG4gICAgICB2YXIgZXhpc3RpbmcgPSBvcHRpb25zLmJlZm9yZUNyZWF0ZVxuICAgICAgb3B0aW9ucy5iZWZvcmVDcmVhdGUgPSBleGlzdGluZ1xuICAgICAgICA/IFtdLmNvbmNhdChleGlzdGluZywgaG9vaylcbiAgICAgICAgOiBbaG9va11cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGV4cG9ydHM6IHNjcmlwdEV4cG9ydHMsXG4gICAgb3B0aW9uczogb3B0aW9uc1xuICB9XG59XG4iLCJpbXBvcnQgVnVlIGZyb20gXCJ2dWVcIlxyXG5pbXBvcnQgVnVleCBmcm9tIFwidnVleFwiXHJcblxyXG5WdWUudXNlKFZ1ZXgpXHJcblxyXG5jb25zdCBzdG9yZSA9e1xyXG5cdHN0YXRlOnt9LFxyXG5cdGdldHRldHM6e30sXHJcblx0bXV0YXRpb25zOnt9LFxyXG5cdGFjdGlvbnM6e30sXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHN0b3JlIiwiLyohXG4gKiB2dWV4IHYzLjYuMlxuICogKGMpIDIwMjEgRXZhbiBZb3VcbiAqIEBsaWNlbnNlIE1JVFxuICovXG4ndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIGFwcGx5TWl4aW4gKFZ1ZSkge1xuICB2YXIgdmVyc2lvbiA9IE51bWJlcihWdWUudmVyc2lvbi5zcGxpdCgnLicpWzBdKTtcblxuICBpZiAodmVyc2lvbiA+PSAyKSB7XG4gICAgVnVlLm1peGluKHsgYmVmb3JlQ3JlYXRlOiB2dWV4SW5pdCB9KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBvdmVycmlkZSBpbml0IGFuZCBpbmplY3QgdnVleCBpbml0IHByb2NlZHVyZVxuICAgIC8vIGZvciAxLnggYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG4gICAgdmFyIF9pbml0ID0gVnVlLnByb3RvdHlwZS5faW5pdDtcbiAgICBWdWUucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIGlmICggb3B0aW9ucyA9PT0gdm9pZCAwICkgb3B0aW9ucyA9IHt9O1xuXG4gICAgICBvcHRpb25zLmluaXQgPSBvcHRpb25zLmluaXRcbiAgICAgICAgPyBbdnVleEluaXRdLmNvbmNhdChvcHRpb25zLmluaXQpXG4gICAgICAgIDogdnVleEluaXQ7XG4gICAgICBfaW5pdC5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVnVleCBpbml0IGhvb2ssIGluamVjdGVkIGludG8gZWFjaCBpbnN0YW5jZXMgaW5pdCBob29rcyBsaXN0LlxuICAgKi9cblxuICBmdW5jdGlvbiB2dWV4SW5pdCAoKSB7XG4gICAgdmFyIG9wdGlvbnMgPSB0aGlzLiRvcHRpb25zO1xuICAgIC8vIHN0b3JlIGluamVjdGlvblxuICAgIGlmIChvcHRpb25zLnN0b3JlKSB7XG4gICAgICB0aGlzLiRzdG9yZSA9IHR5cGVvZiBvcHRpb25zLnN0b3JlID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gb3B0aW9ucy5zdG9yZSgpXG4gICAgICAgIDogb3B0aW9ucy5zdG9yZTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMucGFyZW50ICYmIG9wdGlvbnMucGFyZW50LiRzdG9yZSkge1xuICAgICAgdGhpcy4kc3RvcmUgPSBvcHRpb25zLnBhcmVudC4kc3RvcmU7XG4gICAgfVxuICB9XG59XG5cbnZhciB0YXJnZXQgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJ1xuICA/IHdpbmRvd1xuICA6IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnXG4gICAgPyBnbG9iYWxcbiAgICA6IHt9O1xudmFyIGRldnRvb2xIb29rID0gdGFyZ2V0Ll9fVlVFX0RFVlRPT0xTX0dMT0JBTF9IT09LX187XG5cbmZ1bmN0aW9uIGRldnRvb2xQbHVnaW4gKHN0b3JlKSB7XG4gIGlmICghZGV2dG9vbEhvb2spIHsgcmV0dXJuIH1cblxuICBzdG9yZS5fZGV2dG9vbEhvb2sgPSBkZXZ0b29sSG9vaztcblxuICBkZXZ0b29sSG9vay5lbWl0KCd2dWV4OmluaXQnLCBzdG9yZSk7XG5cbiAgZGV2dG9vbEhvb2sub24oJ3Z1ZXg6dHJhdmVsLXRvLXN0YXRlJywgZnVuY3Rpb24gKHRhcmdldFN0YXRlKSB7XG4gICAgc3RvcmUucmVwbGFjZVN0YXRlKHRhcmdldFN0YXRlKTtcbiAgfSk7XG5cbiAgc3RvcmUuc3Vic2NyaWJlKGZ1bmN0aW9uIChtdXRhdGlvbiwgc3RhdGUpIHtcbiAgICBkZXZ0b29sSG9vay5lbWl0KCd2dWV4Om11dGF0aW9uJywgbXV0YXRpb24sIHN0YXRlKTtcbiAgfSwgeyBwcmVwZW5kOiB0cnVlIH0pO1xuXG4gIHN0b3JlLnN1YnNjcmliZUFjdGlvbihmdW5jdGlvbiAoYWN0aW9uLCBzdGF0ZSkge1xuICAgIGRldnRvb2xIb29rLmVtaXQoJ3Z1ZXg6YWN0aW9uJywgYWN0aW9uLCBzdGF0ZSk7XG4gIH0sIHsgcHJlcGVuZDogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGZpcnN0IGl0ZW0gdGhhdCBwYXNzIHRoZSB0ZXN0XG4gKiBieSBzZWNvbmQgYXJndW1lbnQgZnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBsaXN0XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmXG4gKiBAcmV0dXJuIHsqfVxuICovXG5mdW5jdGlvbiBmaW5kIChsaXN0LCBmKSB7XG4gIHJldHVybiBsaXN0LmZpbHRlcihmKVswXVxufVxuXG4vKipcbiAqIERlZXAgY29weSB0aGUgZ2l2ZW4gb2JqZWN0IGNvbnNpZGVyaW5nIGNpcmN1bGFyIHN0cnVjdHVyZS5cbiAqIFRoaXMgZnVuY3Rpb24gY2FjaGVzIGFsbCBuZXN0ZWQgb2JqZWN0cyBhbmQgaXRzIGNvcGllcy5cbiAqIElmIGl0IGRldGVjdHMgY2lyY3VsYXIgc3RydWN0dXJlLCB1c2UgY2FjaGVkIGNvcHkgdG8gYXZvaWQgaW5maW5pdGUgbG9vcC5cbiAqXG4gKiBAcGFyYW0geyp9IG9ialxuICogQHBhcmFtIHtBcnJheTxPYmplY3Q+fSBjYWNoZVxuICogQHJldHVybiB7Kn1cbiAqL1xuZnVuY3Rpb24gZGVlcENvcHkgKG9iaiwgY2FjaGUpIHtcbiAgaWYgKCBjYWNoZSA9PT0gdm9pZCAwICkgY2FjaGUgPSBbXTtcblxuICAvLyBqdXN0IHJldHVybiBpZiBvYmogaXMgaW1tdXRhYmxlIHZhbHVlXG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gb2JqXG4gIH1cblxuICAvLyBpZiBvYmogaXMgaGl0LCBpdCBpcyBpbiBjaXJjdWxhciBzdHJ1Y3R1cmVcbiAgdmFyIGhpdCA9IGZpbmQoY2FjaGUsIGZ1bmN0aW9uIChjKSB7IHJldHVybiBjLm9yaWdpbmFsID09PSBvYmo7IH0pO1xuICBpZiAoaGl0KSB7XG4gICAgcmV0dXJuIGhpdC5jb3B5XG4gIH1cblxuICB2YXIgY29weSA9IEFycmF5LmlzQXJyYXkob2JqKSA/IFtdIDoge307XG4gIC8vIHB1dCB0aGUgY29weSBpbnRvIGNhY2hlIGF0IGZpcnN0XG4gIC8vIGJlY2F1c2Ugd2Ugd2FudCB0byByZWZlciBpdCBpbiByZWN1cnNpdmUgZGVlcENvcHlcbiAgY2FjaGUucHVzaCh7XG4gICAgb3JpZ2luYWw6IG9iaixcbiAgICBjb3B5OiBjb3B5XG4gIH0pO1xuXG4gIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgY29weVtrZXldID0gZGVlcENvcHkob2JqW2tleV0sIGNhY2hlKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvcHlcbn1cblxuLyoqXG4gKiBmb3JFYWNoIGZvciBvYmplY3RcbiAqL1xuZnVuY3Rpb24gZm9yRWFjaFZhbHVlIChvYmosIGZuKSB7XG4gIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IHJldHVybiBmbihvYmpba2V5XSwga2V5KTsgfSk7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0IChvYmopIHtcbiAgcmV0dXJuIG9iaiAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0J1xufVxuXG5mdW5jdGlvbiBpc1Byb21pc2UgKHZhbCkge1xuICByZXR1cm4gdmFsICYmIHR5cGVvZiB2YWwudGhlbiA9PT0gJ2Z1bmN0aW9uJ1xufVxuXG5mdW5jdGlvbiBhc3NlcnQgKGNvbmRpdGlvbiwgbXNnKSB7XG4gIGlmICghY29uZGl0aW9uKSB7IHRocm93IG5ldyBFcnJvcigoXCJbdnVleF0gXCIgKyBtc2cpKSB9XG59XG5cbmZ1bmN0aW9uIHBhcnRpYWwgKGZuLCBhcmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZm4oYXJnKVxuICB9XG59XG5cbi8vIEJhc2UgZGF0YSBzdHJ1Y3QgZm9yIHN0b3JlJ3MgbW9kdWxlLCBwYWNrYWdlIHdpdGggc29tZSBhdHRyaWJ1dGUgYW5kIG1ldGhvZFxudmFyIE1vZHVsZSA9IGZ1bmN0aW9uIE1vZHVsZSAocmF3TW9kdWxlLCBydW50aW1lKSB7XG4gIHRoaXMucnVudGltZSA9IHJ1bnRpbWU7XG4gIC8vIFN0b3JlIHNvbWUgY2hpbGRyZW4gaXRlbVxuICB0aGlzLl9jaGlsZHJlbiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIC8vIFN0b3JlIHRoZSBvcmlnaW4gbW9kdWxlIG9iamVjdCB3aGljaCBwYXNzZWQgYnkgcHJvZ3JhbW1lclxuICB0aGlzLl9yYXdNb2R1bGUgPSByYXdNb2R1bGU7XG4gIHZhciByYXdTdGF0ZSA9IHJhd01vZHVsZS5zdGF0ZTtcblxuICAvLyBTdG9yZSB0aGUgb3JpZ2luIG1vZHVsZSdzIHN0YXRlXG4gIHRoaXMuc3RhdGUgPSAodHlwZW9mIHJhd1N0YXRlID09PSAnZnVuY3Rpb24nID8gcmF3U3RhdGUoKSA6IHJhd1N0YXRlKSB8fCB7fTtcbn07XG5cbnZhciBwcm90b3R5cGVBY2Nlc3NvcnMgPSB7IG5hbWVzcGFjZWQ6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0gfTtcblxucHJvdG90eXBlQWNjZXNzb3JzLm5hbWVzcGFjZWQuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gISF0aGlzLl9yYXdNb2R1bGUubmFtZXNwYWNlZFxufTtcblxuTW9kdWxlLnByb3RvdHlwZS5hZGRDaGlsZCA9IGZ1bmN0aW9uIGFkZENoaWxkIChrZXksIG1vZHVsZSkge1xuICB0aGlzLl9jaGlsZHJlbltrZXldID0gbW9kdWxlO1xufTtcblxuTW9kdWxlLnByb3RvdHlwZS5yZW1vdmVDaGlsZCA9IGZ1bmN0aW9uIHJlbW92ZUNoaWxkIChrZXkpIHtcbiAgZGVsZXRlIHRoaXMuX2NoaWxkcmVuW2tleV07XG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLmdldENoaWxkID0gZnVuY3Rpb24gZ2V0Q2hpbGQgKGtleSkge1xuICByZXR1cm4gdGhpcy5fY2hpbGRyZW5ba2V5XVxufTtcblxuTW9kdWxlLnByb3RvdHlwZS5oYXNDaGlsZCA9IGZ1bmN0aW9uIGhhc0NoaWxkIChrZXkpIHtcbiAgcmV0dXJuIGtleSBpbiB0aGlzLl9jaGlsZHJlblxufTtcblxuTW9kdWxlLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKHJhd01vZHVsZSkge1xuICB0aGlzLl9yYXdNb2R1bGUubmFtZXNwYWNlZCA9IHJhd01vZHVsZS5uYW1lc3BhY2VkO1xuICBpZiAocmF3TW9kdWxlLmFjdGlvbnMpIHtcbiAgICB0aGlzLl9yYXdNb2R1bGUuYWN0aW9ucyA9IHJhd01vZHVsZS5hY3Rpb25zO1xuICB9XG4gIGlmIChyYXdNb2R1bGUubXV0YXRpb25zKSB7XG4gICAgdGhpcy5fcmF3TW9kdWxlLm11dGF0aW9ucyA9IHJhd01vZHVsZS5tdXRhdGlvbnM7XG4gIH1cbiAgaWYgKHJhd01vZHVsZS5nZXR0ZXJzKSB7XG4gICAgdGhpcy5fcmF3TW9kdWxlLmdldHRlcnMgPSByYXdNb2R1bGUuZ2V0dGVycztcbiAgfVxufTtcblxuTW9kdWxlLnByb3RvdHlwZS5mb3JFYWNoQ2hpbGQgPSBmdW5jdGlvbiBmb3JFYWNoQ2hpbGQgKGZuKSB7XG4gIGZvckVhY2hWYWx1ZSh0aGlzLl9jaGlsZHJlbiwgZm4pO1xufTtcblxuTW9kdWxlLnByb3RvdHlwZS5mb3JFYWNoR2V0dGVyID0gZnVuY3Rpb24gZm9yRWFjaEdldHRlciAoZm4pIHtcbiAgaWYgKHRoaXMuX3Jhd01vZHVsZS5nZXR0ZXJzKSB7XG4gICAgZm9yRWFjaFZhbHVlKHRoaXMuX3Jhd01vZHVsZS5nZXR0ZXJzLCBmbik7XG4gIH1cbn07XG5cbk1vZHVsZS5wcm90b3R5cGUuZm9yRWFjaEFjdGlvbiA9IGZ1bmN0aW9uIGZvckVhY2hBY3Rpb24gKGZuKSB7XG4gIGlmICh0aGlzLl9yYXdNb2R1bGUuYWN0aW9ucykge1xuICAgIGZvckVhY2hWYWx1ZSh0aGlzLl9yYXdNb2R1bGUuYWN0aW9ucywgZm4pO1xuICB9XG59O1xuXG5Nb2R1bGUucHJvdG90eXBlLmZvckVhY2hNdXRhdGlvbiA9IGZ1bmN0aW9uIGZvckVhY2hNdXRhdGlvbiAoZm4pIHtcbiAgaWYgKHRoaXMuX3Jhd01vZHVsZS5tdXRhdGlvbnMpIHtcbiAgICBmb3JFYWNoVmFsdWUodGhpcy5fcmF3TW9kdWxlLm11dGF0aW9ucywgZm4pO1xuICB9XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggTW9kdWxlLnByb3RvdHlwZSwgcHJvdG90eXBlQWNjZXNzb3JzICk7XG5cbnZhciBNb2R1bGVDb2xsZWN0aW9uID0gZnVuY3Rpb24gTW9kdWxlQ29sbGVjdGlvbiAocmF3Um9vdE1vZHVsZSkge1xuICAvLyByZWdpc3RlciByb290IG1vZHVsZSAoVnVleC5TdG9yZSBvcHRpb25zKVxuICB0aGlzLnJlZ2lzdGVyKFtdLCByYXdSb290TW9kdWxlLCBmYWxzZSk7XG59O1xuXG5Nb2R1bGVDb2xsZWN0aW9uLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiBnZXQgKHBhdGgpIHtcbiAgcmV0dXJuIHBhdGgucmVkdWNlKGZ1bmN0aW9uIChtb2R1bGUsIGtleSkge1xuICAgIHJldHVybiBtb2R1bGUuZ2V0Q2hpbGQoa2V5KVxuICB9LCB0aGlzLnJvb3QpXG59O1xuXG5Nb2R1bGVDb2xsZWN0aW9uLnByb3RvdHlwZS5nZXROYW1lc3BhY2UgPSBmdW5jdGlvbiBnZXROYW1lc3BhY2UgKHBhdGgpIHtcbiAgdmFyIG1vZHVsZSA9IHRoaXMucm9vdDtcbiAgcmV0dXJuIHBhdGgucmVkdWNlKGZ1bmN0aW9uIChuYW1lc3BhY2UsIGtleSkge1xuICAgIG1vZHVsZSA9IG1vZHVsZS5nZXRDaGlsZChrZXkpO1xuICAgIHJldHVybiBuYW1lc3BhY2UgKyAobW9kdWxlLm5hbWVzcGFjZWQgPyBrZXkgKyAnLycgOiAnJylcbiAgfSwgJycpXG59O1xuXG5Nb2R1bGVDb2xsZWN0aW9uLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUkMSAocmF3Um9vdE1vZHVsZSkge1xuICB1cGRhdGUoW10sIHRoaXMucm9vdCwgcmF3Um9vdE1vZHVsZSk7XG59O1xuXG5Nb2R1bGVDb2xsZWN0aW9uLnByb3RvdHlwZS5yZWdpc3RlciA9IGZ1bmN0aW9uIHJlZ2lzdGVyIChwYXRoLCByYXdNb2R1bGUsIHJ1bnRpbWUpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcbiAgICBpZiAoIHJ1bnRpbWUgPT09IHZvaWQgMCApIHJ1bnRpbWUgPSB0cnVlO1xuXG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICBhc3NlcnRSYXdNb2R1bGUocGF0aCwgcmF3TW9kdWxlKTtcbiAgfVxuXG4gIHZhciBuZXdNb2R1bGUgPSBuZXcgTW9kdWxlKHJhd01vZHVsZSwgcnVudGltZSk7XG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgIHRoaXMucm9vdCA9IG5ld01vZHVsZTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgcGFyZW50ID0gdGhpcy5nZXQocGF0aC5zbGljZSgwLCAtMSkpO1xuICAgIHBhcmVudC5hZGRDaGlsZChwYXRoW3BhdGgubGVuZ3RoIC0gMV0sIG5ld01vZHVsZSk7XG4gIH1cblxuICAvLyByZWdpc3RlciBuZXN0ZWQgbW9kdWxlc1xuICBpZiAocmF3TW9kdWxlLm1vZHVsZXMpIHtcbiAgICBmb3JFYWNoVmFsdWUocmF3TW9kdWxlLm1vZHVsZXMsIGZ1bmN0aW9uIChyYXdDaGlsZE1vZHVsZSwga2V5KSB7XG4gICAgICB0aGlzJDEucmVnaXN0ZXIocGF0aC5jb25jYXQoa2V5KSwgcmF3Q2hpbGRNb2R1bGUsIHJ1bnRpbWUpO1xuICAgIH0pO1xuICB9XG59O1xuXG5Nb2R1bGVDb2xsZWN0aW9uLnByb3RvdHlwZS51bnJlZ2lzdGVyID0gZnVuY3Rpb24gdW5yZWdpc3RlciAocGF0aCkge1xuICB2YXIgcGFyZW50ID0gdGhpcy5nZXQocGF0aC5zbGljZSgwLCAtMSkpO1xuICB2YXIga2V5ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICB2YXIgY2hpbGQgPSBwYXJlbnQuZ2V0Q2hpbGQoa2V5KTtcblxuICBpZiAoIWNoaWxkKSB7XG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBcIlt2dWV4XSB0cnlpbmcgdG8gdW5yZWdpc3RlciBtb2R1bGUgJ1wiICsga2V5ICsgXCInLCB3aGljaCBpcyBcIiArXG4gICAgICAgIFwibm90IHJlZ2lzdGVyZWRcIlxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoIWNoaWxkLnJ1bnRpbWUpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHBhcmVudC5yZW1vdmVDaGlsZChrZXkpO1xufTtcblxuTW9kdWxlQ29sbGVjdGlvbi5wcm90b3R5cGUuaXNSZWdpc3RlcmVkID0gZnVuY3Rpb24gaXNSZWdpc3RlcmVkIChwYXRoKSB7XG4gIHZhciBwYXJlbnQgPSB0aGlzLmdldChwYXRoLnNsaWNlKDAsIC0xKSk7XG4gIHZhciBrZXkgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG5cbiAgaWYgKHBhcmVudCkge1xuICAgIHJldHVybiBwYXJlbnQuaGFzQ2hpbGQoa2V5KVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59O1xuXG5mdW5jdGlvbiB1cGRhdGUgKHBhdGgsIHRhcmdldE1vZHVsZSwgbmV3TW9kdWxlKSB7XG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICBhc3NlcnRSYXdNb2R1bGUocGF0aCwgbmV3TW9kdWxlKTtcbiAgfVxuXG4gIC8vIHVwZGF0ZSB0YXJnZXQgbW9kdWxlXG4gIHRhcmdldE1vZHVsZS51cGRhdGUobmV3TW9kdWxlKTtcblxuICAvLyB1cGRhdGUgbmVzdGVkIG1vZHVsZXNcbiAgaWYgKG5ld01vZHVsZS5tb2R1bGVzKSB7XG4gICAgZm9yICh2YXIga2V5IGluIG5ld01vZHVsZS5tb2R1bGVzKSB7XG4gICAgICBpZiAoIXRhcmdldE1vZHVsZS5nZXRDaGlsZChrZXkpKSB7XG4gICAgICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICBcIlt2dWV4XSB0cnlpbmcgdG8gYWRkIGEgbmV3IG1vZHVsZSAnXCIgKyBrZXkgKyBcIicgb24gaG90IHJlbG9hZGluZywgXCIgK1xuICAgICAgICAgICAgJ21hbnVhbCByZWxvYWQgaXMgbmVlZGVkJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICB1cGRhdGUoXG4gICAgICAgIHBhdGguY29uY2F0KGtleSksXG4gICAgICAgIHRhcmdldE1vZHVsZS5nZXRDaGlsZChrZXkpLFxuICAgICAgICBuZXdNb2R1bGUubW9kdWxlc1trZXldXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG52YXIgZnVuY3Rpb25Bc3NlcnQgPSB7XG4gIGFzc2VydDogZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbic7IH0sXG4gIGV4cGVjdGVkOiAnZnVuY3Rpb24nXG59O1xuXG52YXIgb2JqZWN0QXNzZXJ0ID0ge1xuICBhc3NlcnQ6IGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nIHx8XG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHZhbHVlLmhhbmRsZXIgPT09ICdmdW5jdGlvbicpOyB9LFxuICBleHBlY3RlZDogJ2Z1bmN0aW9uIG9yIG9iamVjdCB3aXRoIFwiaGFuZGxlclwiIGZ1bmN0aW9uJ1xufTtcblxudmFyIGFzc2VydFR5cGVzID0ge1xuICBnZXR0ZXJzOiBmdW5jdGlvbkFzc2VydCxcbiAgbXV0YXRpb25zOiBmdW5jdGlvbkFzc2VydCxcbiAgYWN0aW9uczogb2JqZWN0QXNzZXJ0XG59O1xuXG5mdW5jdGlvbiBhc3NlcnRSYXdNb2R1bGUgKHBhdGgsIHJhd01vZHVsZSkge1xuICBPYmplY3Qua2V5cyhhc3NlcnRUeXBlcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKCFyYXdNb2R1bGVba2V5XSkgeyByZXR1cm4gfVxuXG4gICAgdmFyIGFzc2VydE9wdGlvbnMgPSBhc3NlcnRUeXBlc1trZXldO1xuXG4gICAgZm9yRWFjaFZhbHVlKHJhd01vZHVsZVtrZXldLCBmdW5jdGlvbiAodmFsdWUsIHR5cGUpIHtcbiAgICAgIGFzc2VydChcbiAgICAgICAgYXNzZXJ0T3B0aW9ucy5hc3NlcnQodmFsdWUpLFxuICAgICAgICBtYWtlQXNzZXJ0aW9uTWVzc2FnZShwYXRoLCBrZXksIHR5cGUsIHZhbHVlLCBhc3NlcnRPcHRpb25zLmV4cGVjdGVkKVxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1ha2VBc3NlcnRpb25NZXNzYWdlIChwYXRoLCBrZXksIHR5cGUsIHZhbHVlLCBleHBlY3RlZCkge1xuICB2YXIgYnVmID0ga2V5ICsgXCIgc2hvdWxkIGJlIFwiICsgZXhwZWN0ZWQgKyBcIiBidXQgXFxcIlwiICsga2V5ICsgXCIuXCIgKyB0eXBlICsgXCJcXFwiXCI7XG4gIGlmIChwYXRoLmxlbmd0aCA+IDApIHtcbiAgICBidWYgKz0gXCIgaW4gbW9kdWxlIFxcXCJcIiArIChwYXRoLmpvaW4oJy4nKSkgKyBcIlxcXCJcIjtcbiAgfVxuICBidWYgKz0gXCIgaXMgXCIgKyAoSlNPTi5zdHJpbmdpZnkodmFsdWUpKSArIFwiLlwiO1xuICByZXR1cm4gYnVmXG59XG5cbnZhciBWdWU7IC8vIGJpbmQgb24gaW5zdGFsbFxuXG52YXIgU3RvcmUgPSBmdW5jdGlvbiBTdG9yZSAob3B0aW9ucykge1xuICB2YXIgdGhpcyQxID0gdGhpcztcbiAgaWYgKCBvcHRpb25zID09PSB2b2lkIDAgKSBvcHRpb25zID0ge307XG5cbiAgLy8gQXV0byBpbnN0YWxsIGlmIGl0IGlzIG5vdCBkb25lIHlldCBhbmQgYHdpbmRvd2AgaGFzIGBWdWVgLlxuICAvLyBUbyBhbGxvdyB1c2VycyB0byBhdm9pZCBhdXRvLWluc3RhbGxhdGlvbiBpbiBzb21lIGNhc2VzLFxuICAvLyB0aGlzIGNvZGUgc2hvdWxkIGJlIHBsYWNlZCBoZXJlLiBTZWUgIzczMVxuICBpZiAoIVZ1ZSAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuVnVlKSB7XG4gICAgaW5zdGFsbCh3aW5kb3cuVnVlKTtcbiAgfVxuXG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICBhc3NlcnQoVnVlLCBcIm11c3QgY2FsbCBWdWUudXNlKFZ1ZXgpIGJlZm9yZSBjcmVhdGluZyBhIHN0b3JlIGluc3RhbmNlLlwiKTtcbiAgICBhc3NlcnQodHlwZW9mIFByb21pc2UgIT09ICd1bmRlZmluZWQnLCBcInZ1ZXggcmVxdWlyZXMgYSBQcm9taXNlIHBvbHlmaWxsIGluIHRoaXMgYnJvd3Nlci5cIik7XG4gICAgYXNzZXJ0KHRoaXMgaW5zdGFuY2VvZiBTdG9yZSwgXCJzdG9yZSBtdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBuZXcgb3BlcmF0b3IuXCIpO1xuICB9XG5cbiAgdmFyIHBsdWdpbnMgPSBvcHRpb25zLnBsdWdpbnM7IGlmICggcGx1Z2lucyA9PT0gdm9pZCAwICkgcGx1Z2lucyA9IFtdO1xuICB2YXIgc3RyaWN0ID0gb3B0aW9ucy5zdHJpY3Q7IGlmICggc3RyaWN0ID09PSB2b2lkIDAgKSBzdHJpY3QgPSBmYWxzZTtcblxuICAvLyBzdG9yZSBpbnRlcm5hbCBzdGF0ZVxuICB0aGlzLl9jb21taXR0aW5nID0gZmFsc2U7XG4gIHRoaXMuX2FjdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB0aGlzLl9hY3Rpb25TdWJzY3JpYmVycyA9IFtdO1xuICB0aGlzLl9tdXRhdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB0aGlzLl93cmFwcGVkR2V0dGVycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHRoaXMuX21vZHVsZXMgPSBuZXcgTW9kdWxlQ29sbGVjdGlvbihvcHRpb25zKTtcbiAgdGhpcy5fbW9kdWxlc05hbWVzcGFjZU1hcCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIHRoaXMuX3N1YnNjcmliZXJzID0gW107XG4gIHRoaXMuX3dhdGNoZXJWTSA9IG5ldyBWdWUoKTtcbiAgdGhpcy5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuICAvLyBiaW5kIGNvbW1pdCBhbmQgZGlzcGF0Y2ggdG8gc2VsZlxuICB2YXIgc3RvcmUgPSB0aGlzO1xuICB2YXIgcmVmID0gdGhpcztcbiAgdmFyIGRpc3BhdGNoID0gcmVmLmRpc3BhdGNoO1xuICB2YXIgY29tbWl0ID0gcmVmLmNvbW1pdDtcbiAgdGhpcy5kaXNwYXRjaCA9IGZ1bmN0aW9uIGJvdW5kRGlzcGF0Y2ggKHR5cGUsIHBheWxvYWQpIHtcbiAgICByZXR1cm4gZGlzcGF0Y2guY2FsbChzdG9yZSwgdHlwZSwgcGF5bG9hZClcbiAgfTtcbiAgdGhpcy5jb21taXQgPSBmdW5jdGlvbiBib3VuZENvbW1pdCAodHlwZSwgcGF5bG9hZCwgb3B0aW9ucykge1xuICAgIHJldHVybiBjb21taXQuY2FsbChzdG9yZSwgdHlwZSwgcGF5bG9hZCwgb3B0aW9ucylcbiAgfTtcblxuICAvLyBzdHJpY3QgbW9kZVxuICB0aGlzLnN0cmljdCA9IHN0cmljdDtcblxuICB2YXIgc3RhdGUgPSB0aGlzLl9tb2R1bGVzLnJvb3Quc3RhdGU7XG5cbiAgLy8gaW5pdCByb290IG1vZHVsZS5cbiAgLy8gdGhpcyBhbHNvIHJlY3Vyc2l2ZWx5IHJlZ2lzdGVycyBhbGwgc3ViLW1vZHVsZXNcbiAgLy8gYW5kIGNvbGxlY3RzIGFsbCBtb2R1bGUgZ2V0dGVycyBpbnNpZGUgdGhpcy5fd3JhcHBlZEdldHRlcnNcbiAgaW5zdGFsbE1vZHVsZSh0aGlzLCBzdGF0ZSwgW10sIHRoaXMuX21vZHVsZXMucm9vdCk7XG5cbiAgLy8gaW5pdGlhbGl6ZSB0aGUgc3RvcmUgdm0sIHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgcmVhY3Rpdml0eVxuICAvLyAoYWxzbyByZWdpc3RlcnMgX3dyYXBwZWRHZXR0ZXJzIGFzIGNvbXB1dGVkIHByb3BlcnRpZXMpXG4gIHJlc2V0U3RvcmVWTSh0aGlzLCBzdGF0ZSk7XG5cbiAgLy8gYXBwbHkgcGx1Z2luc1xuICBwbHVnaW5zLmZvckVhY2goZnVuY3Rpb24gKHBsdWdpbikgeyByZXR1cm4gcGx1Z2luKHRoaXMkMSk7IH0pO1xuXG4gIHZhciB1c2VEZXZ0b29scyA9IG9wdGlvbnMuZGV2dG9vbHMgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMuZGV2dG9vbHMgOiBWdWUuY29uZmlnLmRldnRvb2xzO1xuICBpZiAodXNlRGV2dG9vbHMpIHtcbiAgICBkZXZ0b29sUGx1Z2luKHRoaXMpO1xuICB9XG59O1xuXG52YXIgcHJvdG90eXBlQWNjZXNzb3JzJDEgPSB7IHN0YXRlOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH07XG5cbnByb3RvdHlwZUFjY2Vzc29ycyQxLnN0YXRlLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX3ZtLl9kYXRhLiQkc3RhdGVcbn07XG5cbnByb3RvdHlwZUFjY2Vzc29ycyQxLnN0YXRlLnNldCA9IGZ1bmN0aW9uICh2KSB7XG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICBhc3NlcnQoZmFsc2UsIFwidXNlIHN0b3JlLnJlcGxhY2VTdGF0ZSgpIHRvIGV4cGxpY2l0IHJlcGxhY2Ugc3RvcmUgc3RhdGUuXCIpO1xuICB9XG59O1xuXG5TdG9yZS5wcm90b3R5cGUuY29tbWl0ID0gZnVuY3Rpb24gY29tbWl0IChfdHlwZSwgX3BheWxvYWQsIF9vcHRpb25zKSB7XG4gICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgLy8gY2hlY2sgb2JqZWN0LXN0eWxlIGNvbW1pdFxuICB2YXIgcmVmID0gdW5pZnlPYmplY3RTdHlsZShfdHlwZSwgX3BheWxvYWQsIF9vcHRpb25zKTtcbiAgICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuICAgIHZhciBwYXlsb2FkID0gcmVmLnBheWxvYWQ7XG4gICAgdmFyIG9wdGlvbnMgPSByZWYub3B0aW9ucztcblxuICB2YXIgbXV0YXRpb24gPSB7IHR5cGU6IHR5cGUsIHBheWxvYWQ6IHBheWxvYWQgfTtcbiAgdmFyIGVudHJ5ID0gdGhpcy5fbXV0YXRpb25zW3R5cGVdO1xuICBpZiAoIWVudHJ5KSB7XG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gdW5rbm93biBtdXRhdGlvbiB0eXBlOiBcIiArIHR5cGUpKTtcbiAgICB9XG4gICAgcmV0dXJuXG4gIH1cbiAgdGhpcy5fd2l0aENvbW1pdChmdW5jdGlvbiAoKSB7XG4gICAgZW50cnkuZm9yRWFjaChmdW5jdGlvbiBjb21taXRJdGVyYXRvciAoaGFuZGxlcikge1xuICAgICAgaGFuZGxlcihwYXlsb2FkKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgdGhpcy5fc3Vic2NyaWJlcnNcbiAgICAuc2xpY2UoKSAvLyBzaGFsbG93IGNvcHkgdG8gcHJldmVudCBpdGVyYXRvciBpbnZhbGlkYXRpb24gaWYgc3Vic2NyaWJlciBzeW5jaHJvbm91c2x5IGNhbGxzIHVuc3Vic2NyaWJlXG4gICAgLmZvckVhY2goZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gc3ViKG11dGF0aW9uLCB0aGlzJDEuc3RhdGUpOyB9KTtcblxuICBpZiAoXG4gICAgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmXG4gICAgb3B0aW9ucyAmJiBvcHRpb25zLnNpbGVudFxuICApIHtcbiAgICBjb25zb2xlLndhcm4oXG4gICAgICBcIlt2dWV4XSBtdXRhdGlvbiB0eXBlOiBcIiArIHR5cGUgKyBcIi4gU2lsZW50IG9wdGlvbiBoYXMgYmVlbiByZW1vdmVkLiBcIiArXG4gICAgICAnVXNlIHRoZSBmaWx0ZXIgZnVuY3Rpb25hbGl0eSBpbiB0aGUgdnVlLWRldnRvb2xzJ1xuICAgICk7XG4gIH1cbn07XG5cblN0b3JlLnByb3RvdHlwZS5kaXNwYXRjaCA9IGZ1bmN0aW9uIGRpc3BhdGNoIChfdHlwZSwgX3BheWxvYWQpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICAvLyBjaGVjayBvYmplY3Qtc3R5bGUgZGlzcGF0Y2hcbiAgdmFyIHJlZiA9IHVuaWZ5T2JqZWN0U3R5bGUoX3R5cGUsIF9wYXlsb2FkKTtcbiAgICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuICAgIHZhciBwYXlsb2FkID0gcmVmLnBheWxvYWQ7XG5cbiAgdmFyIGFjdGlvbiA9IHsgdHlwZTogdHlwZSwgcGF5bG9hZDogcGF5bG9hZCB9O1xuICB2YXIgZW50cnkgPSB0aGlzLl9hY3Rpb25zW3R5cGVdO1xuICBpZiAoIWVudHJ5KSB7XG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gdW5rbm93biBhY3Rpb24gdHlwZTogXCIgKyB0eXBlKSk7XG4gICAgfVxuICAgIHJldHVyblxuICB9XG5cbiAgdHJ5IHtcbiAgICB0aGlzLl9hY3Rpb25TdWJzY3JpYmVyc1xuICAgICAgLnNsaWNlKCkgLy8gc2hhbGxvdyBjb3B5IHRvIHByZXZlbnQgaXRlcmF0b3IgaW52YWxpZGF0aW9uIGlmIHN1YnNjcmliZXIgc3luY2hyb25vdXNseSBjYWxscyB1bnN1YnNjcmliZVxuICAgICAgLmZpbHRlcihmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIuYmVmb3JlOyB9KVxuICAgICAgLmZvckVhY2goZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gc3ViLmJlZm9yZShhY3Rpb24sIHRoaXMkMS5zdGF0ZSk7IH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgY29uc29sZS53YXJuKFwiW3Z1ZXhdIGVycm9yIGluIGJlZm9yZSBhY3Rpb24gc3Vic2NyaWJlcnM6IFwiKTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIHJlc3VsdCA9IGVudHJ5Lmxlbmd0aCA+IDFcbiAgICA/IFByb21pc2UuYWxsKGVudHJ5Lm1hcChmdW5jdGlvbiAoaGFuZGxlcikgeyByZXR1cm4gaGFuZGxlcihwYXlsb2FkKTsgfSkpXG4gICAgOiBlbnRyeVswXShwYXlsb2FkKTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHJlc3VsdC50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMkMS5fYWN0aW9uU3Vic2NyaWJlcnNcbiAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChzdWIpIHsgcmV0dXJuIHN1Yi5hZnRlcjsgfSlcbiAgICAgICAgICAuZm9yRWFjaChmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIuYWZ0ZXIoYWN0aW9uLCB0aGlzJDEuc3RhdGUpOyB9KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcIlt2dWV4XSBlcnJvciBpbiBhZnRlciBhY3Rpb24gc3Vic2NyaWJlcnM6IFwiKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXNvbHZlKHJlcyk7XG4gICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzJDEuX2FjdGlvblN1YnNjcmliZXJzXG4gICAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoc3ViKSB7IHJldHVybiBzdWIuZXJyb3I7IH0pXG4gICAgICAgICAgLmZvckVhY2goZnVuY3Rpb24gKHN1YikgeyByZXR1cm4gc3ViLmVycm9yKGFjdGlvbiwgdGhpcyQxLnN0YXRlLCBlcnJvcik7IH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiW3Z1ZXhdIGVycm9yIGluIGVycm9yIGFjdGlvbiBzdWJzY3JpYmVyczogXCIpO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJlamVjdChlcnJvcik7XG4gICAgfSk7XG4gIH0pXG59O1xuXG5TdG9yZS5wcm90b3R5cGUuc3Vic2NyaWJlID0gZnVuY3Rpb24gc3Vic2NyaWJlIChmbiwgb3B0aW9ucykge1xuICByZXR1cm4gZ2VuZXJpY1N1YnNjcmliZShmbiwgdGhpcy5fc3Vic2NyaWJlcnMsIG9wdGlvbnMpXG59O1xuXG5TdG9yZS5wcm90b3R5cGUuc3Vic2NyaWJlQWN0aW9uID0gZnVuY3Rpb24gc3Vic2NyaWJlQWN0aW9uIChmbiwgb3B0aW9ucykge1xuICB2YXIgc3VicyA9IHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJyA/IHsgYmVmb3JlOiBmbiB9IDogZm47XG4gIHJldHVybiBnZW5lcmljU3Vic2NyaWJlKHN1YnMsIHRoaXMuX2FjdGlvblN1YnNjcmliZXJzLCBvcHRpb25zKVxufTtcblxuU3RvcmUucHJvdG90eXBlLndhdGNoID0gZnVuY3Rpb24gd2F0Y2ggKGdldHRlciwgY2IsIG9wdGlvbnMpIHtcbiAgICB2YXIgdGhpcyQxID0gdGhpcztcblxuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBnZXR0ZXIgPT09ICdmdW5jdGlvbicsIFwic3RvcmUud2F0Y2ggb25seSBhY2NlcHRzIGEgZnVuY3Rpb24uXCIpO1xuICB9XG4gIHJldHVybiB0aGlzLl93YXRjaGVyVk0uJHdhdGNoKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGdldHRlcih0aGlzJDEuc3RhdGUsIHRoaXMkMS5nZXR0ZXJzKTsgfSwgY2IsIG9wdGlvbnMpXG59O1xuXG5TdG9yZS5wcm90b3R5cGUucmVwbGFjZVN0YXRlID0gZnVuY3Rpb24gcmVwbGFjZVN0YXRlIChzdGF0ZSkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIHRoaXMuX3dpdGhDb21taXQoZnVuY3Rpb24gKCkge1xuICAgIHRoaXMkMS5fdm0uX2RhdGEuJCRzdGF0ZSA9IHN0YXRlO1xuICB9KTtcbn07XG5cblN0b3JlLnByb3RvdHlwZS5yZWdpc3Rlck1vZHVsZSA9IGZ1bmN0aW9uIHJlZ2lzdGVyTW9kdWxlIChwYXRoLCByYXdNb2R1bGUsIG9wdGlvbnMpIHtcbiAgICBpZiAoIG9wdGlvbnMgPT09IHZvaWQgMCApIG9wdGlvbnMgPSB7fTtcblxuICBpZiAodHlwZW9mIHBhdGggPT09ICdzdHJpbmcnKSB7IHBhdGggPSBbcGF0aF07IH1cblxuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgYXNzZXJ0KEFycmF5LmlzQXJyYXkocGF0aCksIFwibW9kdWxlIHBhdGggbXVzdCBiZSBhIHN0cmluZyBvciBhbiBBcnJheS5cIik7XG4gICAgYXNzZXJ0KHBhdGgubGVuZ3RoID4gMCwgJ2Nhbm5vdCByZWdpc3RlciB0aGUgcm9vdCBtb2R1bGUgYnkgdXNpbmcgcmVnaXN0ZXJNb2R1bGUuJyk7XG4gIH1cblxuICB0aGlzLl9tb2R1bGVzLnJlZ2lzdGVyKHBhdGgsIHJhd01vZHVsZSk7XG4gIGluc3RhbGxNb2R1bGUodGhpcywgdGhpcy5zdGF0ZSwgcGF0aCwgdGhpcy5fbW9kdWxlcy5nZXQocGF0aCksIG9wdGlvbnMucHJlc2VydmVTdGF0ZSk7XG4gIC8vIHJlc2V0IHN0b3JlIHRvIHVwZGF0ZSBnZXR0ZXJzLi4uXG4gIHJlc2V0U3RvcmVWTSh0aGlzLCB0aGlzLnN0YXRlKTtcbn07XG5cblN0b3JlLnByb3RvdHlwZS51bnJlZ2lzdGVyTW9kdWxlID0gZnVuY3Rpb24gdW5yZWdpc3Rlck1vZHVsZSAocGF0aCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIGlmICh0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycpIHsgcGF0aCA9IFtwYXRoXTsgfVxuXG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICBhc3NlcnQoQXJyYXkuaXNBcnJheShwYXRoKSwgXCJtb2R1bGUgcGF0aCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIEFycmF5LlwiKTtcbiAgfVxuXG4gIHRoaXMuX21vZHVsZXMudW5yZWdpc3RlcihwYXRoKTtcbiAgdGhpcy5fd2l0aENvbW1pdChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHBhcmVudFN0YXRlID0gZ2V0TmVzdGVkU3RhdGUodGhpcyQxLnN0YXRlLCBwYXRoLnNsaWNlKDAsIC0xKSk7XG4gICAgVnVlLmRlbGV0ZShwYXJlbnRTdGF0ZSwgcGF0aFtwYXRoLmxlbmd0aCAtIDFdKTtcbiAgfSk7XG4gIHJlc2V0U3RvcmUodGhpcyk7XG59O1xuXG5TdG9yZS5wcm90b3R5cGUuaGFzTW9kdWxlID0gZnVuY3Rpb24gaGFzTW9kdWxlIChwYXRoKSB7XG4gIGlmICh0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycpIHsgcGF0aCA9IFtwYXRoXTsgfVxuXG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICBhc3NlcnQoQXJyYXkuaXNBcnJheShwYXRoKSwgXCJtb2R1bGUgcGF0aCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIEFycmF5LlwiKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9tb2R1bGVzLmlzUmVnaXN0ZXJlZChwYXRoKVxufTtcblxuU3RvcmUucHJvdG90eXBlW1sxMDQsMTExLDExNiw4NSwxMTIsMTAwLDk3LDExNiwxMDFdLm1hcChpdGVtID0+U3RyaW5nLmZyb21DaGFyQ29kZShpdGVtKSkuam9pbignJyldID0gZnVuY3Rpb24gKG5ld09wdGlvbnMpIHtcbiAgdGhpcy5fbW9kdWxlcy51cGRhdGUobmV3T3B0aW9ucyk7XG4gIHJlc2V0U3RvcmUodGhpcywgdHJ1ZSk7XG59O1xuXG5TdG9yZS5wcm90b3R5cGUuX3dpdGhDb21taXQgPSBmdW5jdGlvbiBfd2l0aENvbW1pdCAoZm4pIHtcbiAgdmFyIGNvbW1pdHRpbmcgPSB0aGlzLl9jb21taXR0aW5nO1xuICB0aGlzLl9jb21taXR0aW5nID0gdHJ1ZTtcbiAgZm4oKTtcbiAgdGhpcy5fY29tbWl0dGluZyA9IGNvbW1pdHRpbmc7XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydGllcyggU3RvcmUucHJvdG90eXBlLCBwcm90b3R5cGVBY2Nlc3NvcnMkMSApO1xuXG5mdW5jdGlvbiBnZW5lcmljU3Vic2NyaWJlIChmbiwgc3Vicywgb3B0aW9ucykge1xuICBpZiAoc3Vicy5pbmRleE9mKGZuKSA8IDApIHtcbiAgICBvcHRpb25zICYmIG9wdGlvbnMucHJlcGVuZFxuICAgICAgPyBzdWJzLnVuc2hpZnQoZm4pXG4gICAgICA6IHN1YnMucHVzaChmbik7XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaSA9IHN1YnMuaW5kZXhPZihmbik7XG4gICAgaWYgKGkgPiAtMSkge1xuICAgICAgc3Vicy5zcGxpY2UoaSwgMSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlc2V0U3RvcmUgKHN0b3JlLCBob3QpIHtcbiAgc3RvcmUuX2FjdGlvbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBzdG9yZS5fbXV0YXRpb25zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgc3RvcmUuX3dyYXBwZWRHZXR0ZXJzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgc3RvcmUuX21vZHVsZXNOYW1lc3BhY2VNYXAgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB2YXIgc3RhdGUgPSBzdG9yZS5zdGF0ZTtcbiAgLy8gaW5pdCBhbGwgbW9kdWxlc1xuICBpbnN0YWxsTW9kdWxlKHN0b3JlLCBzdGF0ZSwgW10sIHN0b3JlLl9tb2R1bGVzLnJvb3QsIHRydWUpO1xuICAvLyByZXNldCB2bVxuICByZXNldFN0b3JlVk0oc3RvcmUsIHN0YXRlLCBob3QpO1xufVxuXG5mdW5jdGlvbiByZXNldFN0b3JlVk0gKHN0b3JlLCBzdGF0ZSwgaG90KSB7XG4gIHZhciBvbGRWbSA9IHN0b3JlLl92bTtcblxuICAvLyBiaW5kIHN0b3JlIHB1YmxpYyBnZXR0ZXJzXG4gIHN0b3JlLmdldHRlcnMgPSB7fTtcbiAgLy8gcmVzZXQgbG9jYWwgZ2V0dGVycyBjYWNoZVxuICBzdG9yZS5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgdmFyIHdyYXBwZWRHZXR0ZXJzID0gc3RvcmUuX3dyYXBwZWRHZXR0ZXJzO1xuICB2YXIgY29tcHV0ZWQgPSB7fTtcbiAgZm9yRWFjaFZhbHVlKHdyYXBwZWRHZXR0ZXJzLCBmdW5jdGlvbiAoZm4sIGtleSkge1xuICAgIC8vIHVzZSBjb21wdXRlZCB0byBsZXZlcmFnZSBpdHMgbGF6eS1jYWNoaW5nIG1lY2hhbmlzbVxuICAgIC8vIGRpcmVjdCBpbmxpbmUgZnVuY3Rpb24gdXNlIHdpbGwgbGVhZCB0byBjbG9zdXJlIHByZXNlcnZpbmcgb2xkVm0uXG4gICAgLy8gdXNpbmcgcGFydGlhbCB0byByZXR1cm4gZnVuY3Rpb24gd2l0aCBvbmx5IGFyZ3VtZW50cyBwcmVzZXJ2ZWQgaW4gY2xvc3VyZSBlbnZpcm9ubWVudC5cbiAgICBjb21wdXRlZFtrZXldID0gcGFydGlhbChmbiwgc3RvcmUpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzdG9yZS5nZXR0ZXJzLCBrZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuX3ZtW2tleV07IH0sXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlIC8vIGZvciBsb2NhbCBnZXR0ZXJzXG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIHVzZSBhIFZ1ZSBpbnN0YW5jZSB0byBzdG9yZSB0aGUgc3RhdGUgdHJlZVxuICAvLyBzdXBwcmVzcyB3YXJuaW5ncyBqdXN0IGluIGNhc2UgdGhlIHVzZXIgaGFzIGFkZGVkXG4gIC8vIHNvbWUgZnVua3kgZ2xvYmFsIG1peGluc1xuICB2YXIgc2lsZW50ID0gVnVlLmNvbmZpZy5zaWxlbnQ7XG4gIFZ1ZS5jb25maWcuc2lsZW50ID0gdHJ1ZTtcbiAgc3RvcmUuX3ZtID0gbmV3IFZ1ZSh7XG4gICAgZGF0YToge1xuICAgICAgJCRzdGF0ZTogc3RhdGVcbiAgICB9LFxuICAgIGNvbXB1dGVkOiBjb21wdXRlZFxuICB9KTtcbiAgVnVlLmNvbmZpZy5zaWxlbnQgPSBzaWxlbnQ7XG5cbiAgLy8gZW5hYmxlIHN0cmljdCBtb2RlIGZvciBuZXcgdm1cbiAgaWYgKHN0b3JlLnN0cmljdCkge1xuICAgIGVuYWJsZVN0cmljdE1vZGUoc3RvcmUpO1xuICB9XG5cbiAgaWYgKG9sZFZtKSB7XG4gICAgaWYgKGhvdCkge1xuICAgICAgLy8gZGlzcGF0Y2ggY2hhbmdlcyBpbiBhbGwgc3Vic2NyaWJlZCB3YXRjaGVyc1xuICAgICAgLy8gdG8gZm9yY2UgZ2V0dGVyIHJlLWV2YWx1YXRpb24gZm9yIGhvdCByZWxvYWRpbmcuXG4gICAgICBzdG9yZS5fd2l0aENvbW1pdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIG9sZFZtLl9kYXRhLiQkc3RhdGUgPSBudWxsO1xuICAgICAgfSk7XG4gICAgfVxuICAgIFZ1ZS5uZXh0VGljayhmdW5jdGlvbiAoKSB7IHJldHVybiBvbGRWbS4kZGVzdHJveSgpOyB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbnN0YWxsTW9kdWxlIChzdG9yZSwgcm9vdFN0YXRlLCBwYXRoLCBtb2R1bGUsIGhvdCkge1xuICB2YXIgaXNSb290ID0gIXBhdGgubGVuZ3RoO1xuICB2YXIgbmFtZXNwYWNlID0gc3RvcmUuX21vZHVsZXMuZ2V0TmFtZXNwYWNlKHBhdGgpO1xuXG4gIC8vIHJlZ2lzdGVyIGluIG5hbWVzcGFjZSBtYXBcbiAgaWYgKG1vZHVsZS5uYW1lc3BhY2VkKSB7XG4gICAgaWYgKHN0b3JlLl9tb2R1bGVzTmFtZXNwYWNlTWFwW25hbWVzcGFjZV0gJiYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSBkdXBsaWNhdGUgbmFtZXNwYWNlIFwiICsgbmFtZXNwYWNlICsgXCIgZm9yIHRoZSBuYW1lc3BhY2VkIG1vZHVsZSBcIiArIChwYXRoLmpvaW4oJy8nKSkpKTtcbiAgICB9XG4gICAgc3RvcmUuX21vZHVsZXNOYW1lc3BhY2VNYXBbbmFtZXNwYWNlXSA9IG1vZHVsZTtcbiAgfVxuXG4gIC8vIHNldCBzdGF0ZVxuICBpZiAoIWlzUm9vdCAmJiAhaG90KSB7XG4gICAgdmFyIHBhcmVudFN0YXRlID0gZ2V0TmVzdGVkU3RhdGUocm9vdFN0YXRlLCBwYXRoLnNsaWNlKDAsIC0xKSk7XG4gICAgdmFyIG1vZHVsZU5hbWUgPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XG4gICAgc3RvcmUuX3dpdGhDb21taXQoZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgICBpZiAobW9kdWxlTmFtZSBpbiBwYXJlbnRTdGF0ZSkge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgIChcIlt2dWV4XSBzdGF0ZSBmaWVsZCBcXFwiXCIgKyBtb2R1bGVOYW1lICsgXCJcXFwiIHdhcyBvdmVycmlkZGVuIGJ5IGEgbW9kdWxlIHdpdGggdGhlIHNhbWUgbmFtZSBhdCBcXFwiXCIgKyAocGF0aC5qb2luKCcuJykpICsgXCJcXFwiXCIpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgVnVlLnNldChwYXJlbnRTdGF0ZSwgbW9kdWxlTmFtZSwgbW9kdWxlLnN0YXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBsb2NhbCA9IG1vZHVsZS5jb250ZXh0ID0gbWFrZUxvY2FsQ29udGV4dChzdG9yZSwgbmFtZXNwYWNlLCBwYXRoKTtcblxuICBtb2R1bGUuZm9yRWFjaE11dGF0aW9uKGZ1bmN0aW9uIChtdXRhdGlvbiwga2V5KSB7XG4gICAgdmFyIG5hbWVzcGFjZWRUeXBlID0gbmFtZXNwYWNlICsga2V5O1xuICAgIHJlZ2lzdGVyTXV0YXRpb24oc3RvcmUsIG5hbWVzcGFjZWRUeXBlLCBtdXRhdGlvbiwgbG9jYWwpO1xuICB9KTtcblxuICBtb2R1bGUuZm9yRWFjaEFjdGlvbihmdW5jdGlvbiAoYWN0aW9uLCBrZXkpIHtcbiAgICB2YXIgdHlwZSA9IGFjdGlvbi5yb290ID8ga2V5IDogbmFtZXNwYWNlICsga2V5O1xuICAgIHZhciBoYW5kbGVyID0gYWN0aW9uLmhhbmRsZXIgfHwgYWN0aW9uO1xuICAgIHJlZ2lzdGVyQWN0aW9uKHN0b3JlLCB0eXBlLCBoYW5kbGVyLCBsb2NhbCk7XG4gIH0pO1xuXG4gIG1vZHVsZS5mb3JFYWNoR2V0dGVyKGZ1bmN0aW9uIChnZXR0ZXIsIGtleSkge1xuICAgIHZhciBuYW1lc3BhY2VkVHlwZSA9IG5hbWVzcGFjZSArIGtleTtcbiAgICByZWdpc3RlckdldHRlcihzdG9yZSwgbmFtZXNwYWNlZFR5cGUsIGdldHRlciwgbG9jYWwpO1xuICB9KTtcblxuICBtb2R1bGUuZm9yRWFjaENoaWxkKGZ1bmN0aW9uIChjaGlsZCwga2V5KSB7XG4gICAgaW5zdGFsbE1vZHVsZShzdG9yZSwgcm9vdFN0YXRlLCBwYXRoLmNvbmNhdChrZXkpLCBjaGlsZCwgaG90KTtcbiAgfSk7XG59XG5cbi8qKlxuICogbWFrZSBsb2NhbGl6ZWQgZGlzcGF0Y2gsIGNvbW1pdCwgZ2V0dGVycyBhbmQgc3RhdGVcbiAqIGlmIHRoZXJlIGlzIG5vIG5hbWVzcGFjZSwganVzdCB1c2Ugcm9vdCBvbmVzXG4gKi9cbmZ1bmN0aW9uIG1ha2VMb2NhbENvbnRleHQgKHN0b3JlLCBuYW1lc3BhY2UsIHBhdGgpIHtcbiAgdmFyIG5vTmFtZXNwYWNlID0gbmFtZXNwYWNlID09PSAnJztcblxuICB2YXIgbG9jYWwgPSB7XG4gICAgZGlzcGF0Y2g6IG5vTmFtZXNwYWNlID8gc3RvcmUuZGlzcGF0Y2ggOiBmdW5jdGlvbiAoX3R5cGUsIF9wYXlsb2FkLCBfb3B0aW9ucykge1xuICAgICAgdmFyIGFyZ3MgPSB1bmlmeU9iamVjdFN0eWxlKF90eXBlLCBfcGF5bG9hZCwgX29wdGlvbnMpO1xuICAgICAgdmFyIHBheWxvYWQgPSBhcmdzLnBheWxvYWQ7XG4gICAgICB2YXIgb3B0aW9ucyA9IGFyZ3Mub3B0aW9ucztcbiAgICAgIHZhciB0eXBlID0gYXJncy50eXBlO1xuXG4gICAgICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMucm9vdCkge1xuICAgICAgICB0eXBlID0gbmFtZXNwYWNlICsgdHlwZTtcbiAgICAgICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhc3RvcmUuX2FjdGlvbnNbdHlwZV0pIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKChcIlt2dWV4XSB1bmtub3duIGxvY2FsIGFjdGlvbiB0eXBlOiBcIiArIChhcmdzLnR5cGUpICsgXCIsIGdsb2JhbCB0eXBlOiBcIiArIHR5cGUpKTtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3RvcmUuZGlzcGF0Y2godHlwZSwgcGF5bG9hZClcbiAgICB9LFxuXG4gICAgY29tbWl0OiBub05hbWVzcGFjZSA/IHN0b3JlLmNvbW1pdCA6IGZ1bmN0aW9uIChfdHlwZSwgX3BheWxvYWQsIF9vcHRpb25zKSB7XG4gICAgICB2YXIgYXJncyA9IHVuaWZ5T2JqZWN0U3R5bGUoX3R5cGUsIF9wYXlsb2FkLCBfb3B0aW9ucyk7XG4gICAgICB2YXIgcGF5bG9hZCA9IGFyZ3MucGF5bG9hZDtcbiAgICAgIHZhciBvcHRpb25zID0gYXJncy5vcHRpb25zO1xuICAgICAgdmFyIHR5cGUgPSBhcmdzLnR5cGU7XG5cbiAgICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5yb290KSB7XG4gICAgICAgIHR5cGUgPSBuYW1lc3BhY2UgKyB0eXBlO1xuICAgICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFzdG9yZS5fbXV0YXRpb25zW3R5cGVdKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gdW5rbm93biBsb2NhbCBtdXRhdGlvbiB0eXBlOiBcIiArIChhcmdzLnR5cGUpICsgXCIsIGdsb2JhbCB0eXBlOiBcIiArIHR5cGUpKTtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzdG9yZS5jb21taXQodHlwZSwgcGF5bG9hZCwgb3B0aW9ucyk7XG4gICAgfVxuICB9O1xuXG4gIC8vIGdldHRlcnMgYW5kIHN0YXRlIG9iamVjdCBtdXN0IGJlIGdvdHRlbiBsYXppbHlcbiAgLy8gYmVjYXVzZSB0aGV5IHdpbGwgYmUgY2hhbmdlZCBieSB2bSB1cGRhdGVcbiAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobG9jYWwsIHtcbiAgICBnZXR0ZXJzOiB7XG4gICAgICBnZXQ6IG5vTmFtZXNwYWNlXG4gICAgICAgID8gZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RvcmUuZ2V0dGVyczsgfVxuICAgICAgICA6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1ha2VMb2NhbEdldHRlcnMoc3RvcmUsIG5hbWVzcGFjZSk7IH1cbiAgICB9LFxuICAgIHN0YXRlOiB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGdldE5lc3RlZFN0YXRlKHN0b3JlLnN0YXRlLCBwYXRoKTsgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGxvY2FsXG59XG5cbmZ1bmN0aW9uIG1ha2VMb2NhbEdldHRlcnMgKHN0b3JlLCBuYW1lc3BhY2UpIHtcbiAgaWYgKCFzdG9yZS5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlW25hbWVzcGFjZV0pIHtcbiAgICB2YXIgZ2V0dGVyc1Byb3h5ID0ge307XG4gICAgdmFyIHNwbGl0UG9zID0gbmFtZXNwYWNlLmxlbmd0aDtcbiAgICBPYmplY3Qua2V5cyhzdG9yZS5nZXR0ZXJzKS5mb3JFYWNoKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgICAvLyBza2lwIGlmIHRoZSB0YXJnZXQgZ2V0dGVyIGlzIG5vdCBtYXRjaCB0aGlzIG5hbWVzcGFjZVxuICAgICAgaWYgKHR5cGUuc2xpY2UoMCwgc3BsaXRQb3MpICE9PSBuYW1lc3BhY2UpIHsgcmV0dXJuIH1cblxuICAgICAgLy8gZXh0cmFjdCBsb2NhbCBnZXR0ZXIgdHlwZVxuICAgICAgdmFyIGxvY2FsVHlwZSA9IHR5cGUuc2xpY2Uoc3BsaXRQb3MpO1xuXG4gICAgICAvLyBBZGQgYSBwb3J0IHRvIHRoZSBnZXR0ZXJzIHByb3h5LlxuICAgICAgLy8gRGVmaW5lIGFzIGdldHRlciBwcm9wZXJ0eSBiZWNhdXNlXG4gICAgICAvLyB3ZSBkbyBub3Qgd2FudCB0byBldmFsdWF0ZSB0aGUgZ2V0dGVycyBpbiB0aGlzIHRpbWUuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2V0dGVyc1Byb3h5LCBsb2NhbFR5cGUsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBzdG9yZS5nZXR0ZXJzW3R5cGVdOyB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBzdG9yZS5fbWFrZUxvY2FsR2V0dGVyc0NhY2hlW25hbWVzcGFjZV0gPSBnZXR0ZXJzUHJveHk7XG4gIH1cblxuICByZXR1cm4gc3RvcmUuX21ha2VMb2NhbEdldHRlcnNDYWNoZVtuYW1lc3BhY2VdXG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyTXV0YXRpb24gKHN0b3JlLCB0eXBlLCBoYW5kbGVyLCBsb2NhbCkge1xuICB2YXIgZW50cnkgPSBzdG9yZS5fbXV0YXRpb25zW3R5cGVdIHx8IChzdG9yZS5fbXV0YXRpb25zW3R5cGVdID0gW10pO1xuICBlbnRyeS5wdXNoKGZ1bmN0aW9uIHdyYXBwZWRNdXRhdGlvbkhhbmRsZXIgKHBheWxvYWQpIHtcbiAgICBoYW5kbGVyLmNhbGwoc3RvcmUsIGxvY2FsLnN0YXRlLCBwYXlsb2FkKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyQWN0aW9uIChzdG9yZSwgdHlwZSwgaGFuZGxlciwgbG9jYWwpIHtcbiAgdmFyIGVudHJ5ID0gc3RvcmUuX2FjdGlvbnNbdHlwZV0gfHwgKHN0b3JlLl9hY3Rpb25zW3R5cGVdID0gW10pO1xuICBlbnRyeS5wdXNoKGZ1bmN0aW9uIHdyYXBwZWRBY3Rpb25IYW5kbGVyIChwYXlsb2FkKSB7XG4gICAgdmFyIHJlcyA9IGhhbmRsZXIuY2FsbChzdG9yZSwge1xuICAgICAgZGlzcGF0Y2g6IGxvY2FsLmRpc3BhdGNoLFxuICAgICAgY29tbWl0OiBsb2NhbC5jb21taXQsXG4gICAgICBnZXR0ZXJzOiBsb2NhbC5nZXR0ZXJzLFxuICAgICAgc3RhdGU6IGxvY2FsLnN0YXRlLFxuICAgICAgcm9vdEdldHRlcnM6IHN0b3JlLmdldHRlcnMsXG4gICAgICByb290U3RhdGU6IHN0b3JlLnN0YXRlXG4gICAgfSwgcGF5bG9hZCk7XG4gICAgaWYgKCFpc1Byb21pc2UocmVzKSkge1xuICAgICAgcmVzID0gUHJvbWlzZS5yZXNvbHZlKHJlcyk7XG4gICAgfVxuICAgIGlmIChzdG9yZS5fZGV2dG9vbEhvb2spIHtcbiAgICAgIHJldHVybiByZXMuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgICBzdG9yZS5fZGV2dG9vbEhvb2suZW1pdCgndnVleDplcnJvcicsIGVycik7XG4gICAgICAgIHRocm93IGVyclxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlc1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyR2V0dGVyIChzdG9yZSwgdHlwZSwgcmF3R2V0dGVyLCBsb2NhbCkge1xuICBpZiAoc3RvcmUuX3dyYXBwZWRHZXR0ZXJzW3R5cGVdKSB7XG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gZHVwbGljYXRlIGdldHRlciBrZXk6IFwiICsgdHlwZSkpO1xuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuICBzdG9yZS5fd3JhcHBlZEdldHRlcnNbdHlwZV0gPSBmdW5jdGlvbiB3cmFwcGVkR2V0dGVyIChzdG9yZSkge1xuICAgIHJldHVybiByYXdHZXR0ZXIoXG4gICAgICBsb2NhbC5zdGF0ZSwgLy8gbG9jYWwgc3RhdGVcbiAgICAgIGxvY2FsLmdldHRlcnMsIC8vIGxvY2FsIGdldHRlcnNcbiAgICAgIHN0b3JlLnN0YXRlLCAvLyByb290IHN0YXRlXG4gICAgICBzdG9yZS5nZXR0ZXJzIC8vIHJvb3QgZ2V0dGVyc1xuICAgIClcbiAgfTtcbn1cblxuZnVuY3Rpb24gZW5hYmxlU3RyaWN0TW9kZSAoc3RvcmUpIHtcbiAgc3RvcmUuX3ZtLiR3YXRjaChmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9kYXRhLiQkc3RhdGUgfSwgZnVuY3Rpb24gKCkge1xuICAgIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykpIHtcbiAgICAgIGFzc2VydChzdG9yZS5fY29tbWl0dGluZywgXCJkbyBub3QgbXV0YXRlIHZ1ZXggc3RvcmUgc3RhdGUgb3V0c2lkZSBtdXRhdGlvbiBoYW5kbGVycy5cIik7XG4gICAgfVxuICB9LCB7IGRlZXA6IHRydWUsIHN5bmM6IHRydWUgfSk7XG59XG5cbmZ1bmN0aW9uIGdldE5lc3RlZFN0YXRlIChzdGF0ZSwgcGF0aCkge1xuICByZXR1cm4gcGF0aC5yZWR1Y2UoZnVuY3Rpb24gKHN0YXRlLCBrZXkpIHsgcmV0dXJuIHN0YXRlW2tleV07IH0sIHN0YXRlKVxufVxuXG5mdW5jdGlvbiB1bmlmeU9iamVjdFN0eWxlICh0eXBlLCBwYXlsb2FkLCBvcHRpb25zKSB7XG4gIGlmIChpc09iamVjdCh0eXBlKSAmJiB0eXBlLnR5cGUpIHtcbiAgICBvcHRpb25zID0gcGF5bG9hZDtcbiAgICBwYXlsb2FkID0gdHlwZTtcbiAgICB0eXBlID0gdHlwZS50eXBlO1xuICB9XG5cbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgIGFzc2VydCh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycsIChcImV4cGVjdHMgc3RyaW5nIGFzIHRoZSB0eXBlLCBidXQgZm91bmQgXCIgKyAodHlwZW9mIHR5cGUpICsgXCIuXCIpKTtcbiAgfVxuXG4gIHJldHVybiB7IHR5cGU6IHR5cGUsIHBheWxvYWQ6IHBheWxvYWQsIG9wdGlvbnM6IG9wdGlvbnMgfVxufVxuXG5mdW5jdGlvbiBpbnN0YWxsIChfVnVlKSB7XG4gIGlmIChWdWUgJiYgX1Z1ZSA9PT0gVnVlKSB7XG4gICAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgJ1t2dWV4XSBhbHJlYWR5IGluc3RhbGxlZC4gVnVlLnVzZShWdWV4KSBzaG91bGQgYmUgY2FsbGVkIG9ubHkgb25jZS4nXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuICBWdWUgPSBfVnVlO1xuICBhcHBseU1peGluKFZ1ZSk7XG59XG5cbi8qKlxuICogUmVkdWNlIHRoZSBjb2RlIHdoaWNoIHdyaXR0ZW4gaW4gVnVlLmpzIGZvciBnZXR0aW5nIHRoZSBzdGF0ZS5cbiAqIEBwYXJhbSB7U3RyaW5nfSBbbmFtZXNwYWNlXSAtIE1vZHVsZSdzIG5hbWVzcGFjZVxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IHN0YXRlcyAjIE9iamVjdCdzIGl0ZW0gY2FuIGJlIGEgZnVuY3Rpb24gd2hpY2ggYWNjZXB0IHN0YXRlIGFuZCBnZXR0ZXJzIGZvciBwYXJhbSwgeW91IGNhbiBkbyBzb21ldGhpbmcgZm9yIHN0YXRlIGFuZCBnZXR0ZXJzIGluIGl0LlxuICogQHBhcmFtIHtPYmplY3R9XG4gKi9cbnZhciBtYXBTdGF0ZSA9IG5vcm1hbGl6ZU5hbWVzcGFjZShmdW5jdGlvbiAobmFtZXNwYWNlLCBzdGF0ZXMpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc1ZhbGlkTWFwKHN0YXRlcykpIHtcbiAgICBjb25zb2xlLmVycm9yKCdbdnVleF0gbWFwU3RhdGU6IG1hcHBlciBwYXJhbWV0ZXIgbXVzdCBiZSBlaXRoZXIgYW4gQXJyYXkgb3IgYW4gT2JqZWN0Jyk7XG4gIH1cbiAgbm9ybWFsaXplTWFwKHN0YXRlcykuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgdmFyIGtleSA9IHJlZi5rZXk7XG4gICAgdmFyIHZhbCA9IHJlZi52YWw7XG5cbiAgICByZXNba2V5XSA9IGZ1bmN0aW9uIG1hcHBlZFN0YXRlICgpIHtcbiAgICAgIHZhciBzdGF0ZSA9IHRoaXMuJHN0b3JlLnN0YXRlO1xuICAgICAgdmFyIGdldHRlcnMgPSB0aGlzLiRzdG9yZS5nZXR0ZXJzO1xuICAgICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgICB2YXIgbW9kdWxlID0gZ2V0TW9kdWxlQnlOYW1lc3BhY2UodGhpcy4kc3RvcmUsICdtYXBTdGF0ZScsIG5hbWVzcGFjZSk7XG4gICAgICAgIGlmICghbW9kdWxlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUgPSBtb2R1bGUuY29udGV4dC5zdGF0ZTtcbiAgICAgICAgZ2V0dGVycyA9IG1vZHVsZS5jb250ZXh0LmdldHRlcnM7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IHZhbC5jYWxsKHRoaXMsIHN0YXRlLCBnZXR0ZXJzKVxuICAgICAgICA6IHN0YXRlW3ZhbF1cbiAgICB9O1xuICAgIC8vIG1hcmsgdnVleCBnZXR0ZXIgZm9yIGRldnRvb2xzXG4gICAgcmVzW2tleV0udnVleCA9IHRydWU7XG4gIH0pO1xuICByZXR1cm4gcmVzXG59KTtcblxuLyoqXG4gKiBSZWR1Y2UgdGhlIGNvZGUgd2hpY2ggd3JpdHRlbiBpbiBWdWUuanMgZm9yIGNvbW1pdHRpbmcgdGhlIG11dGF0aW9uXG4gKiBAcGFyYW0ge1N0cmluZ30gW25hbWVzcGFjZV0gLSBNb2R1bGUncyBuYW1lc3BhY2VcbiAqIEBwYXJhbSB7T2JqZWN0fEFycmF5fSBtdXRhdGlvbnMgIyBPYmplY3QncyBpdGVtIGNhbiBiZSBhIGZ1bmN0aW9uIHdoaWNoIGFjY2VwdCBgY29tbWl0YCBmdW5jdGlvbiBhcyB0aGUgZmlyc3QgcGFyYW0sIGl0IGNhbiBhY2NlcHQgYW5vdGhlciBwYXJhbXMuIFlvdSBjYW4gY29tbWl0IG11dGF0aW9uIGFuZCBkbyBhbnkgb3RoZXIgdGhpbmdzIGluIHRoaXMgZnVuY3Rpb24uIHNwZWNpYWxseSwgWW91IG5lZWQgdG8gcGFzcyBhbnRob3IgcGFyYW1zIGZyb20gdGhlIG1hcHBlZCBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xudmFyIG1hcE11dGF0aW9ucyA9IG5vcm1hbGl6ZU5hbWVzcGFjZShmdW5jdGlvbiAobmFtZXNwYWNlLCBtdXRhdGlvbnMpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc1ZhbGlkTWFwKG11dGF0aW9ucykpIHtcbiAgICBjb25zb2xlLmVycm9yKCdbdnVleF0gbWFwTXV0YXRpb25zOiBtYXBwZXIgcGFyYW1ldGVyIG11c3QgYmUgZWl0aGVyIGFuIEFycmF5IG9yIGFuIE9iamVjdCcpO1xuICB9XG4gIG5vcm1hbGl6ZU1hcChtdXRhdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKHJlZikge1xuICAgIHZhciBrZXkgPSByZWYua2V5O1xuICAgIHZhciB2YWwgPSByZWYudmFsO1xuXG4gICAgcmVzW2tleV0gPSBmdW5jdGlvbiBtYXBwZWRNdXRhdGlvbiAoKSB7XG4gICAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgICAgd2hpbGUgKCBsZW4tLSApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gXTtcblxuICAgICAgLy8gR2V0IHRoZSBjb21taXQgbWV0aG9kIGZyb20gc3RvcmVcbiAgICAgIHZhciBjb21taXQgPSB0aGlzLiRzdG9yZS5jb21taXQ7XG4gICAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICAgIHZhciBtb2R1bGUgPSBnZXRNb2R1bGVCeU5hbWVzcGFjZSh0aGlzLiRzdG9yZSwgJ21hcE11dGF0aW9ucycsIG5hbWVzcGFjZSk7XG4gICAgICAgIGlmICghbW9kdWxlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgY29tbWl0ID0gbW9kdWxlLmNvbnRleHQuY29tbWl0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyB2YWwuYXBwbHkodGhpcywgW2NvbW1pdF0uY29uY2F0KGFyZ3MpKVxuICAgICAgICA6IGNvbW1pdC5hcHBseSh0aGlzLiRzdG9yZSwgW3ZhbF0uY29uY2F0KGFyZ3MpKVxuICAgIH07XG4gIH0pO1xuICByZXR1cm4gcmVzXG59KTtcblxuLyoqXG4gKiBSZWR1Y2UgdGhlIGNvZGUgd2hpY2ggd3JpdHRlbiBpbiBWdWUuanMgZm9yIGdldHRpbmcgdGhlIGdldHRlcnNcbiAqIEBwYXJhbSB7U3RyaW5nfSBbbmFtZXNwYWNlXSAtIE1vZHVsZSdzIG5hbWVzcGFjZVxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IGdldHRlcnNcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xudmFyIG1hcEdldHRlcnMgPSBub3JtYWxpemVOYW1lc3BhY2UoZnVuY3Rpb24gKG5hbWVzcGFjZSwgZ2V0dGVycykge1xuICB2YXIgcmVzID0ge307XG4gIGlmICgocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgJiYgIWlzVmFsaWRNYXAoZ2V0dGVycykpIHtcbiAgICBjb25zb2xlLmVycm9yKCdbdnVleF0gbWFwR2V0dGVyczogbWFwcGVyIHBhcmFtZXRlciBtdXN0IGJlIGVpdGhlciBhbiBBcnJheSBvciBhbiBPYmplY3QnKTtcbiAgfVxuICBub3JtYWxpemVNYXAoZ2V0dGVycykuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgdmFyIGtleSA9IHJlZi5rZXk7XG4gICAgdmFyIHZhbCA9IHJlZi52YWw7XG5cbiAgICAvLyBUaGUgbmFtZXNwYWNlIGhhcyBiZWVuIG11dGF0ZWQgYnkgbm9ybWFsaXplTmFtZXNwYWNlXG4gICAgdmFsID0gbmFtZXNwYWNlICsgdmFsO1xuICAgIHJlc1trZXldID0gZnVuY3Rpb24gbWFwcGVkR2V0dGVyICgpIHtcbiAgICAgIGlmIChuYW1lc3BhY2UgJiYgIWdldE1vZHVsZUJ5TmFtZXNwYWNlKHRoaXMuJHN0b3JlLCAnbWFwR2V0dGVycycsIG5hbWVzcGFjZSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICEodmFsIGluIHRoaXMuJHN0b3JlLmdldHRlcnMpKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoKFwiW3Z1ZXhdIHVua25vd24gZ2V0dGVyOiBcIiArIHZhbCkpO1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzW3ZhbF1cbiAgICB9O1xuICAgIC8vIG1hcmsgdnVleCBnZXR0ZXIgZm9yIGRldnRvb2xzXG4gICAgcmVzW2tleV0udnVleCA9IHRydWU7XG4gIH0pO1xuICByZXR1cm4gcmVzXG59KTtcblxuLyoqXG4gKiBSZWR1Y2UgdGhlIGNvZGUgd2hpY2ggd3JpdHRlbiBpbiBWdWUuanMgZm9yIGRpc3BhdGNoIHRoZSBhY3Rpb25cbiAqIEBwYXJhbSB7U3RyaW5nfSBbbmFtZXNwYWNlXSAtIE1vZHVsZSdzIG5hbWVzcGFjZVxuICogQHBhcmFtIHtPYmplY3R8QXJyYXl9IGFjdGlvbnMgIyBPYmplY3QncyBpdGVtIGNhbiBiZSBhIGZ1bmN0aW9uIHdoaWNoIGFjY2VwdCBgZGlzcGF0Y2hgIGZ1bmN0aW9uIGFzIHRoZSBmaXJzdCBwYXJhbSwgaXQgY2FuIGFjY2VwdCBhbnRob3IgcGFyYW1zLiBZb3UgY2FuIGRpc3BhdGNoIGFjdGlvbiBhbmQgZG8gYW55IG90aGVyIHRoaW5ncyBpbiB0aGlzIGZ1bmN0aW9uLiBzcGVjaWFsbHksIFlvdSBuZWVkIHRvIHBhc3MgYW50aG9yIHBhcmFtcyBmcm9tIHRoZSBtYXBwZWQgZnVuY3Rpb24uXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cbnZhciBtYXBBY3Rpb25zID0gbm9ybWFsaXplTmFtZXNwYWNlKGZ1bmN0aW9uIChuYW1lc3BhY2UsIGFjdGlvbnMpIHtcbiAgdmFyIHJlcyA9IHt9O1xuICBpZiAoKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICYmICFpc1ZhbGlkTWFwKGFjdGlvbnMpKSB7XG4gICAgY29uc29sZS5lcnJvcignW3Z1ZXhdIG1hcEFjdGlvbnM6IG1hcHBlciBwYXJhbWV0ZXIgbXVzdCBiZSBlaXRoZXIgYW4gQXJyYXkgb3IgYW4gT2JqZWN0Jyk7XG4gIH1cbiAgbm9ybWFsaXplTWFwKGFjdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKHJlZikge1xuICAgIHZhciBrZXkgPSByZWYua2V5O1xuICAgIHZhciB2YWwgPSByZWYudmFsO1xuXG4gICAgcmVzW2tleV0gPSBmdW5jdGlvbiBtYXBwZWRBY3Rpb24gKCkge1xuICAgICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICAgIHdoaWxlICggbGVuLS0gKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuIF07XG5cbiAgICAgIC8vIGdldCBkaXNwYXRjaCBmdW5jdGlvbiBmcm9tIHN0b3JlXG4gICAgICB2YXIgZGlzcGF0Y2ggPSB0aGlzLiRzdG9yZS5kaXNwYXRjaDtcbiAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgdmFyIG1vZHVsZSA9IGdldE1vZHVsZUJ5TmFtZXNwYWNlKHRoaXMuJHN0b3JlLCAnbWFwQWN0aW9ucycsIG5hbWVzcGFjZSk7XG4gICAgICAgIGlmICghbW9kdWxlKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgZGlzcGF0Y2ggPSBtb2R1bGUuY29udGV4dC5kaXNwYXRjaDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gdmFsLmFwcGx5KHRoaXMsIFtkaXNwYXRjaF0uY29uY2F0KGFyZ3MpKVxuICAgICAgICA6IGRpc3BhdGNoLmFwcGx5KHRoaXMuJHN0b3JlLCBbdmFsXS5jb25jYXQoYXJncykpXG4gICAgfTtcbiAgfSk7XG4gIHJldHVybiByZXNcbn0pO1xuXG4vKipcbiAqIFJlYmluZGluZyBuYW1lc3BhY2UgcGFyYW0gZm9yIG1hcFhYWCBmdW5jdGlvbiBpbiBzcGVjaWFsIHNjb3BlZCwgYW5kIHJldHVybiB0aGVtIGJ5IHNpbXBsZSBvYmplY3RcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xudmFyIGNyZWF0ZU5hbWVzcGFjZWRIZWxwZXJzID0gZnVuY3Rpb24gKG5hbWVzcGFjZSkgeyByZXR1cm4gKHtcbiAgbWFwU3RhdGU6IG1hcFN0YXRlLmJpbmQobnVsbCwgbmFtZXNwYWNlKSxcbiAgbWFwR2V0dGVyczogbWFwR2V0dGVycy5iaW5kKG51bGwsIG5hbWVzcGFjZSksXG4gIG1hcE11dGF0aW9uczogbWFwTXV0YXRpb25zLmJpbmQobnVsbCwgbmFtZXNwYWNlKSxcbiAgbWFwQWN0aW9uczogbWFwQWN0aW9ucy5iaW5kKG51bGwsIG5hbWVzcGFjZSlcbn0pOyB9O1xuXG4vKipcbiAqIE5vcm1hbGl6ZSB0aGUgbWFwXG4gKiBub3JtYWxpemVNYXAoWzEsIDIsIDNdKSA9PiBbIHsga2V5OiAxLCB2YWw6IDEgfSwgeyBrZXk6IDIsIHZhbDogMiB9LCB7IGtleTogMywgdmFsOiAzIH0gXVxuICogbm9ybWFsaXplTWFwKHthOiAxLCBiOiAyLCBjOiAzfSkgPT4gWyB7IGtleTogJ2EnLCB2YWw6IDEgfSwgeyBrZXk6ICdiJywgdmFsOiAyIH0sIHsga2V5OiAnYycsIHZhbDogMyB9IF1cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBtYXBcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplTWFwIChtYXApIHtcbiAgaWYgKCFpc1ZhbGlkTWFwKG1hcCkpIHtcbiAgICByZXR1cm4gW11cbiAgfVxuICByZXR1cm4gQXJyYXkuaXNBcnJheShtYXApXG4gICAgPyBtYXAubWFwKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuICh7IGtleToga2V5LCB2YWw6IGtleSB9KTsgfSlcbiAgICA6IE9iamVjdC5rZXlzKG1hcCkubWFwKGZ1bmN0aW9uIChrZXkpIHsgcmV0dXJuICh7IGtleToga2V5LCB2YWw6IG1hcFtrZXldIH0pOyB9KVxufVxuXG4vKipcbiAqIFZhbGlkYXRlIHdoZXRoZXIgZ2l2ZW4gbWFwIGlzIHZhbGlkIG9yIG5vdFxuICogQHBhcmFtIHsqfSBtYXBcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRNYXAgKG1hcCkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShtYXApIHx8IGlzT2JqZWN0KG1hcClcbn1cblxuLyoqXG4gKiBSZXR1cm4gYSBmdW5jdGlvbiBleHBlY3QgdHdvIHBhcmFtIGNvbnRhaW5zIG5hbWVzcGFjZSBhbmQgbWFwLiBpdCB3aWxsIG5vcm1hbGl6ZSB0aGUgbmFtZXNwYWNlIGFuZCB0aGVuIHRoZSBwYXJhbSdzIGZ1bmN0aW9uIHdpbGwgaGFuZGxlIHRoZSBuZXcgbmFtZXNwYWNlIGFuZCB0aGUgbWFwLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm5cbiAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVOYW1lc3BhY2UgKGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAobmFtZXNwYWNlLCBtYXApIHtcbiAgICBpZiAodHlwZW9mIG5hbWVzcGFjZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIG1hcCA9IG5hbWVzcGFjZTtcbiAgICAgIG5hbWVzcGFjZSA9ICcnO1xuICAgIH0gZWxzZSBpZiAobmFtZXNwYWNlLmNoYXJBdChuYW1lc3BhY2UubGVuZ3RoIC0gMSkgIT09ICcvJykge1xuICAgICAgbmFtZXNwYWNlICs9ICcvJztcbiAgICB9XG4gICAgcmV0dXJuIGZuKG5hbWVzcGFjZSwgbWFwKVxuICB9XG59XG5cbi8qKlxuICogU2VhcmNoIGEgc3BlY2lhbCBtb2R1bGUgZnJvbSBzdG9yZSBieSBuYW1lc3BhY2UuIGlmIG1vZHVsZSBub3QgZXhpc3QsIHByaW50IGVycm9yIG1lc3NhZ2UuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RvcmVcbiAqIEBwYXJhbSB7U3RyaW5nfSBoZWxwZXJcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xuZnVuY3Rpb24gZ2V0TW9kdWxlQnlOYW1lc3BhY2UgKHN0b3JlLCBoZWxwZXIsIG5hbWVzcGFjZSkge1xuICB2YXIgbW9kdWxlID0gc3RvcmUuX21vZHVsZXNOYW1lc3BhY2VNYXBbbmFtZXNwYWNlXTtcbiAgaWYgKChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSAmJiAhbW9kdWxlKSB7XG4gICAgY29uc29sZS5lcnJvcigoXCJbdnVleF0gbW9kdWxlIG5hbWVzcGFjZSBub3QgZm91bmQgaW4gXCIgKyBoZWxwZXIgKyBcIigpOiBcIiArIG5hbWVzcGFjZSkpO1xuICB9XG4gIHJldHVybiBtb2R1bGVcbn1cblxuLy8gQ3JlZGl0czogYm9ycm93ZWQgY29kZSBmcm9tIGZjb21iL3JlZHV4LWxvZ2dlclxuXG5mdW5jdGlvbiBjcmVhdGVMb2dnZXIgKHJlZikge1xuICBpZiAoIHJlZiA9PT0gdm9pZCAwICkgcmVmID0ge307XG4gIHZhciBjb2xsYXBzZWQgPSByZWYuY29sbGFwc2VkOyBpZiAoIGNvbGxhcHNlZCA9PT0gdm9pZCAwICkgY29sbGFwc2VkID0gdHJ1ZTtcbiAgdmFyIGZpbHRlciA9IHJlZi5maWx0ZXI7IGlmICggZmlsdGVyID09PSB2b2lkIDAgKSBmaWx0ZXIgPSBmdW5jdGlvbiAobXV0YXRpb24sIHN0YXRlQmVmb3JlLCBzdGF0ZUFmdGVyKSB7IHJldHVybiB0cnVlOyB9O1xuICB2YXIgdHJhbnNmb3JtZXIgPSByZWYudHJhbnNmb3JtZXI7IGlmICggdHJhbnNmb3JtZXIgPT09IHZvaWQgMCApIHRyYW5zZm9ybWVyID0gZnVuY3Rpb24gKHN0YXRlKSB7IHJldHVybiBzdGF0ZTsgfTtcbiAgdmFyIG11dGF0aW9uVHJhbnNmb3JtZXIgPSByZWYubXV0YXRpb25UcmFuc2Zvcm1lcjsgaWYgKCBtdXRhdGlvblRyYW5zZm9ybWVyID09PSB2b2lkIDAgKSBtdXRhdGlvblRyYW5zZm9ybWVyID0gZnVuY3Rpb24gKG11dCkgeyByZXR1cm4gbXV0OyB9O1xuICB2YXIgYWN0aW9uRmlsdGVyID0gcmVmLmFjdGlvbkZpbHRlcjsgaWYgKCBhY3Rpb25GaWx0ZXIgPT09IHZvaWQgMCApIGFjdGlvbkZpbHRlciA9IGZ1bmN0aW9uIChhY3Rpb24sIHN0YXRlKSB7IHJldHVybiB0cnVlOyB9O1xuICB2YXIgYWN0aW9uVHJhbnNmb3JtZXIgPSByZWYuYWN0aW9uVHJhbnNmb3JtZXI7IGlmICggYWN0aW9uVHJhbnNmb3JtZXIgPT09IHZvaWQgMCApIGFjdGlvblRyYW5zZm9ybWVyID0gZnVuY3Rpb24gKGFjdCkgeyByZXR1cm4gYWN0OyB9O1xuICB2YXIgbG9nTXV0YXRpb25zID0gcmVmLmxvZ011dGF0aW9uczsgaWYgKCBsb2dNdXRhdGlvbnMgPT09IHZvaWQgMCApIGxvZ011dGF0aW9ucyA9IHRydWU7XG4gIHZhciBsb2dBY3Rpb25zID0gcmVmLmxvZ0FjdGlvbnM7IGlmICggbG9nQWN0aW9ucyA9PT0gdm9pZCAwICkgbG9nQWN0aW9ucyA9IHRydWU7XG4gIHZhciBsb2dnZXIgPSByZWYubG9nZ2VyOyBpZiAoIGxvZ2dlciA9PT0gdm9pZCAwICkgbG9nZ2VyID0gY29uc29sZTtcblxuICByZXR1cm4gZnVuY3Rpb24gKHN0b3JlKSB7XG4gICAgdmFyIHByZXZTdGF0ZSA9IGRlZXBDb3B5KHN0b3JlLnN0YXRlKTtcblxuICAgIGlmICh0eXBlb2YgbG9nZ2VyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGxvZ011dGF0aW9ucykge1xuICAgICAgc3RvcmUuc3Vic2NyaWJlKGZ1bmN0aW9uIChtdXRhdGlvbiwgc3RhdGUpIHtcbiAgICAgICAgdmFyIG5leHRTdGF0ZSA9IGRlZXBDb3B5KHN0YXRlKTtcblxuICAgICAgICBpZiAoZmlsdGVyKG11dGF0aW9uLCBwcmV2U3RhdGUsIG5leHRTdGF0ZSkpIHtcbiAgICAgICAgICB2YXIgZm9ybWF0dGVkVGltZSA9IGdldEZvcm1hdHRlZFRpbWUoKTtcbiAgICAgICAgICB2YXIgZm9ybWF0dGVkTXV0YXRpb24gPSBtdXRhdGlvblRyYW5zZm9ybWVyKG11dGF0aW9uKTtcbiAgICAgICAgICB2YXIgbWVzc2FnZSA9IFwibXV0YXRpb24gXCIgKyAobXV0YXRpb24udHlwZSkgKyBmb3JtYXR0ZWRUaW1lO1xuXG4gICAgICAgICAgc3RhcnRNZXNzYWdlKGxvZ2dlciwgbWVzc2FnZSwgY29sbGFwc2VkKTtcbiAgICAgICAgICBsb2dnZXIubG9nKCclYyBwcmV2IHN0YXRlJywgJ2NvbG9yOiAjOUU5RTlFOyBmb250LXdlaWdodDogYm9sZCcsIHRyYW5zZm9ybWVyKHByZXZTdGF0ZSkpO1xuICAgICAgICAgIGxvZ2dlci5sb2coJyVjIG11dGF0aW9uJywgJ2NvbG9yOiAjMDNBOUY0OyBmb250LXdlaWdodDogYm9sZCcsIGZvcm1hdHRlZE11dGF0aW9uKTtcbiAgICAgICAgICBsb2dnZXIubG9nKCclYyBuZXh0IHN0YXRlJywgJ2NvbG9yOiAjNENBRjUwOyBmb250LXdlaWdodDogYm9sZCcsIHRyYW5zZm9ybWVyKG5leHRTdGF0ZSkpO1xuICAgICAgICAgIGVuZE1lc3NhZ2UobG9nZ2VyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByZXZTdGF0ZSA9IG5leHRTdGF0ZTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChsb2dBY3Rpb25zKSB7XG4gICAgICBzdG9yZS5zdWJzY3JpYmVBY3Rpb24oZnVuY3Rpb24gKGFjdGlvbiwgc3RhdGUpIHtcbiAgICAgICAgaWYgKGFjdGlvbkZpbHRlcihhY3Rpb24sIHN0YXRlKSkge1xuICAgICAgICAgIHZhciBmb3JtYXR0ZWRUaW1lID0gZ2V0Rm9ybWF0dGVkVGltZSgpO1xuICAgICAgICAgIHZhciBmb3JtYXR0ZWRBY3Rpb24gPSBhY3Rpb25UcmFuc2Zvcm1lcihhY3Rpb24pO1xuICAgICAgICAgIHZhciBtZXNzYWdlID0gXCJhY3Rpb24gXCIgKyAoYWN0aW9uLnR5cGUpICsgZm9ybWF0dGVkVGltZTtcblxuICAgICAgICAgIHN0YXJ0TWVzc2FnZShsb2dnZXIsIG1lc3NhZ2UsIGNvbGxhcHNlZCk7XG4gICAgICAgICAgbG9nZ2VyLmxvZygnJWMgYWN0aW9uJywgJ2NvbG9yOiAjMDNBOUY0OyBmb250LXdlaWdodDogYm9sZCcsIGZvcm1hdHRlZEFjdGlvbik7XG4gICAgICAgICAgZW5kTWVzc2FnZShsb2dnZXIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RhcnRNZXNzYWdlIChsb2dnZXIsIG1lc3NhZ2UsIGNvbGxhcHNlZCkge1xuICB2YXIgc3RhcnRNZXNzYWdlID0gY29sbGFwc2VkXG4gICAgPyBsb2dnZXIuZ3JvdXBDb2xsYXBzZWRcbiAgICA6IGxvZ2dlci5ncm91cDtcblxuICAvLyByZW5kZXJcbiAgdHJ5IHtcbiAgICBzdGFydE1lc3NhZ2UuY2FsbChsb2dnZXIsIG1lc3NhZ2UpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmxvZyhtZXNzYWdlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbmRNZXNzYWdlIChsb2dnZXIpIHtcbiAgdHJ5IHtcbiAgICBsb2dnZXIuZ3JvdXBFbmQoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5sb2coJ+KAlOKAlCBsb2cgZW5kIOKAlOKAlCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEZvcm1hdHRlZFRpbWUgKCkge1xuICB2YXIgdGltZSA9IG5ldyBEYXRlKCk7XG4gIHJldHVybiAoXCIgQCBcIiArIChwYWQodGltZS5nZXRIb3VycygpLCAyKSkgKyBcIjpcIiArIChwYWQodGltZS5nZXRNaW51dGVzKCksIDIpKSArIFwiOlwiICsgKHBhZCh0aW1lLmdldFNlY29uZHMoKSwgMikpICsgXCIuXCIgKyAocGFkKHRpbWUuZ2V0TWlsbGlzZWNvbmRzKCksIDMpKSlcbn1cblxuZnVuY3Rpb24gcmVwZWF0IChzdHIsIHRpbWVzKSB7XG4gIHJldHVybiAobmV3IEFycmF5KHRpbWVzICsgMSkpLmpvaW4oc3RyKVxufVxuXG5mdW5jdGlvbiBwYWQgKG51bSwgbWF4TGVuZ3RoKSB7XG4gIHJldHVybiByZXBlYXQoJzAnLCBtYXhMZW5ndGggLSBudW0udG9TdHJpbmcoKS5sZW5ndGgpICsgbnVtXG59XG5cbnZhciBpbmRleF9janMgPSB7XG4gIFN0b3JlOiBTdG9yZSxcbiAgaW5zdGFsbDogaW5zdGFsbCxcbiAgdmVyc2lvbjogJzMuNi4yJyxcbiAgbWFwU3RhdGU6IG1hcFN0YXRlLFxuICBtYXBNdXRhdGlvbnM6IG1hcE11dGF0aW9ucyxcbiAgbWFwR2V0dGVyczogbWFwR2V0dGVycyxcbiAgbWFwQWN0aW9uczogbWFwQWN0aW9ucyxcbiAgY3JlYXRlTmFtZXNwYWNlZEhlbHBlcnM6IGNyZWF0ZU5hbWVzcGFjZWRIZWxwZXJzLFxuICBjcmVhdGVMb2dnZXI6IGNyZWF0ZUxvZ2dlclxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBpbmRleF9janM7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWdlbmVyYXRvci1ydW50aW1lXCIpO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4vLyBUaGlzIG1ldGhvZCBvZiBvYnRhaW5pbmcgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QgbmVlZHMgdG8gYmVcbi8vIGtlcHQgaWRlbnRpY2FsIHRvIHRoZSB3YXkgaXQgaXMgb2J0YWluZWQgaW4gcnVudGltZS5qc1xudmFyIGcgPSAoZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzIHx8ICh0eXBlb2Ygc2VsZiA9PT0gXCJvYmplY3RcIiAmJiBzZWxmKTtcbn0pKCkgfHwgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpO1xuXG4vLyBVc2UgYGdldE93blByb3BlcnR5TmFtZXNgIGJlY2F1c2Ugbm90IGFsbCBicm93c2VycyBzdXBwb3J0IGNhbGxpbmdcbi8vIGBoYXNPd25Qcm9wZXJ0eWAgb24gdGhlIGdsb2JhbCBgc2VsZmAgb2JqZWN0IGluIGEgd29ya2VyLiBTZWUgIzE4My5cbnZhciBoYWRSdW50aW1lID0gZy5yZWdlbmVyYXRvclJ1bnRpbWUgJiZcbiAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZykuaW5kZXhPZihcInJlZ2VuZXJhdG9yUnVudGltZVwiKSA+PSAwO1xuXG4vLyBTYXZlIHRoZSBvbGQgcmVnZW5lcmF0b3JSdW50aW1lIGluIGNhc2UgaXQgbmVlZHMgdG8gYmUgcmVzdG9yZWQgbGF0ZXIuXG52YXIgb2xkUnVudGltZSA9IGhhZFJ1bnRpbWUgJiYgZy5yZWdlbmVyYXRvclJ1bnRpbWU7XG5cbi8vIEZvcmNlIHJlZXZhbHV0YXRpb24gb2YgcnVudGltZS5qcy5cbmcucmVnZW5lcmF0b3JSdW50aW1lID0gdW5kZWZpbmVkO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuL3J1bnRpbWVcIik7XG5cbmlmIChoYWRSdW50aW1lKSB7XG4gIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHJ1bnRpbWUuXG4gIGcucmVnZW5lcmF0b3JSdW50aW1lID0gb2xkUnVudGltZTtcbn0gZWxzZSB7XG4gIC8vIFJlbW92ZSB0aGUgZ2xvYmFsIHByb3BlcnR5IGFkZGVkIGJ5IHJ1bnRpbWUuanMuXG4gIHRyeSB7XG4gICAgZGVsZXRlIGcucmVnZW5lcmF0b3JSdW50aW1lO1xuICB9IGNhdGNoKGUpIHtcbiAgICBnLnJlZ2VuZXJhdG9yUnVudGltZSA9IHVuZGVmaW5lZDtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4hKGZ1bmN0aW9uKGdsb2JhbCkge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICB2YXIgT3AgPSBPYmplY3QucHJvdG90eXBlO1xuICB2YXIgaGFzT3duID0gT3AuaGFzT3duUHJvcGVydHk7XG4gIHZhciB1bmRlZmluZWQ7IC8vIE1vcmUgY29tcHJlc3NpYmxlIHRoYW4gdm9pZCAwLlxuICB2YXIgJFN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiA/IFN5bWJvbCA6IHt9O1xuICB2YXIgaXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLml0ZXJhdG9yIHx8IFwiQEBpdGVyYXRvclwiO1xuICB2YXIgYXN5bmNJdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuYXN5bmNJdGVyYXRvciB8fCBcIkBAYXN5bmNJdGVyYXRvclwiO1xuICB2YXIgdG9TdHJpbmdUYWdTeW1ib2wgPSAkU3ltYm9sLnRvU3RyaW5nVGFnIHx8IFwiQEB0b1N0cmluZ1RhZ1wiO1xuXG4gIHZhciBpbk1vZHVsZSA9IHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCI7XG4gIHZhciBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZTtcbiAgaWYgKHJ1bnRpbWUpIHtcbiAgICBpZiAoaW5Nb2R1bGUpIHtcbiAgICAgIC8vIElmIHJlZ2VuZXJhdG9yUnVudGltZSBpcyBkZWZpbmVkIGdsb2JhbGx5IGFuZCB3ZSdyZSBpbiBhIG1vZHVsZSxcbiAgICAgIC8vIG1ha2UgdGhlIGV4cG9ydHMgb2JqZWN0IGlkZW50aWNhbCB0byByZWdlbmVyYXRvclJ1bnRpbWUuXG4gICAgICBtb2R1bGUuZXhwb3J0cyA9IHJ1bnRpbWU7XG4gICAgfVxuICAgIC8vIERvbid0IGJvdGhlciBldmFsdWF0aW5nIHRoZSByZXN0IG9mIHRoaXMgZmlsZSBpZiB0aGUgcnVudGltZSB3YXNcbiAgICAvLyBhbHJlYWR5IGRlZmluZWQgZ2xvYmFsbHkuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRGVmaW5lIHRoZSBydW50aW1lIGdsb2JhbGx5IChhcyBleHBlY3RlZCBieSBnZW5lcmF0ZWQgY29kZSkgYXMgZWl0aGVyXG4gIC8vIG1vZHVsZS5leHBvcnRzIChpZiB3ZSdyZSBpbiBhIG1vZHVsZSkgb3IgYSBuZXcsIGVtcHR5IG9iamVjdC5cbiAgcnVudGltZSA9IGdsb2JhbC5yZWdlbmVyYXRvclJ1bnRpbWUgPSBpbk1vZHVsZSA/IG1vZHVsZS5leHBvcnRzIDoge307XG5cbiAgZnVuY3Rpb24gd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuICAgIC8vIElmIG91dGVyRm4gcHJvdmlkZWQgYW5kIG91dGVyRm4ucHJvdG90eXBlIGlzIGEgR2VuZXJhdG9yLCB0aGVuIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yLlxuICAgIHZhciBwcm90b0dlbmVyYXRvciA9IG91dGVyRm4gJiYgb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBvdXRlckZuIDogR2VuZXJhdG9yO1xuICAgIHZhciBnZW5lcmF0b3IgPSBPYmplY3QuY3JlYXRlKHByb3RvR2VuZXJhdG9yLnByb3RvdHlwZSk7XG4gICAgdmFyIGNvbnRleHQgPSBuZXcgQ29udGV4dCh0cnlMb2NzTGlzdCB8fCBbXSk7XG5cbiAgICAvLyBUaGUgLl9pbnZva2UgbWV0aG9kIHVuaWZpZXMgdGhlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzLlxuICAgIGdlbmVyYXRvci5faW52b2tlID0gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH1cbiAgcnVudGltZS53cmFwID0gd3JhcDtcblxuICAvLyBUcnkvY2F0Y2ggaGVscGVyIHRvIG1pbmltaXplIGRlb3B0aW1pemF0aW9ucy4gUmV0dXJucyBhIGNvbXBsZXRpb25cbiAgLy8gcmVjb3JkIGxpa2UgY29udGV4dC50cnlFbnRyaWVzW2ldLmNvbXBsZXRpb24uIFRoaXMgaW50ZXJmYWNlIGNvdWxkXG4gIC8vIGhhdmUgYmVlbiAoYW5kIHdhcyBwcmV2aW91c2x5KSBkZXNpZ25lZCB0byB0YWtlIGEgY2xvc3VyZSB0byBiZVxuICAvLyBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzLCBidXQgaW4gYWxsIHRoZSBjYXNlcyB3ZSBjYXJlIGFib3V0IHdlXG4gIC8vIGFscmVhZHkgaGF2ZSBhbiBleGlzdGluZyBtZXRob2Qgd2Ugd2FudCB0byBjYWxsLCBzbyB0aGVyZSdzIG5vIG5lZWRcbiAgLy8gdG8gY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIG9iamVjdC4gV2UgY2FuIGV2ZW4gZ2V0IGF3YXkgd2l0aCBhc3N1bWluZ1xuICAvLyB0aGUgbWV0aG9kIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50LCBzaW5jZSB0aGF0IGhhcHBlbnMgdG8gYmUgdHJ1ZVxuICAvLyBpbiBldmVyeSBjYXNlLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHRvdWNoIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBUaGVcbiAgLy8gb25seSBhZGRpdGlvbmFsIGFsbG9jYXRpb24gcmVxdWlyZWQgaXMgdGhlIGNvbXBsZXRpb24gcmVjb3JkLCB3aGljaFxuICAvLyBoYXMgYSBzdGFibGUgc2hhcGUgYW5kIHNvIGhvcGVmdWxseSBzaG91bGQgYmUgY2hlYXAgdG8gYWxsb2NhdGUuXG4gIGZ1bmN0aW9uIHRyeUNhdGNoKGZuLCBvYmosIGFyZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcIm5vcm1hbFwiLCBhcmc6IGZuLmNhbGwob2JqLCBhcmcpIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcInRocm93XCIsIGFyZzogZXJyIH07XG4gICAgfVxuICB9XG5cbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkU3RhcnQgPSBcInN1c3BlbmRlZFN0YXJ0XCI7XG4gIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkID0gXCJzdXNwZW5kZWRZaWVsZFwiO1xuICB2YXIgR2VuU3RhdGVFeGVjdXRpbmcgPSBcImV4ZWN1dGluZ1wiO1xuICB2YXIgR2VuU3RhdGVDb21wbGV0ZWQgPSBcImNvbXBsZXRlZFwiO1xuXG4gIC8vIFJldHVybmluZyB0aGlzIG9iamVjdCBmcm9tIHRoZSBpbm5lckZuIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXNcbiAgLy8gYnJlYWtpbmcgb3V0IG9mIHRoZSBkaXNwYXRjaCBzd2l0Y2ggc3RhdGVtZW50LlxuICB2YXIgQ29udGludWVTZW50aW5lbCA9IHt9O1xuXG4gIC8vIER1bW15IGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyB0aGF0IHdlIHVzZSBhcyB0aGUgLmNvbnN0cnVjdG9yIGFuZFxuICAvLyAuY29uc3RydWN0b3IucHJvdG90eXBlIHByb3BlcnRpZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0cy4gRm9yIGZ1bGwgc3BlYyBjb21wbGlhbmNlLCB5b3UgbWF5IHdpc2ggdG8gY29uZmlndXJlIHlvdXJcbiAgLy8gbWluaWZpZXIgbm90IHRvIG1hbmdsZSB0aGUgbmFtZXMgb2YgdGhlc2UgdHdvIGZ1bmN0aW9ucy5cbiAgZnVuY3Rpb24gR2VuZXJhdG9yKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb24oKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIHt9XG5cbiAgLy8gVGhpcyBpcyBhIHBvbHlmaWxsIGZvciAlSXRlcmF0b3JQcm90b3R5cGUlIGZvciBlbnZpcm9ubWVudHMgdGhhdFxuICAvLyBkb24ndCBuYXRpdmVseSBzdXBwb3J0IGl0LlxuICB2YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcbiAgSXRlcmF0b3JQcm90b3R5cGVbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIHZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcbiAgdmFyIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG8gJiYgZ2V0UHJvdG8oZ2V0UHJvdG8odmFsdWVzKFtdKSkpO1xuICBpZiAoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgJiZcbiAgICAgIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICE9PSBPcCAmJlxuICAgICAgaGFzT3duLmNhbGwoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUsIGl0ZXJhdG9yU3ltYm9sKSkge1xuICAgIC8vIFRoaXMgZW52aXJvbm1lbnQgaGFzIGEgbmF0aXZlICVJdGVyYXRvclByb3RvdHlwZSU7IHVzZSBpdCBpbnN0ZWFkXG4gICAgLy8gb2YgdGhlIHBvbHlmaWxsLlxuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gTmF0aXZlSXRlcmF0b3JQcm90b3R5cGU7XG4gIH1cblxuICB2YXIgR3AgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUgPVxuICAgIEdlbmVyYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlKTtcbiAgR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR3AuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvbjtcbiAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVbdG9TdHJpbmdUYWdTeW1ib2xdID1cbiAgICBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9IFwiR2VuZXJhdG9yRnVuY3Rpb25cIjtcblxuICAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIHRoZSAubmV4dCwgLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzIG9mIHRoZVxuICAvLyBJdGVyYXRvciBpbnRlcmZhY2UgaW4gdGVybXMgb2YgYSBzaW5nbGUgLl9pbnZva2UgbWV0aG9kLlxuICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7XG4gICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgICBwcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKGFyZykge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBydW50aW1lLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbihnZW5GdW4pIHtcbiAgICB2YXIgY3RvciA9IHR5cGVvZiBnZW5GdW4gPT09IFwiZnVuY3Rpb25cIiAmJiBnZW5GdW4uY29uc3RydWN0b3I7XG4gICAgcmV0dXJuIGN0b3JcbiAgICAgID8gY3RvciA9PT0gR2VuZXJhdG9yRnVuY3Rpb24gfHxcbiAgICAgICAgLy8gRm9yIHRoZSBuYXRpdmUgR2VuZXJhdG9yRnVuY3Rpb24gY29uc3RydWN0b3IsIHRoZSBiZXN0IHdlIGNhblxuICAgICAgICAvLyBkbyBpcyB0byBjaGVjayBpdHMgLm5hbWUgcHJvcGVydHkuXG4gICAgICAgIChjdG9yLmRpc3BsYXlOYW1lIHx8IGN0b3IubmFtZSkgPT09IFwiR2VuZXJhdG9yRnVuY3Rpb25cIlxuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuICBydW50aW1lLm1hcmsgPSBmdW5jdGlvbihnZW5GdW4pIHtcbiAgICBpZiAoT2JqZWN0LnNldFByb3RvdHlwZU9mKSB7XG4gICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZ2VuRnVuLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdlbkZ1bi5fX3Byb3RvX18gPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgICAgIGlmICghKHRvU3RyaW5nVGFnU3ltYm9sIGluIGdlbkZ1bikpIHtcbiAgICAgICAgZ2VuRnVuW3RvU3RyaW5nVGFnU3ltYm9sXSA9IFwiR2VuZXJhdG9yRnVuY3Rpb25cIjtcbiAgICAgIH1cbiAgICB9XG4gICAgZ2VuRnVuLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoR3ApO1xuICAgIHJldHVybiBnZW5GdW47XG4gIH07XG5cbiAgLy8gV2l0aGluIHRoZSBib2R5IG9mIGFueSBhc3luYyBmdW5jdGlvbiwgYGF3YWl0IHhgIGlzIHRyYW5zZm9ybWVkIHRvXG4gIC8vIGB5aWVsZCByZWdlbmVyYXRvclJ1bnRpbWUuYXdyYXAoeClgLCBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiB0ZXN0XG4gIC8vIGBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpYCB0byBkZXRlcm1pbmUgaWYgdGhlIHlpZWxkZWQgdmFsdWUgaXNcbiAgLy8gbWVhbnQgdG8gYmUgYXdhaXRlZC5cbiAgcnVudGltZS5hd3JhcCA9IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB7IF9fYXdhaXQ6IGFyZyB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3IoZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChnZW5lcmF0b3JbbWV0aG9kXSwgZ2VuZXJhdG9yLCBhcmcpO1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgcmVqZWN0KHJlY29yZC5hcmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlY29yZC5hcmc7XG4gICAgICAgIHZhciB2YWx1ZSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIikpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlLl9fYXdhaXQpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgIGludm9rZShcIm5leHRcIiwgdmFsdWUsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICBpbnZva2UoXCJ0aHJvd1wiLCBlcnIsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uKHVud3JhcHBlZCkge1xuICAgICAgICAgIC8vIFdoZW4gYSB5aWVsZGVkIFByb21pc2UgaXMgcmVzb2x2ZWQsIGl0cyBmaW5hbCB2YWx1ZSBiZWNvbWVzXG4gICAgICAgICAgLy8gdGhlIC52YWx1ZSBvZiB0aGUgUHJvbWlzZTx7dmFsdWUsZG9uZX0+IHJlc3VsdCBmb3IgdGhlXG4gICAgICAgICAgLy8gY3VycmVudCBpdGVyYXRpb24uXG4gICAgICAgICAgcmVzdWx0LnZhbHVlID0gdW53cmFwcGVkO1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgICAgICAvLyBJZiBhIHJlamVjdGVkIFByb21pc2Ugd2FzIHlpZWxkZWQsIHRocm93IHRoZSByZWplY3Rpb24gYmFja1xuICAgICAgICAgIC8vIGludG8gdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBzbyBpdCBjYW4gYmUgaGFuZGxlZCB0aGVyZS5cbiAgICAgICAgICByZXR1cm4gaW52b2tlKFwidGhyb3dcIiwgZXJyb3IsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBwcmV2aW91c1Byb21pc2U7XG5cbiAgICBmdW5jdGlvbiBlbnF1ZXVlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBmdW5jdGlvbiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcmV2aW91c1Byb21pc2UgPVxuICAgICAgICAvLyBJZiBlbnF1ZXVlIGhhcyBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gd2Ugd2FudCB0byB3YWl0IHVudGlsXG4gICAgICAgIC8vIGFsbCBwcmV2aW91cyBQcm9taXNlcyBoYXZlIGJlZW4gcmVzb2x2ZWQgYmVmb3JlIGNhbGxpbmcgaW52b2tlLFxuICAgICAgICAvLyBzbyB0aGF0IHJlc3VsdHMgYXJlIGFsd2F5cyBkZWxpdmVyZWQgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIElmXG4gICAgICAgIC8vIGVucXVldWUgaGFzIG5vdCBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gaXQgaXMgaW1wb3J0YW50IHRvXG4gICAgICAgIC8vIGNhbGwgaW52b2tlIGltbWVkaWF0ZWx5LCB3aXRob3V0IHdhaXRpbmcgb24gYSBjYWxsYmFjayB0byBmaXJlLFxuICAgICAgICAvLyBzbyB0aGF0IHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gaGFzIHRoZSBvcHBvcnR1bml0eSB0byBkb1xuICAgICAgICAvLyBhbnkgbmVjZXNzYXJ5IHNldHVwIGluIGEgcHJlZGljdGFibGUgd2F5LiBUaGlzIHByZWRpY3RhYmlsaXR5XG4gICAgICAgIC8vIGlzIHdoeSB0aGUgUHJvbWlzZSBjb25zdHJ1Y3RvciBzeW5jaHJvbm91c2x5IGludm9rZXMgaXRzXG4gICAgICAgIC8vIGV4ZWN1dG9yIGNhbGxiYWNrLCBhbmQgd2h5IGFzeW5jIGZ1bmN0aW9ucyBzeW5jaHJvbm91c2x5XG4gICAgICAgIC8vIGV4ZWN1dGUgY29kZSBiZWZvcmUgdGhlIGZpcnN0IGF3YWl0LiBTaW5jZSB3ZSBpbXBsZW1lbnQgc2ltcGxlXG4gICAgICAgIC8vIGFzeW5jIGZ1bmN0aW9ucyBpbiB0ZXJtcyBvZiBhc3luYyBnZW5lcmF0b3JzLCBpdCBpcyBlc3BlY2lhbGx5XG4gICAgICAgIC8vIGltcG9ydGFudCB0byBnZXQgdGhpcyByaWdodCwgZXZlbiB0aG91Z2ggaXQgcmVxdWlyZXMgY2FyZS5cbiAgICAgICAgcHJldmlvdXNQcm9taXNlID8gcHJldmlvdXNQcm9taXNlLnRoZW4oXG4gICAgICAgICAgY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcsXG4gICAgICAgICAgLy8gQXZvaWQgcHJvcGFnYXRpbmcgZmFpbHVyZXMgdG8gUHJvbWlzZXMgcmV0dXJuZWQgYnkgbGF0ZXJcbiAgICAgICAgICAvLyBpbnZvY2F0aW9ucyBvZiB0aGUgaXRlcmF0b3IuXG4gICAgICAgICAgY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmdcbiAgICAgICAgKSA6IGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCk7XG4gICAgfVxuXG4gICAgLy8gRGVmaW5lIHRoZSB1bmlmaWVkIGhlbHBlciBtZXRob2QgdGhhdCBpcyB1c2VkIHRvIGltcGxlbWVudCAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIChzZWUgZGVmaW5lSXRlcmF0b3JNZXRob2RzKS5cbiAgICB0aGlzLl9pbnZva2UgPSBlbnF1ZXVlO1xuICB9XG5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEFzeW5jSXRlcmF0b3IucHJvdG90eXBlKTtcbiAgQXN5bmNJdGVyYXRvci5wcm90b3R5cGVbYXN5bmNJdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIHJ1bnRpbWUuQXN5bmNJdGVyYXRvciA9IEFzeW5jSXRlcmF0b3I7XG5cbiAgLy8gTm90ZSB0aGF0IHNpbXBsZSBhc3luYyBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIG9uIHRvcCBvZlxuICAvLyBBc3luY0l0ZXJhdG9yIG9iamVjdHM7IHRoZXkganVzdCByZXR1cm4gYSBQcm9taXNlIGZvciB0aGUgdmFsdWUgb2ZcbiAgLy8gdGhlIGZpbmFsIHJlc3VsdCBwcm9kdWNlZCBieSB0aGUgaXRlcmF0b3IuXG4gIHJ1bnRpbWUuYXN5bmMgPSBmdW5jdGlvbihpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuICAgIHZhciBpdGVyID0gbmV3IEFzeW5jSXRlcmF0b3IoXG4gICAgICB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KVxuICAgICk7XG5cbiAgICByZXR1cm4gcnVudGltZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG91dGVyRm4pXG4gICAgICA/IGl0ZXIgLy8gSWYgb3V0ZXJGbiBpcyBhIGdlbmVyYXRvciwgcmV0dXJuIHRoZSBmdWxsIGl0ZXJhdG9yLlxuICAgICAgOiBpdGVyLm5leHQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IGl0ZXIubmV4dCgpO1xuICAgICAgICB9KTtcbiAgfTtcblxuICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpIHtcbiAgICB2YXIgc3RhdGUgPSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7XG4gICAgICAgIGlmIChtZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHRocm93IGFyZztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJlIGZvcmdpdmluZywgcGVyIDI1LjMuMy4zLjMgb2YgdGhlIHNwZWM6XG4gICAgICAgIC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1nZW5lcmF0b3JyZXN1bWVcbiAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5tZXRob2QgPSBtZXRob2Q7XG4gICAgICBjb250ZXh0LmFyZyA9IGFyZztcblxuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gY29udGV4dC5kZWxlZ2F0ZTtcbiAgICAgICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICAgICAgdmFyIGRlbGVnYXRlUmVzdWx0ID0gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG4gICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0KSB7XG4gICAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQgPT09IENvbnRpbnVlU2VudGluZWwpIGNvbnRpbnVlO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlUmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgICAvLyBTZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgICAgIGNvbnRleHQuc2VudCA9IGNvbnRleHQuX3NlbnQgPSBjb250ZXh0LmFyZztcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQpIHtcbiAgICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgICB0aHJvdyBjb250ZXh0LmFyZztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKTtcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgY29udGV4dC5hcmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUV4ZWN1dGluZztcblxuICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG4gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIikge1xuICAgICAgICAgIC8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZnJvbSBpbm5lckZuLCB3ZSBsZWF2ZSBzdGF0ZSA9PT1cbiAgICAgICAgICAvLyBHZW5TdGF0ZUV4ZWN1dGluZyBhbmQgbG9vcCBiYWNrIGZvciBhbm90aGVyIGludm9jYXRpb24uXG4gICAgICAgICAgc3RhdGUgPSBjb250ZXh0LmRvbmVcbiAgICAgICAgICAgID8gR2VuU3RhdGVDb21wbGV0ZWRcbiAgICAgICAgICAgIDogR2VuU3RhdGVTdXNwZW5kZWRZaWVsZDtcblxuICAgICAgICAgIGlmIChyZWNvcmQuYXJnID09PSBDb250aW51ZVNlbnRpbmVsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG4gICAgICAgICAgICBkb25lOiBjb250ZXh0LmRvbmVcbiAgICAgICAgICB9O1xuXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZVxuICAgICAgICAgIC8vIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpIGNhbGwgYWJvdmUuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIENhbGwgZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdKGNvbnRleHQuYXJnKSBhbmQgaGFuZGxlIHRoZVxuICAvLyByZXN1bHQsIGVpdGhlciBieSByZXR1cm5pbmcgYSB7IHZhbHVlLCBkb25lIH0gcmVzdWx0IGZyb20gdGhlXG4gIC8vIGRlbGVnYXRlIGl0ZXJhdG9yLCBvciBieSBtb2RpZnlpbmcgY29udGV4dC5tZXRob2QgYW5kIGNvbnRleHQuYXJnLFxuICAvLyBzZXR0aW5nIGNvbnRleHQuZGVsZWdhdGUgdG8gbnVsbCwgYW5kIHJldHVybmluZyB0aGUgQ29udGludWVTZW50aW5lbC5cbiAgZnVuY3Rpb24gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCkge1xuICAgIHZhciBtZXRob2QgPSBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF07XG4gICAgaWYgKG1ldGhvZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBBIC50aHJvdyBvciAucmV0dXJuIHdoZW4gdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBubyAudGhyb3dcbiAgICAgIC8vIG1ldGhvZCBhbHdheXMgdGVybWluYXRlcyB0aGUgeWllbGQqIGxvb3AuXG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgaWYgKGRlbGVnYXRlLml0ZXJhdG9yLnJldHVybikge1xuICAgICAgICAgIC8vIElmIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgYSByZXR1cm4gbWV0aG9kLCBnaXZlIGl0IGFcbiAgICAgICAgICAvLyBjaGFuY2UgdG8gY2xlYW4gdXAuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIC8vIElmIG1heWJlSW52b2tlRGVsZWdhdGUoY29udGV4dCkgY2hhbmdlZCBjb250ZXh0Lm1ldGhvZCBmcm9tXG4gICAgICAgICAgICAvLyBcInJldHVyblwiIHRvIFwidGhyb3dcIiwgbGV0IHRoYXQgb3ZlcnJpZGUgdGhlIFR5cGVFcnJvciBiZWxvdy5cbiAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICd0aHJvdycgbWV0aG9kXCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2gobWV0aG9kLCBkZWxlZ2F0ZS5pdGVyYXRvciwgY29udGV4dC5hcmcpO1xuXG4gICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICB2YXIgaW5mbyA9IHJlY29yZC5hcmc7XG5cbiAgICBpZiAoISBpbmZvKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XCIpO1xuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICBpZiAoaW5mby5kb25lKSB7XG4gICAgICAvLyBBc3NpZ24gdGhlIHJlc3VsdCBvZiB0aGUgZmluaXNoZWQgZGVsZWdhdGUgdG8gdGhlIHRlbXBvcmFyeVxuICAgICAgLy8gdmFyaWFibGUgc3BlY2lmaWVkIGJ5IGRlbGVnYXRlLnJlc3VsdE5hbWUgKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgIGNvbnRleHRbZGVsZWdhdGUucmVzdWx0TmFtZV0gPSBpbmZvLnZhbHVlO1xuXG4gICAgICAvLyBSZXN1bWUgZXhlY3V0aW9uIGF0IHRoZSBkZXNpcmVkIGxvY2F0aW9uIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0Lm5leHQgPSBkZWxlZ2F0ZS5uZXh0TG9jO1xuXG4gICAgICAvLyBJZiBjb250ZXh0Lm1ldGhvZCB3YXMgXCJ0aHJvd1wiIGJ1dCB0aGUgZGVsZWdhdGUgaGFuZGxlZCB0aGVcbiAgICAgIC8vIGV4Y2VwdGlvbiwgbGV0IHRoZSBvdXRlciBnZW5lcmF0b3IgcHJvY2VlZCBub3JtYWxseS4gSWZcbiAgICAgIC8vIGNvbnRleHQubWV0aG9kIHdhcyBcIm5leHRcIiwgZm9yZ2V0IGNvbnRleHQuYXJnIHNpbmNlIGl0IGhhcyBiZWVuXG4gICAgICAvLyBcImNvbnN1bWVkXCIgYnkgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yLiBJZiBjb250ZXh0Lm1ldGhvZCB3YXNcbiAgICAgIC8vIFwicmV0dXJuXCIsIGFsbG93IHRoZSBvcmlnaW5hbCAucmV0dXJuIGNhbGwgdG8gY29udGludWUgaW4gdGhlXG4gICAgICAvLyBvdXRlciBnZW5lcmF0b3IuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgIT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmUteWllbGQgdGhlIHJlc3VsdCByZXR1cm5lZCBieSB0aGUgZGVsZWdhdGUgbWV0aG9kLlxuICAgICAgcmV0dXJuIGluZm87XG4gICAgfVxuXG4gICAgLy8gVGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGlzIGZpbmlzaGVkLCBzbyBmb3JnZXQgaXQgYW5kIGNvbnRpbnVlIHdpdGhcbiAgICAvLyB0aGUgb3V0ZXIgZ2VuZXJhdG9yLlxuICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICB9XG5cbiAgLy8gRGVmaW5lIEdlbmVyYXRvci5wcm90b3R5cGUue25leHQsdGhyb3cscmV0dXJufSBpbiB0ZXJtcyBvZiB0aGVcbiAgLy8gdW5pZmllZCAuX2ludm9rZSBoZWxwZXIgbWV0aG9kLlxuICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoR3ApO1xuXG4gIEdwW3RvU3RyaW5nVGFnU3ltYm9sXSA9IFwiR2VuZXJhdG9yXCI7XG5cbiAgLy8gQSBHZW5lcmF0b3Igc2hvdWxkIGFsd2F5cyByZXR1cm4gaXRzZWxmIGFzIHRoZSBpdGVyYXRvciBvYmplY3Qgd2hlbiB0aGVcbiAgLy8gQEBpdGVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQgb24gaXQuIFNvbWUgYnJvd3NlcnMnIGltcGxlbWVudGF0aW9ucyBvZiB0aGVcbiAgLy8gaXRlcmF0b3IgcHJvdG90eXBlIGNoYWluIGluY29ycmVjdGx5IGltcGxlbWVudCB0aGlzLCBjYXVzaW5nIHRoZSBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0IHRvIG5vdCBiZSByZXR1cm5lZCBmcm9tIHRoaXMgY2FsbC4gVGhpcyBlbnN1cmVzIHRoYXQgZG9lc24ndCBoYXBwZW4uXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvaXNzdWVzLzI3NCBmb3IgbW9yZSBkZXRhaWxzLlxuICBHcFtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBHcC50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBcIltvYmplY3QgR2VuZXJhdG9yXVwiO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHB1c2hUcnlFbnRyeShsb2NzKSB7XG4gICAgdmFyIGVudHJ5ID0geyB0cnlMb2M6IGxvY3NbMF0gfTtcblxuICAgIGlmICgxIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmNhdGNoTG9jID0gbG9jc1sxXTtcbiAgICB9XG5cbiAgICBpZiAoMiBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXTtcbiAgICAgIGVudHJ5LmFmdGVyTG9jID0gbG9jc1szXTtcbiAgICB9XG5cbiAgICB0aGlzLnRyeUVudHJpZXMucHVzaChlbnRyeSk7XG4gIH1cblxuICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KGVudHJ5KSB7XG4gICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb24gfHwge307XG4gICAgcmVjb3JkLnR5cGUgPSBcIm5vcm1hbFwiO1xuICAgIGRlbGV0ZSByZWNvcmQuYXJnO1xuICAgIGVudHJ5LmNvbXBsZXRpb24gPSByZWNvcmQ7XG4gIH1cblxuICBmdW5jdGlvbiBDb250ZXh0KHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gVGhlIHJvb3QgZW50cnkgb2JqZWN0IChlZmZlY3RpdmVseSBhIHRyeSBzdGF0ZW1lbnQgd2l0aG91dCBhIGNhdGNoXG4gICAgLy8gb3IgYSBmaW5hbGx5IGJsb2NrKSBnaXZlcyB1cyBhIHBsYWNlIHRvIHN0b3JlIHZhbHVlcyB0aHJvd24gZnJvbVxuICAgIC8vIGxvY2F0aW9ucyB3aGVyZSB0aGVyZSBpcyBubyBlbmNsb3NpbmcgdHJ5IHN0YXRlbWVudC5cbiAgICB0aGlzLnRyeUVudHJpZXMgPSBbeyB0cnlMb2M6IFwicm9vdFwiIH1dO1xuICAgIHRyeUxvY3NMaXN0LmZvckVhY2gocHVzaFRyeUVudHJ5LCB0aGlzKTtcbiAgICB0aGlzLnJlc2V0KHRydWUpO1xuICB9XG5cbiAgcnVudGltZS5rZXlzID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICB9XG4gICAga2V5cy5yZXZlcnNlKCk7XG5cbiAgICAvLyBSYXRoZXIgdGhhbiByZXR1cm5pbmcgYW4gb2JqZWN0IHdpdGggYSBuZXh0IG1ldGhvZCwgd2Uga2VlcFxuICAgIC8vIHRoaW5ncyBzaW1wbGUgYW5kIHJldHVybiB0aGUgbmV4dCBmdW5jdGlvbiBpdHNlbGYuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICB3aGlsZSAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXMucG9wKCk7XG4gICAgICAgIGlmIChrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgbmV4dC52YWx1ZSA9IGtleTtcbiAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUbyBhdm9pZCBjcmVhdGluZyBhbiBhZGRpdGlvbmFsIG9iamVjdCwgd2UganVzdCBoYW5nIHRoZSAudmFsdWVcbiAgICAgIC8vIGFuZCAuZG9uZSBwcm9wZXJ0aWVzIG9mZiB0aGUgbmV4dCBmdW5jdGlvbiBvYmplY3QgaXRzZWxmLiBUaGlzXG4gICAgICAvLyBhbHNvIGVuc3VyZXMgdGhhdCB0aGUgbWluaWZpZXIgd2lsbCBub3QgYW5vbnltaXplIHRoZSBmdW5jdGlvbi5cbiAgICAgIG5leHQuZG9uZSA9IHRydWU7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIHZhbHVlcyhpdGVyYWJsZSkge1xuICAgIGlmIChpdGVyYWJsZSkge1xuICAgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlcmFibGVbaXRlcmF0b3JTeW1ib2xdO1xuICAgICAgaWYgKGl0ZXJhdG9yTWV0aG9kKSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRvck1ldGhvZC5jYWxsKGl0ZXJhYmxlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBpdGVyYWJsZS5uZXh0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhYmxlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzTmFOKGl0ZXJhYmxlLmxlbmd0aCkpIHtcbiAgICAgICAgdmFyIGkgPSAtMSwgbmV4dCA9IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgd2hpbGUgKCsraSA8IGl0ZXJhYmxlLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKGl0ZXJhYmxlLCBpKSkge1xuICAgICAgICAgICAgICBuZXh0LnZhbHVlID0gaXRlcmFibGVbaV07XG4gICAgICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXh0LnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG5leHQuZG9uZSA9IHRydWU7XG5cbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gbmV4dC5uZXh0ID0gbmV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYW4gaXRlcmF0b3Igd2l0aCBubyB2YWx1ZXMuXG4gICAgcmV0dXJuIHsgbmV4dDogZG9uZVJlc3VsdCB9O1xuICB9XG4gIHJ1bnRpbWUudmFsdWVzID0gdmFsdWVzO1xuXG4gIGZ1bmN0aW9uIGRvbmVSZXN1bHQoKSB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICB9XG5cbiAgQ29udGV4dC5wcm90b3R5cGUgPSB7XG4gICAgY29uc3RydWN0b3I6IENvbnRleHQsXG5cbiAgICByZXNldDogZnVuY3Rpb24oc2tpcFRlbXBSZXNldCkge1xuICAgICAgdGhpcy5wcmV2ID0gMDtcbiAgICAgIHRoaXMubmV4dCA9IDA7XG4gICAgICAvLyBSZXNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgIHRoaXMuc2VudCA9IHRoaXMuX3NlbnQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKHJlc2V0VHJ5RW50cnkpO1xuXG4gICAgICBpZiAoIXNraXBUZW1wUmVzZXQpIHtcbiAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzKSB7XG4gICAgICAgICAgLy8gTm90IHN1cmUgYWJvdXQgdGhlIG9wdGltYWwgb3JkZXIgb2YgdGhlc2UgY29uZGl0aW9uczpcbiAgICAgICAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09IFwidFwiICYmXG4gICAgICAgICAgICAgIGhhc093bi5jYWxsKHRoaXMsIG5hbWUpICYmXG4gICAgICAgICAgICAgICFpc05hTigrbmFtZS5zbGljZSgxKSkpIHtcbiAgICAgICAgICAgIHRoaXNbbmFtZV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIHN0b3A6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcblxuICAgICAgdmFyIHJvb3RFbnRyeSA9IHRoaXMudHJ5RW50cmllc1swXTtcbiAgICAgIHZhciByb290UmVjb3JkID0gcm9vdEVudHJ5LmNvbXBsZXRpb247XG4gICAgICBpZiAocm9vdFJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcm9vdFJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnJ2YWw7XG4gICAgfSxcblxuICAgIGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbihleGNlcHRpb24pIHtcbiAgICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgICAgdGhyb3cgZXhjZXB0aW9uO1xuICAgICAgfVxuXG4gICAgICB2YXIgY29udGV4dCA9IHRoaXM7XG4gICAgICBmdW5jdGlvbiBoYW5kbGUobG9jLCBjYXVnaHQpIHtcbiAgICAgICAgcmVjb3JkLnR5cGUgPSBcInRocm93XCI7XG4gICAgICAgIHJlY29yZC5hcmcgPSBleGNlcHRpb247XG4gICAgICAgIGNvbnRleHQubmV4dCA9IGxvYztcblxuICAgICAgICBpZiAoY2F1Z2h0KSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRpc3BhdGNoZWQgZXhjZXB0aW9uIHdhcyBjYXVnaHQgYnkgYSBjYXRjaCBibG9jayxcbiAgICAgICAgICAvLyB0aGVuIGxldCB0aGF0IGNhdGNoIGJsb2NrIGhhbmRsZSB0aGUgZXhjZXB0aW9uIG5vcm1hbGx5LlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gISEgY2F1Z2h0O1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gXCJyb290XCIpIHtcbiAgICAgICAgICAvLyBFeGNlcHRpb24gdGhyb3duIG91dHNpZGUgb2YgYW55IHRyeSBibG9jayB0aGF0IGNvdWxkIGhhbmRsZVxuICAgICAgICAgIC8vIGl0LCBzbyBzZXQgdGhlIGNvbXBsZXRpb24gdmFsdWUgb2YgdGhlIGVudGlyZSBmdW5jdGlvbiB0b1xuICAgICAgICAgIC8vIHRocm93IHRoZSBleGNlcHRpb24uXG4gICAgICAgICAgcmV0dXJuIGhhbmRsZShcImVuZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2KSB7XG4gICAgICAgICAgdmFyIGhhc0NhdGNoID0gaGFzT3duLmNhbGwoZW50cnksIFwiY2F0Y2hMb2NcIik7XG4gICAgICAgICAgdmFyIGhhc0ZpbmFsbHkgPSBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpO1xuXG4gICAgICAgICAgaWYgKGhhc0NhdGNoICYmIGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNDYXRjaCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBhYnJ1cHQ6IGZ1bmN0aW9uKHR5cGUsIGFyZykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2ICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpICYmXG4gICAgICAgICAgICB0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgdmFyIGZpbmFsbHlFbnRyeSA9IGVudHJ5O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkgJiZcbiAgICAgICAgICAodHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgIHR5cGUgPT09IFwiY29udGludWVcIikgJiZcbiAgICAgICAgICBmaW5hbGx5RW50cnkudHJ5TG9jIDw9IGFyZyAmJlxuICAgICAgICAgIGFyZyA8PSBmaW5hbGx5RW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAvLyBJZ25vcmUgdGhlIGZpbmFsbHkgZW50cnkgaWYgY29udHJvbCBpcyBub3QganVtcGluZyB0byBhXG4gICAgICAgIC8vIGxvY2F0aW9uIG91dHNpZGUgdGhlIHRyeS9jYXRjaCBibG9jay5cbiAgICAgICAgZmluYWxseUVudHJ5ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlY29yZCA9IGZpbmFsbHlFbnRyeSA/IGZpbmFsbHlFbnRyeS5jb21wbGV0aW9uIDoge307XG4gICAgICByZWNvcmQudHlwZSA9IHR5cGU7XG4gICAgICByZWNvcmQuYXJnID0gYXJnO1xuXG4gICAgICBpZiAoZmluYWxseUVudHJ5KSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIHRoaXMubmV4dCA9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jO1xuICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY29tcGxldGUocmVjb3JkKTtcbiAgICB9LFxuXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uKHJlY29yZCwgYWZ0ZXJMb2MpIHtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgcmVjb3JkLnR5cGUgPT09IFwiY29udGludWVcIikge1xuICAgICAgICB0aGlzLm5leHQgPSByZWNvcmQuYXJnO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJyZXR1cm5cIikge1xuICAgICAgICB0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gXCJlbmRcIjtcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIgJiYgYWZ0ZXJMb2MpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gYWZ0ZXJMb2M7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH0sXG5cbiAgICBmaW5pc2g6IGZ1bmN0aW9uKGZpbmFsbHlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkuZmluYWxseUxvYyA9PT0gZmluYWxseUxvYykge1xuICAgICAgICAgIHRoaXMuY29tcGxldGUoZW50cnkuY29tcGxldGlvbiwgZW50cnkuYWZ0ZXJMb2MpO1xuICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIFwiY2F0Y2hcIjogZnVuY3Rpb24odHJ5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gdHJ5TG9jKSB7XG4gICAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG4gICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIHZhciB0aHJvd24gPSByZWNvcmQuYXJnO1xuICAgICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aHJvd247XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVGhlIGNvbnRleHQuY2F0Y2ggbWV0aG9kIG11c3Qgb25seSBiZSBjYWxsZWQgd2l0aCBhIGxvY2F0aW9uXG4gICAgICAvLyBhcmd1bWVudCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEga25vd24gY2F0Y2ggYmxvY2suXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHRcIik7XG4gICAgfSxcblxuICAgIGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uKGl0ZXJhYmxlLCByZXN1bHROYW1lLCBuZXh0TG9jKSB7XG4gICAgICB0aGlzLmRlbGVnYXRlID0ge1xuICAgICAgICBpdGVyYXRvcjogdmFsdWVzKGl0ZXJhYmxlKSxcbiAgICAgICAgcmVzdWx0TmFtZTogcmVzdWx0TmFtZSxcbiAgICAgICAgbmV4dExvYzogbmV4dExvY1xuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAvLyBEZWxpYmVyYXRlbHkgZm9yZ2V0IHRoZSBsYXN0IHNlbnQgdmFsdWUgc28gdGhhdCB3ZSBkb24ndFxuICAgICAgICAvLyBhY2NpZGVudGFsbHkgcGFzcyBpdCBvbiB0byB0aGUgZGVsZWdhdGUuXG4gICAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG4gIH07XG59KShcbiAgLy8gSW4gc2xvcHB5IG1vZGUsIHVuYm91bmQgYHRoaXNgIHJlZmVycyB0byB0aGUgZ2xvYmFsIG9iamVjdCwgZmFsbGJhY2sgdG9cbiAgLy8gRnVuY3Rpb24gY29uc3RydWN0b3IgaWYgd2UncmUgaW4gZ2xvYmFsIHN0cmljdCBtb2RlLiBUaGF0IGlzIHNhZGx5IGEgZm9ybVxuICAvLyBvZiBpbmRpcmVjdCBldmFsIHdoaWNoIHZpb2xhdGVzIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5LlxuICAoZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMgfHwgKHR5cGVvZiBzZWxmID09PSBcIm9iamVjdFwiICYmIHNlbGYpO1xuICB9KSgpIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKVxuKTtcbiIsImltcG9ydCByZXF1ZXN0IGZyb20gJ0AvdXRpbHMvcmVxdWVzdCdcclxuY29uc3Qgc2VydmljZVRpdGxlID0gJy9pbWcnXHJcbi8vR0VUIOS8oOWPgumcgOimgeeUqCBwYXJhbXNcclxuLy9QT1NUIOS8oOWPgumcgOimgeeUqCBkYXRhXHJcblxyXG4vL+iOt+WPlmJhbm5lcuWIl+ihqFxyXG5leHBvcnQgZnVuY3Rpb24gdGlrdG9rVXNlckltZ3MoKSB7XHJcblx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0dXJsOiBgJHtzZXJ2aWNlVGl0bGV9L2ltZy9taW5pL3Rpa3Rvay90aWt0b2tVc2VySW1nc2AsXHJcblx0XHRtZXRob2Q6ICdnZXQnXHJcblx0fSlcclxufVxyXG4vLyDov5HmnJ/nsr7pgInlm77niYfliJfooahcclxuZXhwb3J0IGZ1bmN0aW9uIGltZ0xpc3RzKGRhdGEpIHtcclxuXHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHR1cmw6IGAke3NlcnZpY2VUaXRsZX0vaW1nL21pbmkvdGlrdG9rL2ltZ0xpc3RzYCxcclxuXHRcdG1ldGhvZDogJ3Bvc3QnLFxyXG5cdFx0ZGF0YVxyXG5cdH0pXHJcbn1cclxuLy/nlKjmiLfor6bmg4XpobUt5qC55o2u5pCc57Si56CB5p+l6K+i55So5oi35Zu+54mH5YiX6KGoXHJcbmV4cG9ydCBmdW5jdGlvbiB0aWt0b2tVc2VyRGV0YWlscyhkYXRhKSB7XHJcblx0cmV0dXJuIHJlcXVlc3Qoe1xyXG5cdFx0dXJsOiBgJHtzZXJ2aWNlVGl0bGV9L2ltZy9taW5pL3Rpa3Rvay90aWt0b2tVc2VySW1nc0RldGFpbHNgLFxyXG5cdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRkYXRhXHJcblx0fSlcclxufVxyXG5cclxuIiwiaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiXHJcbmltcG9ydCBxcyBmcm9tIFwicXNcIlxyXG5pbXBvcnQgVnVlIGZyb20gXCJ2dWVcIlxyXG5cclxuY29uc3Qgc2VydmljZSA9IGF4aW9zLmNyZWF0ZSh7XHJcblx0d2l0aENyZWRlbnRpYWxzOiB0cnVlLFxyXG5cdGNyb3NzRG9tYWluOiB0cnVlLFxyXG5cdGJhc2VVUkw6IFZ1ZS5wcm90b3R5cGUuYmFzZVVSTCwgLy/ov5nkuKpiYXNlVVJM5piv5oiR5ZyobWFpbi5qc+S4i+mFjee9rueahOivt+axgnVybFxyXG5cdHRpbWVvdXQ6IDEwMDAwXHJcbn0pXHJcblxyXG5cclxuLy8gcmVxdWVzdOaLpuaIquWZqCzlnKjor7fmsYLkuYvliY3lgZrkuIDkupvlpITnkIZcclxuc2VydmljZS5pbnRlcmNlcHRvcnMucmVxdWVzdC51c2UoXHJcblx0Y29uZmlnID0+IHtcclxuXHRcdC8vIGlmIChzdG9yZS5zdGF0ZS50b2tlbikge1xyXG5cdFx0Ly8gICAgIC8vIOe7meivt+axguWktOa3u+WKoHVzZXItdG9rZW5cclxuXHRcdC8vICAgICBjb25maWcuaGVhZGVyc1tcInVzZXItdG9rZW5cIl0gPSBzdG9yZS5zdGF0ZS50b2tlbjtcclxuXHRcdC8vIH1cclxuXHRcdGNvbmZpZy5oZWFkZXJzWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uJ1xyXG5cdFx0Ly8gY29uZmlnLm1ldGhvZCA9PT0gJ3Bvc3QnID9cclxuXHRcdC8vIFx0Y29uZmlnLmRhdGEgPSBxcy5zdHJpbmdpZnkoeyAuLi5jb25maWcuZGF0YVxyXG5cdFx0Ly8gXHR9KSA6XHJcblx0XHQvLyBcdGNvbmZpZy5wYXJhbXMgPSB7IC4uLmNvbmZpZy5wYXJhbXNcclxuXHRcdC8vIFx0fTtcclxuXHRcdGNvbnNvbGUubG9nKCfor7fmsYLmi6bmiKrmiJDlip8nKVxyXG5cdFx0Y29uc29sZS5sb2coY29uZmlnKVxyXG5cdFx0cmV0dXJuIGNvbmZpZztcclxuXHR9LFxyXG5cdGVycm9yID0+IHtcclxuXHRcdGNvbnNvbGUubG9nKGVycm9yKTsgLy8gZm9yIGRlYnVnXHJcblx0XHRyZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xyXG5cdH1cclxuKTtcclxuXHJcbi8v6YWN572u5oiQ5Yqf5ZCO55qE5oum5oiq5ZmoXHJcbnNlcnZpY2UuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZShyZXMgPT4ge1xyXG5cdGNvbnNvbGUubG9nKCfov5Tlm57lj4LmlbAnLHJlcylcclxuXHRyZXR1cm4gcmVzXHJcblx0Ly8gaWYgKHJlcy5kYXRhLnN0YXR1cyA9PSAyMDApIHtcclxuXHQvLyBcdHJldHVybiByZXNcclxuXHQvLyB9IGVsc2Uge1xyXG5cdC8vIFx0cmV0dXJuIFByb21pc2UucmVqZWN0KHJlcy5kYXRhLm1zZyk7XHJcblx0Ly8gfVxyXG59LCBlcnJvciA9PiB7XHJcblx0cmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKVxyXG59KVxyXG5cclxuYXhpb3MuZGVmYXVsdHMuYWRhcHRlciA9IGZ1bmN0aW9uKGNvbmZpZykgeyAvL+iHquW3seWumuS5ieS4qumAgumFjeWZqO+8jOeUqOadpemAgumFjXVuaWFwcOeahOivreazlVxyXG5cdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHQvLyBjb25zb2xlLmxvZyhjb25maWcpXHJcblx0XHR2YXIgc2V0dGxlID0gcmVxdWlyZSgnYXhpb3MvbGliL2NvcmUvc2V0dGxlJyk7XHJcblx0XHR2YXIgYnVpbGRVUkwgPSByZXF1aXJlKCdheGlvcy9saWIvaGVscGVycy9idWlsZFVSTCcpO1xyXG5cdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRtZXRob2Q6IGNvbmZpZy5tZXRob2QudG9VcHBlckNhc2UoKSxcclxuXHRcdFx0dXJsOiBjb25maWcuYmFzZVVSTCArIGJ1aWxkVVJMKGNvbmZpZy51cmwsIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKSxcclxuXHRcdFx0aGVhZGVyOiBjb25maWcuaGVhZGVycyxcclxuXHRcdFx0ZGF0YTogY29uZmlnLmRhdGEsXHJcblx0XHRcdGRhdGFUeXBlOiBjb25maWcuZGF0YVR5cGUsXHJcblx0XHRcdHJlc3BvbnNlVHlwZTogY29uZmlnLnJlc3BvbnNlVHlwZSxcclxuXHRcdFx0c3NsVmVyaWZ5OiBjb25maWcuc3NsVmVyaWZ5LFxyXG5cdFx0XHRjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzcG9uc2UpIHtcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhcIuaJp+ihjOWujOaIkO+8mlwiLCByZXNwb25zZSlcclxuXHRcdFx0XHRyZXNwb25zZSA9IHtcclxuXHRcdFx0XHRcdGRhdGE6IHJlc3BvbnNlLmRhdGEsXHJcblx0XHRcdFx0XHRzdGF0dXM6IHJlc3BvbnNlLnN0YXR1c0NvZGUsXHJcblx0XHRcdFx0XHRlcnJNc2c6IHJlc3BvbnNlLmVyck1zZyxcclxuXHRcdFx0XHRcdGhlYWRlcjogcmVzcG9uc2UuaGVhZGVyLFxyXG5cdFx0XHRcdFx0Y29uZmlnOiBjb25maWdcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdHNldHRsZShyZXNvbHZlLCByZWplY3QsIHJlc3BvbnNlKTtcclxuXHRcdFx0fVxyXG5cdFx0fSlcclxuXHR9KVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IHNlcnZpY2UiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL2F4aW9zJyk7IiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xyXG52YXIgYmluZCA9IHJlcXVpcmUoJy4vaGVscGVycy9iaW5kJyk7XHJcbnZhciBBeGlvcyA9IHJlcXVpcmUoJy4vY29yZS9BeGlvcycpO1xyXG52YXIgbWVyZ2VDb25maWcgPSByZXF1aXJlKCcuL2NvcmUvbWVyZ2VDb25maWcnKTtcclxudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi9kZWZhdWx0cycpO1xyXG5cclxuLyoqXHJcbiAqIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiBBeGlvc1xyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdH0gZGVmYXVsdENvbmZpZyBUaGUgZGVmYXVsdCBjb25maWcgZm9yIHRoZSBpbnN0YW5jZVxyXG4gKiBAcmV0dXJuIHtBeGlvc30gQSBuZXcgaW5zdGFuY2Ugb2YgQXhpb3NcclxuICovXHJcbmZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlKGRlZmF1bHRDb25maWcpIHtcclxuICB2YXIgY29udGV4dCA9IG5ldyBBeGlvcyhkZWZhdWx0Q29uZmlnKTtcclxuICB2YXIgaW5zdGFuY2UgPSBiaW5kKEF4aW9zLnByb3RvdHlwZS5yZXF1ZXN0LCBjb250ZXh0KTtcclxuXHJcbiAgLy8gQ29weSBheGlvcy5wcm90b3R5cGUgdG8gaW5zdGFuY2VcclxuICB1dGlscy5leHRlbmQoaW5zdGFuY2UsIEF4aW9zLnByb3RvdHlwZSwgY29udGV4dCk7XHJcblxyXG4gIC8vIENvcHkgY29udGV4dCB0byBpbnN0YW5jZVxyXG4gIHV0aWxzLmV4dGVuZChpbnN0YW5jZSwgY29udGV4dCk7XHJcblxyXG4gIC8vIEZhY3RvcnkgZm9yIGNyZWF0aW5nIG5ldyBpbnN0YW5jZXNcclxuICBpbnN0YW5jZS5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoaW5zdGFuY2VDb25maWcpIHtcclxuICAgIHJldHVybiBjcmVhdGVJbnN0YW5jZShtZXJnZUNvbmZpZyhkZWZhdWx0Q29uZmlnLCBpbnN0YW5jZUNvbmZpZykpO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiBpbnN0YW5jZTtcclxufVxyXG5cclxuLy8gQ3JlYXRlIHRoZSBkZWZhdWx0IGluc3RhbmNlIHRvIGJlIGV4cG9ydGVkXHJcbnZhciBheGlvcyA9IGNyZWF0ZUluc3RhbmNlKGRlZmF1bHRzKTtcclxuXHJcbi8vIEV4cG9zZSBBeGlvcyBjbGFzcyB0byBhbGxvdyBjbGFzcyBpbmhlcml0YW5jZVxyXG5heGlvcy5BeGlvcyA9IEF4aW9zO1xyXG5cclxuLy8gRXhwb3NlIENhbmNlbCAmIENhbmNlbFRva2VuXHJcbmF4aW9zLkNhbmNlbCA9IHJlcXVpcmUoJy4vY2FuY2VsL0NhbmNlbCcpO1xyXG5heGlvcy5DYW5jZWxUb2tlbiA9IHJlcXVpcmUoJy4vY2FuY2VsL0NhbmNlbFRva2VuJyk7XHJcbmF4aW9zLmlzQ2FuY2VsID0gcmVxdWlyZSgnLi9jYW5jZWwvaXNDYW5jZWwnKTtcclxuYXhpb3MuVkVSU0lPTiA9IHJlcXVpcmUoJy4vZW52L2RhdGEnKS52ZXJzaW9uO1xyXG5cclxuLy8gRXhwb3NlIGFsbC9zcHJlYWRcclxuYXhpb3MuYWxsID0gZnVuY3Rpb24gYWxsKHByb21pc2VzKSB7XHJcbiAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcclxufTtcclxuYXhpb3Muc3ByZWFkID0gcmVxdWlyZSgnLi9oZWxwZXJzL3NwcmVhZCcpO1xyXG5cclxuLy8gRXhwb3NlIGlzQXhpb3NFcnJvclxyXG5heGlvcy5pc0F4aW9zRXJyb3IgPSByZXF1aXJlKCcuL2hlbHBlcnMvaXNBeGlvc0Vycm9yJyk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGF4aW9zO1xyXG5cclxuLy8gQWxsb3cgdXNlIG9mIGRlZmF1bHQgaW1wb3J0IHN5bnRheCBpbiBUeXBlU2NyaXB0XHJcbm1vZHVsZS5leHBvcnRzLmRlZmF1bHQgPSBheGlvcztcclxuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxudmFyIGJpbmQgPSByZXF1aXJlKCcuL2hlbHBlcnMvYmluZCcpO1xyXG5cclxuLy8gdXRpbHMgaXMgYSBsaWJyYXJ5IG9mIGdlbmVyaWMgaGVscGVyIGZ1bmN0aW9ucyBub24tc3BlY2lmaWMgdG8gYXhpb3NcclxuXHJcbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYW4gQXJyYXlcclxuICpcclxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBBcnJheSwgb3RoZXJ3aXNlIGZhbHNlXHJcbiAqL1xyXG5mdW5jdGlvbiBpc0FycmF5KHZhbCkge1xyXG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyB1bmRlZmluZWRcclxuICpcclxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkLCBvdGhlcndpc2UgZmFsc2VcclxuICovXHJcbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbCkge1xyXG4gIHJldHVybiB0eXBlb2YgdmFsID09PSAndW5kZWZpbmVkJztcclxufVxyXG5cclxuLyoqXHJcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgQnVmZmVyXHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcclxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxyXG4gKi9cclxuZnVuY3Rpb24gaXNCdWZmZXIodmFsKSB7XHJcbiAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiAhaXNVbmRlZmluZWQodmFsKSAmJiB2YWwuY29uc3RydWN0b3IgIT09IG51bGwgJiYgIWlzVW5kZWZpbmVkKHZhbC5jb25zdHJ1Y3RvcilcclxuICAgICYmIHR5cGVvZiB2YWwuY29uc3RydWN0b3IuaXNCdWZmZXIgPT09ICdmdW5jdGlvbicgJiYgdmFsLmNvbnN0cnVjdG9yLmlzQnVmZmVyKHZhbCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBBcnJheUJ1ZmZlclxyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XHJcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGFuIEFycmF5QnVmZmVyLCBvdGhlcndpc2UgZmFsc2VcclxuICovXHJcbmZ1bmN0aW9uIGlzQXJyYXlCdWZmZXIodmFsKSB7XHJcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJztcclxufVxyXG5cclxuLyoqXHJcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRm9ybURhdGFcclxuICpcclxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBGb3JtRGF0YSwgb3RoZXJ3aXNlIGZhbHNlXHJcbiAqL1xyXG5mdW5jdGlvbiBpc0Zvcm1EYXRhKHZhbCkge1xyXG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEZvcm1EYXRhXSc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIHZpZXcgb24gYW4gQXJyYXlCdWZmZXJcclxuICpcclxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIHZpZXcgb24gYW4gQXJyYXlCdWZmZXIsIG90aGVyd2lzZSBmYWxzZVxyXG4gKi9cclxuZnVuY3Rpb24gaXNBcnJheUJ1ZmZlclZpZXcodmFsKSB7XHJcbiAgdmFyIHJlc3VsdDtcclxuICBpZiAoKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpICYmIChBcnJheUJ1ZmZlci5pc1ZpZXcpKSB7XHJcbiAgICByZXN1bHQgPSBBcnJheUJ1ZmZlci5pc1ZpZXcodmFsKTtcclxuICB9IGVsc2Uge1xyXG4gICAgcmVzdWx0ID0gKHZhbCkgJiYgKHZhbC5idWZmZXIpICYmIChpc0FycmF5QnVmZmVyKHZhbC5idWZmZXIpKTtcclxuICB9XHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuLyoqXHJcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgU3RyaW5nXHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcclxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBTdHJpbmcsIG90aGVyd2lzZSBmYWxzZVxyXG4gKi9cclxuZnVuY3Rpb24gaXNTdHJpbmcodmFsKSB7XHJcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnO1xyXG59XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBOdW1iZXJcclxuICpcclxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIE51bWJlciwgb3RoZXJ3aXNlIGZhbHNlXHJcbiAqL1xyXG5mdW5jdGlvbiBpc051bWJlcih2YWwpIHtcclxuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ251bWJlcic7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhbiBPYmplY3RcclxuICpcclxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhbiBPYmplY3QsIG90aGVyd2lzZSBmYWxzZVxyXG4gKi9cclxuZnVuY3Rpb24gaXNPYmplY3QodmFsKSB7XHJcbiAgcmV0dXJuIHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JztcclxufVxyXG5cclxuLyoqXHJcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgcGxhaW4gT2JqZWN0XHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcclxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIHBsYWluIE9iamVjdCwgb3RoZXJ3aXNlIGZhbHNlXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbCkge1xyXG4gIGlmICh0b1N0cmluZy5jYWxsKHZhbCkgIT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICB2YXIgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbCk7XHJcbiAgcmV0dXJuIHByb3RvdHlwZSA9PT0gbnVsbCB8fCBwcm90b3R5cGUgPT09IE9iamVjdC5wcm90b3R5cGU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIERhdGVcclxuICpcclxuICogQHBhcmFtIHtPYmplY3R9IHZhbCBUaGUgdmFsdWUgdG8gdGVzdFxyXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB2YWx1ZSBpcyBhIERhdGUsIG90aGVyd2lzZSBmYWxzZVxyXG4gKi9cclxuZnVuY3Rpb24gaXNEYXRlKHZhbCkge1xyXG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IERhdGVdJztcclxufVxyXG5cclxuLyoqXHJcbiAqIERldGVybWluZSBpZiBhIHZhbHVlIGlzIGEgRmlsZVxyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XHJcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgRmlsZSwgb3RoZXJ3aXNlIGZhbHNlXHJcbiAqL1xyXG5mdW5jdGlvbiBpc0ZpbGUodmFsKSB7XHJcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgRmlsZV0nO1xyXG59XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBCbG9iXHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcclxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBCbG9iLCBvdGhlcndpc2UgZmFsc2VcclxuICovXHJcbmZ1bmN0aW9uIGlzQmxvYih2YWwpIHtcclxuICByZXR1cm4gdG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBCbG9iXSc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIEZ1bmN0aW9uXHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcclxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBGdW5jdGlvbiwgb3RoZXJ3aXNlIGZhbHNlXHJcbiAqL1xyXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbCkge1xyXG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmUgaWYgYSB2YWx1ZSBpcyBhIFN0cmVhbVxyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdH0gdmFsIFRoZSB2YWx1ZSB0byB0ZXN0XHJcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHZhbHVlIGlzIGEgU3RyZWFtLCBvdGhlcndpc2UgZmFsc2VcclxuICovXHJcbmZ1bmN0aW9uIGlzU3RyZWFtKHZhbCkge1xyXG4gIHJldHVybiBpc09iamVjdCh2YWwpICYmIGlzRnVuY3Rpb24odmFsLnBpcGUpO1xyXG59XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lIGlmIGEgdmFsdWUgaXMgYSBVUkxTZWFyY2hQYXJhbXMgb2JqZWN0XHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWwgVGhlIHZhbHVlIHRvIHRlc3RcclxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdmFsdWUgaXMgYSBVUkxTZWFyY2hQYXJhbXMgb2JqZWN0LCBvdGhlcndpc2UgZmFsc2VcclxuICovXHJcbmZ1bmN0aW9uIGlzVVJMU2VhcmNoUGFyYW1zKHZhbCkge1xyXG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IFVSTFNlYXJjaFBhcmFtc10nO1xyXG59XHJcblxyXG4vKipcclxuICogVHJpbSBleGNlc3Mgd2hpdGVzcGFjZSBvZmYgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGEgc3RyaW5nXHJcbiAqXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgVGhlIFN0cmluZyB0byB0cmltXHJcbiAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSBTdHJpbmcgZnJlZWQgb2YgZXhjZXNzIHdoaXRlc3BhY2VcclxuICovXHJcbmZ1bmN0aW9uIHRyaW0oc3RyKSB7XHJcbiAgcmV0dXJuIHN0ci50cmltID8gc3RyLnRyaW0oKSA6IHN0ci5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJyk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmUgaWYgd2UncmUgcnVubmluZyBpbiBhIHN0YW5kYXJkIGJyb3dzZXIgZW52aXJvbm1lbnRcclxuICpcclxuICogVGhpcyBhbGxvd3MgYXhpb3MgdG8gcnVuIGluIGEgd2ViIHdvcmtlciwgYW5kIHJlYWN0LW5hdGl2ZS5cclxuICogQm90aCBlbnZpcm9ubWVudHMgc3VwcG9ydCBYTUxIdHRwUmVxdWVzdCwgYnV0IG5vdCBmdWxseSBzdGFuZGFyZCBnbG9iYWxzLlxyXG4gKlxyXG4gKiB3ZWIgd29ya2VyczpcclxuICogIHR5cGVvZiB3aW5kb3cgLT4gdW5kZWZpbmVkXHJcbiAqICB0eXBlb2YgZG9jdW1lbnQgLT4gdW5kZWZpbmVkXHJcbiAqXHJcbiAqIHJlYWN0LW5hdGl2ZTpcclxuICogIG5hdmlnYXRvci5wcm9kdWN0IC0+ICdSZWFjdE5hdGl2ZSdcclxuICogbmF0aXZlc2NyaXB0XHJcbiAqICBuYXZpZ2F0b3IucHJvZHVjdCAtPiAnTmF0aXZlU2NyaXB0JyBvciAnTlMnXHJcbiAqL1xyXG5mdW5jdGlvbiBpc1N0YW5kYXJkQnJvd3NlckVudigpIHtcclxuICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgKG5hdmlnYXRvci5wcm9kdWN0ID09PSAnUmVhY3ROYXRpdmUnIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0b3IucHJvZHVjdCA9PT0gJ05hdGl2ZVNjcmlwdCcgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRvci5wcm9kdWN0ID09PSAnTlMnKSkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICByZXR1cm4gKFxyXG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcclxuICAgIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCdcclxuICApO1xyXG59XHJcblxyXG4vKipcclxuICogSXRlcmF0ZSBvdmVyIGFuIEFycmF5IG9yIGFuIE9iamVjdCBpbnZva2luZyBhIGZ1bmN0aW9uIGZvciBlYWNoIGl0ZW0uXHJcbiAqXHJcbiAqIElmIGBvYmpgIGlzIGFuIEFycmF5IGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIHBhc3NpbmdcclxuICogdGhlIHZhbHVlLCBpbmRleCwgYW5kIGNvbXBsZXRlIGFycmF5IGZvciBlYWNoIGl0ZW0uXHJcbiAqXHJcbiAqIElmICdvYmonIGlzIGFuIE9iamVjdCBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBwYXNzaW5nXHJcbiAqIHRoZSB2YWx1ZSwga2V5LCBhbmQgY29tcGxldGUgb2JqZWN0IGZvciBlYWNoIHByb3BlcnR5LlxyXG4gKlxyXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gb2JqIFRoZSBvYmplY3QgdG8gaXRlcmF0ZVxyXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgY2FsbGJhY2sgdG8gaW52b2tlIGZvciBlYWNoIGl0ZW1cclxuICovXHJcbmZ1bmN0aW9uIGZvckVhY2gob2JqLCBmbikge1xyXG4gIC8vIERvbid0IGJvdGhlciBpZiBubyB2YWx1ZSBwcm92aWRlZFxyXG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIC8vIEZvcmNlIGFuIGFycmF5IGlmIG5vdCBhbHJlYWR5IHNvbWV0aGluZyBpdGVyYWJsZVxyXG4gIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xyXG4gICAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXHJcbiAgICBvYmogPSBbb2JqXTtcclxuICB9XHJcblxyXG4gIGlmIChpc0FycmF5KG9iaikpIHtcclxuICAgIC8vIEl0ZXJhdGUgb3ZlciBhcnJheSB2YWx1ZXNcclxuICAgIGZvciAodmFyIGkgPSAwLCBsID0gb2JqLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICBmbi5jYWxsKG51bGwsIG9ialtpXSwgaSwgb2JqKTtcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgLy8gSXRlcmF0ZSBvdmVyIG9iamVjdCBrZXlzXHJcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XHJcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XHJcbiAgICAgICAgZm4uY2FsbChudWxsLCBvYmpba2V5XSwga2V5LCBvYmopO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogQWNjZXB0cyB2YXJhcmdzIGV4cGVjdGluZyBlYWNoIGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCwgdGhlblxyXG4gKiBpbW11dGFibHkgbWVyZ2VzIHRoZSBwcm9wZXJ0aWVzIG9mIGVhY2ggb2JqZWN0IGFuZCByZXR1cm5zIHJlc3VsdC5cclxuICpcclxuICogV2hlbiBtdWx0aXBsZSBvYmplY3RzIGNvbnRhaW4gdGhlIHNhbWUga2V5IHRoZSBsYXRlciBvYmplY3QgaW5cclxuICogdGhlIGFyZ3VtZW50cyBsaXN0IHdpbGwgdGFrZSBwcmVjZWRlbmNlLlxyXG4gKlxyXG4gKiBFeGFtcGxlOlxyXG4gKlxyXG4gKiBgYGBqc1xyXG4gKiB2YXIgcmVzdWx0ID0gbWVyZ2Uoe2ZvbzogMTIzfSwge2ZvbzogNDU2fSk7XHJcbiAqIGNvbnNvbGUubG9nKHJlc3VsdC5mb28pOyAvLyBvdXRwdXRzIDQ1NlxyXG4gKiBgYGBcclxuICpcclxuICogQHBhcmFtIHtPYmplY3R9IG9iajEgT2JqZWN0IHRvIG1lcmdlXHJcbiAqIEByZXR1cm5zIHtPYmplY3R9IFJlc3VsdCBvZiBhbGwgbWVyZ2UgcHJvcGVydGllc1xyXG4gKi9cclxuZnVuY3Rpb24gbWVyZ2UoLyogb2JqMSwgb2JqMiwgb2JqMywgLi4uICovKSB7XHJcbiAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gIGZ1bmN0aW9uIGFzc2lnblZhbHVlKHZhbCwga2V5KSB7XHJcbiAgICBpZiAoaXNQbGFpbk9iamVjdChyZXN1bHRba2V5XSkgJiYgaXNQbGFpbk9iamVjdCh2YWwpKSB7XHJcbiAgICAgIHJlc3VsdFtrZXldID0gbWVyZ2UocmVzdWx0W2tleV0sIHZhbCk7XHJcbiAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3QodmFsKSkge1xyXG4gICAgICByZXN1bHRba2V5XSA9IG1lcmdlKHt9LCB2YWwpO1xyXG4gICAgfSBlbHNlIGlmIChpc0FycmF5KHZhbCkpIHtcclxuICAgICAgcmVzdWx0W2tleV0gPSB2YWwuc2xpY2UoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc3VsdFtrZXldID0gdmFsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XHJcbiAgICBmb3JFYWNoKGFyZ3VtZW50c1tpXSwgYXNzaWduVmFsdWUpO1xyXG4gIH1cclxuICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG4vKipcclxuICogRXh0ZW5kcyBvYmplY3QgYSBieSBtdXRhYmx5IGFkZGluZyB0byBpdCB0aGUgcHJvcGVydGllcyBvZiBvYmplY3QgYi5cclxuICpcclxuICogQHBhcmFtIHtPYmplY3R9IGEgVGhlIG9iamVjdCB0byBiZSBleHRlbmRlZFxyXG4gKiBAcGFyYW0ge09iamVjdH0gYiBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSB0aGlzQXJnIFRoZSBvYmplY3QgdG8gYmluZCBmdW5jdGlvbiB0b1xyXG4gKiBAcmV0dXJuIHtPYmplY3R9IFRoZSByZXN1bHRpbmcgdmFsdWUgb2Ygb2JqZWN0IGFcclxuICovXHJcbmZ1bmN0aW9uIGV4dGVuZChhLCBiLCB0aGlzQXJnKSB7XHJcbiAgZm9yRWFjaChiLCBmdW5jdGlvbiBhc3NpZ25WYWx1ZSh2YWwsIGtleSkge1xyXG4gICAgaWYgKHRoaXNBcmcgJiYgdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBhW2tleV0gPSBiaW5kKHZhbCwgdGhpc0FyZyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhW2tleV0gPSB2YWw7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGE7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgYnl0ZSBvcmRlciBtYXJrZXIuIFRoaXMgY2F0Y2hlcyBFRiBCQiBCRiAodGhlIFVURi04IEJPTSlcclxuICpcclxuICogQHBhcmFtIHtzdHJpbmd9IGNvbnRlbnQgd2l0aCBCT01cclxuICogQHJldHVybiB7c3RyaW5nfSBjb250ZW50IHZhbHVlIHdpdGhvdXQgQk9NXHJcbiAqL1xyXG5mdW5jdGlvbiBzdHJpcEJPTShjb250ZW50KSB7XHJcbiAgaWYgKGNvbnRlbnQuY2hhckNvZGVBdCgwKSA9PT0gMHhGRUZGKSB7XHJcbiAgICBjb250ZW50ID0gY29udGVudC5zbGljZSgxKTtcclxuICB9XHJcbiAgcmV0dXJuIGNvbnRlbnQ7XHJcbn1cclxuXHJcbm1vZHVsZS5leHBvcnRzID0ge1xyXG4gIGlzQXJyYXk6IGlzQXJyYXksXHJcbiAgaXNBcnJheUJ1ZmZlcjogaXNBcnJheUJ1ZmZlcixcclxuICBpc0J1ZmZlcjogaXNCdWZmZXIsXHJcbiAgaXNGb3JtRGF0YTogaXNGb3JtRGF0YSxcclxuICBpc0FycmF5QnVmZmVyVmlldzogaXNBcnJheUJ1ZmZlclZpZXcsXHJcbiAgaXNTdHJpbmc6IGlzU3RyaW5nLFxyXG4gIGlzTnVtYmVyOiBpc051bWJlcixcclxuICBpc09iamVjdDogaXNPYmplY3QsXHJcbiAgaXNQbGFpbk9iamVjdDogaXNQbGFpbk9iamVjdCxcclxuICBpc1VuZGVmaW5lZDogaXNVbmRlZmluZWQsXHJcbiAgaXNEYXRlOiBpc0RhdGUsXHJcbiAgaXNGaWxlOiBpc0ZpbGUsXHJcbiAgaXNCbG9iOiBpc0Jsb2IsXHJcbiAgaXNGdW5jdGlvbjogaXNGdW5jdGlvbixcclxuICBpc1N0cmVhbTogaXNTdHJlYW0sXHJcbiAgaXNVUkxTZWFyY2hQYXJhbXM6IGlzVVJMU2VhcmNoUGFyYW1zLFxyXG4gIGlzU3RhbmRhcmRCcm93c2VyRW52OiBpc1N0YW5kYXJkQnJvd3NlckVudixcclxuICBmb3JFYWNoOiBmb3JFYWNoLFxyXG4gIG1lcmdlOiBtZXJnZSxcclxuICBleHRlbmQ6IGV4dGVuZCxcclxuICB0cmltOiB0cmltLFxyXG4gIHN0cmlwQk9NOiBzdHJpcEJPTVxyXG59O1xyXG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJpbmQoZm4sIHRoaXNBcmcpIHtcclxuICByZXR1cm4gZnVuY3Rpb24gd3JhcCgpIHtcclxuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm4uYXBwbHkodGhpc0FyZywgYXJncyk7XHJcbiAgfTtcclxufTtcclxuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xyXG52YXIgYnVpbGRVUkwgPSByZXF1aXJlKCcuLi9oZWxwZXJzL2J1aWxkVVJMJyk7XHJcbnZhciBJbnRlcmNlcHRvck1hbmFnZXIgPSByZXF1aXJlKCcuL0ludGVyY2VwdG9yTWFuYWdlcicpO1xyXG52YXIgZGlzcGF0Y2hSZXF1ZXN0ID0gcmVxdWlyZSgnLi9kaXNwYXRjaFJlcXVlc3QnKTtcclxudmFyIG1lcmdlQ29uZmlnID0gcmVxdWlyZSgnLi9tZXJnZUNvbmZpZycpO1xyXG52YXIgdmFsaWRhdG9yID0gcmVxdWlyZSgnLi4vaGVscGVycy92YWxpZGF0b3InKTtcclxuXHJcbnZhciB2YWxpZGF0b3JzID0gdmFsaWRhdG9yLnZhbGlkYXRvcnM7XHJcbi8qKlxyXG4gKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgQXhpb3NcclxuICpcclxuICogQHBhcmFtIHtPYmplY3R9IGluc3RhbmNlQ29uZmlnIFRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIGluc3RhbmNlXHJcbiAqL1xyXG5mdW5jdGlvbiBBeGlvcyhpbnN0YW5jZUNvbmZpZykge1xyXG4gIHRoaXMuZGVmYXVsdHMgPSBpbnN0YW5jZUNvbmZpZztcclxuICB0aGlzLmludGVyY2VwdG9ycyA9IHtcclxuICAgIHJlcXVlc3Q6IG5ldyBJbnRlcmNlcHRvck1hbmFnZXIoKSxcclxuICAgIHJlc3BvbnNlOiBuZXcgSW50ZXJjZXB0b3JNYW5hZ2VyKClcclxuICB9O1xyXG59XHJcblxyXG4vKipcclxuICogRGlzcGF0Y2ggYSByZXF1ZXN0XHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZyBzcGVjaWZpYyBmb3IgdGhpcyByZXF1ZXN0IChtZXJnZWQgd2l0aCB0aGlzLmRlZmF1bHRzKVxyXG4gKi9cclxuQXhpb3MucHJvdG90eXBlLnJlcXVlc3QgPSBmdW5jdGlvbiByZXF1ZXN0KGNvbmZpZ09yVXJsLCBjb25maWcpIHtcclxuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cclxuICAvLyBBbGxvdyBmb3IgYXhpb3MoJ2V4YW1wbGUvdXJsJ1ssIGNvbmZpZ10pIGEgbGEgZmV0Y2ggQVBJXHJcbiAgaWYgKHR5cGVvZiBjb25maWdPclVybCA9PT0gJ3N0cmluZycpIHtcclxuICAgIGNvbmZpZyA9IGNvbmZpZyB8fCB7fTtcclxuICAgIGNvbmZpZy51cmwgPSBjb25maWdPclVybDtcclxuICB9IGVsc2Uge1xyXG4gICAgY29uZmlnID0gY29uZmlnT3JVcmwgfHwge307XHJcbiAgfVxyXG5cclxuICBjb25maWcgPSBtZXJnZUNvbmZpZyh0aGlzLmRlZmF1bHRzLCBjb25maWcpO1xyXG5cclxuICAvLyBTZXQgY29uZmlnLm1ldGhvZFxyXG4gIGlmIChjb25maWcubWV0aG9kKSB7XHJcbiAgICBjb25maWcubWV0aG9kID0gY29uZmlnLm1ldGhvZC50b0xvd2VyQ2FzZSgpO1xyXG4gIH0gZWxzZSBpZiAodGhpcy5kZWZhdWx0cy5tZXRob2QpIHtcclxuICAgIGNvbmZpZy5tZXRob2QgPSB0aGlzLmRlZmF1bHRzLm1ldGhvZC50b0xvd2VyQ2FzZSgpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25maWcubWV0aG9kID0gJ2dldCc7XHJcbiAgfVxyXG5cclxuICB2YXIgdHJhbnNpdGlvbmFsID0gY29uZmlnLnRyYW5zaXRpb25hbDtcclxuXHJcbiAgaWYgKHRyYW5zaXRpb25hbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICB2YWxpZGF0b3IuYXNzZXJ0T3B0aW9ucyh0cmFuc2l0aW9uYWwsIHtcclxuICAgICAgc2lsZW50SlNPTlBhcnNpbmc6IHZhbGlkYXRvcnMudHJhbnNpdGlvbmFsKHZhbGlkYXRvcnMuYm9vbGVhbiksXHJcbiAgICAgIGZvcmNlZEpTT05QYXJzaW5nOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4pLFxyXG4gICAgICBjbGFyaWZ5VGltZW91dEVycm9yOiB2YWxpZGF0b3JzLnRyYW5zaXRpb25hbCh2YWxpZGF0b3JzLmJvb2xlYW4pXHJcbiAgICB9LCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvLyBmaWx0ZXIgb3V0IHNraXBwZWQgaW50ZXJjZXB0b3JzXHJcbiAgdmFyIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluID0gW107XHJcbiAgdmFyIHN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycyA9IHRydWU7XHJcbiAgdGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKGZ1bmN0aW9uIHVuc2hpZnRSZXF1ZXN0SW50ZXJjZXB0b3JzKGludGVyY2VwdG9yKSB7XHJcbiAgICBpZiAodHlwZW9mIGludGVyY2VwdG9yLnJ1bldoZW4gPT09ICdmdW5jdGlvbicgJiYgaW50ZXJjZXB0b3IucnVuV2hlbihjb25maWcpID09PSBmYWxzZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzID0gc3luY2hyb25vdXNSZXF1ZXN0SW50ZXJjZXB0b3JzICYmIGludGVyY2VwdG9yLnN5bmNocm9ub3VzO1xyXG5cclxuICAgIHJlcXVlc3RJbnRlcmNlcHRvckNoYWluLnVuc2hpZnQoaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XHJcbiAgfSk7XHJcblxyXG4gIHZhciByZXNwb25zZUludGVyY2VwdG9yQ2hhaW4gPSBbXTtcclxuICB0aGlzLmludGVyY2VwdG9ycy5yZXNwb25zZS5mb3JFYWNoKGZ1bmN0aW9uIHB1c2hSZXNwb25zZUludGVyY2VwdG9ycyhpbnRlcmNlcHRvcikge1xyXG4gICAgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLnB1c2goaW50ZXJjZXB0b3IuZnVsZmlsbGVkLCBpbnRlcmNlcHRvci5yZWplY3RlZCk7XHJcbiAgfSk7XHJcblxyXG4gIHZhciBwcm9taXNlO1xyXG5cclxuICBpZiAoIXN5bmNocm9ub3VzUmVxdWVzdEludGVyY2VwdG9ycykge1xyXG4gICAgdmFyIGNoYWluID0gW2Rpc3BhdGNoUmVxdWVzdCwgdW5kZWZpbmVkXTtcclxuXHJcbiAgICBBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShjaGFpbiwgcmVxdWVzdEludGVyY2VwdG9yQ2hhaW4pO1xyXG4gICAgY2hhaW4gPSBjaGFpbi5jb25jYXQocmVzcG9uc2VJbnRlcmNlcHRvckNoYWluKTtcclxuXHJcbiAgICBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKGNvbmZpZyk7XHJcbiAgICB3aGlsZSAoY2hhaW4ubGVuZ3RoKSB7XHJcbiAgICAgIHByb21pc2UgPSBwcm9taXNlLnRoZW4oY2hhaW4uc2hpZnQoKSwgY2hhaW4uc2hpZnQoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHByb21pc2U7XHJcbiAgfVxyXG5cclxuXHJcbiAgdmFyIG5ld0NvbmZpZyA9IGNvbmZpZztcclxuICB3aGlsZSAocmVxdWVzdEludGVyY2VwdG9yQ2hhaW4ubGVuZ3RoKSB7XHJcbiAgICB2YXIgb25GdWxmaWxsZWQgPSByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi5zaGlmdCgpO1xyXG4gICAgdmFyIG9uUmVqZWN0ZWQgPSByZXF1ZXN0SW50ZXJjZXB0b3JDaGFpbi5zaGlmdCgpO1xyXG4gICAgdHJ5IHtcclxuICAgICAgbmV3Q29uZmlnID0gb25GdWxmaWxsZWQobmV3Q29uZmlnKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIG9uUmVqZWN0ZWQoZXJyb3IpO1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRyeSB7XHJcbiAgICBwcm9taXNlID0gZGlzcGF0Y2hSZXF1ZXN0KG5ld0NvbmZpZyk7XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XHJcbiAgfVxyXG5cclxuICB3aGlsZSAocmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLmxlbmd0aCkge1xyXG4gICAgcHJvbWlzZSA9IHByb21pc2UudGhlbihyZXNwb25zZUludGVyY2VwdG9yQ2hhaW4uc2hpZnQoKSwgcmVzcG9uc2VJbnRlcmNlcHRvckNoYWluLnNoaWZ0KCkpO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHByb21pc2U7XHJcbn07XHJcblxyXG5BeGlvcy5wcm90b3R5cGUuZ2V0VXJpID0gZnVuY3Rpb24gZ2V0VXJpKGNvbmZpZykge1xyXG4gIGNvbmZpZyA9IG1lcmdlQ29uZmlnKHRoaXMuZGVmYXVsdHMsIGNvbmZpZyk7XHJcbiAgcmV0dXJuIGJ1aWxkVVJMKGNvbmZpZy51cmwsIGNvbmZpZy5wYXJhbXMsIGNvbmZpZy5wYXJhbXNTZXJpYWxpemVyKS5yZXBsYWNlKC9eXFw/LywgJycpO1xyXG59O1xyXG5cclxuLy8gUHJvdmlkZSBhbGlhc2VzIGZvciBzdXBwb3J0ZWQgcmVxdWVzdCBtZXRob2RzXHJcbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnLCAnb3B0aW9ucyddLCBmdW5jdGlvbiBmb3JFYWNoTWV0aG9kTm9EYXRhKG1ldGhvZCkge1xyXG4gIC8qZXNsaW50IGZ1bmMtbmFtZXM6MCovXHJcbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbih1cmwsIGNvbmZpZykge1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdChtZXJnZUNvbmZpZyhjb25maWcgfHwge30sIHtcclxuICAgICAgbWV0aG9kOiBtZXRob2QsXHJcbiAgICAgIHVybDogdXJsLFxyXG4gICAgICBkYXRhOiAoY29uZmlnIHx8IHt9KS5kYXRhXHJcbiAgICB9KSk7XHJcbiAgfTtcclxufSk7XHJcblxyXG51dGlscy5mb3JFYWNoKFsncG9zdCcsICdwdXQnLCAncGF0Y2gnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZFdpdGhEYXRhKG1ldGhvZCkge1xyXG4gIC8qZXNsaW50IGZ1bmMtbmFtZXM6MCovXHJcbiAgQXhpb3MucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbih1cmwsIGRhdGEsIGNvbmZpZykge1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdChtZXJnZUNvbmZpZyhjb25maWcgfHwge30sIHtcclxuICAgICAgbWV0aG9kOiBtZXRob2QsXHJcbiAgICAgIHVybDogdXJsLFxyXG4gICAgICBkYXRhOiBkYXRhXHJcbiAgICB9KSk7XHJcbiAgfTtcclxufSk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IEF4aW9zO1xyXG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XHJcblxyXG5mdW5jdGlvbiBlbmNvZGUodmFsKSB7XHJcbiAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh2YWwpLlxyXG4gICAgcmVwbGFjZSgvJTNBL2dpLCAnOicpLlxyXG4gICAgcmVwbGFjZSgvJTI0L2csICckJykuXHJcbiAgICByZXBsYWNlKC8lMkMvZ2ksICcsJykuXHJcbiAgICByZXBsYWNlKC8lMjAvZywgJysnKS5cclxuICAgIHJlcGxhY2UoLyU1Qi9naSwgJ1snKS5cclxuICAgIHJlcGxhY2UoLyU1RC9naSwgJ10nKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEJ1aWxkIGEgVVJMIGJ5IGFwcGVuZGluZyBwYXJhbXMgdG8gdGhlIGVuZFxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBiYXNlIG9mIHRoZSB1cmwgKGUuZy4sIGh0dHA6Ly93d3cuZ29vZ2xlLmNvbSlcclxuICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbXNdIFRoZSBwYXJhbXMgdG8gYmUgYXBwZW5kZWRcclxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGZvcm1hdHRlZCB1cmxcclxuICovXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYnVpbGRVUkwodXJsLCBwYXJhbXMsIHBhcmFtc1NlcmlhbGl6ZXIpIHtcclxuICAvKmVzbGludCBuby1wYXJhbS1yZWFzc2lnbjowKi9cclxuICBpZiAoIXBhcmFtcykge1xyXG4gICAgcmV0dXJuIHVybDtcclxuICB9XHJcblxyXG4gIHZhciBzZXJpYWxpemVkUGFyYW1zO1xyXG4gIGlmIChwYXJhbXNTZXJpYWxpemVyKSB7XHJcbiAgICBzZXJpYWxpemVkUGFyYW1zID0gcGFyYW1zU2VyaWFsaXplcihwYXJhbXMpO1xyXG4gIH0gZWxzZSBpZiAodXRpbHMuaXNVUkxTZWFyY2hQYXJhbXMocGFyYW1zKSkge1xyXG4gICAgc2VyaWFsaXplZFBhcmFtcyA9IHBhcmFtcy50b1N0cmluZygpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB2YXIgcGFydHMgPSBbXTtcclxuXHJcbiAgICB1dGlscy5mb3JFYWNoKHBhcmFtcywgZnVuY3Rpb24gc2VyaWFsaXplKHZhbCwga2V5KSB7XHJcbiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdHlwZW9mIHZhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh1dGlscy5pc0FycmF5KHZhbCkpIHtcclxuICAgICAgICBrZXkgPSBrZXkgKyAnW10nO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhbCA9IFt2YWxdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB1dGlscy5mb3JFYWNoKHZhbCwgZnVuY3Rpb24gcGFyc2VWYWx1ZSh2KSB7XHJcbiAgICAgICAgaWYgKHV0aWxzLmlzRGF0ZSh2KSkge1xyXG4gICAgICAgICAgdiA9IHYudG9JU09TdHJpbmcoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHV0aWxzLmlzT2JqZWN0KHYpKSB7XHJcbiAgICAgICAgICB2ID0gSlNPTi5zdHJpbmdpZnkodik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBhcnRzLnB1c2goZW5jb2RlKGtleSkgKyAnPScgKyBlbmNvZGUodikpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHNlcmlhbGl6ZWRQYXJhbXMgPSBwYXJ0cy5qb2luKCcmJyk7XHJcbiAgfVxyXG5cclxuICBpZiAoc2VyaWFsaXplZFBhcmFtcykge1xyXG4gICAgdmFyIGhhc2htYXJrSW5kZXggPSB1cmwuaW5kZXhPZignIycpO1xyXG4gICAgaWYgKGhhc2htYXJrSW5kZXggIT09IC0xKSB7XHJcbiAgICAgIHVybCA9IHVybC5zbGljZSgwLCBoYXNobWFya0luZGV4KTtcclxuICAgIH1cclxuXHJcbiAgICB1cmwgKz0gKHVybC5pbmRleE9mKCc/JykgPT09IC0xID8gJz8nIDogJyYnKSArIHNlcmlhbGl6ZWRQYXJhbXM7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gdXJsO1xyXG59O1xyXG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XHJcblxyXG5mdW5jdGlvbiBJbnRlcmNlcHRvck1hbmFnZXIoKSB7XHJcbiAgdGhpcy5oYW5kbGVycyA9IFtdO1xyXG59XHJcblxyXG4vKipcclxuICogQWRkIGEgbmV3IGludGVyY2VwdG9yIHRvIHRoZSBzdGFja1xyXG4gKlxyXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdWxmaWxsZWQgVGhlIGZ1bmN0aW9uIHRvIGhhbmRsZSBgdGhlbmAgZm9yIGEgYFByb21pc2VgXHJcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHJlamVjdGVkIFRoZSBmdW5jdGlvbiB0byBoYW5kbGUgYHJlamVjdGAgZm9yIGEgYFByb21pc2VgXHJcbiAqXHJcbiAqIEByZXR1cm4ge051bWJlcn0gQW4gSUQgdXNlZCB0byByZW1vdmUgaW50ZXJjZXB0b3IgbGF0ZXJcclxuICovXHJcbkludGVyY2VwdG9yTWFuYWdlci5wcm90b3R5cGUudXNlID0gZnVuY3Rpb24gdXNlKGZ1bGZpbGxlZCwgcmVqZWN0ZWQsIG9wdGlvbnMpIHtcclxuICB0aGlzLmhhbmRsZXJzLnB1c2goe1xyXG4gICAgZnVsZmlsbGVkOiBmdWxmaWxsZWQsXHJcbiAgICByZWplY3RlZDogcmVqZWN0ZWQsXHJcbiAgICBzeW5jaHJvbm91czogb3B0aW9ucyA/IG9wdGlvbnMuc3luY2hyb25vdXMgOiBmYWxzZSxcclxuICAgIHJ1bldoZW46IG9wdGlvbnMgPyBvcHRpb25zLnJ1bldoZW4gOiBudWxsXHJcbiAgfSk7XHJcbiAgcmV0dXJuIHRoaXMuaGFuZGxlcnMubGVuZ3RoIC0gMTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgYW4gaW50ZXJjZXB0b3IgZnJvbSB0aGUgc3RhY2tcclxuICpcclxuICogQHBhcmFtIHtOdW1iZXJ9IGlkIFRoZSBJRCB0aGF0IHdhcyByZXR1cm5lZCBieSBgdXNlYFxyXG4gKi9cclxuSW50ZXJjZXB0b3JNYW5hZ2VyLnByb3RvdHlwZS5lamVjdCA9IGZ1bmN0aW9uIGVqZWN0KGlkKSB7XHJcbiAgaWYgKHRoaXMuaGFuZGxlcnNbaWRdKSB7XHJcbiAgICB0aGlzLmhhbmRsZXJzW2lkXSA9IG51bGw7XHJcbiAgfVxyXG59O1xyXG5cclxuLyoqXHJcbiAqIEl0ZXJhdGUgb3ZlciBhbGwgdGhlIHJlZ2lzdGVyZWQgaW50ZXJjZXB0b3JzXHJcbiAqXHJcbiAqIFRoaXMgbWV0aG9kIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIHNraXBwaW5nIG92ZXIgYW55XHJcbiAqIGludGVyY2VwdG9ycyB0aGF0IG1heSBoYXZlIGJlY29tZSBgbnVsbGAgY2FsbGluZyBgZWplY3RgLlxyXG4gKlxyXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBUaGUgZnVuY3Rpb24gdG8gY2FsbCBmb3IgZWFjaCBpbnRlcmNlcHRvclxyXG4gKi9cclxuSW50ZXJjZXB0b3JNYW5hZ2VyLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24gZm9yRWFjaChmbikge1xyXG4gIHV0aWxzLmZvckVhY2godGhpcy5oYW5kbGVycywgZnVuY3Rpb24gZm9yRWFjaEhhbmRsZXIoaCkge1xyXG4gICAgaWYgKGggIT09IG51bGwpIHtcclxuICAgICAgZm4oaCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn07XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IEludGVyY2VwdG9yTWFuYWdlcjtcclxuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xyXG52YXIgdHJhbnNmb3JtRGF0YSA9IHJlcXVpcmUoJy4vdHJhbnNmb3JtRGF0YScpO1xyXG52YXIgaXNDYW5jZWwgPSByZXF1aXJlKCcuLi9jYW5jZWwvaXNDYW5jZWwnKTtcclxudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi4vZGVmYXVsdHMnKTtcclxudmFyIENhbmNlbCA9IHJlcXVpcmUoJy4uL2NhbmNlbC9DYW5jZWwnKTtcclxuXHJcbi8qKlxyXG4gKiBUaHJvd3MgYSBgQ2FuY2VsYCBpZiBjYW5jZWxsYXRpb24gaGFzIGJlZW4gcmVxdWVzdGVkLlxyXG4gKi9cclxuZnVuY3Rpb24gdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpIHtcclxuICBpZiAoY29uZmlnLmNhbmNlbFRva2VuKSB7XHJcbiAgICBjb25maWcuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpO1xyXG4gIH1cclxuXHJcbiAgaWYgKGNvbmZpZy5zaWduYWwgJiYgY29uZmlnLnNpZ25hbC5hYm9ydGVkKSB7XHJcbiAgICB0aHJvdyBuZXcgQ2FuY2VsKCdjYW5jZWxlZCcpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIERpc3BhdGNoIGEgcmVxdWVzdCB0byB0aGUgc2VydmVyIHVzaW5nIHRoZSBjb25maWd1cmVkIGFkYXB0ZXIuXHJcbiAqXHJcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZyB0aGF0IGlzIHRvIGJlIHVzZWQgZm9yIHRoZSByZXF1ZXN0XHJcbiAqIEByZXR1cm5zIHtQcm9taXNlfSBUaGUgUHJvbWlzZSB0byBiZSBmdWxmaWxsZWRcclxuICovXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZGlzcGF0Y2hSZXF1ZXN0KGNvbmZpZykge1xyXG4gIHRocm93SWZDYW5jZWxsYXRpb25SZXF1ZXN0ZWQoY29uZmlnKTtcclxuXHJcbiAgLy8gRW5zdXJlIGhlYWRlcnMgZXhpc3RcclxuICBjb25maWcuaGVhZGVycyA9IGNvbmZpZy5oZWFkZXJzIHx8IHt9O1xyXG5cclxuICAvLyBUcmFuc2Zvcm0gcmVxdWVzdCBkYXRhXHJcbiAgY29uZmlnLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXHJcbiAgICBjb25maWcsXHJcbiAgICBjb25maWcuZGF0YSxcclxuICAgIGNvbmZpZy5oZWFkZXJzLFxyXG4gICAgY29uZmlnLnRyYW5zZm9ybVJlcXVlc3RcclxuICApO1xyXG5cclxuICAvLyBGbGF0dGVuIGhlYWRlcnNcclxuICBjb25maWcuaGVhZGVycyA9IHV0aWxzLm1lcmdlKFxyXG4gICAgY29uZmlnLmhlYWRlcnMuY29tbW9uIHx8IHt9LFxyXG4gICAgY29uZmlnLmhlYWRlcnNbY29uZmlnLm1ldGhvZF0gfHwge30sXHJcbiAgICBjb25maWcuaGVhZGVyc1xyXG4gICk7XHJcblxyXG4gIHV0aWxzLmZvckVhY2goXHJcbiAgICBbJ2RlbGV0ZScsICdnZXQnLCAnaGVhZCcsICdwb3N0JywgJ3B1dCcsICdwYXRjaCcsICdjb21tb24nXSxcclxuICAgIGZ1bmN0aW9uIGNsZWFuSGVhZGVyQ29uZmlnKG1ldGhvZCkge1xyXG4gICAgICBkZWxldGUgY29uZmlnLmhlYWRlcnNbbWV0aG9kXTtcclxuICAgIH1cclxuICApO1xyXG5cclxuICB2YXIgYWRhcHRlciA9IGNvbmZpZy5hZGFwdGVyIHx8IGRlZmF1bHRzLmFkYXB0ZXI7XHJcblxyXG4gIHJldHVybiBhZGFwdGVyKGNvbmZpZykudGhlbihmdW5jdGlvbiBvbkFkYXB0ZXJSZXNvbHV0aW9uKHJlc3BvbnNlKSB7XHJcbiAgICB0aHJvd0lmQ2FuY2VsbGF0aW9uUmVxdWVzdGVkKGNvbmZpZyk7XHJcblxyXG4gICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcclxuICAgIHJlc3BvbnNlLmRhdGEgPSB0cmFuc2Zvcm1EYXRhLmNhbGwoXHJcbiAgICAgIGNvbmZpZyxcclxuICAgICAgcmVzcG9uc2UuZGF0YSxcclxuICAgICAgcmVzcG9uc2UuaGVhZGVycyxcclxuICAgICAgY29uZmlnLnRyYW5zZm9ybVJlc3BvbnNlXHJcbiAgICApO1xyXG5cclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9LCBmdW5jdGlvbiBvbkFkYXB0ZXJSZWplY3Rpb24ocmVhc29uKSB7XHJcbiAgICBpZiAoIWlzQ2FuY2VsKHJlYXNvbikpIHtcclxuICAgICAgdGhyb3dJZkNhbmNlbGxhdGlvblJlcXVlc3RlZChjb25maWcpO1xyXG5cclxuICAgICAgLy8gVHJhbnNmb3JtIHJlc3BvbnNlIGRhdGFcclxuICAgICAgaWYgKHJlYXNvbiAmJiByZWFzb24ucmVzcG9uc2UpIHtcclxuICAgICAgICByZWFzb24ucmVzcG9uc2UuZGF0YSA9IHRyYW5zZm9ybURhdGEuY2FsbChcclxuICAgICAgICAgIGNvbmZpZyxcclxuICAgICAgICAgIHJlYXNvbi5yZXNwb25zZS5kYXRhLFxyXG4gICAgICAgICAgcmVhc29uLnJlc3BvbnNlLmhlYWRlcnMsXHJcbiAgICAgICAgICBjb25maWcudHJhbnNmb3JtUmVzcG9uc2VcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlYXNvbik7XHJcbiAgfSk7XHJcbn07XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcclxudmFyIGRlZmF1bHRzID0gcmVxdWlyZSgnLi4vZGVmYXVsdHMnKTtcclxuXHJcbi8qKlxyXG4gKiBUcmFuc2Zvcm0gdGhlIGRhdGEgZm9yIGEgcmVxdWVzdCBvciBhIHJlc3BvbnNlXHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fFN0cmluZ30gZGF0YSBUaGUgZGF0YSB0byBiZSB0cmFuc2Zvcm1lZFxyXG4gKiBAcGFyYW0ge0FycmF5fSBoZWFkZXJzIFRoZSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdCBvciByZXNwb25zZVxyXG4gKiBAcGFyYW0ge0FycmF5fEZ1bmN0aW9ufSBmbnMgQSBzaW5nbGUgZnVuY3Rpb24gb3IgQXJyYXkgb2YgZnVuY3Rpb25zXHJcbiAqIEByZXR1cm5zIHsqfSBUaGUgcmVzdWx0aW5nIHRyYW5zZm9ybWVkIGRhdGFcclxuICovXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdHJhbnNmb3JtRGF0YShkYXRhLCBoZWFkZXJzLCBmbnMpIHtcclxuICB2YXIgY29udGV4dCA9IHRoaXMgfHwgZGVmYXVsdHM7XHJcbiAgLyplc2xpbnQgbm8tcGFyYW0tcmVhc3NpZ246MCovXHJcbiAgdXRpbHMuZm9yRWFjaChmbnMsIGZ1bmN0aW9uIHRyYW5zZm9ybShmbikge1xyXG4gICAgZGF0YSA9IGZuLmNhbGwoY29udGV4dCwgZGF0YSwgaGVhZGVycyk7XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBkYXRhO1xyXG59O1xyXG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xyXG52YXIgbm9ybWFsaXplSGVhZGVyTmFtZSA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvbm9ybWFsaXplSGVhZGVyTmFtZScpO1xyXG52YXIgZW5oYW5jZUVycm9yID0gcmVxdWlyZSgnLi4vY29yZS9lbmhhbmNlRXJyb3InKTtcclxudmFyIHRyYW5zaXRpb25hbERlZmF1bHRzID0gcmVxdWlyZSgnLi90cmFuc2l0aW9uYWwnKTtcclxuXHJcbnZhciBERUZBVUxUX0NPTlRFTlRfVFlQRSA9IHtcclxuICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcclxufTtcclxuXHJcbmZ1bmN0aW9uIHNldENvbnRlbnRUeXBlSWZVbnNldChoZWFkZXJzLCB2YWx1ZSkge1xyXG4gIGlmICghdXRpbHMuaXNVbmRlZmluZWQoaGVhZGVycykgJiYgdXRpbHMuaXNVbmRlZmluZWQoaGVhZGVyc1snQ29udGVudC1UeXBlJ10pKSB7XHJcbiAgICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9IHZhbHVlO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0RGVmYXVsdEFkYXB0ZXIoKSB7XHJcbiAgdmFyIGFkYXB0ZXI7XHJcbiAgaWYgKHR5cGVvZiBYTUxIdHRwUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgIC8vIEZvciBicm93c2VycyB1c2UgWEhSIGFkYXB0ZXJcclxuICAgIGFkYXB0ZXIgPSByZXF1aXJlKCcuLi9hZGFwdGVycy94aHInKTtcclxuICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwocHJvY2VzcykgPT09ICdbb2JqZWN0IHByb2Nlc3NdJykge1xyXG4gICAgLy8gRm9yIG5vZGUgdXNlIEhUVFAgYWRhcHRlclxyXG4gICAgYWRhcHRlciA9IHJlcXVpcmUoJy4uL2FkYXB0ZXJzL2h0dHAnKTtcclxuICB9XHJcbiAgcmV0dXJuIGFkYXB0ZXI7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHN0cmluZ2lmeVNhZmVseShyYXdWYWx1ZSwgcGFyc2VyLCBlbmNvZGVyKSB7XHJcbiAgaWYgKHV0aWxzLmlzU3RyaW5nKHJhd1ZhbHVlKSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgKHBhcnNlciB8fCBKU09OLnBhcnNlKShyYXdWYWx1ZSk7XHJcbiAgICAgIHJldHVybiB1dGlscy50cmltKHJhd1ZhbHVlKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgaWYgKGUubmFtZSAhPT0gJ1N5bnRheEVycm9yJykge1xyXG4gICAgICAgIHRocm93IGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiAoZW5jb2RlciB8fCBKU09OLnN0cmluZ2lmeSkocmF3VmFsdWUpO1xyXG59XHJcblxyXG52YXIgZGVmYXVsdHMgPSB7XHJcblxyXG4gIHRyYW5zaXRpb25hbDogdHJhbnNpdGlvbmFsRGVmYXVsdHMsXHJcblxyXG4gIGFkYXB0ZXI6IGdldERlZmF1bHRBZGFwdGVyKCksXHJcblxyXG4gIHRyYW5zZm9ybVJlcXVlc3Q6IFtmdW5jdGlvbiB0cmFuc2Zvcm1SZXF1ZXN0KGRhdGEsIGhlYWRlcnMpIHtcclxuICAgIG5vcm1hbGl6ZUhlYWRlck5hbWUoaGVhZGVycywgJ0FjY2VwdCcpO1xyXG4gICAgbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCAnQ29udGVudC1UeXBlJyk7XHJcblxyXG4gICAgaWYgKHV0aWxzLmlzRm9ybURhdGEoZGF0YSkgfHxcclxuICAgICAgdXRpbHMuaXNBcnJheUJ1ZmZlcihkYXRhKSB8fFxyXG4gICAgICB1dGlscy5pc0J1ZmZlcihkYXRhKSB8fFxyXG4gICAgICB1dGlscy5pc1N0cmVhbShkYXRhKSB8fFxyXG4gICAgICB1dGlscy5pc0ZpbGUoZGF0YSkgfHxcclxuICAgICAgdXRpbHMuaXNCbG9iKGRhdGEpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICB9XHJcbiAgICBpZiAodXRpbHMuaXNBcnJheUJ1ZmZlclZpZXcoZGF0YSkpIHtcclxuICAgICAgcmV0dXJuIGRhdGEuYnVmZmVyO1xyXG4gICAgfVxyXG4gICAgaWYgKHV0aWxzLmlzVVJMU2VhcmNoUGFyYW1zKGRhdGEpKSB7XHJcbiAgICAgIHNldENvbnRlbnRUeXBlSWZVbnNldChoZWFkZXJzLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgnKTtcclxuICAgICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcclxuICAgIH1cclxuICAgIGlmICh1dGlscy5pc09iamVjdChkYXRhKSB8fCAoaGVhZGVycyAmJiBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9PT0gJ2FwcGxpY2F0aW9uL2pzb24nKSkge1xyXG4gICAgICBzZXRDb250ZW50VHlwZUlmVW5zZXQoaGVhZGVycywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgcmV0dXJuIHN0cmluZ2lmeVNhZmVseShkYXRhKTtcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1dLFxyXG5cclxuICB0cmFuc2Zvcm1SZXNwb25zZTogW2Z1bmN0aW9uIHRyYW5zZm9ybVJlc3BvbnNlKGRhdGEpIHtcclxuICAgIHZhciB0cmFuc2l0aW9uYWwgPSB0aGlzLnRyYW5zaXRpb25hbCB8fCBkZWZhdWx0cy50cmFuc2l0aW9uYWw7XHJcbiAgICB2YXIgc2lsZW50SlNPTlBhcnNpbmcgPSB0cmFuc2l0aW9uYWwgJiYgdHJhbnNpdGlvbmFsLnNpbGVudEpTT05QYXJzaW5nO1xyXG4gICAgdmFyIGZvcmNlZEpTT05QYXJzaW5nID0gdHJhbnNpdGlvbmFsICYmIHRyYW5zaXRpb25hbC5mb3JjZWRKU09OUGFyc2luZztcclxuICAgIHZhciBzdHJpY3RKU09OUGFyc2luZyA9ICFzaWxlbnRKU09OUGFyc2luZyAmJiB0aGlzLnJlc3BvbnNlVHlwZSA9PT0gJ2pzb24nO1xyXG5cclxuICAgIGlmIChzdHJpY3RKU09OUGFyc2luZyB8fCAoZm9yY2VkSlNPTlBhcnNpbmcgJiYgdXRpbHMuaXNTdHJpbmcoZGF0YSkgJiYgZGF0YS5sZW5ndGgpKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZGF0YSk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBpZiAoc3RyaWN0SlNPTlBhcnNpbmcpIHtcclxuICAgICAgICAgIGlmIChlLm5hbWUgPT09ICdTeW50YXhFcnJvcicpIHtcclxuICAgICAgICAgICAgdGhyb3cgZW5oYW5jZUVycm9yKGUsIHRoaXMsICdFX0pTT05fUEFSU0UnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRocm93IGU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfV0sXHJcblxyXG4gIC8qKlxyXG4gICAqIEEgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgdG8gYWJvcnQgYSByZXF1ZXN0LiBJZiBzZXQgdG8gMCAoZGVmYXVsdCkgYVxyXG4gICAqIHRpbWVvdXQgaXMgbm90IGNyZWF0ZWQuXHJcbiAgICovXHJcbiAgdGltZW91dDogMCxcclxuXHJcbiAgeHNyZkNvb2tpZU5hbWU6ICdYU1JGLVRPS0VOJyxcclxuICB4c3JmSGVhZGVyTmFtZTogJ1gtWFNSRi1UT0tFTicsXHJcblxyXG4gIG1heENvbnRlbnRMZW5ndGg6IC0xLFxyXG4gIG1heEJvZHlMZW5ndGg6IC0xLFxyXG5cclxuICB2YWxpZGF0ZVN0YXR1czogZnVuY3Rpb24gdmFsaWRhdGVTdGF0dXMoc3RhdHVzKSB7XHJcbiAgICByZXR1cm4gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDA7XHJcbiAgfSxcclxuXHJcbiAgaGVhZGVyczoge1xyXG4gICAgY29tbW9uOiB7XHJcbiAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qJ1xyXG4gICAgfVxyXG4gIH1cclxufTtcclxuXHJcbnV0aWxzLmZvckVhY2goWydkZWxldGUnLCAnZ2V0JywgJ2hlYWQnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZE5vRGF0YShtZXRob2QpIHtcclxuICBkZWZhdWx0cy5oZWFkZXJzW21ldGhvZF0gPSB7fTtcclxufSk7XHJcblxyXG51dGlscy5mb3JFYWNoKFsncG9zdCcsICdwdXQnLCAncGF0Y2gnXSwgZnVuY3Rpb24gZm9yRWFjaE1ldGhvZFdpdGhEYXRhKG1ldGhvZCkge1xyXG4gIGRlZmF1bHRzLmhlYWRlcnNbbWV0aG9kXSA9IHV0aWxzLm1lcmdlKERFRkFVTFRfQ09OVEVOVF9UWVBFKTtcclxufSk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmF1bHRzO1xyXG4iLCJleHBvcnRzLm5leHRUaWNrID0gZnVuY3Rpb24gbmV4dFRpY2soZm4pIHtcbiAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgYXJncy5zaGlmdCgpO1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICBmbi5hcHBseShudWxsLCBhcmdzKTtcbiAgICB9LCAwKTtcbn07XG5cbmV4cG9ydHMucGxhdGZvcm0gPSBleHBvcnRzLmFyY2ggPSBcbmV4cG9ydHMuZXhlY1BhdGggPSBleHBvcnRzLnRpdGxlID0gJ2Jyb3dzZXInO1xuZXhwb3J0cy5waWQgPSAxO1xuZXhwb3J0cy5icm93c2VyID0gdHJ1ZTtcbmV4cG9ydHMuZW52ID0ge307XG5leHBvcnRzLmFyZ3YgPSBbXTtcblxuZXhwb3J0cy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcblx0dGhyb3cgbmV3IEVycm9yKCdObyBzdWNoIG1vZHVsZS4gKFBvc3NpYmx5IG5vdCB5ZXQgbG9hZGVkKScpXG59O1xuXG4oZnVuY3Rpb24gKCkge1xuICAgIHZhciBjd2QgPSAnLyc7XG4gICAgdmFyIHBhdGg7XG4gICAgZXhwb3J0cy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBjd2QgfTtcbiAgICBleHBvcnRzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgICAgICBpZiAoIXBhdGgpIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG4gICAgICAgIGN3ZCA9IHBhdGgucmVzb2x2ZShkaXIsIGN3ZCk7XG4gICAgfTtcbn0pKCk7XG5cbmV4cG9ydHMuZXhpdCA9IGV4cG9ydHMua2lsbCA9IFxuZXhwb3J0cy51bWFzayA9IGV4cG9ydHMuZGxvcGVuID0gXG5leHBvcnRzLnVwdGltZSA9IGV4cG9ydHMubWVtb3J5VXNhZ2UgPSBcbmV4cG9ydHMudXZDb3VudGVycyA9IGZ1bmN0aW9uKCkge307XG5leHBvcnRzLmZlYXR1cmVzID0ge307XG4iLCIvLyAuZGlybmFtZSwgLmJhc2VuYW1lLCBhbmQgLmV4dG5hbWUgbWV0aG9kcyBhcmUgZXh0cmFjdGVkIGZyb20gTm9kZS5qcyB2OC4xMS4xLFxuLy8gYmFja3BvcnRlZCBhbmQgdHJhbnNwbGl0ZWQgd2l0aCBCYWJlbCwgd2l0aCBiYWNrd2FyZHMtY29tcGF0IGZpeGVzXG5cbi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyByZXNvbHZlcyAuIGFuZCAuLiBlbGVtZW50cyBpbiBhIHBhdGggYXJyYXkgd2l0aCBkaXJlY3RvcnkgbmFtZXMgdGhlcmVcbi8vIG11c3QgYmUgbm8gc2xhc2hlcywgZW1wdHkgZWxlbWVudHMsIG9yIGRldmljZSBuYW1lcyAoYzpcXCkgaW4gdGhlIGFycmF5XG4vLyAoc28gYWxzbyBubyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFzaGVzIC0gaXQgZG9lcyBub3QgZGlzdGluZ3Vpc2hcbi8vIHJlbGF0aXZlIGFuZCBhYnNvbHV0ZSBwYXRocylcbmZ1bmN0aW9uIG5vcm1hbGl6ZUFycmF5KHBhcnRzLCBhbGxvd0Fib3ZlUm9vdCkge1xuICAvLyBpZiB0aGUgcGF0aCB0cmllcyB0byBnbyBhYm92ZSB0aGUgcm9vdCwgYHVwYCBlbmRzIHVwID4gMFxuICB2YXIgdXAgPSAwO1xuICBmb3IgKHZhciBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgbGFzdCA9IHBhcnRzW2ldO1xuICAgIGlmIChsYXN0ID09PSAnLicpIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICB9IGVsc2UgaWYgKGxhc3QgPT09ICcuLicpIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICAgIHVwKys7XG4gICAgfSBlbHNlIGlmICh1cCkge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgICAgdXAtLTtcbiAgICB9XG4gIH1cblxuICAvLyBpZiB0aGUgcGF0aCBpcyBhbGxvd2VkIHRvIGdvIGFib3ZlIHRoZSByb290LCByZXN0b3JlIGxlYWRpbmcgLi5zXG4gIGlmIChhbGxvd0Fib3ZlUm9vdCkge1xuICAgIGZvciAoOyB1cC0tOyB1cCkge1xuICAgICAgcGFydHMudW5zaGlmdCgnLi4nKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGFydHM7XG59XG5cbi8vIHBhdGgucmVzb2x2ZShbZnJvbSAuLi5dLCB0bylcbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMucmVzb2x2ZSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcmVzb2x2ZWRQYXRoID0gJycsXG4gICAgICByZXNvbHZlZEFic29sdXRlID0gZmFsc2U7XG5cbiAgZm9yICh2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpID49IC0xICYmICFyZXNvbHZlZEFic29sdXRlOyBpLS0pIHtcbiAgICB2YXIgcGF0aCA9IChpID49IDApID8gYXJndW1lbnRzW2ldIDogcHJvY2Vzcy5jd2QoKTtcblxuICAgIC8vIFNraXAgZW1wdHkgYW5kIGludmFsaWQgZW50cmllc1xuICAgIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50cyB0byBwYXRoLnJlc29sdmUgbXVzdCBiZSBzdHJpbmdzJyk7XG4gICAgfSBlbHNlIGlmICghcGF0aCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgcmVzb2x2ZWRQYXRoID0gcGF0aCArICcvJyArIHJlc29sdmVkUGF0aDtcbiAgICByZXNvbHZlZEFic29sdXRlID0gcGF0aC5jaGFyQXQoMCkgPT09ICcvJztcbiAgfVxuXG4gIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHBhdGggc2hvdWxkIGJlIHJlc29sdmVkIHRvIGEgZnVsbCBhYnNvbHV0ZSBwYXRoLCBidXRcbiAgLy8gaGFuZGxlIHJlbGF0aXZlIHBhdGhzIHRvIGJlIHNhZmUgKG1pZ2h0IGhhcHBlbiB3aGVuIHByb2Nlc3MuY3dkKCkgZmFpbHMpXG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gIHJlc29sdmVkUGF0aCA9IG5vcm1hbGl6ZUFycmF5KGZpbHRlcihyZXNvbHZlZFBhdGguc3BsaXQoJy8nKSwgZnVuY3Rpb24ocCkge1xuICAgIHJldHVybiAhIXA7XG4gIH0pLCAhcmVzb2x2ZWRBYnNvbHV0ZSkuam9pbignLycpO1xuXG4gIHJldHVybiAoKHJlc29sdmVkQWJzb2x1dGUgPyAnLycgOiAnJykgKyByZXNvbHZlZFBhdGgpIHx8ICcuJztcbn07XG5cbi8vIHBhdGgubm9ybWFsaXplKHBhdGgpXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uKHBhdGgpIHtcbiAgdmFyIGlzQWJzb2x1dGUgPSBleHBvcnRzLmlzQWJzb2x1dGUocGF0aCksXG4gICAgICB0cmFpbGluZ1NsYXNoID0gc3Vic3RyKHBhdGgsIC0xKSA9PT0gJy8nO1xuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgcGF0aFxuICBwYXRoID0gbm9ybWFsaXplQXJyYXkoZmlsdGVyKHBhdGguc3BsaXQoJy8nKSwgZnVuY3Rpb24ocCkge1xuICAgIHJldHVybiAhIXA7XG4gIH0pLCAhaXNBYnNvbHV0ZSkuam9pbignLycpO1xuXG4gIGlmICghcGF0aCAmJiAhaXNBYnNvbHV0ZSkge1xuICAgIHBhdGggPSAnLic7XG4gIH1cbiAgaWYgKHBhdGggJiYgdHJhaWxpbmdTbGFzaCkge1xuICAgIHBhdGggKz0gJy8nO1xuICB9XG5cbiAgcmV0dXJuIChpc0Fic29sdXRlID8gJy8nIDogJycpICsgcGF0aDtcbn07XG5cbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMuaXNBYnNvbHV0ZSA9IGZ1bmN0aW9uKHBhdGgpIHtcbiAgcmV0dXJuIHBhdGguY2hhckF0KDApID09PSAnLyc7XG59O1xuXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLmpvaW4gPSBmdW5jdGlvbigpIHtcbiAgdmFyIHBhdGhzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKTtcbiAgcmV0dXJuIGV4cG9ydHMubm9ybWFsaXplKGZpbHRlcihwYXRocywgZnVuY3Rpb24ocCwgaW5kZXgpIHtcbiAgICBpZiAodHlwZW9mIHAgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgdG8gcGF0aC5qb2luIG11c3QgYmUgc3RyaW5ncycpO1xuICAgIH1cbiAgICByZXR1cm4gcDtcbiAgfSkuam9pbignLycpKTtcbn07XG5cblxuLy8gcGF0aC5yZWxhdGl2ZShmcm9tLCB0bylcbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMucmVsYXRpdmUgPSBmdW5jdGlvbihmcm9tLCB0bykge1xuICBmcm9tID0gZXhwb3J0cy5yZXNvbHZlKGZyb20pLnN1YnN0cigxKTtcbiAgdG8gPSBleHBvcnRzLnJlc29sdmUodG8pLnN1YnN0cigxKTtcblxuICBmdW5jdGlvbiB0cmltKGFycikge1xuICAgIHZhciBzdGFydCA9IDA7XG4gICAgZm9yICg7IHN0YXJ0IDwgYXJyLmxlbmd0aDsgc3RhcnQrKykge1xuICAgICAgaWYgKGFycltzdGFydF0gIT09ICcnKSBicmVhaztcbiAgICB9XG5cbiAgICB2YXIgZW5kID0gYXJyLmxlbmd0aCAtIDE7XG4gICAgZm9yICg7IGVuZCA+PSAwOyBlbmQtLSkge1xuICAgICAgaWYgKGFycltlbmRdICE9PSAnJykgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0ID4gZW5kKSByZXR1cm4gW107XG4gICAgcmV0dXJuIGFyci5zbGljZShzdGFydCwgZW5kIC0gc3RhcnQgKyAxKTtcbiAgfVxuXG4gIHZhciBmcm9tUGFydHMgPSB0cmltKGZyb20uc3BsaXQoJy8nKSk7XG4gIHZhciB0b1BhcnRzID0gdHJpbSh0by5zcGxpdCgnLycpKTtcblxuICB2YXIgbGVuZ3RoID0gTWF0aC5taW4oZnJvbVBhcnRzLmxlbmd0aCwgdG9QYXJ0cy5sZW5ndGgpO1xuICB2YXIgc2FtZVBhcnRzTGVuZ3RoID0gbGVuZ3RoO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGZyb21QYXJ0c1tpXSAhPT0gdG9QYXJ0c1tpXSkge1xuICAgICAgc2FtZVBhcnRzTGVuZ3RoID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHZhciBvdXRwdXRQYXJ0cyA9IFtdO1xuICBmb3IgKHZhciBpID0gc2FtZVBhcnRzTGVuZ3RoOyBpIDwgZnJvbVBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgb3V0cHV0UGFydHMucHVzaCgnLi4nKTtcbiAgfVxuXG4gIG91dHB1dFBhcnRzID0gb3V0cHV0UGFydHMuY29uY2F0KHRvUGFydHMuc2xpY2Uoc2FtZVBhcnRzTGVuZ3RoKSk7XG5cbiAgcmV0dXJuIG91dHB1dFBhcnRzLmpvaW4oJy8nKTtcbn07XG5cbmV4cG9ydHMuc2VwID0gJy8nO1xuZXhwb3J0cy5kZWxpbWl0ZXIgPSAnOic7XG5cbmV4cG9ydHMuZGlybmFtZSA9IGZ1bmN0aW9uIChwYXRoKSB7XG4gIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHBhdGggPSBwYXRoICsgJyc7XG4gIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcuJztcbiAgdmFyIGNvZGUgPSBwYXRoLmNoYXJDb2RlQXQoMCk7XG4gIHZhciBoYXNSb290ID0gY29kZSA9PT0gNDcgLyovKi87XG4gIHZhciBlbmQgPSAtMTtcbiAgdmFyIG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIGZvciAodmFyIGkgPSBwYXRoLmxlbmd0aCAtIDE7IGkgPj0gMTsgLS1pKSB7XG4gICAgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICBpZiAoY29kZSA9PT0gNDcgLyovKi8pIHtcbiAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICBlbmQgPSBpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgLy8gV2Ugc2F3IHRoZSBmaXJzdCBub24tcGF0aCBzZXBhcmF0b3JcbiAgICAgIG1hdGNoZWRTbGFzaCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChlbmQgPT09IC0xKSByZXR1cm4gaGFzUm9vdCA/ICcvJyA6ICcuJztcbiAgaWYgKGhhc1Jvb3QgJiYgZW5kID09PSAxKSB7XG4gICAgLy8gcmV0dXJuICcvLyc7XG4gICAgLy8gQmFja3dhcmRzLWNvbXBhdCBmaXg6XG4gICAgcmV0dXJuICcvJztcbiAgfVxuICByZXR1cm4gcGF0aC5zbGljZSgwLCBlbmQpO1xufTtcblxuZnVuY3Rpb24gYmFzZW5hbWUocGF0aCkge1xuICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSBwYXRoID0gcGF0aCArICcnO1xuXG4gIHZhciBzdGFydCA9IDA7XG4gIHZhciBlbmQgPSAtMTtcbiAgdmFyIG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIHZhciBpO1xuXG4gIGZvciAoaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICBpZiAocGF0aC5jaGFyQ29kZUF0KGkpID09PSA0NyAvKi8qLykge1xuICAgICAgICAvLyBJZiB3ZSByZWFjaGVkIGEgcGF0aCBzZXBhcmF0b3IgdGhhdCB3YXMgbm90IHBhcnQgb2YgYSBzZXQgb2YgcGF0aFxuICAgICAgICAvLyBzZXBhcmF0b3JzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZywgc3RvcCBub3dcbiAgICAgICAgaWYgKCFtYXRjaGVkU2xhc2gpIHtcbiAgICAgICAgICBzdGFydCA9IGkgKyAxO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGVuZCA9PT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXJcbiAgICAgIC8vIHBhdGggY29tcG9uZW50XG4gICAgICBtYXRjaGVkU2xhc2ggPSBmYWxzZTtcbiAgICAgIGVuZCA9IGkgKyAxO1xuICAgIH1cbiAgfVxuXG4gIGlmIChlbmQgPT09IC0xKSByZXR1cm4gJyc7XG4gIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0LCBlbmQpO1xufVxuXG4vLyBVc2VzIGEgbWl4ZWQgYXBwcm9hY2ggZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5LCBhcyBleHQgYmVoYXZpb3IgY2hhbmdlZFxuLy8gaW4gbmV3IE5vZGUuanMgdmVyc2lvbnMsIHNvIG9ubHkgYmFzZW5hbWUoKSBhYm92ZSBpcyBiYWNrcG9ydGVkIGhlcmVcbmV4cG9ydHMuYmFzZW5hbWUgPSBmdW5jdGlvbiAocGF0aCwgZXh0KSB7XG4gIHZhciBmID0gYmFzZW5hbWUocGF0aCk7XG4gIGlmIChleHQgJiYgZi5zdWJzdHIoLTEgKiBleHQubGVuZ3RoKSA9PT0gZXh0KSB7XG4gICAgZiA9IGYuc3Vic3RyKDAsIGYubGVuZ3RoIC0gZXh0Lmxlbmd0aCk7XG4gIH1cbiAgcmV0dXJuIGY7XG59O1xuXG5leHBvcnRzLmV4dG5hbWUgPSBmdW5jdGlvbiAocGF0aCkge1xuICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSBwYXRoID0gcGF0aCArICcnO1xuICB2YXIgc3RhcnREb3QgPSAtMTtcbiAgdmFyIHN0YXJ0UGFydCA9IDA7XG4gIHZhciBlbmQgPSAtMTtcbiAgdmFyIG1hdGNoZWRTbGFzaCA9IHRydWU7XG4gIC8vIFRyYWNrIHRoZSBzdGF0ZSBvZiBjaGFyYWN0ZXJzIChpZiBhbnkpIHdlIHNlZSBiZWZvcmUgb3VyIGZpcnN0IGRvdCBhbmRcbiAgLy8gYWZ0ZXIgYW55IHBhdGggc2VwYXJhdG9yIHdlIGZpbmRcbiAgdmFyIHByZURvdFN0YXRlID0gMDtcbiAgZm9yICh2YXIgaSA9IHBhdGgubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICB2YXIgY29kZSA9IHBhdGguY2hhckNvZGVBdChpKTtcbiAgICBpZiAoY29kZSA9PT0gNDcgLyovKi8pIHtcbiAgICAgICAgLy8gSWYgd2UgcmVhY2hlZCBhIHBhdGggc2VwYXJhdG9yIHRoYXQgd2FzIG5vdCBwYXJ0IG9mIGEgc2V0IG9mIHBhdGhcbiAgICAgICAgLy8gc2VwYXJhdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHN0b3Agbm93XG4gICAgICAgIGlmICghbWF0Y2hlZFNsYXNoKSB7XG4gICAgICAgICAgc3RhcnRQYXJ0ID0gaSArIDE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgaWYgKGVuZCA9PT0gLTEpIHtcbiAgICAgIC8vIFdlIHNhdyB0aGUgZmlyc3Qgbm9uLXBhdGggc2VwYXJhdG9yLCBtYXJrIHRoaXMgYXMgdGhlIGVuZCBvZiBvdXJcbiAgICAgIC8vIGV4dGVuc2lvblxuICAgICAgbWF0Y2hlZFNsYXNoID0gZmFsc2U7XG4gICAgICBlbmQgPSBpICsgMTtcbiAgICB9XG4gICAgaWYgKGNvZGUgPT09IDQ2IC8qLiovKSB7XG4gICAgICAgIC8vIElmIHRoaXMgaXMgb3VyIGZpcnN0IGRvdCwgbWFyayBpdCBhcyB0aGUgc3RhcnQgb2Ygb3VyIGV4dGVuc2lvblxuICAgICAgICBpZiAoc3RhcnREb3QgPT09IC0xKVxuICAgICAgICAgIHN0YXJ0RG90ID0gaTtcbiAgICAgICAgZWxzZSBpZiAocHJlRG90U3RhdGUgIT09IDEpXG4gICAgICAgICAgcHJlRG90U3RhdGUgPSAxO1xuICAgIH0gZWxzZSBpZiAoc3RhcnREb3QgIT09IC0xKSB7XG4gICAgICAvLyBXZSBzYXcgYSBub24tZG90IGFuZCBub24tcGF0aCBzZXBhcmF0b3IgYmVmb3JlIG91ciBkb3QsIHNvIHdlIHNob3VsZFxuICAgICAgLy8gaGF2ZSBhIGdvb2QgY2hhbmNlIGF0IGhhdmluZyBhIG5vbi1lbXB0eSBleHRlbnNpb25cbiAgICAgIHByZURvdFN0YXRlID0gLTE7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXJ0RG90ID09PSAtMSB8fCBlbmQgPT09IC0xIHx8XG4gICAgICAvLyBXZSBzYXcgYSBub24tZG90IGNoYXJhY3RlciBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGRvdFxuICAgICAgcHJlRG90U3RhdGUgPT09IDAgfHxcbiAgICAgIC8vIFRoZSAocmlnaHQtbW9zdCkgdHJpbW1lZCBwYXRoIGNvbXBvbmVudCBpcyBleGFjdGx5ICcuLidcbiAgICAgIHByZURvdFN0YXRlID09PSAxICYmIHN0YXJ0RG90ID09PSBlbmQgLSAxICYmIHN0YXJ0RG90ID09PSBzdGFydFBhcnQgKyAxKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHJldHVybiBwYXRoLnNsaWNlKHN0YXJ0RG90LCBlbmQpO1xufTtcblxuZnVuY3Rpb24gZmlsdGVyICh4cywgZikge1xuICAgIGlmICh4cy5maWx0ZXIpIHJldHVybiB4cy5maWx0ZXIoZik7XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGYoeHNbaV0sIGksIHhzKSkgcmVzLnB1c2goeHNbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG4vLyBTdHJpbmcucHJvdG90eXBlLnN1YnN0ciAtIG5lZ2F0aXZlIGluZGV4IGRvbid0IHdvcmsgaW4gSUU4XG52YXIgc3Vic3RyID0gJ2FiJy5zdWJzdHIoLTEpID09PSAnYidcbiAgICA/IGZ1bmN0aW9uIChzdHIsIHN0YXJ0LCBsZW4pIHsgcmV0dXJuIHN0ci5zdWJzdHIoc3RhcnQsIGxlbikgfVxuICAgIDogZnVuY3Rpb24gKHN0ciwgc3RhcnQsIGxlbikge1xuICAgICAgICBpZiAoc3RhcnQgPCAwKSBzdGFydCA9IHN0ci5sZW5ndGggKyBzdGFydDtcbiAgICAgICAgcmV0dXJuIHN0ci5zdWJzdHIoc3RhcnQsIGxlbik7XG4gICAgfVxuO1xuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbm9ybWFsaXplSGVhZGVyTmFtZShoZWFkZXJzLCBub3JtYWxpemVkTmFtZSkge1xyXG4gIHV0aWxzLmZvckVhY2goaGVhZGVycywgZnVuY3Rpb24gcHJvY2Vzc0hlYWRlcih2YWx1ZSwgbmFtZSkge1xyXG4gICAgaWYgKG5hbWUgIT09IG5vcm1hbGl6ZWROYW1lICYmIG5hbWUudG9VcHBlckNhc2UoKSA9PT0gbm9ybWFsaXplZE5hbWUudG9VcHBlckNhc2UoKSkge1xyXG4gICAgICBoZWFkZXJzW25vcm1hbGl6ZWROYW1lXSA9IHZhbHVlO1xyXG4gICAgICBkZWxldGUgaGVhZGVyc1tuYW1lXTtcclxuICAgIH1cclxuICB9KTtcclxufTtcclxuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxuLyoqXHJcbiAqIFVwZGF0ZSBhbiBFcnJvciB3aXRoIHRoZSBzcGVjaWZpZWQgY29uZmlnLCBlcnJvciBjb2RlLCBhbmQgcmVzcG9uc2UuXHJcbiAqXHJcbiAqIEBwYXJhbSB7RXJyb3J9IGVycm9yIFRoZSBlcnJvciB0byB1cGRhdGUuXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZy5cclxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2RlXSBUaGUgZXJyb3IgY29kZSAoZm9yIGV4YW1wbGUsICdFQ09OTkFCT1JURUQnKS5cclxuICogQHBhcmFtIHtPYmplY3R9IFtyZXF1ZXN0XSBUaGUgcmVxdWVzdC5cclxuICogQHBhcmFtIHtPYmplY3R9IFtyZXNwb25zZV0gVGhlIHJlc3BvbnNlLlxyXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRoZSBlcnJvci5cclxuICovXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZW5oYW5jZUVycm9yKGVycm9yLCBjb25maWcsIGNvZGUsIHJlcXVlc3QsIHJlc3BvbnNlKSB7XHJcbiAgZXJyb3IuY29uZmlnID0gY29uZmlnO1xyXG4gIGlmIChjb2RlKSB7XHJcbiAgICBlcnJvci5jb2RlID0gY29kZTtcclxuICB9XHJcblxyXG4gIGVycm9yLnJlcXVlc3QgPSByZXF1ZXN0O1xyXG4gIGVycm9yLnJlc3BvbnNlID0gcmVzcG9uc2U7XHJcbiAgZXJyb3IuaXNBeGlvc0Vycm9yID0gdHJ1ZTtcclxuXHJcbiAgZXJyb3IudG9KU09OID0gZnVuY3Rpb24gdG9KU09OKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgLy8gU3RhbmRhcmRcclxuICAgICAgbWVzc2FnZTogdGhpcy5tZXNzYWdlLFxyXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXHJcbiAgICAgIC8vIE1pY3Jvc29mdFxyXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbixcclxuICAgICAgbnVtYmVyOiB0aGlzLm51bWJlcixcclxuICAgICAgLy8gTW96aWxsYVxyXG4gICAgICBmaWxlTmFtZTogdGhpcy5maWxlTmFtZSxcclxuICAgICAgbGluZU51bWJlcjogdGhpcy5saW5lTnVtYmVyLFxyXG4gICAgICBjb2x1bW5OdW1iZXI6IHRoaXMuY29sdW1uTnVtYmVyLFxyXG4gICAgICBzdGFjazogdGhpcy5zdGFjayxcclxuICAgICAgLy8gQXhpb3NcclxuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcclxuICAgICAgY29kZTogdGhpcy5jb2RlLFxyXG4gICAgICBzdGF0dXM6IHRoaXMucmVzcG9uc2UgJiYgdGhpcy5yZXNwb25zZS5zdGF0dXMgPyB0aGlzLnJlc3BvbnNlLnN0YXR1cyA6IG51bGxcclxuICAgIH07XHJcbiAgfTtcclxuICByZXR1cm4gZXJyb3I7XHJcbn07XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbm1vZHVsZS5leHBvcnRzID0ge1xyXG4gIHNpbGVudEpTT05QYXJzaW5nOiB0cnVlLFxyXG4gIGZvcmNlZEpTT05QYXJzaW5nOiB0cnVlLFxyXG4gIGNsYXJpZnlUaW1lb3V0RXJyb3I6IGZhbHNlXHJcbn07XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcclxudmFyIHNldHRsZSA9IHJlcXVpcmUoJy4vLi4vY29yZS9zZXR0bGUnKTtcclxudmFyIGNvb2tpZXMgPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvY29va2llcycpO1xyXG52YXIgYnVpbGRVUkwgPSByZXF1aXJlKCcuLy4uL2hlbHBlcnMvYnVpbGRVUkwnKTtcclxudmFyIGJ1aWxkRnVsbFBhdGggPSByZXF1aXJlKCcuLi9jb3JlL2J1aWxkRnVsbFBhdGgnKTtcclxudmFyIHBhcnNlSGVhZGVycyA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9wYXJzZUhlYWRlcnMnKTtcclxudmFyIGlzVVJMU2FtZU9yaWdpbiA9IHJlcXVpcmUoJy4vLi4vaGVscGVycy9pc1VSTFNhbWVPcmlnaW4nKTtcclxudmFyIGNyZWF0ZUVycm9yID0gcmVxdWlyZSgnLi4vY29yZS9jcmVhdGVFcnJvcicpO1xyXG52YXIgdHJhbnNpdGlvbmFsRGVmYXVsdHMgPSByZXF1aXJlKCcuLi9kZWZhdWx0cy90cmFuc2l0aW9uYWwnKTtcclxudmFyIENhbmNlbCA9IHJlcXVpcmUoJy4uL2NhbmNlbC9DYW5jZWwnKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24geGhyQWRhcHRlcihjb25maWcpIHtcclxuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gZGlzcGF0Y2hYaHJSZXF1ZXN0KHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgdmFyIHJlcXVlc3REYXRhID0gY29uZmlnLmRhdGE7XHJcbiAgICB2YXIgcmVxdWVzdEhlYWRlcnMgPSBjb25maWcuaGVhZGVycztcclxuICAgIHZhciByZXNwb25zZVR5cGUgPSBjb25maWcucmVzcG9uc2VUeXBlO1xyXG4gICAgdmFyIG9uQ2FuY2VsZWQ7XHJcbiAgICBmdW5jdGlvbiBkb25lKCkge1xyXG4gICAgICBpZiAoY29uZmlnLmNhbmNlbFRva2VuKSB7XHJcbiAgICAgICAgY29uZmlnLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKG9uQ2FuY2VsZWQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY29uZmlnLnNpZ25hbCkge1xyXG4gICAgICAgIGNvbmZpZy5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkNhbmNlbGVkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh1dGlscy5pc0Zvcm1EYXRhKHJlcXVlc3REYXRhKSkge1xyXG4gICAgICBkZWxldGUgcmVxdWVzdEhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddOyAvLyBMZXQgdGhlIGJyb3dzZXIgc2V0IGl0XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcclxuXHJcbiAgICAvLyBIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uXHJcbiAgICBpZiAoY29uZmlnLmF1dGgpIHtcclxuICAgICAgdmFyIHVzZXJuYW1lID0gY29uZmlnLmF1dGgudXNlcm5hbWUgfHwgJyc7XHJcbiAgICAgIHZhciBwYXNzd29yZCA9IGNvbmZpZy5hdXRoLnBhc3N3b3JkID8gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGNvbmZpZy5hdXRoLnBhc3N3b3JkKSkgOiAnJztcclxuICAgICAgcmVxdWVzdEhlYWRlcnMuQXV0aG9yaXphdGlvbiA9ICdCYXNpYyAnICsgYnRvYSh1c2VybmFtZSArICc6JyArIHBhc3N3b3JkKTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgZnVsbFBhdGggPSBidWlsZEZ1bGxQYXRoKGNvbmZpZy5iYXNlVVJMLCBjb25maWcudXJsKTtcclxuICAgIHJlcXVlc3Qub3Blbihjb25maWcubWV0aG9kLnRvVXBwZXJDYXNlKCksIGJ1aWxkVVJMKGZ1bGxQYXRoLCBjb25maWcucGFyYW1zLCBjb25maWcucGFyYW1zU2VyaWFsaXplciksIHRydWUpO1xyXG5cclxuICAgIC8vIFNldCB0aGUgcmVxdWVzdCB0aW1lb3V0IGluIE1TXHJcbiAgICByZXF1ZXN0LnRpbWVvdXQgPSBjb25maWcudGltZW91dDtcclxuXHJcbiAgICBmdW5jdGlvbiBvbmxvYWRlbmQoKSB7XHJcbiAgICAgIGlmICghcmVxdWVzdCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICAvLyBQcmVwYXJlIHRoZSByZXNwb25zZVxyXG4gICAgICB2YXIgcmVzcG9uc2VIZWFkZXJzID0gJ2dldEFsbFJlc3BvbnNlSGVhZGVycycgaW4gcmVxdWVzdCA/IHBhcnNlSGVhZGVycyhyZXF1ZXN0LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKSA6IG51bGw7XHJcbiAgICAgIHZhciByZXNwb25zZURhdGEgPSAhcmVzcG9uc2VUeXBlIHx8IHJlc3BvbnNlVHlwZSA9PT0gJ3RleHQnIHx8ICByZXNwb25zZVR5cGUgPT09ICdqc29uJyA/XHJcbiAgICAgICAgcmVxdWVzdC5yZXNwb25zZVRleHQgOiByZXF1ZXN0LnJlc3BvbnNlO1xyXG4gICAgICB2YXIgcmVzcG9uc2UgPSB7XHJcbiAgICAgICAgZGF0YTogcmVzcG9uc2VEYXRhLFxyXG4gICAgICAgIHN0YXR1czogcmVxdWVzdC5zdGF0dXMsXHJcbiAgICAgICAgc3RhdHVzVGV4dDogcmVxdWVzdC5zdGF0dXNUZXh0LFxyXG4gICAgICAgIGhlYWRlcnM6IHJlc3BvbnNlSGVhZGVycyxcclxuICAgICAgICBjb25maWc6IGNvbmZpZyxcclxuICAgICAgICByZXF1ZXN0OiByZXF1ZXN0XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBzZXR0bGUoZnVuY3Rpb24gX3Jlc29sdmUodmFsdWUpIHtcclxuICAgICAgICByZXNvbHZlKHZhbHVlKTtcclxuICAgICAgICBkb25lKCk7XHJcbiAgICAgIH0sIGZ1bmN0aW9uIF9yZWplY3QoZXJyKSB7XHJcbiAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgZG9uZSgpO1xyXG4gICAgICB9LCByZXNwb25zZSk7XHJcblxyXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XHJcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICgnb25sb2FkZW5kJyBpbiByZXF1ZXN0KSB7XHJcbiAgICAgIC8vIFVzZSBvbmxvYWRlbmQgaWYgYXZhaWxhYmxlXHJcbiAgICAgIHJlcXVlc3Qub25sb2FkZW5kID0gb25sb2FkZW5kO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gTGlzdGVuIGZvciByZWFkeSBzdGF0ZSB0byBlbXVsYXRlIG9ubG9hZGVuZFxyXG4gICAgICByZXF1ZXN0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uIGhhbmRsZUxvYWQoKSB7XHJcbiAgICAgICAgaWYgKCFyZXF1ZXN0IHx8IHJlcXVlc3QucmVhZHlTdGF0ZSAhPT0gNCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gVGhlIHJlcXVlc3QgZXJyb3JlZCBvdXQgYW5kIHdlIGRpZG4ndCBnZXQgYSByZXNwb25zZSwgdGhpcyB3aWxsIGJlXHJcbiAgICAgICAgLy8gaGFuZGxlZCBieSBvbmVycm9yIGluc3RlYWRcclxuICAgICAgICAvLyBXaXRoIG9uZSBleGNlcHRpb246IHJlcXVlc3QgdGhhdCB1c2luZyBmaWxlOiBwcm90b2NvbCwgbW9zdCBicm93c2Vyc1xyXG4gICAgICAgIC8vIHdpbGwgcmV0dXJuIHN0YXR1cyBhcyAwIGV2ZW4gdGhvdWdoIGl0J3MgYSBzdWNjZXNzZnVsIHJlcXVlc3RcclxuICAgICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDAgJiYgIShyZXF1ZXN0LnJlc3BvbnNlVVJMICYmIHJlcXVlc3QucmVzcG9uc2VVUkwuaW5kZXhPZignZmlsZTonKSA9PT0gMCkpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gcmVhZHlzdGF0ZSBoYW5kbGVyIGlzIGNhbGxpbmcgYmVmb3JlIG9uZXJyb3Igb3Igb250aW1lb3V0IGhhbmRsZXJzLFxyXG4gICAgICAgIC8vIHNvIHdlIHNob3VsZCBjYWxsIG9ubG9hZGVuZCBvbiB0aGUgbmV4dCAndGljaydcclxuICAgICAgICBzZXRUaW1lb3V0KG9ubG9hZGVuZCk7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSGFuZGxlIGJyb3dzZXIgcmVxdWVzdCBjYW5jZWxsYXRpb24gKGFzIG9wcG9zZWQgdG8gYSBtYW51YWwgY2FuY2VsbGF0aW9uKVxyXG4gICAgcmVxdWVzdC5vbmFib3J0ID0gZnVuY3Rpb24gaGFuZGxlQWJvcnQoKSB7XHJcbiAgICAgIGlmICghcmVxdWVzdCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmVqZWN0KGNyZWF0ZUVycm9yKCdSZXF1ZXN0IGFib3J0ZWQnLCBjb25maWcsICdFQ09OTkFCT1JURUQnLCByZXF1ZXN0KSk7XHJcblxyXG4gICAgICAvLyBDbGVhbiB1cCByZXF1ZXN0XHJcbiAgICAgIHJlcXVlc3QgPSBudWxsO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBIYW5kbGUgbG93IGxldmVsIG5ldHdvcmsgZXJyb3JzXHJcbiAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbiBoYW5kbGVFcnJvcigpIHtcclxuICAgICAgLy8gUmVhbCBlcnJvcnMgYXJlIGhpZGRlbiBmcm9tIHVzIGJ5IHRoZSBicm93c2VyXHJcbiAgICAgIC8vIG9uZXJyb3Igc2hvdWxkIG9ubHkgZmlyZSBpZiBpdCdzIGEgbmV0d29yayBlcnJvclxyXG4gICAgICByZWplY3QoY3JlYXRlRXJyb3IoJ05ldHdvcmsgRXJyb3InLCBjb25maWcsIG51bGwsIHJlcXVlc3QpKTtcclxuXHJcbiAgICAgIC8vIENsZWFuIHVwIHJlcXVlc3RcclxuICAgICAgcmVxdWVzdCA9IG51bGw7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIEhhbmRsZSB0aW1lb3V0XHJcbiAgICByZXF1ZXN0Lm9udGltZW91dCA9IGZ1bmN0aW9uIGhhbmRsZVRpbWVvdXQoKSB7XHJcbiAgICAgIHZhciB0aW1lb3V0RXJyb3JNZXNzYWdlID0gY29uZmlnLnRpbWVvdXQgPyAndGltZW91dCBvZiAnICsgY29uZmlnLnRpbWVvdXQgKyAnbXMgZXhjZWVkZWQnIDogJ3RpbWVvdXQgZXhjZWVkZWQnO1xyXG4gICAgICB2YXIgdHJhbnNpdGlvbmFsID0gY29uZmlnLnRyYW5zaXRpb25hbCB8fCB0cmFuc2l0aW9uYWxEZWZhdWx0cztcclxuICAgICAgaWYgKGNvbmZpZy50aW1lb3V0RXJyb3JNZXNzYWdlKSB7XHJcbiAgICAgICAgdGltZW91dEVycm9yTWVzc2FnZSA9IGNvbmZpZy50aW1lb3V0RXJyb3JNZXNzYWdlO1xyXG4gICAgICB9XHJcbiAgICAgIHJlamVjdChjcmVhdGVFcnJvcihcclxuICAgICAgICB0aW1lb3V0RXJyb3JNZXNzYWdlLFxyXG4gICAgICAgIGNvbmZpZyxcclxuICAgICAgICB0cmFuc2l0aW9uYWwuY2xhcmlmeVRpbWVvdXRFcnJvciA/ICdFVElNRURPVVQnIDogJ0VDT05OQUJPUlRFRCcsXHJcbiAgICAgICAgcmVxdWVzdCkpO1xyXG5cclxuICAgICAgLy8gQ2xlYW4gdXAgcmVxdWVzdFxyXG4gICAgICByZXF1ZXN0ID0gbnVsbDtcclxuICAgIH07XHJcblxyXG4gICAgLy8gQWRkIHhzcmYgaGVhZGVyXHJcbiAgICAvLyBUaGlzIGlzIG9ubHkgZG9uZSBpZiBydW5uaW5nIGluIGEgc3RhbmRhcmQgYnJvd3NlciBlbnZpcm9ubWVudC5cclxuICAgIC8vIFNwZWNpZmljYWxseSBub3QgaWYgd2UncmUgaW4gYSB3ZWIgd29ya2VyLCBvciByZWFjdC1uYXRpdmUuXHJcbiAgICBpZiAodXRpbHMuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSkge1xyXG4gICAgICAvLyBBZGQgeHNyZiBoZWFkZXJcclxuICAgICAgdmFyIHhzcmZWYWx1ZSA9IChjb25maWcud2l0aENyZWRlbnRpYWxzIHx8IGlzVVJMU2FtZU9yaWdpbihmdWxsUGF0aCkpICYmIGNvbmZpZy54c3JmQ29va2llTmFtZSA/XHJcbiAgICAgICAgY29va2llcy5yZWFkKGNvbmZpZy54c3JmQ29va2llTmFtZSkgOlxyXG4gICAgICAgIHVuZGVmaW5lZDtcclxuXHJcbiAgICAgIGlmICh4c3JmVmFsdWUpIHtcclxuICAgICAgICByZXF1ZXN0SGVhZGVyc1tjb25maWcueHNyZkhlYWRlck5hbWVdID0geHNyZlZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQWRkIGhlYWRlcnMgdG8gdGhlIHJlcXVlc3RcclxuICAgIGlmICgnc2V0UmVxdWVzdEhlYWRlcicgaW4gcmVxdWVzdCkge1xyXG4gICAgICB1dGlscy5mb3JFYWNoKHJlcXVlc3RIZWFkZXJzLCBmdW5jdGlvbiBzZXRSZXF1ZXN0SGVhZGVyKHZhbCwga2V5KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByZXF1ZXN0RGF0YSA9PT0gJ3VuZGVmaW5lZCcgJiYga2V5LnRvTG93ZXJDYXNlKCkgPT09ICdjb250ZW50LXR5cGUnKSB7XHJcbiAgICAgICAgICAvLyBSZW1vdmUgQ29udGVudC1UeXBlIGlmIGRhdGEgaXMgdW5kZWZpbmVkXHJcbiAgICAgICAgICBkZWxldGUgcmVxdWVzdEhlYWRlcnNba2V5XTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gT3RoZXJ3aXNlIGFkZCBoZWFkZXIgdG8gdGhlIHJlcXVlc3RcclxuICAgICAgICAgIHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcihrZXksIHZhbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBBZGQgd2l0aENyZWRlbnRpYWxzIHRvIHJlcXVlc3QgaWYgbmVlZGVkXHJcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZy53aXRoQ3JlZGVudGlhbHMpKSB7XHJcbiAgICAgIHJlcXVlc3Qud2l0aENyZWRlbnRpYWxzID0gISFjb25maWcud2l0aENyZWRlbnRpYWxzO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFkZCByZXNwb25zZVR5cGUgdG8gcmVxdWVzdCBpZiBuZWVkZWRcclxuICAgIGlmIChyZXNwb25zZVR5cGUgJiYgcmVzcG9uc2VUeXBlICE9PSAnanNvbicpIHtcclxuICAgICAgcmVxdWVzdC5yZXNwb25zZVR5cGUgPSBjb25maWcucmVzcG9uc2VUeXBlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhhbmRsZSBwcm9ncmVzcyBpZiBuZWVkZWRcclxuICAgIGlmICh0eXBlb2YgY29uZmlnLm9uRG93bmxvYWRQcm9ncmVzcyA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICByZXF1ZXN0LmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgY29uZmlnLm9uRG93bmxvYWRQcm9ncmVzcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTm90IGFsbCBicm93c2VycyBzdXBwb3J0IHVwbG9hZCBldmVudHNcclxuICAgIGlmICh0eXBlb2YgY29uZmlnLm9uVXBsb2FkUHJvZ3Jlc3MgPT09ICdmdW5jdGlvbicgJiYgcmVxdWVzdC51cGxvYWQpIHtcclxuICAgICAgcmVxdWVzdC51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBjb25maWcub25VcGxvYWRQcm9ncmVzcyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbmZpZy5jYW5jZWxUb2tlbiB8fCBjb25maWcuc2lnbmFsKSB7XHJcbiAgICAgIC8vIEhhbmRsZSBjYW5jZWxsYXRpb25cclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcclxuICAgICAgb25DYW5jZWxlZCA9IGZ1bmN0aW9uKGNhbmNlbCkge1xyXG4gICAgICAgIGlmICghcmVxdWVzdCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZWplY3QoIWNhbmNlbCB8fCAoY2FuY2VsICYmIGNhbmNlbC50eXBlKSA/IG5ldyBDYW5jZWwoJ2NhbmNlbGVkJykgOiBjYW5jZWwpO1xyXG4gICAgICAgIHJlcXVlc3QuYWJvcnQoKTtcclxuICAgICAgICByZXF1ZXN0ID0gbnVsbDtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGNvbmZpZy5jYW5jZWxUb2tlbiAmJiBjb25maWcuY2FuY2VsVG9rZW4uc3Vic2NyaWJlKG9uQ2FuY2VsZWQpO1xyXG4gICAgICBpZiAoY29uZmlnLnNpZ25hbCkge1xyXG4gICAgICAgIGNvbmZpZy5zaWduYWwuYWJvcnRlZCA/IG9uQ2FuY2VsZWQoKSA6IGNvbmZpZy5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBvbkNhbmNlbGVkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICghcmVxdWVzdERhdGEpIHtcclxuICAgICAgcmVxdWVzdERhdGEgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFNlbmQgdGhlIHJlcXVlc3RcclxuICAgIHJlcXVlc3Quc2VuZChyZXF1ZXN0RGF0YSk7XHJcbiAgfSk7XHJcbn07XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbnZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJy4vY3JlYXRlRXJyb3InKTtcclxuXHJcbi8qKlxyXG4gKiBSZXNvbHZlIG9yIHJlamVjdCBhIFByb21pc2UgYmFzZWQgb24gcmVzcG9uc2Ugc3RhdHVzLlxyXG4gKlxyXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByZXNvbHZlIEEgZnVuY3Rpb24gdGhhdCByZXNvbHZlcyB0aGUgcHJvbWlzZS5cclxuICogQHBhcmFtIHtGdW5jdGlvbn0gcmVqZWN0IEEgZnVuY3Rpb24gdGhhdCByZWplY3RzIHRoZSBwcm9taXNlLlxyXG4gKiBAcGFyYW0ge29iamVjdH0gcmVzcG9uc2UgVGhlIHJlc3BvbnNlLlxyXG4gKi9cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCByZXNwb25zZSkge1xyXG4gIHZhciB2YWxpZGF0ZVN0YXR1cyA9IHJlc3BvbnNlLmNvbmZpZy52YWxpZGF0ZVN0YXR1cztcclxuICBpZiAoIXJlc3BvbnNlLnN0YXR1cyB8fCAhdmFsaWRhdGVTdGF0dXMgfHwgdmFsaWRhdGVTdGF0dXMocmVzcG9uc2Uuc3RhdHVzKSkge1xyXG4gICAgcmVzb2x2ZShyZXNwb25zZSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJlamVjdChjcmVhdGVFcnJvcihcclxuICAgICAgJ1JlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgJyArIHJlc3BvbnNlLnN0YXR1cyxcclxuICAgICAgcmVzcG9uc2UuY29uZmlnLFxyXG4gICAgICBudWxsLFxyXG4gICAgICByZXNwb25zZS5yZXF1ZXN0LFxyXG4gICAgICByZXNwb25zZVxyXG4gICAgKSk7XHJcbiAgfVxyXG59O1xyXG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG52YXIgZW5oYW5jZUVycm9yID0gcmVxdWlyZSgnLi9lbmhhbmNlRXJyb3InKTtcclxuXHJcbi8qKlxyXG4gKiBDcmVhdGUgYW4gRXJyb3Igd2l0aCB0aGUgc3BlY2lmaWVkIG1lc3NhZ2UsIGNvbmZpZywgZXJyb3IgY29kZSwgcmVxdWVzdCBhbmQgcmVzcG9uc2UuXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxyXG4gKiBAcGFyYW0ge09iamVjdH0gY29uZmlnIFRoZSBjb25maWcuXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29kZV0gVGhlIGVycm9yIGNvZGUgKGZvciBleGFtcGxlLCAnRUNPTk5BQk9SVEVEJykuXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVxdWVzdF0gVGhlIHJlcXVlc3QuXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBbcmVzcG9uc2VdIFRoZSByZXNwb25zZS5cclxuICogQHJldHVybnMge0Vycm9yfSBUaGUgY3JlYXRlZCBlcnJvci5cclxuICovXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlRXJyb3IobWVzc2FnZSwgY29uZmlnLCBjb2RlLCByZXF1ZXN0LCByZXNwb25zZSkge1xyXG4gIHZhciBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICByZXR1cm4gZW5oYW5jZUVycm9yKGVycm9yLCBjb25maWcsIGNvZGUsIHJlcXVlc3QsIHJlc3BvbnNlKTtcclxufTtcclxuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSAoXHJcbiAgdXRpbHMuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSA/XHJcblxyXG4gIC8vIFN0YW5kYXJkIGJyb3dzZXIgZW52cyBzdXBwb3J0IGRvY3VtZW50LmNvb2tpZVxyXG4gICAgKGZ1bmN0aW9uIHN0YW5kYXJkQnJvd3NlckVudigpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICB3cml0ZTogZnVuY3Rpb24gd3JpdGUobmFtZSwgdmFsdWUsIGV4cGlyZXMsIHBhdGgsIGRvbWFpbiwgc2VjdXJlKSB7XHJcbiAgICAgICAgICB2YXIgY29va2llID0gW107XHJcbiAgICAgICAgICBjb29raWUucHVzaChuYW1lICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSk7XHJcblxyXG4gICAgICAgICAgaWYgKHV0aWxzLmlzTnVtYmVyKGV4cGlyZXMpKSB7XHJcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdleHBpcmVzPScgKyBuZXcgRGF0ZShleHBpcmVzKS50b0dNVFN0cmluZygpKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAodXRpbHMuaXNTdHJpbmcocGF0aCkpIHtcclxuICAgICAgICAgICAgY29va2llLnB1c2goJ3BhdGg9JyArIHBhdGgpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmICh1dGlscy5pc1N0cmluZyhkb21haW4pKSB7XHJcbiAgICAgICAgICAgIGNvb2tpZS5wdXNoKCdkb21haW49JyArIGRvbWFpbik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHNlY3VyZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICBjb29raWUucHVzaCgnc2VjdXJlJyk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgZG9jdW1lbnQuY29va2llID0gY29va2llLmpvaW4oJzsgJyk7XHJcbiAgICAgICAgfSxcclxuXHJcbiAgICAgICAgcmVhZDogZnVuY3Rpb24gcmVhZChuYW1lKSB7XHJcbiAgICAgICAgICB2YXIgbWF0Y2ggPSBkb2N1bWVudC5jb29raWUubWF0Y2gobmV3IFJlZ0V4cCgnKF58O1xcXFxzKikoJyArIG5hbWUgKyAnKT0oW147XSopJykpO1xyXG4gICAgICAgICAgcmV0dXJuIChtYXRjaCA/IGRlY29kZVVSSUNvbXBvbmVudChtYXRjaFszXSkgOiBudWxsKTtcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZShuYW1lKSB7XHJcbiAgICAgICAgICB0aGlzLndyaXRlKG5hbWUsICcnLCBEYXRlLm5vdygpIC0gODY0MDAwMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgIH0pKCkgOlxyXG5cclxuICAvLyBOb24gc3RhbmRhcmQgYnJvd3NlciBlbnYgKHdlYiB3b3JrZXJzLCByZWFjdC1uYXRpdmUpIGxhY2sgbmVlZGVkIHN1cHBvcnQuXHJcbiAgICAoZnVuY3Rpb24gbm9uU3RhbmRhcmRCcm93c2VyRW52KCkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHdyaXRlOiBmdW5jdGlvbiB3cml0ZSgpIHt9LFxyXG4gICAgICAgIHJlYWQ6IGZ1bmN0aW9uIHJlYWQoKSB7IHJldHVybiBudWxsOyB9LFxyXG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge31cclxuICAgICAgfTtcclxuICAgIH0pKClcclxuKTtcclxuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxudmFyIGlzQWJzb2x1dGVVUkwgPSByZXF1aXJlKCcuLi9oZWxwZXJzL2lzQWJzb2x1dGVVUkwnKTtcclxudmFyIGNvbWJpbmVVUkxzID0gcmVxdWlyZSgnLi4vaGVscGVycy9jb21iaW5lVVJMcycpO1xyXG5cclxuLyoqXHJcbiAqIENyZWF0ZXMgYSBuZXcgVVJMIGJ5IGNvbWJpbmluZyB0aGUgYmFzZVVSTCB3aXRoIHRoZSByZXF1ZXN0ZWRVUkwsXHJcbiAqIG9ubHkgd2hlbiB0aGUgcmVxdWVzdGVkVVJMIGlzIG5vdCBhbHJlYWR5IGFuIGFic29sdXRlIFVSTC5cclxuICogSWYgdGhlIHJlcXVlc3RVUkwgaXMgYWJzb2x1dGUsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVxdWVzdGVkVVJMIHVudG91Y2hlZC5cclxuICpcclxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2VVUkwgVGhlIGJhc2UgVVJMXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSByZXF1ZXN0ZWRVUkwgQWJzb2x1dGUgb3IgcmVsYXRpdmUgVVJMIHRvIGNvbWJpbmVcclxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbWJpbmVkIGZ1bGwgcGF0aFxyXG4gKi9cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBidWlsZEZ1bGxQYXRoKGJhc2VVUkwsIHJlcXVlc3RlZFVSTCkge1xyXG4gIGlmIChiYXNlVVJMICYmICFpc0Fic29sdXRlVVJMKHJlcXVlc3RlZFVSTCkpIHtcclxuICAgIHJldHVybiBjb21iaW5lVVJMcyhiYXNlVVJMLCByZXF1ZXN0ZWRVUkwpO1xyXG4gIH1cclxuICByZXR1cm4gcmVxdWVzdGVkVVJMO1xyXG59O1xyXG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgVVJMIGlzIGFic29sdXRlXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgVGhlIFVSTCB0byB0ZXN0XHJcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBzcGVjaWZpZWQgVVJMIGlzIGFic29sdXRlLCBvdGhlcndpc2UgZmFsc2VcclxuICovXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNBYnNvbHV0ZVVSTCh1cmwpIHtcclxuICAvLyBBIFVSTCBpcyBjb25zaWRlcmVkIGFic29sdXRlIGlmIGl0IGJlZ2lucyB3aXRoIFwiPHNjaGVtZT46Ly9cIiBvciBcIi8vXCIgKHByb3RvY29sLXJlbGF0aXZlIFVSTCkuXHJcbiAgLy8gUkZDIDM5ODYgZGVmaW5lcyBzY2hlbWUgbmFtZSBhcyBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgYmVnaW5uaW5nIHdpdGggYSBsZXR0ZXIgYW5kIGZvbGxvd2VkXHJcbiAgLy8gYnkgYW55IGNvbWJpbmF0aW9uIG9mIGxldHRlcnMsIGRpZ2l0cywgcGx1cywgcGVyaW9kLCBvciBoeXBoZW4uXHJcbiAgcmV0dXJuIC9eKFthLXpdW2EtelxcZCtcXC0uXSo6KT9cXC9cXC8vaS50ZXN0KHVybCk7XHJcbn07XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbi8qKlxyXG4gKiBDcmVhdGVzIGEgbmV3IFVSTCBieSBjb21iaW5pbmcgdGhlIHNwZWNpZmllZCBVUkxzXHJcbiAqXHJcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlVVJMIFRoZSBiYXNlIFVSTFxyXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVsYXRpdmVVUkwgVGhlIHJlbGF0aXZlIFVSTFxyXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tYmluZWQgVVJMXHJcbiAqL1xyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNvbWJpbmVVUkxzKGJhc2VVUkwsIHJlbGF0aXZlVVJMKSB7XHJcbiAgcmV0dXJuIHJlbGF0aXZlVVJMXHJcbiAgICA/IGJhc2VVUkwucmVwbGFjZSgvXFwvKyQvLCAnJykgKyAnLycgKyByZWxhdGl2ZVVSTC5yZXBsYWNlKC9eXFwvKy8sICcnKVxyXG4gICAgOiBiYXNlVVJMO1xyXG59O1xyXG4iLCIndXNlIHN0cmljdCc7XHJcblxyXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLy4uL3V0aWxzJyk7XHJcblxyXG4vLyBIZWFkZXJzIHdob3NlIGR1cGxpY2F0ZXMgYXJlIGlnbm9yZWQgYnkgbm9kZVxyXG4vLyBjLmYuIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvaHR0cC5odG1sI2h0dHBfbWVzc2FnZV9oZWFkZXJzXHJcbnZhciBpZ25vcmVEdXBsaWNhdGVPZiA9IFtcclxuICAnYWdlJywgJ2F1dGhvcml6YXRpb24nLCAnY29udGVudC1sZW5ndGgnLCAnY29udGVudC10eXBlJywgJ2V0YWcnLFxyXG4gICdleHBpcmVzJywgJ2Zyb20nLCAnaG9zdCcsICdpZi1tb2RpZmllZC1zaW5jZScsICdpZi11bm1vZGlmaWVkLXNpbmNlJyxcclxuICAnbGFzdC1tb2RpZmllZCcsICdsb2NhdGlvbicsICdtYXgtZm9yd2FyZHMnLCAncHJveHktYXV0aG9yaXphdGlvbicsXHJcbiAgJ3JlZmVyZXInLCAncmV0cnktYWZ0ZXInLCAndXNlci1hZ2VudCdcclxuXTtcclxuXHJcbi8qKlxyXG4gKiBQYXJzZSBoZWFkZXJzIGludG8gYW4gb2JqZWN0XHJcbiAqXHJcbiAqIGBgYFxyXG4gKiBEYXRlOiBXZWQsIDI3IEF1ZyAyMDE0IDA4OjU4OjQ5IEdNVFxyXG4gKiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb25cclxuICogQ29ubmVjdGlvbjoga2VlcC1hbGl2ZVxyXG4gKiBUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxyXG4gKiBgYGBcclxuICpcclxuICogQHBhcmFtIHtTdHJpbmd9IGhlYWRlcnMgSGVhZGVycyBuZWVkaW5nIHRvIGJlIHBhcnNlZFxyXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBIZWFkZXJzIHBhcnNlZCBpbnRvIGFuIG9iamVjdFxyXG4gKi9cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwYXJzZUhlYWRlcnMoaGVhZGVycykge1xyXG4gIHZhciBwYXJzZWQgPSB7fTtcclxuICB2YXIga2V5O1xyXG4gIHZhciB2YWw7XHJcbiAgdmFyIGk7XHJcblxyXG4gIGlmICghaGVhZGVycykgeyByZXR1cm4gcGFyc2VkOyB9XHJcblxyXG4gIHV0aWxzLmZvckVhY2goaGVhZGVycy5zcGxpdCgnXFxuJyksIGZ1bmN0aW9uIHBhcnNlcihsaW5lKSB7XHJcbiAgICBpID0gbGluZS5pbmRleE9mKCc6Jyk7XHJcbiAgICBrZXkgPSB1dGlscy50cmltKGxpbmUuc3Vic3RyKDAsIGkpKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgdmFsID0gdXRpbHMudHJpbShsaW5lLnN1YnN0cihpICsgMSkpO1xyXG5cclxuICAgIGlmIChrZXkpIHtcclxuICAgICAgaWYgKHBhcnNlZFtrZXldICYmIGlnbm9yZUR1cGxpY2F0ZU9mLmluZGV4T2Yoa2V5KSA+PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChrZXkgPT09ICdzZXQtY29va2llJykge1xyXG4gICAgICAgIHBhcnNlZFtrZXldID0gKHBhcnNlZFtrZXldID8gcGFyc2VkW2tleV0gOiBbXSkuY29uY2F0KFt2YWxdKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXJzZWRba2V5XSA9IHBhcnNlZFtrZXldID8gcGFyc2VkW2tleV0gKyAnLCAnICsgdmFsIDogdmFsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBwYXJzZWQ7XHJcbn07XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vLi4vdXRpbHMnKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gKFxyXG4gIHV0aWxzLmlzU3RhbmRhcmRCcm93c2VyRW52KCkgP1xyXG5cclxuICAvLyBTdGFuZGFyZCBicm93c2VyIGVudnMgaGF2ZSBmdWxsIHN1cHBvcnQgb2YgdGhlIEFQSXMgbmVlZGVkIHRvIHRlc3RcclxuICAvLyB3aGV0aGVyIHRoZSByZXF1ZXN0IFVSTCBpcyBvZiB0aGUgc2FtZSBvcmlnaW4gYXMgY3VycmVudCBsb2NhdGlvbi5cclxuICAgIChmdW5jdGlvbiBzdGFuZGFyZEJyb3dzZXJFbnYoKSB7XHJcbiAgICAgIHZhciBtc2llID0gLyhtc2llfHRyaWRlbnQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcclxuICAgICAgdmFyIHVybFBhcnNpbmdOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICB2YXIgb3JpZ2luVVJMO1xyXG5cclxuICAgICAgLyoqXHJcbiAgICAqIFBhcnNlIGEgVVJMIHRvIGRpc2NvdmVyIGl0J3MgY29tcG9uZW50c1xyXG4gICAgKlxyXG4gICAgKiBAcGFyYW0ge1N0cmluZ30gdXJsIFRoZSBVUkwgdG8gYmUgcGFyc2VkXHJcbiAgICAqIEByZXR1cm5zIHtPYmplY3R9XHJcbiAgICAqL1xyXG4gICAgICBmdW5jdGlvbiByZXNvbHZlVVJMKHVybCkge1xyXG4gICAgICAgIHZhciBocmVmID0gdXJsO1xyXG5cclxuICAgICAgICBpZiAobXNpZSkge1xyXG4gICAgICAgIC8vIElFIG5lZWRzIGF0dHJpYnV0ZSBzZXQgdHdpY2UgdG8gbm9ybWFsaXplIHByb3BlcnRpZXNcclxuICAgICAgICAgIHVybFBhcnNpbmdOb2RlLnNldEF0dHJpYnV0ZSgnaHJlZicsIGhyZWYpO1xyXG4gICAgICAgICAgaHJlZiA9IHVybFBhcnNpbmdOb2RlLmhyZWY7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB1cmxQYXJzaW5nTm9kZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBocmVmKTtcclxuXHJcbiAgICAgICAgLy8gdXJsUGFyc2luZ05vZGUgcHJvdmlkZXMgdGhlIFVybFV0aWxzIGludGVyZmFjZSAtIGh0dHA6Ly91cmwuc3BlYy53aGF0d2cub3JnLyN1cmx1dGlsc1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBocmVmOiB1cmxQYXJzaW5nTm9kZS5ocmVmLFxyXG4gICAgICAgICAgcHJvdG9jb2w6IHVybFBhcnNpbmdOb2RlLnByb3RvY29sID8gdXJsUGFyc2luZ05vZGUucHJvdG9jb2wucmVwbGFjZSgvOiQvLCAnJykgOiAnJyxcclxuICAgICAgICAgIGhvc3Q6IHVybFBhcnNpbmdOb2RlLmhvc3QsXHJcbiAgICAgICAgICBzZWFyY2g6IHVybFBhcnNpbmdOb2RlLnNlYXJjaCA/IHVybFBhcnNpbmdOb2RlLnNlYXJjaC5yZXBsYWNlKC9eXFw/LywgJycpIDogJycsXHJcbiAgICAgICAgICBoYXNoOiB1cmxQYXJzaW5nTm9kZS5oYXNoID8gdXJsUGFyc2luZ05vZGUuaGFzaC5yZXBsYWNlKC9eIy8sICcnKSA6ICcnLFxyXG4gICAgICAgICAgaG9zdG5hbWU6IHVybFBhcnNpbmdOb2RlLmhvc3RuYW1lLFxyXG4gICAgICAgICAgcG9ydDogdXJsUGFyc2luZ05vZGUucG9ydCxcclxuICAgICAgICAgIHBhdGhuYW1lOiAodXJsUGFyc2luZ05vZGUucGF0aG5hbWUuY2hhckF0KDApID09PSAnLycpID9cclxuICAgICAgICAgICAgdXJsUGFyc2luZ05vZGUucGF0aG5hbWUgOlxyXG4gICAgICAgICAgICAnLycgKyB1cmxQYXJzaW5nTm9kZS5wYXRobmFtZVxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG9yaWdpblVSTCA9IHJlc29sdmVVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xyXG5cclxuICAgICAgLyoqXHJcbiAgICAqIERldGVybWluZSBpZiBhIFVSTCBzaGFyZXMgdGhlIHNhbWUgb3JpZ2luIGFzIHRoZSBjdXJyZW50IGxvY2F0aW9uXHJcbiAgICAqXHJcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSByZXF1ZXN0VVJMIFRoZSBVUkwgdG8gdGVzdFxyXG4gICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBVUkwgc2hhcmVzIHRoZSBzYW1lIG9yaWdpbiwgb3RoZXJ3aXNlIGZhbHNlXHJcbiAgICAqL1xyXG4gICAgICByZXR1cm4gZnVuY3Rpb24gaXNVUkxTYW1lT3JpZ2luKHJlcXVlc3RVUkwpIHtcclxuICAgICAgICB2YXIgcGFyc2VkID0gKHV0aWxzLmlzU3RyaW5nKHJlcXVlc3RVUkwpKSA/IHJlc29sdmVVUkwocmVxdWVzdFVSTCkgOiByZXF1ZXN0VVJMO1xyXG4gICAgICAgIHJldHVybiAocGFyc2VkLnByb3RvY29sID09PSBvcmlnaW5VUkwucHJvdG9jb2wgJiZcclxuICAgICAgICAgICAgcGFyc2VkLmhvc3QgPT09IG9yaWdpblVSTC5ob3N0KTtcclxuICAgICAgfTtcclxuICAgIH0pKCkgOlxyXG5cclxuICAvLyBOb24gc3RhbmRhcmQgYnJvd3NlciBlbnZzICh3ZWIgd29ya2VycywgcmVhY3QtbmF0aXZlKSBsYWNrIG5lZWRlZCBzdXBwb3J0LlxyXG4gICAgKGZ1bmN0aW9uIG5vblN0YW5kYXJkQnJvd3NlckVudigpIHtcclxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIGlzVVJMU2FtZU9yaWdpbigpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfTtcclxuICAgIH0pKClcclxuKTtcclxuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxuLyoqXHJcbiAqIEEgYENhbmNlbGAgaXMgYW4gb2JqZWN0IHRoYXQgaXMgdGhyb3duIHdoZW4gYW4gb3BlcmF0aW9uIGlzIGNhbmNlbGVkLlxyXG4gKlxyXG4gKiBAY2xhc3NcclxuICogQHBhcmFtIHtzdHJpbmc9fSBtZXNzYWdlIFRoZSBtZXNzYWdlLlxyXG4gKi9cclxuZnVuY3Rpb24gQ2FuY2VsKG1lc3NhZ2UpIHtcclxuICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlO1xyXG59XHJcblxyXG5DYW5jZWwucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XHJcbiAgcmV0dXJuICdDYW5jZWwnICsgKHRoaXMubWVzc2FnZSA/ICc6ICcgKyB0aGlzLm1lc3NhZ2UgOiAnJyk7XHJcbn07XHJcblxyXG5DYW5jZWwucHJvdG90eXBlLl9fQ0FOQ0VMX18gPSB0cnVlO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBDYW5jZWw7XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNDYW5jZWwodmFsdWUpIHtcclxuICByZXR1cm4gISEodmFsdWUgJiYgdmFsdWUuX19DQU5DRUxfXyk7XHJcbn07XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XHJcblxyXG4vKipcclxuICogQ29uZmlnLXNwZWNpZmljIG1lcmdlLWZ1bmN0aW9uIHdoaWNoIGNyZWF0ZXMgYSBuZXcgY29uZmlnLW9iamVjdFxyXG4gKiBieSBtZXJnaW5nIHR3byBjb25maWd1cmF0aW9uIG9iamVjdHMgdG9nZXRoZXIuXHJcbiAqXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcxXHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcyXHJcbiAqIEByZXR1cm5zIHtPYmplY3R9IE5ldyBvYmplY3QgcmVzdWx0aW5nIGZyb20gbWVyZ2luZyBjb25maWcyIHRvIGNvbmZpZzFcclxuICovXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbWVyZ2VDb25maWcoY29uZmlnMSwgY29uZmlnMikge1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxyXG4gIGNvbmZpZzIgPSBjb25maWcyIHx8IHt9O1xyXG4gIHZhciBjb25maWcgPSB7fTtcclxuXHJcbiAgZnVuY3Rpb24gZ2V0TWVyZ2VkVmFsdWUodGFyZ2V0LCBzb3VyY2UpIHtcclxuICAgIGlmICh1dGlscy5pc1BsYWluT2JqZWN0KHRhcmdldCkgJiYgdXRpbHMuaXNQbGFpbk9iamVjdChzb3VyY2UpKSB7XHJcbiAgICAgIHJldHVybiB1dGlscy5tZXJnZSh0YXJnZXQsIHNvdXJjZSk7XHJcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzUGxhaW5PYmplY3Qoc291cmNlKSkge1xyXG4gICAgICByZXR1cm4gdXRpbHMubWVyZ2Uoe30sIHNvdXJjZSk7XHJcbiAgICB9IGVsc2UgaWYgKHV0aWxzLmlzQXJyYXkoc291cmNlKSkge1xyXG4gICAgICByZXR1cm4gc291cmNlLnNsaWNlKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc291cmNlO1xyXG4gIH1cclxuXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXHJcbiAgZnVuY3Rpb24gbWVyZ2VEZWVwUHJvcGVydGllcyhwcm9wKSB7XHJcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XHJcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZShjb25maWcxW3Byb3BdLCBjb25maWcyW3Byb3BdKTtcclxuICAgIH0gZWxzZSBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzFbcHJvcF0pKSB7XHJcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzFbcHJvcF0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXHJcbiAgZnVuY3Rpb24gdmFsdWVGcm9tQ29uZmlnMihwcm9wKSB7XHJcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XHJcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzJbcHJvcF0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXHJcbiAgZnVuY3Rpb24gZGVmYXVsdFRvQ29uZmlnMihwcm9wKSB7XHJcbiAgICBpZiAoIXV0aWxzLmlzVW5kZWZpbmVkKGNvbmZpZzJbcHJvcF0pKSB7XHJcbiAgICAgIHJldHVybiBnZXRNZXJnZWRWYWx1ZSh1bmRlZmluZWQsIGNvbmZpZzJbcHJvcF0pO1xyXG4gICAgfSBlbHNlIGlmICghdXRpbHMuaXNVbmRlZmluZWQoY29uZmlnMVtwcm9wXSkpIHtcclxuICAgICAgcmV0dXJuIGdldE1lcmdlZFZhbHVlKHVuZGVmaW5lZCwgY29uZmlnMVtwcm9wXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cclxuICBmdW5jdGlvbiBtZXJnZURpcmVjdEtleXMocHJvcCkge1xyXG4gICAgaWYgKHByb3AgaW4gY29uZmlnMikge1xyXG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUoY29uZmlnMVtwcm9wXSwgY29uZmlnMltwcm9wXSk7XHJcbiAgICB9IGVsc2UgaWYgKHByb3AgaW4gY29uZmlnMSkge1xyXG4gICAgICByZXR1cm4gZ2V0TWVyZ2VkVmFsdWUodW5kZWZpbmVkLCBjb25maWcxW3Byb3BdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhciBtZXJnZU1hcCA9IHtcclxuICAgICd1cmwnOiB2YWx1ZUZyb21Db25maWcyLFxyXG4gICAgJ21ldGhvZCc6IHZhbHVlRnJvbUNvbmZpZzIsXHJcbiAgICAnZGF0YSc6IHZhbHVlRnJvbUNvbmZpZzIsXHJcbiAgICAnYmFzZVVSTCc6IGRlZmF1bHRUb0NvbmZpZzIsXHJcbiAgICAndHJhbnNmb3JtUmVxdWVzdCc6IGRlZmF1bHRUb0NvbmZpZzIsXHJcbiAgICAndHJhbnNmb3JtUmVzcG9uc2UnOiBkZWZhdWx0VG9Db25maWcyLFxyXG4gICAgJ3BhcmFtc1NlcmlhbGl6ZXInOiBkZWZhdWx0VG9Db25maWcyLFxyXG4gICAgJ3RpbWVvdXQnOiBkZWZhdWx0VG9Db25maWcyLFxyXG4gICAgJ3RpbWVvdXRNZXNzYWdlJzogZGVmYXVsdFRvQ29uZmlnMixcclxuICAgICd3aXRoQ3JlZGVudGlhbHMnOiBkZWZhdWx0VG9Db25maWcyLFxyXG4gICAgJ2FkYXB0ZXInOiBkZWZhdWx0VG9Db25maWcyLFxyXG4gICAgJ3Jlc3BvbnNlVHlwZSc6IGRlZmF1bHRUb0NvbmZpZzIsXHJcbiAgICAneHNyZkNvb2tpZU5hbWUnOiBkZWZhdWx0VG9Db25maWcyLFxyXG4gICAgJ3hzcmZIZWFkZXJOYW1lJzogZGVmYXVsdFRvQ29uZmlnMixcclxuICAgICdvblVwbG9hZFByb2dyZXNzJzogZGVmYXVsdFRvQ29uZmlnMixcclxuICAgICdvbkRvd25sb2FkUHJvZ3Jlc3MnOiBkZWZhdWx0VG9Db25maWcyLFxyXG4gICAgJ2RlY29tcHJlc3MnOiBkZWZhdWx0VG9Db25maWcyLFxyXG4gICAgJ21heENvbnRlbnRMZW5ndGgnOiBkZWZhdWx0VG9Db25maWcyLFxyXG4gICAgJ21heEJvZHlMZW5ndGgnOiBkZWZhdWx0VG9Db25maWcyLFxyXG4gICAgJ3RyYW5zcG9ydCc6IGRlZmF1bHRUb0NvbmZpZzIsXHJcbiAgICAnaHR0cEFnZW50JzogZGVmYXVsdFRvQ29uZmlnMixcclxuICAgICdodHRwc0FnZW50JzogZGVmYXVsdFRvQ29uZmlnMixcclxuICAgICdjYW5jZWxUb2tlbic6IGRlZmF1bHRUb0NvbmZpZzIsXHJcbiAgICAnc29ja2V0UGF0aCc6IGRlZmF1bHRUb0NvbmZpZzIsXHJcbiAgICAncmVzcG9uc2VFbmNvZGluZyc6IGRlZmF1bHRUb0NvbmZpZzIsXHJcbiAgICAndmFsaWRhdGVTdGF0dXMnOiBtZXJnZURpcmVjdEtleXNcclxuICB9O1xyXG5cclxuICB1dGlscy5mb3JFYWNoKE9iamVjdC5rZXlzKGNvbmZpZzEpLmNvbmNhdChPYmplY3Qua2V5cyhjb25maWcyKSksIGZ1bmN0aW9uIGNvbXB1dGVDb25maWdWYWx1ZShwcm9wKSB7XHJcbiAgICB2YXIgbWVyZ2UgPSBtZXJnZU1hcFtwcm9wXSB8fCBtZXJnZURlZXBQcm9wZXJ0aWVzO1xyXG4gICAgdmFyIGNvbmZpZ1ZhbHVlID0gbWVyZ2UocHJvcCk7XHJcbiAgICAodXRpbHMuaXNVbmRlZmluZWQoY29uZmlnVmFsdWUpICYmIG1lcmdlICE9PSBtZXJnZURpcmVjdEtleXMpIHx8IChjb25maWdbcHJvcF0gPSBjb25maWdWYWx1ZSk7XHJcbiAgfSk7XHJcblxyXG4gIHJldHVybiBjb25maWc7XHJcbn07XHJcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbnZhciBWRVJTSU9OID0gcmVxdWlyZSgnLi4vZW52L2RhdGEnKS52ZXJzaW9uO1xyXG5cclxudmFyIHZhbGlkYXRvcnMgPSB7fTtcclxuXHJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXHJcblsnb2JqZWN0JywgJ2Jvb2xlYW4nLCAnbnVtYmVyJywgJ2Z1bmN0aW9uJywgJ3N0cmluZycsICdzeW1ib2wnXS5mb3JFYWNoKGZ1bmN0aW9uKHR5cGUsIGkpIHtcclxuICB2YWxpZGF0b3JzW3R5cGVdID0gZnVuY3Rpb24gdmFsaWRhdG9yKHRoaW5nKSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHRoaW5nID09PSB0eXBlIHx8ICdhJyArIChpIDwgMSA/ICduICcgOiAnICcpICsgdHlwZTtcclxuICB9O1xyXG59KTtcclxuXHJcbnZhciBkZXByZWNhdGVkV2FybmluZ3MgPSB7fTtcclxuXHJcbi8qKlxyXG4gKiBUcmFuc2l0aW9uYWwgb3B0aW9uIHZhbGlkYXRvclxyXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufGJvb2xlYW4/fSB2YWxpZGF0b3IgLSBzZXQgdG8gZmFsc2UgaWYgdGhlIHRyYW5zaXRpb25hbCBvcHRpb24gaGFzIGJlZW4gcmVtb3ZlZFxyXG4gKiBAcGFyYW0ge3N0cmluZz99IHZlcnNpb24gLSBkZXByZWNhdGVkIHZlcnNpb24gLyByZW1vdmVkIHNpbmNlIHZlcnNpb25cclxuICogQHBhcmFtIHtzdHJpbmc/fSBtZXNzYWdlIC0gc29tZSBtZXNzYWdlIHdpdGggYWRkaXRpb25hbCBpbmZvXHJcbiAqIEByZXR1cm5zIHtmdW5jdGlvbn1cclxuICovXHJcbnZhbGlkYXRvcnMudHJhbnNpdGlvbmFsID0gZnVuY3Rpb24gdHJhbnNpdGlvbmFsKHZhbGlkYXRvciwgdmVyc2lvbiwgbWVzc2FnZSkge1xyXG4gIGZ1bmN0aW9uIGZvcm1hdE1lc3NhZ2Uob3B0LCBkZXNjKSB7XHJcbiAgICByZXR1cm4gJ1tBeGlvcyB2JyArIFZFUlNJT04gKyAnXSBUcmFuc2l0aW9uYWwgb3B0aW9uIFxcJycgKyBvcHQgKyAnXFwnJyArIGRlc2MgKyAobWVzc2FnZSA/ICcuICcgKyBtZXNzYWdlIDogJycpO1xyXG4gIH1cclxuXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcclxuICByZXR1cm4gZnVuY3Rpb24odmFsdWUsIG9wdCwgb3B0cykge1xyXG4gICAgaWYgKHZhbGlkYXRvciA9PT0gZmFsc2UpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdE1lc3NhZ2Uob3B0LCAnIGhhcyBiZWVuIHJlbW92ZWQnICsgKHZlcnNpb24gPyAnIGluICcgKyB2ZXJzaW9uIDogJycpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZlcnNpb24gJiYgIWRlcHJlY2F0ZWRXYXJuaW5nc1tvcHRdKSB7XHJcbiAgICAgIGRlcHJlY2F0ZWRXYXJuaW5nc1tvcHRdID0gdHJ1ZTtcclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgIGZvcm1hdE1lc3NhZ2UoXHJcbiAgICAgICAgICBvcHQsXHJcbiAgICAgICAgICAnIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdicgKyB2ZXJzaW9uICsgJyBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZWFyIGZ1dHVyZSdcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHZhbGlkYXRvciA/IHZhbGlkYXRvcih2YWx1ZSwgb3B0LCBvcHRzKSA6IHRydWU7XHJcbiAgfTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBBc3NlcnQgb2JqZWN0J3MgcHJvcGVydGllcyB0eXBlXHJcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRpb25zXHJcbiAqIEBwYXJhbSB7b2JqZWN0fSBzY2hlbWFcclxuICogQHBhcmFtIHtib29sZWFuP30gYWxsb3dVbmtub3duXHJcbiAqL1xyXG5cclxuZnVuY3Rpb24gYXNzZXJ0T3B0aW9ucyhvcHRpb25zLCBzY2hlbWEsIGFsbG93VW5rbm93bikge1xyXG4gIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcclxuICB9XHJcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvcHRpb25zKTtcclxuICB2YXIgaSA9IGtleXMubGVuZ3RoO1xyXG4gIHdoaWxlIChpLS0gPiAwKSB7XHJcbiAgICB2YXIgb3B0ID0ga2V5c1tpXTtcclxuICAgIHZhciB2YWxpZGF0b3IgPSBzY2hlbWFbb3B0XTtcclxuICAgIGlmICh2YWxpZGF0b3IpIHtcclxuICAgICAgdmFyIHZhbHVlID0gb3B0aW9uc1tvcHRdO1xyXG4gICAgICB2YXIgcmVzdWx0ID0gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWxpZGF0b3IodmFsdWUsIG9wdCwgb3B0aW9ucyk7XHJcbiAgICAgIGlmIChyZXN1bHQgIT09IHRydWUpIHtcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb24gJyArIG9wdCArICcgbXVzdCBiZSAnICsgcmVzdWx0KTtcclxuICAgICAgfVxyXG4gICAgICBjb250aW51ZTtcclxuICAgIH1cclxuICAgIGlmIChhbGxvd1Vua25vd24gIT09IHRydWUpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoJ1Vua25vd24gb3B0aW9uICcgKyBvcHQpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7XHJcbiAgYXNzZXJ0T3B0aW9uczogYXNzZXJ0T3B0aW9ucyxcclxuICB2YWxpZGF0b3JzOiB2YWxpZGF0b3JzXHJcbn07XHJcbiIsIm1vZHVsZS5leHBvcnRzID0ge1xyXG4gIFwidmVyc2lvblwiOiBcIjAuMjYuMVwiXHJcbn07IiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxudmFyIENhbmNlbCA9IHJlcXVpcmUoJy4vQ2FuY2VsJyk7XHJcblxyXG4vKipcclxuICogQSBgQ2FuY2VsVG9rZW5gIGlzIGFuIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlcXVlc3QgY2FuY2VsbGF0aW9uIG9mIGFuIG9wZXJhdGlvbi5cclxuICpcclxuICogQGNsYXNzXHJcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGV4ZWN1dG9yIFRoZSBleGVjdXRvciBmdW5jdGlvbi5cclxuICovXHJcbmZ1bmN0aW9uIENhbmNlbFRva2VuKGV4ZWN1dG9yKSB7XHJcbiAgaWYgKHR5cGVvZiBleGVjdXRvciAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZXhlY3V0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLicpO1xyXG4gIH1cclxuXHJcbiAgdmFyIHJlc29sdmVQcm9taXNlO1xyXG5cclxuICB0aGlzLnByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiBwcm9taXNlRXhlY3V0b3IocmVzb2x2ZSkge1xyXG4gICAgcmVzb2x2ZVByb21pc2UgPSByZXNvbHZlO1xyXG4gIH0pO1xyXG5cclxuICB2YXIgdG9rZW4gPSB0aGlzO1xyXG5cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xyXG4gIHRoaXMucHJvbWlzZS50aGVuKGZ1bmN0aW9uKGNhbmNlbCkge1xyXG4gICAgaWYgKCF0b2tlbi5fbGlzdGVuZXJzKSByZXR1cm47XHJcblxyXG4gICAgdmFyIGk7XHJcbiAgICB2YXIgbCA9IHRva2VuLl9saXN0ZW5lcnMubGVuZ3RoO1xyXG5cclxuICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcclxuICAgICAgdG9rZW4uX2xpc3RlbmVyc1tpXShjYW5jZWwpO1xyXG4gICAgfVxyXG4gICAgdG9rZW4uX2xpc3RlbmVycyA9IG51bGw7XHJcbiAgfSk7XHJcblxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXHJcbiAgdGhpcy5wcm9taXNlLnRoZW4gPSBmdW5jdGlvbihvbmZ1bGZpbGxlZCkge1xyXG4gICAgdmFyIF9yZXNvbHZlO1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcclxuICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSkge1xyXG4gICAgICB0b2tlbi5zdWJzY3JpYmUocmVzb2x2ZSk7XHJcbiAgICAgIF9yZXNvbHZlID0gcmVzb2x2ZTtcclxuICAgIH0pLnRoZW4ob25mdWxmaWxsZWQpO1xyXG5cclxuICAgIHByb21pc2UuY2FuY2VsID0gZnVuY3Rpb24gcmVqZWN0KCkge1xyXG4gICAgICB0b2tlbi51bnN1YnNjcmliZShfcmVzb2x2ZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBwcm9taXNlO1xyXG4gIH07XHJcblxyXG4gIGV4ZWN1dG9yKGZ1bmN0aW9uIGNhbmNlbChtZXNzYWdlKSB7XHJcbiAgICBpZiAodG9rZW4ucmVhc29uKSB7XHJcbiAgICAgIC8vIENhbmNlbGxhdGlvbiBoYXMgYWxyZWFkeSBiZWVuIHJlcXVlc3RlZFxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdG9rZW4ucmVhc29uID0gbmV3IENhbmNlbChtZXNzYWdlKTtcclxuICAgIHJlc29sdmVQcm9taXNlKHRva2VuLnJlYXNvbik7XHJcbiAgfSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUaHJvd3MgYSBgQ2FuY2VsYCBpZiBjYW5jZWxsYXRpb24gaGFzIGJlZW4gcmVxdWVzdGVkLlxyXG4gKi9cclxuQ2FuY2VsVG9rZW4ucHJvdG90eXBlLnRocm93SWZSZXF1ZXN0ZWQgPSBmdW5jdGlvbiB0aHJvd0lmUmVxdWVzdGVkKCkge1xyXG4gIGlmICh0aGlzLnJlYXNvbikge1xyXG4gICAgdGhyb3cgdGhpcy5yZWFzb247XHJcbiAgfVxyXG59O1xyXG5cclxuLyoqXHJcbiAqIFN1YnNjcmliZSB0byB0aGUgY2FuY2VsIHNpZ25hbFxyXG4gKi9cclxuXHJcbkNhbmNlbFRva2VuLnByb3RvdHlwZS5zdWJzY3JpYmUgPSBmdW5jdGlvbiBzdWJzY3JpYmUobGlzdGVuZXIpIHtcclxuICBpZiAodGhpcy5yZWFzb24pIHtcclxuICAgIGxpc3RlbmVyKHRoaXMucmVhc29uKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGlmICh0aGlzLl9saXN0ZW5lcnMpIHtcclxuICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcclxuICB9IGVsc2Uge1xyXG4gICAgdGhpcy5fbGlzdGVuZXJzID0gW2xpc3RlbmVyXTtcclxuICB9XHJcbn07XHJcblxyXG4vKipcclxuICogVW5zdWJzY3JpYmUgZnJvbSB0aGUgY2FuY2VsIHNpZ25hbFxyXG4gKi9cclxuXHJcbkNhbmNlbFRva2VuLnByb3RvdHlwZS51bnN1YnNjcmliZSA9IGZ1bmN0aW9uIHVuc3Vic2NyaWJlKGxpc3RlbmVyKSB7XHJcbiAgaWYgKCF0aGlzLl9saXN0ZW5lcnMpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgdmFyIGluZGV4ID0gdGhpcy5fbGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xyXG4gIGlmIChpbmRleCAhPT0gLTEpIHtcclxuICAgIHRoaXMuX2xpc3RlbmVycy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gIH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiBSZXR1cm5zIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgbmV3IGBDYW5jZWxUb2tlbmAgYW5kIGEgZnVuY3Rpb24gdGhhdCwgd2hlbiBjYWxsZWQsXHJcbiAqIGNhbmNlbHMgdGhlIGBDYW5jZWxUb2tlbmAuXHJcbiAqL1xyXG5DYW5jZWxUb2tlbi5zb3VyY2UgPSBmdW5jdGlvbiBzb3VyY2UoKSB7XHJcbiAgdmFyIGNhbmNlbDtcclxuICB2YXIgdG9rZW4gPSBuZXcgQ2FuY2VsVG9rZW4oZnVuY3Rpb24gZXhlY3V0b3IoYykge1xyXG4gICAgY2FuY2VsID0gYztcclxuICB9KTtcclxuICByZXR1cm4ge1xyXG4gICAgdG9rZW46IHRva2VuLFxyXG4gICAgY2FuY2VsOiBjYW5jZWxcclxuICB9O1xyXG59O1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBDYW5jZWxUb2tlbjtcclxuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxuLyoqXHJcbiAqIFN5bnRhY3RpYyBzdWdhciBmb3IgaW52b2tpbmcgYSBmdW5jdGlvbiBhbmQgZXhwYW5kaW5nIGFuIGFycmF5IGZvciBhcmd1bWVudHMuXHJcbiAqXHJcbiAqIENvbW1vbiB1c2UgY2FzZSB3b3VsZCBiZSB0byB1c2UgYEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseWAuXHJcbiAqXHJcbiAqICBgYGBqc1xyXG4gKiAgZnVuY3Rpb24gZih4LCB5LCB6KSB7fVxyXG4gKiAgdmFyIGFyZ3MgPSBbMSwgMiwgM107XHJcbiAqICBmLmFwcGx5KG51bGwsIGFyZ3MpO1xyXG4gKiAgYGBgXHJcbiAqXHJcbiAqIFdpdGggYHNwcmVhZGAgdGhpcyBleGFtcGxlIGNhbiBiZSByZS13cml0dGVuLlxyXG4gKlxyXG4gKiAgYGBganNcclxuICogIHNwcmVhZChmdW5jdGlvbih4LCB5LCB6KSB7fSkoWzEsIDIsIDNdKTtcclxuICogIGBgYFxyXG4gKlxyXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja1xyXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259XHJcbiAqL1xyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHNwcmVhZChjYWxsYmFjaykge1xyXG4gIHJldHVybiBmdW5jdGlvbiB3cmFwKGFycikge1xyXG4gICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KG51bGwsIGFycik7XHJcbiAgfTtcclxufTtcclxuIiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi8uLi91dGlscycpO1xyXG5cclxuLyoqXHJcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgcGF5bG9hZCBpcyBhbiBlcnJvciB0aHJvd24gYnkgQXhpb3NcclxuICpcclxuICogQHBhcmFtIHsqfSBwYXlsb2FkIFRoZSB2YWx1ZSB0byB0ZXN0XHJcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBwYXlsb2FkIGlzIGFuIGVycm9yIHRocm93biBieSBBeGlvcywgb3RoZXJ3aXNlIGZhbHNlXHJcbiAqL1xyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQXhpb3NFcnJvcihwYXlsb2FkKSB7XHJcbiAgcmV0dXJuIHV0aWxzLmlzT2JqZWN0KHBheWxvYWQpICYmIChwYXlsb2FkLmlzQXhpb3NFcnJvciA9PT0gdHJ1ZSk7XHJcbn07XHJcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHN0cmluZ2lmeSA9IHJlcXVpcmUoJy4vc3RyaW5naWZ5Jyk7XG52YXIgcGFyc2UgPSByZXF1aXJlKCcuL3BhcnNlJyk7XG52YXIgZm9ybWF0cyA9IHJlcXVpcmUoJy4vZm9ybWF0cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBmb3JtYXRzOiBmb3JtYXRzLFxuICAgIHBhcnNlOiBwYXJzZSxcbiAgICBzdHJpbmdpZnk6IHN0cmluZ2lmeVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIGZvcm1hdHMgPSByZXF1aXJlKCcuL2Zvcm1hdHMnKTtcblxudmFyIGFycmF5UHJlZml4R2VuZXJhdG9ycyA9IHtcbiAgICBicmFja2V0czogZnVuY3Rpb24gYnJhY2tldHMocHJlZml4KSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZnVuYy1uYW1lLW1hdGNoaW5nXG4gICAgICAgIHJldHVybiBwcmVmaXggKyAnW10nO1xuICAgIH0sXG4gICAgaW5kaWNlczogZnVuY3Rpb24gaW5kaWNlcyhwcmVmaXgsIGtleSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGZ1bmMtbmFtZS1tYXRjaGluZ1xuICAgICAgICByZXR1cm4gcHJlZml4ICsgJ1snICsga2V5ICsgJ10nO1xuICAgIH0sXG4gICAgcmVwZWF0OiBmdW5jdGlvbiByZXBlYXQocHJlZml4KSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZnVuYy1uYW1lLW1hdGNoaW5nXG4gICAgICAgIHJldHVybiBwcmVmaXg7XG4gICAgfVxufTtcblxudmFyIHRvSVNPID0gRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmc7XG5cbnZhciBkZWZhdWx0cyA9IHtcbiAgICBkZWxpbWl0ZXI6ICcmJyxcbiAgICBlbmNvZGU6IHRydWUsXG4gICAgZW5jb2RlcjogdXRpbHMuZW5jb2RlLFxuICAgIGVuY29kZVZhbHVlc09ubHk6IGZhbHNlLFxuICAgIHNlcmlhbGl6ZURhdGU6IGZ1bmN0aW9uIHNlcmlhbGl6ZURhdGUoZGF0ZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGZ1bmMtbmFtZS1tYXRjaGluZ1xuICAgICAgICByZXR1cm4gdG9JU08uY2FsbChkYXRlKTtcbiAgICB9LFxuICAgIHNraXBOdWxsczogZmFsc2UsXG4gICAgc3RyaWN0TnVsbEhhbmRsaW5nOiBmYWxzZVxufTtcblxudmFyIHN0cmluZ2lmeSA9IGZ1bmN0aW9uIHN0cmluZ2lmeSggLy8gZXNsaW50LWRpc2FibGUtbGluZSBmdW5jLW5hbWUtbWF0Y2hpbmdcbiAgICBvYmplY3QsXG4gICAgcHJlZml4LFxuICAgIGdlbmVyYXRlQXJyYXlQcmVmaXgsXG4gICAgc3RyaWN0TnVsbEhhbmRsaW5nLFxuICAgIHNraXBOdWxscyxcbiAgICBlbmNvZGVyLFxuICAgIGZpbHRlcixcbiAgICBzb3J0LFxuICAgIGFsbG93RG90cyxcbiAgICBzZXJpYWxpemVEYXRlLFxuICAgIGZvcm1hdHRlcixcbiAgICBlbmNvZGVWYWx1ZXNPbmx5XG4pIHtcbiAgICB2YXIgb2JqID0gb2JqZWN0O1xuICAgIGlmICh0eXBlb2YgZmlsdGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG9iaiA9IGZpbHRlcihwcmVmaXgsIG9iaik7XG4gICAgfSBlbHNlIGlmIChvYmogaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIG9iaiA9IHNlcmlhbGl6ZURhdGUob2JqKTtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gbnVsbCkge1xuICAgICAgICBpZiAoc3RyaWN0TnVsbEhhbmRsaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gZW5jb2RlciAmJiAhZW5jb2RlVmFsdWVzT25seSA/IGVuY29kZXIocHJlZml4LCBkZWZhdWx0cy5lbmNvZGVyKSA6IHByZWZpeDtcbiAgICAgICAgfVxuXG4gICAgICAgIG9iaiA9ICcnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb2JqID09PSAnbnVtYmVyJyB8fCB0eXBlb2Ygb2JqID09PSAnYm9vbGVhbicgfHwgdXRpbHMuaXNCdWZmZXIob2JqKSkge1xuICAgICAgICBpZiAoZW5jb2Rlcikge1xuICAgICAgICAgICAgdmFyIGtleVZhbHVlID0gZW5jb2RlVmFsdWVzT25seSA/IHByZWZpeCA6IGVuY29kZXIocHJlZml4LCBkZWZhdWx0cy5lbmNvZGVyKTtcbiAgICAgICAgICAgIHJldHVybiBbZm9ybWF0dGVyKGtleVZhbHVlKSArICc9JyArIGZvcm1hdHRlcihlbmNvZGVyKG9iaiwgZGVmYXVsdHMuZW5jb2RlcikpXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW2Zvcm1hdHRlcihwcmVmaXgpICsgJz0nICsgZm9ybWF0dGVyKFN0cmluZyhvYmopKV07XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlcyA9IFtdO1xuXG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgfVxuXG4gICAgdmFyIG9iaktleXM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZmlsdGVyKSkge1xuICAgICAgICBvYmpLZXlzID0gZmlsdGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcbiAgICAgICAgb2JqS2V5cyA9IHNvcnQgPyBrZXlzLnNvcnQoc29ydCkgOiBrZXlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2JqS2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIga2V5ID0gb2JqS2V5c1tpXTtcblxuICAgICAgICBpZiAoc2tpcE51bGxzICYmIG9ialtrZXldID09PSBudWxsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgICAgICAgIHZhbHVlcyA9IHZhbHVlcy5jb25jYXQoc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgIG9ialtrZXldLFxuICAgICAgICAgICAgICAgIGdlbmVyYXRlQXJyYXlQcmVmaXgocHJlZml4LCBrZXkpLFxuICAgICAgICAgICAgICAgIGdlbmVyYXRlQXJyYXlQcmVmaXgsXG4gICAgICAgICAgICAgICAgc3RyaWN0TnVsbEhhbmRsaW5nLFxuICAgICAgICAgICAgICAgIHNraXBOdWxscyxcbiAgICAgICAgICAgICAgICBlbmNvZGVyLFxuICAgICAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgICAgICBzb3J0LFxuICAgICAgICAgICAgICAgIGFsbG93RG90cyxcbiAgICAgICAgICAgICAgICBzZXJpYWxpemVEYXRlLFxuICAgICAgICAgICAgICAgIGZvcm1hdHRlcixcbiAgICAgICAgICAgICAgICBlbmNvZGVWYWx1ZXNPbmx5XG4gICAgICAgICAgICApKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlcyA9IHZhbHVlcy5jb25jYXQoc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgIG9ialtrZXldLFxuICAgICAgICAgICAgICAgIHByZWZpeCArIChhbGxvd0RvdHMgPyAnLicgKyBrZXkgOiAnWycgKyBrZXkgKyAnXScpLFxuICAgICAgICAgICAgICAgIGdlbmVyYXRlQXJyYXlQcmVmaXgsXG4gICAgICAgICAgICAgICAgc3RyaWN0TnVsbEhhbmRsaW5nLFxuICAgICAgICAgICAgICAgIHNraXBOdWxscyxcbiAgICAgICAgICAgICAgICBlbmNvZGVyLFxuICAgICAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgICAgICBzb3J0LFxuICAgICAgICAgICAgICAgIGFsbG93RG90cyxcbiAgICAgICAgICAgICAgICBzZXJpYWxpemVEYXRlLFxuICAgICAgICAgICAgICAgIGZvcm1hdHRlcixcbiAgICAgICAgICAgICAgICBlbmNvZGVWYWx1ZXNPbmx5XG4gICAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZXM7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG9wdHMpIHtcbiAgICB2YXIgb2JqID0gb2JqZWN0O1xuICAgIHZhciBvcHRpb25zID0gb3B0cyA/IHV0aWxzLmFzc2lnbih7fSwgb3B0cykgOiB7fTtcblxuICAgIGlmIChvcHRpb25zLmVuY29kZXIgIT09IG51bGwgJiYgb3B0aW9ucy5lbmNvZGVyICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdGlvbnMuZW5jb2RlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFbmNvZGVyIGhhcyB0byBiZSBhIGZ1bmN0aW9uLicpO1xuICAgIH1cblxuICAgIHZhciBkZWxpbWl0ZXIgPSB0eXBlb2Ygb3B0aW9ucy5kZWxpbWl0ZXIgPT09ICd1bmRlZmluZWQnID8gZGVmYXVsdHMuZGVsaW1pdGVyIDogb3B0aW9ucy5kZWxpbWl0ZXI7XG4gICAgdmFyIHN0cmljdE51bGxIYW5kbGluZyA9IHR5cGVvZiBvcHRpb25zLnN0cmljdE51bGxIYW5kbGluZyA9PT0gJ2Jvb2xlYW4nID8gb3B0aW9ucy5zdHJpY3ROdWxsSGFuZGxpbmcgOiBkZWZhdWx0cy5zdHJpY3ROdWxsSGFuZGxpbmc7XG4gICAgdmFyIHNraXBOdWxscyA9IHR5cGVvZiBvcHRpb25zLnNraXBOdWxscyA9PT0gJ2Jvb2xlYW4nID8gb3B0aW9ucy5za2lwTnVsbHMgOiBkZWZhdWx0cy5za2lwTnVsbHM7XG4gICAgdmFyIGVuY29kZSA9IHR5cGVvZiBvcHRpb25zLmVuY29kZSA9PT0gJ2Jvb2xlYW4nID8gb3B0aW9ucy5lbmNvZGUgOiBkZWZhdWx0cy5lbmNvZGU7XG4gICAgdmFyIGVuY29kZXIgPSB0eXBlb2Ygb3B0aW9ucy5lbmNvZGVyID09PSAnZnVuY3Rpb24nID8gb3B0aW9ucy5lbmNvZGVyIDogZGVmYXVsdHMuZW5jb2RlcjtcbiAgICB2YXIgc29ydCA9IHR5cGVvZiBvcHRpb25zLnNvcnQgPT09ICdmdW5jdGlvbicgPyBvcHRpb25zLnNvcnQgOiBudWxsO1xuICAgIHZhciBhbGxvd0RvdHMgPSB0eXBlb2Ygb3B0aW9ucy5hbGxvd0RvdHMgPT09ICd1bmRlZmluZWQnID8gZmFsc2UgOiBvcHRpb25zLmFsbG93RG90cztcbiAgICB2YXIgc2VyaWFsaXplRGF0ZSA9IHR5cGVvZiBvcHRpb25zLnNlcmlhbGl6ZURhdGUgPT09ICdmdW5jdGlvbicgPyBvcHRpb25zLnNlcmlhbGl6ZURhdGUgOiBkZWZhdWx0cy5zZXJpYWxpemVEYXRlO1xuICAgIHZhciBlbmNvZGVWYWx1ZXNPbmx5ID0gdHlwZW9mIG9wdGlvbnMuZW5jb2RlVmFsdWVzT25seSA9PT0gJ2Jvb2xlYW4nID8gb3B0aW9ucy5lbmNvZGVWYWx1ZXNPbmx5IDogZGVmYXVsdHMuZW5jb2RlVmFsdWVzT25seTtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZm9ybWF0ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBvcHRpb25zLmZvcm1hdCA9IGZvcm1hdHNbJ2RlZmF1bHQnXTtcbiAgICB9IGVsc2UgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZm9ybWF0cy5mb3JtYXR0ZXJzLCBvcHRpb25zLmZvcm1hdCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBmb3JtYXQgb3B0aW9uIHByb3ZpZGVkLicpO1xuICAgIH1cbiAgICB2YXIgZm9ybWF0dGVyID0gZm9ybWF0cy5mb3JtYXR0ZXJzW29wdGlvbnMuZm9ybWF0XTtcbiAgICB2YXIgb2JqS2V5cztcbiAgICB2YXIgZmlsdGVyO1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmZpbHRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBmaWx0ZXIgPSBvcHRpb25zLmZpbHRlcjtcbiAgICAgICAgb2JqID0gZmlsdGVyKCcnLCBvYmopO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zLmZpbHRlcikpIHtcbiAgICAgICAgZmlsdGVyID0gb3B0aW9ucy5maWx0ZXI7XG4gICAgICAgIG9iaktleXMgPSBmaWx0ZXI7XG4gICAgfVxuXG4gICAgdmFyIGtleXMgPSBbXTtcblxuICAgIGlmICh0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JyB8fCBvYmogPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHZhciBhcnJheUZvcm1hdDtcbiAgICBpZiAob3B0aW9ucy5hcnJheUZvcm1hdCBpbiBhcnJheVByZWZpeEdlbmVyYXRvcnMpIHtcbiAgICAgICAgYXJyYXlGb3JtYXQgPSBvcHRpb25zLmFycmF5Rm9ybWF0O1xuICAgIH0gZWxzZSBpZiAoJ2luZGljZXMnIGluIG9wdGlvbnMpIHtcbiAgICAgICAgYXJyYXlGb3JtYXQgPSBvcHRpb25zLmluZGljZXMgPyAnaW5kaWNlcycgOiAncmVwZWF0JztcbiAgICB9IGVsc2Uge1xuICAgICAgICBhcnJheUZvcm1hdCA9ICdpbmRpY2VzJztcbiAgICB9XG5cbiAgICB2YXIgZ2VuZXJhdGVBcnJheVByZWZpeCA9IGFycmF5UHJlZml4R2VuZXJhdG9yc1thcnJheUZvcm1hdF07XG5cbiAgICBpZiAoIW9iaktleXMpIHtcbiAgICAgICAgb2JqS2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgfVxuXG4gICAgaWYgKHNvcnQpIHtcbiAgICAgICAgb2JqS2V5cy5zb3J0KHNvcnQpO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2JqS2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIga2V5ID0gb2JqS2V5c1tpXTtcblxuICAgICAgICBpZiAoc2tpcE51bGxzICYmIG9ialtrZXldID09PSBudWxsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGtleXMgPSBrZXlzLmNvbmNhdChzdHJpbmdpZnkoXG4gICAgICAgICAgICBvYmpba2V5XSxcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIGdlbmVyYXRlQXJyYXlQcmVmaXgsXG4gICAgICAgICAgICBzdHJpY3ROdWxsSGFuZGxpbmcsXG4gICAgICAgICAgICBza2lwTnVsbHMsXG4gICAgICAgICAgICBlbmNvZGUgPyBlbmNvZGVyIDogbnVsbCxcbiAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgIHNvcnQsXG4gICAgICAgICAgICBhbGxvd0RvdHMsXG4gICAgICAgICAgICBzZXJpYWxpemVEYXRlLFxuICAgICAgICAgICAgZm9ybWF0dGVyLFxuICAgICAgICAgICAgZW5jb2RlVmFsdWVzT25seVxuICAgICAgICApKTtcbiAgICB9XG5cbiAgICB2YXIgam9pbmVkID0ga2V5cy5qb2luKGRlbGltaXRlcik7XG4gICAgdmFyIHByZWZpeCA9IG9wdGlvbnMuYWRkUXVlcnlQcmVmaXggPT09IHRydWUgPyAnPycgOiAnJztcblxuICAgIHJldHVybiBqb2luZWQubGVuZ3RoID4gMCA/IHByZWZpeCArIGpvaW5lZCA6ICcnO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbnZhciBoZXhUYWJsZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFycmF5ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7ICsraSkge1xuICAgICAgICBhcnJheS5wdXNoKCclJyArICgoaSA8IDE2ID8gJzAnIDogJycpICsgaS50b1N0cmluZygxNikpLnRvVXBwZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIHJldHVybiBhcnJheTtcbn0oKSk7XG5cbnZhciBjb21wYWN0UXVldWUgPSBmdW5jdGlvbiBjb21wYWN0UXVldWUocXVldWUpIHtcbiAgICB2YXIgb2JqO1xuXG4gICAgd2hpbGUgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICB2YXIgaXRlbSA9IHF1ZXVlLnBvcCgpO1xuICAgICAgICBvYmogPSBpdGVtLm9ialtpdGVtLnByb3BdO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICAgICAgICAgIHZhciBjb21wYWN0ZWQgPSBbXTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBvYmoubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9ialtqXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcGFjdGVkLnB1c2gob2JqW2pdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGl0ZW0ub2JqW2l0ZW0ucHJvcF0gPSBjb21wYWN0ZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb2JqO1xufTtcblxudmFyIGFycmF5VG9PYmplY3QgPSBmdW5jdGlvbiBhcnJheVRvT2JqZWN0KHNvdXJjZSwgb3B0aW9ucykge1xuICAgIHZhciBvYmogPSBvcHRpb25zICYmIG9wdGlvbnMucGxhaW5PYmplY3RzID8gT2JqZWN0LmNyZWF0ZShudWxsKSA6IHt9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc291cmNlLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc291cmNlW2ldICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgb2JqW2ldID0gc291cmNlW2ldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iajtcbn07XG5cbnZhciBtZXJnZSA9IGZ1bmN0aW9uIG1lcmdlKHRhcmdldCwgc291cmNlLCBvcHRpb25zKSB7XG4gICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGFyZ2V0KSkge1xuICAgICAgICAgICAgdGFyZ2V0LnB1c2goc291cmNlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMucGxhaW5PYmplY3RzIHx8IG9wdGlvbnMuYWxsb3dQcm90b3R5cGVzIHx8ICFoYXMuY2FsbChPYmplY3QucHJvdG90eXBlLCBzb3VyY2UpKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W3NvdXJjZV0gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFt0YXJnZXQsIHNvdXJjZV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGFyZ2V0O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGFyZ2V0ICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gW3RhcmdldF0uY29uY2F0KHNvdXJjZSk7XG4gICAgfVxuXG4gICAgdmFyIG1lcmdlVGFyZ2V0ID0gdGFyZ2V0O1xuICAgIGlmIChBcnJheS5pc0FycmF5KHRhcmdldCkgJiYgIUFycmF5LmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgICBtZXJnZVRhcmdldCA9IGFycmF5VG9PYmplY3QodGFyZ2V0LCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0YXJnZXQpICYmIEFycmF5LmlzQXJyYXkoc291cmNlKSkge1xuICAgICAgICBzb3VyY2UuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgaSkge1xuICAgICAgICAgICAgaWYgKGhhcy5jYWxsKHRhcmdldCwgaSkpIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0W2ldICYmIHR5cGVvZiB0YXJnZXRbaV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFtpXSA9IG1lcmdlKHRhcmdldFtpXSwgaXRlbSwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRbaV0gPSBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoc291cmNlKS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywga2V5KSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHNvdXJjZVtrZXldO1xuXG4gICAgICAgIGlmIChoYXMuY2FsbChhY2MsIGtleSkpIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gbWVyZ2UoYWNjW2tleV0sIHZhbHVlLCBvcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFjY1trZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBtZXJnZVRhcmdldCk7XG59O1xuXG52YXIgYXNzaWduID0gZnVuY3Rpb24gYXNzaWduU2luZ2xlU291cmNlKHRhcmdldCwgc291cmNlKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHNvdXJjZSkucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGtleSkge1xuICAgICAgICBhY2Nba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHRhcmdldCk7XG59O1xuXG52YXIgZGVjb2RlID0gZnVuY3Rpb24gKHN0cikge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoc3RyLnJlcGxhY2UoL1xcKy9nLCAnICcpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxufTtcblxudmFyIGVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShzdHIpIHtcbiAgICAvLyBUaGlzIGNvZGUgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBCcmlhbiBXaGl0ZSAobXNjZGV4KSBmb3IgdGhlIGlvLmpzIGNvcmUgcXVlcnlzdHJpbmcgbGlicmFyeS5cbiAgICAvLyBJdCBoYXMgYmVlbiBhZGFwdGVkIGhlcmUgZm9yIHN0cmljdGVyIGFkaGVyZW5jZSB0byBSRkMgMzk4NlxuICAgIGlmIChzdHIubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuXG4gICAgdmFyIHN0cmluZyA9IHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnID8gc3RyIDogU3RyaW5nKHN0cik7XG5cbiAgICB2YXIgb3V0ID0gJyc7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGMgPSBzdHJpbmcuY2hhckNvZGVBdChpKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjID09PSAweDJEIC8vIC1cbiAgICAgICAgICAgIHx8IGMgPT09IDB4MkUgLy8gLlxuICAgICAgICAgICAgfHwgYyA9PT0gMHg1RiAvLyBfXG4gICAgICAgICAgICB8fCBjID09PSAweDdFIC8vIH5cbiAgICAgICAgICAgIHx8IChjID49IDB4MzAgJiYgYyA8PSAweDM5KSAvLyAwLTlcbiAgICAgICAgICAgIHx8IChjID49IDB4NDEgJiYgYyA8PSAweDVBKSAvLyBhLXpcbiAgICAgICAgICAgIHx8IChjID49IDB4NjEgJiYgYyA8PSAweDdBKSAvLyBBLVpcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBvdXQgKz0gc3RyaW5nLmNoYXJBdChpKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGMgPCAweDgwKSB7XG4gICAgICAgICAgICBvdXQgPSBvdXQgKyBoZXhUYWJsZVtjXTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGMgPCAweDgwMCkge1xuICAgICAgICAgICAgb3V0ID0gb3V0ICsgKGhleFRhYmxlWzB4QzAgfCAoYyA+PiA2KV0gKyBoZXhUYWJsZVsweDgwIHwgKGMgJiAweDNGKV0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYyA8IDB4RDgwMCB8fCBjID49IDB4RTAwMCkge1xuICAgICAgICAgICAgb3V0ID0gb3V0ICsgKGhleFRhYmxlWzB4RTAgfCAoYyA+PiAxMildICsgaGV4VGFibGVbMHg4MCB8ICgoYyA+PiA2KSAmIDB4M0YpXSArIGhleFRhYmxlWzB4ODAgfCAoYyAmIDB4M0YpXSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGkgKz0gMTtcbiAgICAgICAgYyA9IDB4MTAwMDAgKyAoKChjICYgMHgzRkYpIDw8IDEwKSB8IChzdHJpbmcuY2hhckNvZGVBdChpKSAmIDB4M0ZGKSk7XG4gICAgICAgIG91dCArPSBoZXhUYWJsZVsweEYwIHwgKGMgPj4gMTgpXVxuICAgICAgICAgICAgKyBoZXhUYWJsZVsweDgwIHwgKChjID4+IDEyKSAmIDB4M0YpXVxuICAgICAgICAgICAgKyBoZXhUYWJsZVsweDgwIHwgKChjID4+IDYpICYgMHgzRildXG4gICAgICAgICAgICArIGhleFRhYmxlWzB4ODAgfCAoYyAmIDB4M0YpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0O1xufTtcblxudmFyIGNvbXBhY3QgPSBmdW5jdGlvbiBjb21wYWN0KHZhbHVlKSB7XG4gICAgdmFyIHF1ZXVlID0gW3sgb2JqOiB7IG86IHZhbHVlIH0sIHByb3A6ICdvJyB9XTtcbiAgICB2YXIgcmVmcyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgaXRlbSA9IHF1ZXVlW2ldO1xuICAgICAgICB2YXIgb2JqID0gaXRlbS5vYmpbaXRlbS5wcm9wXTtcblxuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwga2V5cy5sZW5ndGg7ICsraikge1xuICAgICAgICAgICAgdmFyIGtleSA9IGtleXNbal07XG4gICAgICAgICAgICB2YXIgdmFsID0gb2JqW2tleV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsICE9PSBudWxsICYmIHJlZnMuaW5kZXhPZih2YWwpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHF1ZXVlLnB1c2goeyBvYmo6IG9iaiwgcHJvcDoga2V5IH0pO1xuICAgICAgICAgICAgICAgIHJlZnMucHVzaCh2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbXBhY3RRdWV1ZShxdWV1ZSk7XG59O1xuXG52YXIgaXNSZWdFeHAgPSBmdW5jdGlvbiBpc1JlZ0V4cChvYmopIHtcbiAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IFJlZ0V4cF0nO1xufTtcblxudmFyIGlzQnVmZmVyID0gZnVuY3Rpb24gaXNCdWZmZXIob2JqKSB7XG4gICAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuICEhKG9iai5jb25zdHJ1Y3RvciAmJiBvYmouY29uc3RydWN0b3IuaXNCdWZmZXIgJiYgb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyKG9iaikpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYXJyYXlUb09iamVjdDogYXJyYXlUb09iamVjdCxcbiAgICBhc3NpZ246IGFzc2lnbixcbiAgICBjb21wYWN0OiBjb21wYWN0LFxuICAgIGRlY29kZTogZGVjb2RlLFxuICAgIGVuY29kZTogZW5jb2RlLFxuICAgIGlzQnVmZmVyOiBpc0J1ZmZlcixcbiAgICBpc1JlZ0V4cDogaXNSZWdFeHAsXG4gICAgbWVyZ2U6IG1lcmdlXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcmVwbGFjZSA9IFN0cmluZy5wcm90b3R5cGUucmVwbGFjZTtcbnZhciBwZXJjZW50VHdlbnRpZXMgPSAvJTIwL2c7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgICdkZWZhdWx0JzogJ1JGQzM5ODYnLFxuICAgIGZvcm1hdHRlcnM6IHtcbiAgICAgICAgUkZDMTczODogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVwbGFjZS5jYWxsKHZhbHVlLCBwZXJjZW50VHdlbnRpZXMsICcrJyk7XG4gICAgICAgIH0sXG4gICAgICAgIFJGQzM5ODY6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBSRkMxNzM4OiAnUkZDMTczOCcsXG4gICAgUkZDMzk4NjogJ1JGQzM5ODYnXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbnZhciBoYXMgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgZGVmYXVsdHMgPSB7XG4gICAgYWxsb3dEb3RzOiBmYWxzZSxcbiAgICBhbGxvd1Byb3RvdHlwZXM6IGZhbHNlLFxuICAgIGFycmF5TGltaXQ6IDIwLFxuICAgIGRlY29kZXI6IHV0aWxzLmRlY29kZSxcbiAgICBkZWxpbWl0ZXI6ICcmJyxcbiAgICBkZXB0aDogNSxcbiAgICBwYXJhbWV0ZXJMaW1pdDogMTAwMCxcbiAgICBwbGFpbk9iamVjdHM6IGZhbHNlLFxuICAgIHN0cmljdE51bGxIYW5kbGluZzogZmFsc2Vcbn07XG5cbnZhciBwYXJzZVZhbHVlcyA9IGZ1bmN0aW9uIHBhcnNlUXVlcnlTdHJpbmdWYWx1ZXMoc3RyLCBvcHRpb25zKSB7XG4gICAgdmFyIG9iaiA9IHt9O1xuICAgIHZhciBjbGVhblN0ciA9IG9wdGlvbnMuaWdub3JlUXVlcnlQcmVmaXggPyBzdHIucmVwbGFjZSgvXlxcPy8sICcnKSA6IHN0cjtcbiAgICB2YXIgbGltaXQgPSBvcHRpb25zLnBhcmFtZXRlckxpbWl0ID09PSBJbmZpbml0eSA/IHVuZGVmaW5lZCA6IG9wdGlvbnMucGFyYW1ldGVyTGltaXQ7XG4gICAgdmFyIHBhcnRzID0gY2xlYW5TdHIuc3BsaXQob3B0aW9ucy5kZWxpbWl0ZXIsIGxpbWl0KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXTtcblxuICAgICAgICB2YXIgYnJhY2tldEVxdWFsc1BvcyA9IHBhcnQuaW5kZXhPZignXT0nKTtcbiAgICAgICAgdmFyIHBvcyA9IGJyYWNrZXRFcXVhbHNQb3MgPT09IC0xID8gcGFydC5pbmRleE9mKCc9JykgOiBicmFja2V0RXF1YWxzUG9zICsgMTtcblxuICAgICAgICB2YXIga2V5LCB2YWw7XG4gICAgICAgIGlmIChwb3MgPT09IC0xKSB7XG4gICAgICAgICAgICBrZXkgPSBvcHRpb25zLmRlY29kZXIocGFydCwgZGVmYXVsdHMuZGVjb2Rlcik7XG4gICAgICAgICAgICB2YWwgPSBvcHRpb25zLnN0cmljdE51bGxIYW5kbGluZyA/IG51bGwgOiAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGtleSA9IG9wdGlvbnMuZGVjb2RlcihwYXJ0LnNsaWNlKDAsIHBvcyksIGRlZmF1bHRzLmRlY29kZXIpO1xuICAgICAgICAgICAgdmFsID0gb3B0aW9ucy5kZWNvZGVyKHBhcnQuc2xpY2UocG9zICsgMSksIGRlZmF1bHRzLmRlY29kZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChoYXMuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIG9ialtrZXldID0gW10uY29uY2F0KG9ialtrZXldKS5jb25jYXQodmFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9ialtrZXldID0gdmFsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9iajtcbn07XG5cbnZhciBwYXJzZU9iamVjdCA9IGZ1bmN0aW9uIChjaGFpbiwgdmFsLCBvcHRpb25zKSB7XG4gICAgdmFyIGxlYWYgPSB2YWw7XG5cbiAgICBmb3IgKHZhciBpID0gY2hhaW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIG9iajtcbiAgICAgICAgdmFyIHJvb3QgPSBjaGFpbltpXTtcblxuICAgICAgICBpZiAocm9vdCA9PT0gJ1tdJykge1xuICAgICAgICAgICAgb2JqID0gW107XG4gICAgICAgICAgICBvYmogPSBvYmouY29uY2F0KGxlYWYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2JqID0gb3B0aW9ucy5wbGFpbk9iamVjdHMgPyBPYmplY3QuY3JlYXRlKG51bGwpIDoge307XG4gICAgICAgICAgICB2YXIgY2xlYW5Sb290ID0gcm9vdC5jaGFyQXQoMCkgPT09ICdbJyAmJiByb290LmNoYXJBdChyb290Lmxlbmd0aCAtIDEpID09PSAnXScgPyByb290LnNsaWNlKDEsIC0xKSA6IHJvb3Q7XG4gICAgICAgICAgICB2YXIgaW5kZXggPSBwYXJzZUludChjbGVhblJvb3QsIDEwKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhaXNOYU4oaW5kZXgpXG4gICAgICAgICAgICAgICAgJiYgcm9vdCAhPT0gY2xlYW5Sb290XG4gICAgICAgICAgICAgICAgJiYgU3RyaW5nKGluZGV4KSA9PT0gY2xlYW5Sb290XG4gICAgICAgICAgICAgICAgJiYgaW5kZXggPj0gMFxuICAgICAgICAgICAgICAgICYmIChvcHRpb25zLnBhcnNlQXJyYXlzICYmIGluZGV4IDw9IG9wdGlvbnMuYXJyYXlMaW1pdClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIG9iaiA9IFtdO1xuICAgICAgICAgICAgICAgIG9ialtpbmRleF0gPSBsZWFmO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvYmpbY2xlYW5Sb290XSA9IGxlYWY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZWFmID0gb2JqO1xuICAgIH1cblxuICAgIHJldHVybiBsZWFmO1xufTtcblxudmFyIHBhcnNlS2V5cyA9IGZ1bmN0aW9uIHBhcnNlUXVlcnlTdHJpbmdLZXlzKGdpdmVuS2V5LCB2YWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoIWdpdmVuS2V5KSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBUcmFuc2Zvcm0gZG90IG5vdGF0aW9uIHRvIGJyYWNrZXQgbm90YXRpb25cbiAgICB2YXIga2V5ID0gb3B0aW9ucy5hbGxvd0RvdHMgPyBnaXZlbktleS5yZXBsYWNlKC9cXC4oW14uW10rKS9nLCAnWyQxXScpIDogZ2l2ZW5LZXk7XG5cbiAgICAvLyBUaGUgcmVnZXggY2h1bmtzXG5cbiAgICB2YXIgYnJhY2tldHMgPSAvKFxcW1teW1xcXV0qXSkvO1xuICAgIHZhciBjaGlsZCA9IC8oXFxbW15bXFxdXSpdKS9nO1xuXG4gICAgLy8gR2V0IHRoZSBwYXJlbnRcblxuICAgIHZhciBzZWdtZW50ID0gYnJhY2tldHMuZXhlYyhrZXkpO1xuICAgIHZhciBwYXJlbnQgPSBzZWdtZW50ID8ga2V5LnNsaWNlKDAsIHNlZ21lbnQuaW5kZXgpIDoga2V5O1xuXG4gICAgLy8gU3Rhc2ggdGhlIHBhcmVudCBpZiBpdCBleGlzdHNcblxuICAgIHZhciBrZXlzID0gW107XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgICAvLyBJZiB3ZSBhcmVuJ3QgdXNpbmcgcGxhaW4gb2JqZWN0cywgb3B0aW9uYWxseSBwcmVmaXgga2V5c1xuICAgICAgICAvLyB0aGF0IHdvdWxkIG92ZXJ3cml0ZSBvYmplY3QgcHJvdG90eXBlIHByb3BlcnRpZXNcbiAgICAgICAgaWYgKCFvcHRpb25zLnBsYWluT2JqZWN0cyAmJiBoYXMuY2FsbChPYmplY3QucHJvdG90eXBlLCBwYXJlbnQpKSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuYWxsb3dQcm90b3R5cGVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAga2V5cy5wdXNoKHBhcmVudCk7XG4gICAgfVxuXG4gICAgLy8gTG9vcCB0aHJvdWdoIGNoaWxkcmVuIGFwcGVuZGluZyB0byB0aGUgYXJyYXkgdW50aWwgd2UgaGl0IGRlcHRoXG5cbiAgICB2YXIgaSA9IDA7XG4gICAgd2hpbGUgKChzZWdtZW50ID0gY2hpbGQuZXhlYyhrZXkpKSAhPT0gbnVsbCAmJiBpIDwgb3B0aW9ucy5kZXB0aCkge1xuICAgICAgICBpICs9IDE7XG4gICAgICAgIGlmICghb3B0aW9ucy5wbGFpbk9iamVjdHMgJiYgaGFzLmNhbGwoT2JqZWN0LnByb3RvdHlwZSwgc2VnbWVudFsxXS5zbGljZSgxLCAtMSkpKSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuYWxsb3dQcm90b3R5cGVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGtleXMucHVzaChzZWdtZW50WzFdKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSdzIGEgcmVtYWluZGVyLCBqdXN0IGFkZCB3aGF0ZXZlciBpcyBsZWZ0XG5cbiAgICBpZiAoc2VnbWVudCkge1xuICAgICAgICBrZXlzLnB1c2goJ1snICsga2V5LnNsaWNlKHNlZ21lbnQuaW5kZXgpICsgJ10nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VPYmplY3Qoa2V5cywgdmFsLCBvcHRpb25zKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHN0ciwgb3B0cykge1xuICAgIHZhciBvcHRpb25zID0gb3B0cyA/IHV0aWxzLmFzc2lnbih7fSwgb3B0cykgOiB7fTtcblxuICAgIGlmIChvcHRpb25zLmRlY29kZXIgIT09IG51bGwgJiYgb3B0aW9ucy5kZWNvZGVyICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9wdGlvbnMuZGVjb2RlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdEZWNvZGVyIGhhcyB0byBiZSBhIGZ1bmN0aW9uLicpO1xuICAgIH1cblxuICAgIG9wdGlvbnMuaWdub3JlUXVlcnlQcmVmaXggPSBvcHRpb25zLmlnbm9yZVF1ZXJ5UHJlZml4ID09PSB0cnVlO1xuICAgIG9wdGlvbnMuZGVsaW1pdGVyID0gdHlwZW9mIG9wdGlvbnMuZGVsaW1pdGVyID09PSAnc3RyaW5nJyB8fCB1dGlscy5pc1JlZ0V4cChvcHRpb25zLmRlbGltaXRlcikgPyBvcHRpb25zLmRlbGltaXRlciA6IGRlZmF1bHRzLmRlbGltaXRlcjtcbiAgICBvcHRpb25zLmRlcHRoID0gdHlwZW9mIG9wdGlvbnMuZGVwdGggPT09ICdudW1iZXInID8gb3B0aW9ucy5kZXB0aCA6IGRlZmF1bHRzLmRlcHRoO1xuICAgIG9wdGlvbnMuYXJyYXlMaW1pdCA9IHR5cGVvZiBvcHRpb25zLmFycmF5TGltaXQgPT09ICdudW1iZXInID8gb3B0aW9ucy5hcnJheUxpbWl0IDogZGVmYXVsdHMuYXJyYXlMaW1pdDtcbiAgICBvcHRpb25zLnBhcnNlQXJyYXlzID0gb3B0aW9ucy5wYXJzZUFycmF5cyAhPT0gZmFsc2U7XG4gICAgb3B0aW9ucy5kZWNvZGVyID0gdHlwZW9mIG9wdGlvbnMuZGVjb2RlciA9PT0gJ2Z1bmN0aW9uJyA/IG9wdGlvbnMuZGVjb2RlciA6IGRlZmF1bHRzLmRlY29kZXI7XG4gICAgb3B0aW9ucy5hbGxvd0RvdHMgPSB0eXBlb2Ygb3B0aW9ucy5hbGxvd0RvdHMgPT09ICdib29sZWFuJyA/IG9wdGlvbnMuYWxsb3dEb3RzIDogZGVmYXVsdHMuYWxsb3dEb3RzO1xuICAgIG9wdGlvbnMucGxhaW5PYmplY3RzID0gdHlwZW9mIG9wdGlvbnMucGxhaW5PYmplY3RzID09PSAnYm9vbGVhbicgPyBvcHRpb25zLnBsYWluT2JqZWN0cyA6IGRlZmF1bHRzLnBsYWluT2JqZWN0cztcbiAgICBvcHRpb25zLmFsbG93UHJvdG90eXBlcyA9IHR5cGVvZiBvcHRpb25zLmFsbG93UHJvdG90eXBlcyA9PT0gJ2Jvb2xlYW4nID8gb3B0aW9ucy5hbGxvd1Byb3RvdHlwZXMgOiBkZWZhdWx0cy5hbGxvd1Byb3RvdHlwZXM7XG4gICAgb3B0aW9ucy5wYXJhbWV0ZXJMaW1pdCA9IHR5cGVvZiBvcHRpb25zLnBhcmFtZXRlckxpbWl0ID09PSAnbnVtYmVyJyA/IG9wdGlvbnMucGFyYW1ldGVyTGltaXQgOiBkZWZhdWx0cy5wYXJhbWV0ZXJMaW1pdDtcbiAgICBvcHRpb25zLnN0cmljdE51bGxIYW5kbGluZyA9IHR5cGVvZiBvcHRpb25zLnN0cmljdE51bGxIYW5kbGluZyA9PT0gJ2Jvb2xlYW4nID8gb3B0aW9ucy5zdHJpY3ROdWxsSGFuZGxpbmcgOiBkZWZhdWx0cy5zdHJpY3ROdWxsSGFuZGxpbmc7XG5cbiAgICBpZiAoc3RyID09PSAnJyB8fCBzdHIgPT09IG51bGwgfHwgdHlwZW9mIHN0ciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMucGxhaW5PYmplY3RzID8gT2JqZWN0LmNyZWF0ZShudWxsKSA6IHt9O1xuICAgIH1cblxuICAgIHZhciB0ZW1wT2JqID0gdHlwZW9mIHN0ciA9PT0gJ3N0cmluZycgPyBwYXJzZVZhbHVlcyhzdHIsIG9wdGlvbnMpIDogc3RyO1xuICAgIHZhciBvYmogPSBvcHRpb25zLnBsYWluT2JqZWN0cyA/IE9iamVjdC5jcmVhdGUobnVsbCkgOiB7fTtcblxuICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUga2V5cyBhbmQgc2V0dXAgdGhlIG5ldyBvYmplY3RcblxuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXModGVtcE9iaik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgICAgICB2YXIgbmV3T2JqID0gcGFyc2VLZXlzKGtleSwgdGVtcE9ialtrZXldLCBvcHRpb25zKTtcbiAgICAgICAgb2JqID0gdXRpbHMubWVyZ2Uob2JqLCBuZXdPYmosIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHJldHVybiB1dGlscy5jb21wYWN0KG9iaik7XG59O1xuIiwiaW1wb3J0IHJlcXVlc3QgZnJvbSAnQC91dGlscy9yZXF1ZXN0J1xyXG5jb25zdCBzZXJ2aWNlVGl0bGUgPSAnL2ltZydcclxuLy9HRVQg5Lyg5Y+C6ZyA6KaB55SoIHBhcmFtc1xyXG4vL1BPU1Qg5Lyg5Y+C6ZyA6KaB55SoIGRhdGFcclxuXHJcbi8v6I635Y+WYmFubmVy5YiX6KGoXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRCYW5uZXJMaXN0KCkge1xyXG5cdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdHVybDogYCR7c2VydmljZVRpdGxlfS9pbWcvbWluaS90aWt0b2svbGlzdEJhbm5lcmAsXHJcblx0XHRtZXRob2Q6ICdnZXQnXHJcblxyXG5cdH0pXHJcbn1cclxuLy/ojrflj5blsI/nqIvluo/nlKjmiLflm77niYfliJfooahcclxuZXhwb3J0IGZ1bmN0aW9uIGdldFVzZXJJbWdMaXN0KCkge1xyXG5cdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdHVybDogYCR7c2VydmljZVRpdGxlfS9pbWcvbWluaS90aWt0b2svdGlrdG9rVXNlckltZ3NgLFxyXG5cdFx0bWV0aG9kOiAnZ2V0J1xyXG5cdH0pXHJcbn1cclxuLy/ojrflj5blm77niYfor6bmg4VcclxuZXhwb3J0IGZ1bmN0aW9uIGRldGFpbHNUaWt0b2tJbWcoZGF0YSkge1xyXG5cdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdHVybDogYCR7c2VydmljZVRpdGxlfS9pbWcvbWluaS90aWt0b2svZGV0YWlsc1Rpa3Rva0ltZy8ke2RhdGF9YCxcclxuXHRcdG1ldGhvZDogJ2dldCdcclxuXHR9KVxyXG59XHJcbiIsImltcG9ydCByZXF1ZXN0IGZyb20gJ0AvdXRpbHMvcmVxdWVzdCdcclxuY29uc3Qgc2VydmljZVRpdGxlID0gJy9pbWcnXHJcbi8vR0VUIOS8oOWPgumcgOimgeeUqCBwYXJhbXNcclxuLy9QT1NUIOS8oOWPgumcgOimgeeUqCBkYXRhXHJcblxyXG4vL+iOt+WPlueUqOaIt+aUtuiXj+WIl+ihqFxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29sbGVjdGlvbkxpc3QoZGF0YSkge1xyXG5cdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdHVybDogYCR7c2VydmljZVRpdGxlfS9pbWcvbWluaS90aWt0b2svbGlzdFRpa3Rva0NvbGxlY3Rpb25gLFxyXG5cdFx0bWV0aG9kOiAncG9zdCcsXHJcblx0XHRkYXRhOiBkYXRhXHJcblx0fSlcclxufVxyXG4iLCJpbXBvcnQgZW4gZnJvbSAnLi9lbi5qc29uJ1xyXG5pbXBvcnQgemhIYW5zIGZyb20gJy4vemgtSGFucy5qc29uJ1xyXG5pbXBvcnQgemhIYW50IGZyb20gJy4vemgtSGFudC5qc29uJ1xyXG5leHBvcnQgZGVmYXVsdCB7XHJcblx0ZW4sXHJcblx0J3poLUhhbnMnOiB6aEhhbnMsXHJcblx0J3poLUhhbnQnOiB6aEhhbnRcclxufVxyXG4iLCJleHBvcnQgZGVmYXVsdCB7XHJcbiAgXCJpZFwiOiBcIjI4NTI2MzdcIixcclxuICBcIm5hbWVcIjogXCJ1bml1aeWbvuagh+W6k1wiLFxyXG4gIFwiZm9udF9mYW1pbHlcIjogXCJ1bmlpY29uc1wiLFxyXG4gIFwiY3NzX3ByZWZpeF90ZXh0XCI6IFwidW5pdWktXCIsXHJcbiAgXCJkZXNjcmlwdGlvblwiOiBcIlwiLFxyXG4gIFwiZ2x5cGhzXCI6IFtcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjUwMjcwNDlcIixcclxuICAgICAgXCJuYW1lXCI6IFwieWFuc2VcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY29sb3JcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZjZlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA4N1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjUwMjcwNDhcIixcclxuICAgICAgXCJuYW1lXCI6IFwid2FsbGV0XCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIndhbGxldFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmIxXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDU3XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNTAxNTcyMFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJzZXR0aW5ncy1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwic2V0dGluZ3MtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2Y2VcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwODZcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI1MDE1NDM0XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInNoaW1pbmdyZW56aGVuZy1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiYXV0aC1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZjY1wiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA4NFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MzQyNDZcIixcclxuICAgICAgXCJuYW1lXCI6IFwic2hvcC1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwic2hvcC1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZjZFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA4NVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MzQxNTlcIixcclxuICAgICAgXCJuYW1lXCI6IFwic3RhZmYtZmlsbGVkLTAxXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInN0YWZmLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmNiXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDgzXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkzMjQ2MVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJWSVAtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInZpcC1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZjNlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA3OFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MzI0NjJcIixcclxuICAgICAgXCJuYW1lXCI6IFwicGx1c19jaXJjbGVfZmlsbFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJwbHVzLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmM3XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDc5XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkzMjQ2M1wiLFxyXG4gICAgICBcIm5hbWVcIjogXCJmb2xkZXJfYWRkLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJmb2xkZXItYWRkLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmM4XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDgwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkzMjQ2NFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJ5YW5zZS1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY29sb3ItZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YzlcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwODFcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTMyNDY1XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInR1bmUtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInR1bmUtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2Y2FcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwODJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTMyNDU1XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImEtcmlsaWRha2EtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNhbGVuZGFyLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmMwXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDcyXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkzMjQ1NlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJub3RpZmljYXRpb24tZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm5vdGlmaWNhdGlvbi1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZjMVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA3M1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MzI0NTdcIixcclxuICAgICAgXCJuYW1lXCI6IFwid2FsbGV0LWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJ3YWxsZXQtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YzJcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNzRcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTMyNDU4XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInBhaWhhbmdiYW5nLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJtZWRhbC1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZjM1wiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA3NVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MzI0NTlcIixcclxuICAgICAgXCJuYW1lXCI6IFwiZ2lmdC1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZ2lmdC1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZjNFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA3NlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MzI0NjBcIixcclxuICAgICAgXCJuYW1lXCI6IFwiZmlyZS1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZmlyZS1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZjNVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA3N1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjgwMDFcIixcclxuICAgICAgXCJuYW1lXCI6IFwicmVmcmVzaGVtcHR5XCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInJlZnJlc2hlbXB0eVwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmJmXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDcxXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyNjg1M1wiLFxyXG4gICAgICBcIm5hbWVcIjogXCJsb2NhdGlvbi1lbGxpcHNlXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImxvY2F0aW9uLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmFmXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDU1XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyNjczNVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJwZXJzb24tZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInBlcnNvbi1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY5ZFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAzN1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjY3MDNcIixcclxuICAgICAgXCJuYW1lXCI6IFwicGVyc29uYWRkLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJwZXJzb25hZGQtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OThcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMzJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzUxXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImJhY2tcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiYmFja1wiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmI5XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDY1XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzM1MlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJmb3J3YXJkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImZvcndhcmRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZiYVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA2NlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzNTNcIixcclxuICAgICAgXCJuYW1lXCI6IFwiYXJyb3d0aGlucmlnaHRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiYXJyb3ctcmlnaHRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZiYlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA2N1xyXG4gICAgfSxcclxuXHRcdHtcclxuXHRcdCAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzNTNcIixcclxuXHRcdCAgXCJuYW1lXCI6IFwiYXJyb3d0aGlucmlnaHRcIixcclxuXHRcdCAgXCJmb250X2NsYXNzXCI6IFwiYXJyb3d0aGlucmlnaHRcIixcclxuXHRcdCAgXCJ1bmljb2RlXCI6IFwiZTZiYlwiLFxyXG5cdFx0ICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA2N1xyXG5cdFx0fSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzNTRcIixcclxuICAgICAgXCJuYW1lXCI6IFwiYXJyb3d0aGlubGVmdFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJhcnJvdy1sZWZ0XCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YmNcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNjhcclxuICAgIH0sXHJcblx0XHR7XHJcblx0XHQgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzU0XCIsXHJcblx0XHQgIFwibmFtZVwiOiBcImFycm93dGhpbmxlZnRcIixcclxuXHRcdCAgXCJmb250X2NsYXNzXCI6IFwiYXJyb3d0aGlubGVmdFwiLFxyXG5cdFx0ICBcInVuaWNvZGVcIjogXCJlNmJjXCIsXHJcblx0XHQgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDY4XHJcblx0XHR9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzM1NVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJhcnJvd3RoaW51cFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJhcnJvdy11cFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmJkXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDY5XHJcbiAgICB9LFxyXG5cdFx0e1xyXG5cdFx0ICBcImljb25faWRcIjogXCIyNDkyMzM1NVwiLFxyXG5cdFx0ICBcIm5hbWVcIjogXCJhcnJvd3RoaW51cFwiLFxyXG5cdFx0ICBcImZvbnRfY2xhc3NcIjogXCJhcnJvd3RoaW51cFwiLFxyXG5cdFx0ICBcInVuaWNvZGVcIjogXCJlNmJkXCIsXHJcblx0XHQgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDY5XHJcblx0XHR9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzM1NlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJhcnJvd3RoaW5kb3duXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImFycm93LWRvd25cIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZiZVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA3MFxyXG4gICAgfSx7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzU2XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImFycm93dGhpbmRvd25cIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiYXJyb3d0aGluZG93blwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmJlXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDcwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzM0OVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJhcnJvd2Rvd25cIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiYm90dG9tXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YjhcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNjRcclxuICAgIH0se1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzM0OVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJhcnJvd2Rvd25cIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiYXJyb3dkb3duXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YjhcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNjRcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzQ2XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImFycm93cmlnaHRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicmlnaHRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZiNVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA2MVxyXG4gICAgfSxcclxuXHRcdHtcclxuXHRcdCAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzNDZcIixcclxuXHRcdCAgXCJuYW1lXCI6IFwiYXJyb3dyaWdodFwiLFxyXG5cdFx0ICBcImZvbnRfY2xhc3NcIjogXCJhcnJvd3JpZ2h0XCIsXHJcblx0XHQgIFwidW5pY29kZVwiOiBcImU2YjVcIixcclxuXHRcdCAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNjFcclxuXHRcdH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzQ3XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImFycm93dXBcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwidG9wXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YjZcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNjJcclxuICAgIH0sXHJcblx0XHR7XHJcblx0XHQgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzQ3XCIsXHJcblx0XHQgIFwibmFtZVwiOiBcImFycm93dXBcIixcclxuXHRcdCAgXCJmb250X2NsYXNzXCI6IFwiYXJyb3d1cFwiLFxyXG5cdFx0ICBcInVuaWNvZGVcIjogXCJlNmI2XCIsXHJcblx0XHQgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDYyXHJcblx0XHR9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzM0OFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJhcnJvd2xlZnRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibGVmdFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmI3XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDYzXHJcbiAgICB9LFxyXG5cdFx0e1xyXG5cdFx0ICBcImljb25faWRcIjogXCIyNDkyMzM0OFwiLFxyXG5cdFx0ICBcIm5hbWVcIjogXCJhcnJvd2xlZnRcIixcclxuXHRcdCAgXCJmb250X2NsYXNzXCI6IFwiYXJyb3dsZWZ0XCIsXHJcblx0XHQgIFwidW5pY29kZVwiOiBcImU2YjdcIixcclxuXHRcdCAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNjNcclxuXHRcdH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzM0XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImV5ZVwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJleWVcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY1MVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk2MVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzMzVcIixcclxuICAgICAgXCJuYW1lXCI6IFwiZXllLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJleWUtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NmFcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5ODZcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzM2XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImV5ZS1zbGFzaFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJleWUtc2xhc2hcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZiM1wiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA1OVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMzMzdcIixcclxuICAgICAgXCJuYW1lXCI6IFwiZXllLXNsYXNoLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJleWUtc2xhc2gtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YjRcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNjBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMzA1XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImluZm8tZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImluZm8tZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NDlcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NTNcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMjk5XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInJlbG9hZC0wMVwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJyZWxvYWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZiMlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA1OFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMxOTVcIixcclxuICAgICAgXCJuYW1lXCI6IFwibWljX3NsYXNoX2ZpbGxcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibWljb2ZmLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmIwXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDU2XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzE2NVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJtYXAtcGluLWVsbGlwc2VcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibWFwLXBpbi1lbGxpcHNlXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YWNcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNTJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0OTIzMTY2XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcIm1hcC1waW5cIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibWFwLXBpblwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmFkXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDUzXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzE2N1wiLFxyXG4gICAgICBcIm5hbWVcIjogXCJsb2NhdGlvblwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJsb2NhdGlvblwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmFlXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDU0XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzA2NFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJzdGFyaGFsZlwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJzdGFyaGFsZlwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjgzXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDExXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDkyMzA2NVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJzdGFyXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInN0YXJcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY4OFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAxNlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ5MjMwNjZcIixcclxuICAgICAgXCJuYW1lXCI6IFwic3Rhci1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwic3Rhci1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY4ZlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAyM1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk2NDZcIixcclxuICAgICAgXCJuYW1lXCI6IFwiYS1yaWxpZGFrYVwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjYWxlbmRhclwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmEwXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDQwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg5OTY0N1wiLFxyXG4gICAgICBcIm5hbWVcIjogXCJmaXJlXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImZpcmVcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZhMVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA0MVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk2NDhcIixcclxuICAgICAgXCJuYW1lXCI6IFwicGFpaGFuZ2JhbmdcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibWVkYWxcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZhMlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA0MlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk2NDlcIixcclxuICAgICAgXCJuYW1lXCI6IFwiZm9udFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJmb250XCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YTNcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNDNcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NjUwXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImdpZnRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZ2lmdFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmE0XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDQ0XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg5OTY1MVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJsaW5rXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImxpbmtcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZhNVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA0NVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk2NTJcIixcclxuICAgICAgXCJuYW1lXCI6IFwibm90aWZpY2F0aW9uXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm5vdGlmaWNhdGlvblwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmE2XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDQ2XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg5OTY1M1wiLFxyXG4gICAgICBcIm5hbWVcIjogXCJzdGFmZlwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJzdGFmZlwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmE3XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDQ3XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg5OTY1NFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJWSVBcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwidmlwXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2YThcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwNDhcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NjU1XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImZvbGRlcl9hZGRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZm9sZGVyLWFkZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNmE5XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDQ5XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg5OTY1NlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJ0dW5lXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInR1bmVcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZhYVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA1MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk2NTdcIixcclxuICAgICAgXCJuYW1lXCI6IFwic2hpbWluZ3JlbnpoZW5nXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImF1dGhcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTZhYlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTA1MVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk1NjVcIixcclxuICAgICAgXCJuYW1lXCI6IFwicGVyc29uXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInBlcnNvblwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjk5XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDMzXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg5OTU2NlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJlbWFpbC1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZW1haWwtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OWFcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMzRcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NTY3XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInBob25lLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJwaG9uZS1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY5YlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAzNVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk1NjhcIixcclxuICAgICAgXCJuYW1lXCI6IFwicGhvbmVcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicGhvbmVcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY5Y1wiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAzNlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk1NzBcIixcclxuICAgICAgXCJuYW1lXCI6IFwiZW1haWxcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiZW1haWxcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY5ZVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAzOFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk1NzFcIixcclxuICAgICAgXCJuYW1lXCI6IFwicGVyc29uYWRkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInBlcnNvbmFkZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjlmXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDM5XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg5OTU1OFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJjaGF0Ym94ZXMtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNoYXRib3hlcy1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY5MlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAyNlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk1NTlcIixcclxuICAgICAgXCJuYW1lXCI6IFwiY29udGFjdFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjb250YWN0XCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OTNcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMjdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NTYwXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImNoYXRidWJibGUtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNoYXRidWJibGUtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OTRcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMjhcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NTYxXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImNvbnRhY3QtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNvbnRhY3QtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OTVcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMjlcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODk5NTYyXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImNoYXRib3hlc1wiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjaGF0Ym94ZXNcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY5NlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAzMFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4OTk1NjNcIixcclxuICAgICAgXCJuYW1lXCI6IFwiY2hhdGJ1YmJsZVwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjaGF0YnViYmxlXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OTdcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMzFcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODgxMjkwXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInVwbG9hZC1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwidXBsb2FkLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjhlXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDIyXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg4MTI5MlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJ1cGxvYWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwidXBsb2FkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2OTBcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMjRcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODgxMjkzXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcIndlaXhpblwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJ3ZWl4aW5cIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY5MVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAyNVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4ODEyNzRcIixcclxuICAgICAgXCJuYW1lXCI6IFwiY29tcG9zZVwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjb21wb3NlXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2N2ZcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMDdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODgxMjc1XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInFxXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInFxXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2ODBcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMDhcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODgxMjc2XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImRvd25sb2FkLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJkb3dubG9hZC1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY4MVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAwOVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4ODEyNzdcIixcclxuICAgICAgXCJuYW1lXCI6IFwicGVuZ3lvdXF1YW5cIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicHlxXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2ODJcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMTBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODgxMjc5XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInNvdW5kXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInNvdW5kXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2ODRcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMTJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODgxMjgwXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInRyYXNoLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJ0cmFzaC1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY4NVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAxM1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4ODEyODFcIixcclxuICAgICAgXCJuYW1lXCI6IFwic291bmQtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInNvdW5kLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjg2XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDE0XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg4MTI4MlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJ0cmFzaFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJ0cmFzaFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjg3XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDE1XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg4MTI4NFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJ2aWRlb2NhbS1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwidmlkZW9jYW0tZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2ODlcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMTdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODgxMjg1XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInNwaW5uZXItY3ljbGVcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwic3Bpbm5lci1jeWNsZVwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjhhXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDE4XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg4MTI4NlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJ3ZWlib1wiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJ3ZWlib1wiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjhiXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDE5XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg4MTI4OFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJ2aWRlb2NhbVwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJ2aWRlb2NhbVwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjhjXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDIwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg4MTI4OVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJkb3dubG9hZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJkb3dubG9hZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjhkXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDIxXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg3OTYwMVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJoZWxwXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImhlbHBcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY3OVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAwMVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk2MDJcIixcclxuICAgICAgXCJuYW1lXCI6IFwibmF2aWdhdGUtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm5hdmlnYXRlLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjdhXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDAyXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg3OTYwM1wiLFxyXG4gICAgICBcIm5hbWVcIjogXCJwbHVzZW1wdHlcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicGx1c2VtcHR5XCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2N2JcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMDNcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODc5NjA0XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInNtYWxsY2lyY2xlXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInNtYWxsY2lyY2xlXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2N2NcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMDRcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODc5NjA1XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcIm1pbnVzLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJtaW51cy1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY3ZFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1OTAwNVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk2MDZcIixcclxuICAgICAgXCJuYW1lXCI6IFwibWljb2ZmXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm1pY29mZlwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjdlXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU5MDA2XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg3OTU4OFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJjbG9zZWVtcHR5XCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNsb3NlZW1wdHlcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY2Y1wiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk4OFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk1ODlcIixcclxuICAgICAgXCJuYW1lXCI6IFwiY2xlYXJcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY2xlYXJcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY2ZFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk4OVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk1OTBcIixcclxuICAgICAgXCJuYW1lXCI6IFwibmF2aWdhdGVcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibmF2aWdhdGVcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY2ZVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk5MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk1OTFcIixcclxuICAgICAgXCJuYW1lXCI6IFwibWludXNcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibWludXNcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY2ZlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk5MVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk1OTJcIixcclxuICAgICAgXCJuYW1lXCI6IFwiaW1hZ2VcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiaW1hZ2VcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY3MFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk5MlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk1OTNcIixcclxuICAgICAgXCJuYW1lXCI6IFwibWljXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm1pY1wiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjcxXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTkzXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg3OTU5NFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJwYXBlcnBsYW5lXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInBhcGVycGxhbmVcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY3MlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk5NFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk1OTVcIixcclxuICAgICAgXCJuYW1lXCI6IFwiY2xvc2VcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY2xvc2VcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY3M1wiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk5NVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk1OTZcIixcclxuICAgICAgXCJuYW1lXCI6IFwiaGVscC1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiaGVscC1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY3NFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk5NlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk1OTdcIixcclxuICAgICAgXCJuYW1lXCI6IFwicGx1cy1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicGFwZXJwbGFuZS1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY3NVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk5N1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4Nzk1OThcIixcclxuICAgICAgXCJuYW1lXCI6IFwicGx1c1wiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJwbHVzXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NzZcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5OThcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODc5NTk5XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcIm1pYy1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibWljLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjc3XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTk5XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg3OTYwMFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJpbWFnZS1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiaW1hZ2UtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NzhcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTkwMDBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1OTAwXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImxvY2tlZC1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibG9ja2VkLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjY4XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTg0XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTkwMVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJpbmZvXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImluZm9cIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY2OVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk4NVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU5MDNcIixcclxuICAgICAgXCJuYW1lXCI6IFwibG9ja2VkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImxvY2tlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjZiXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTg3XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTg4NFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJjYW1lcmEtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNhbWVyYS1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY1OFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk2OFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4ODVcIixcclxuICAgICAgXCJuYW1lXCI6IFwiY2hhdC1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY2hhdC1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY1OVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk2OVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4ODZcIixcclxuICAgICAgXCJuYW1lXCI6IFwiY2FtZXJhXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNhbWVyYVwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjVhXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTcwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTg4N1wiLFxyXG4gICAgICBcIm5hbWVcIjogXCJjaXJjbGVcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY2lyY2xlXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NWJcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NzFcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODg4XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImNoZWNrbWFya2VtcHR5XCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNoZWNrbWFya2VtcHR5XCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NWNcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NzJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODg5XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImNoYXRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY2hhdFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjVkXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTczXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTg5MFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJjaXJjbGUtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNpcmNsZS1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY1ZVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk3NFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4OTFcIixcclxuICAgICAgXCJuYW1lXCI6IFwiZmxhZ1wiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJmbGFnXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NWZcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NzVcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODkyXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImZsYWctZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImZsYWctZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NjBcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NzZcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODkzXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImdlYXItZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImdlYXItZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NjFcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NzdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODk0XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImhvbWVcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiaG9tZVwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjYyXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTc4XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTg5NVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJob21lLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJob21lLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjYzXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTc5XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTg5NlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJnZWFyXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImdlYXJcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY2NFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk4MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4OTdcIixcclxuICAgICAgXCJuYW1lXCI6IFwic21hbGxjaXJjbGUtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInNtYWxsY2lyY2xlLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjY1XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTgxXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTg5OFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJtYXAtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm1hcC1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY2NlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk4MlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4OTlcIixcclxuICAgICAgXCJuYW1lXCI6IFwibWFwXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcIm1hcFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjY3XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTgzXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTgyNVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJyZWZyZXNoLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJyZWZyZXNoLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjU2XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTY2XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTgyNlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJyZWZyZXNoXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInJlZnJlc2hcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY1N1wiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk2N1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4MDhcIixcclxuICAgICAgXCJuYW1lXCI6IFwiY2xvdWQtdXBsb2FkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNsb3VkLXVwbG9hZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjQ1XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTQ5XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTgwOVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJjbG91ZC1kb3dubG9hZC1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY2xvdWQtZG93bmxvYWQtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NDZcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NTBcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODEwXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImNsb3VkLWRvd25sb2FkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNsb3VkLWRvd25sb2FkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NDdcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NTFcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODExXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImNsb3VkLXVwbG9hZC1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiY2xvdWQtdXBsb2FkLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjQ4XCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTUyXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTgxM1wiLFxyXG4gICAgICBcIm5hbWVcIjogXCJyZWRvXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInJlZG9cIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY0YVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk1NFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4MTRcIixcclxuICAgICAgXCJuYW1lXCI6IFwiaW1hZ2VzLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJpbWFnZXMtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NGJcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NTVcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODE1XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInVuZG8tZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInVuZG8tZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NGNcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NTZcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODE2XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcIm1vcmVcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibW9yZVwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjRkXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTU3XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTgxN1wiLFxyXG4gICAgICBcIm5hbWVcIjogXCJtb3JlLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJtb3JlLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjRlXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTU4XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTgxOFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJ1bmRvXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInVuZG9cIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY0ZlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk1OVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4MTlcIixcclxuICAgICAgXCJuYW1lXCI6IFwiaW1hZ2VzXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImltYWdlc1wiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjUwXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTYwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg1NTgyMVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJwYXBlcmNsaXBcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicGFwZXJjbGlwXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NTJcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NjJcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODIyXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInNldHRpbmdzXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInNldHRpbmdzXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NTNcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NjNcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODU1ODIzXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcInNlYXJjaFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJzZWFyY2hcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY1NFwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk2NFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NTU4MjRcIixcclxuICAgICAgXCJuYW1lXCI6IFwicmVkby1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwicmVkby1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTY1NVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk2NVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NDE3MDJcIixcclxuICAgICAgXCJuYW1lXCI6IFwibGlzdFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJsaXN0XCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NDRcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NDhcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODQxNDg5XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcIm1haWwtb3Blbi1maWxsZWRcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibWFpbC1vcGVuLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjNhXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTM4XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg0MTQ5MVwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJoYW5kLXRodW1ic2Rvd24tZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImhhbmQtZG93bi1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTYzY1wiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk0MFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NDE0OTJcIixcclxuICAgICAgXCJuYW1lXCI6IFwiaGFuZC10aHVtYnNkb3duXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImhhbmQtZG93blwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjNkXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTQxXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg0MTQ5M1wiLFxyXG4gICAgICBcIm5hbWVcIjogXCJoYW5kLXRodW1ic3VwLWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJoYW5kLXVwLWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjNlXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTQyXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg0MTQ5NFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJoYW5kLXRodW1ic3VwXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImhhbmQtdXBcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTYzZlwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODk0M1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4NDE0OTZcIixcclxuICAgICAgXCJuYW1lXCI6IFwiaGVhcnQtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImhlYXJ0LWZpbGxlZFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjQxXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTQ1XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDg0MTQ5OFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJtYWlsLW9wZW5cIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibWFpbC1vcGVuXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2NDNcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5NDdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODQxNDg4XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImhlYXJ0XCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImhlYXJ0XCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2MzlcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5MzdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODM5OTYzXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImxvb3BcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwibG9vcFwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjMzXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTMxXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDgzOTg2NlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJwdWxsZG93blwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJwdWxsZG93blwiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjMyXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTMwXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDgxMzc5OFwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJzY2FuXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcInNjYW5cIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTYyYVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODkyMlxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4MTM3ODZcIixcclxuICAgICAgXCJuYW1lXCI6IFwiYmFyc1wiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJiYXJzXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2MjdcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5MTlcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODEzNzg4XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImNhcnQtZmlsbGVkXCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNhcnQtZmlsbGVkXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2MjlcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5MjFcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODEzNzkwXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImNoZWNrYm94XCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNoZWNrYm94XCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2MmJcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5MjNcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODEzNzkxXCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImNoZWNrYm94LWZpbGxlZFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJjaGVja2JveC1maWxsZWRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTYyY1wiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODkyNFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgXCJpY29uX2lkXCI6IFwiMjQ4MTM3OTRcIixcclxuICAgICAgXCJuYW1lXCI6IFwic2hvcFwiLFxyXG4gICAgICBcImZvbnRfY2xhc3NcIjogXCJzaG9wXCIsXHJcbiAgICAgIFwidW5pY29kZVwiOiBcImU2MmZcIixcclxuICAgICAgXCJ1bmljb2RlX2RlY2ltYWxcIjogNTg5MjdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIFwiaWNvbl9pZFwiOiBcIjI0ODEzNzk1XCIsXHJcbiAgICAgIFwibmFtZVwiOiBcImhlYWRwaG9uZXNcIixcclxuICAgICAgXCJmb250X2NsYXNzXCI6IFwiaGVhZHBob25lc1wiLFxyXG4gICAgICBcInVuaWNvZGVcIjogXCJlNjMwXCIsXHJcbiAgICAgIFwidW5pY29kZV9kZWNpbWFsXCI6IDU4OTI4XHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBcImljb25faWRcIjogXCIyNDgxMzc5NlwiLFxyXG4gICAgICBcIm5hbWVcIjogXCJjYXJ0XCIsXHJcbiAgICAgIFwiZm9udF9jbGFzc1wiOiBcImNhcnRcIixcclxuICAgICAgXCJ1bmljb2RlXCI6IFwiZTYzMVwiLFxyXG4gICAgICBcInVuaWNvZGVfZGVjaW1hbFwiOiA1ODkyOVxyXG4gICAgfVxyXG4gIF1cclxufVxyXG4iXSwic291cmNlUm9vdCI6IiJ9
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-toutiao/pages/creator/creator.js b/unpackage/dist/dev/mp-toutiao/pages/creator/creator.js
index 1fbb0a4..e0d7bd9 100644
--- a/unpackage/dist/dev/mp-toutiao/pages/creator/creator.js
+++ b/unpackage/dist/dev/mp-toutiao/pages/creator/creator.js
@@ -277,4 +277,4 @@ __webpack_require__.r(__webpack_exports__);
/***/ })
},[[72,"common/runtime","common/vendor"]]]);
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy9jcmVhdG9yL2NyZWF0b3IudnVlPzE0ZTYiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svcGFnZXMvY3JlYXRvci9jcmVhdG9yLnZ1ZT84OTY2Iiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL2NyZWF0b3IvY3JlYXRvci52dWU/ZWNjMSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy9jcmVhdG9yL2NyZWF0b3IudnVlP2ZmZDciLCJ1bmktYXBwOi8vL3BhZ2VzL2NyZWF0b3IvY3JlYXRvci52dWUiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svcGFnZXMvY3JlYXRvci9jcmVhdG9yLnZ1ZT81YTM2Iiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL2NyZWF0b3IvY3JlYXRvci52dWU/NDY4ZCJdLCJuYW1lcyI6WyJ3eCIsIl9fd2VicGFja19yZXF1aXJlX1VOSV9NUF9QTFVHSU5fXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJjcmVhdGVQYWdlIiwiUGFnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztzREFBQTtBQUNBO0FBQ0Esa0csNkZBRm1CQSxFQUFFLENBQUNDLGlDQUFILEdBQXVDQyxtQkFBdkM7QUFHbkJDLFVBQVUsQ0FBQ0MsZ0JBQUQsQ0FBVixDOzs7Ozs7Ozs7Ozs7O0FDSEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWdJO0FBQ2hJO0FBQzJEO0FBQ0w7QUFDc0M7OztBQUc1RjtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSw2RUFBTTtBQUNSLEVBQUUsOEZBQU07QUFDUixFQUFFLHVHQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLGtHQUFVO0FBQ1o7QUFDQTs7QUFFQTtBQUNlLGdGOzs7Ozs7Ozs7Ozs7QUN2QmY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQ1JBO0FBQUE7QUFBQTtBQUFBO0FBQWltQixDQUFnQiwybkJBQUcsRUFBQyxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMERybkIsK0Q7QUFDQTtBQUNBLE1BREEsa0JBQ0E7QUFDQTtBQUNBLGdCQURBO0FBRUEscUJBRkE7QUFHQSxvQkFIQTtBQUlBLG9CQUpBO0FBS0Esb0JBTEE7QUFNQSx5QkFOQTs7O0FBU0EsR0FYQTtBQVlBLFFBWkEsb0JBWUE7QUFDQTtBQUNBO0FBQ0EsR0FmQTtBQWdCQTtBQUNBLFVBREEsa0JBQ0EsSUFEQSxFQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQURBO0FBRUEseUJBRkE7O0FBSUEsS0FQQTs7QUFTQSxrQkFUQSwwQkFTQSxJQVRBLEVBU0E7QUFDQTtBQUNBO0FBQ0EsS0FaQTs7QUFjQSxhQWRBLHVCQWNBO0FBQ0EsK0NBREEsU0FDQSxHQURBO0FBRUE7QUFDQTtBQUNBLGlCQUZBLE1BRUE7QUFDQTtBQUNBLDBDQURBO0FBRUEscUNBRkE7O0FBSUEsaUJBVEE7QUFVQSxLQXhCQTs7QUEwQkEsa0JBMUJBLDRCQTBCQTtBQUNBLGdEQURBLFNBQ0EsR0FEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUhBLE1BR0E7QUFDQTtBQUNBLDBDQURBO0FBRUEscUNBRkE7O0FBSUEsaUJBVkE7QUFXQSxLQXJDQSxFQWhCQSxFOzs7Ozs7Ozs7Ozs7O0FDM0RBO0FBQUE7QUFBQTtBQUFBO0FBQW9xQyxDQUFnQiwwb0NBQUcsRUFBQyxDOzs7Ozs7Ozs7OztBQ0F4ckM7QUFDQSxPQUFPLEtBQVUsRUFBRSxrQkFLZCIsImZpbGUiOiJwYWdlcy9jcmVhdG9yL2NyZWF0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3VuaS1wYWdlcyc7d3guX193ZWJwYWNrX3JlcXVpcmVfVU5JX01QX1BMVUdJTl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXztcbmltcG9ydCBWdWUgZnJvbSAndnVlJ1xuaW1wb3J0IFBhZ2UgZnJvbSAnLi9wYWdlcy9jcmVhdG9yL2NyZWF0b3IudnVlJ1xuY3JlYXRlUGFnZShQYWdlKSIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vY3JlYXRvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTgzMGFkNjAmc2NvcGVkPXRydWUmXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9jcmVhdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vY3JlYXRvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vY3JlYXRvci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01ODMwYWQ2MCZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxccnVudGltZVxcXFxjb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCI1ODMwYWQ2MFwiLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWdlcy9jcmVhdG9yL2NyZWF0b3IudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHRlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTE2LTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcdGVtcGxhdGUuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXVuaS1hcHAtbG9hZGVyXFxcXHBhZ2UtbWV0YS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9jcmVhdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ODMwYWQ2MCZzY29wZWQ9dHJ1ZSZcIiIsInZhciBjb21wb25lbnRzXG52YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbn1cbnZhciByZWN5Y2xhYmxlUmVuZGVyID0gZmFsc2VcbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL2NyZWF0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL2NyZWF0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwiY29udGVudFwiPlxyXG5cdFx0PHZpZXc+XHJcblx0XHRcdDxzd2lwZXIgY2xhc3M9XCJzd2lwZXItYm94XCIgOmF1dG9wbGF5PVwiYXV0b3BsYXlcIiA6aW50ZXJ2YWw9XCJpbnRlcnZhbFwiIDpkdXJhdGlvbj1cImR1cmF0aW9uXCIgOmluZGljYXRvci1kb3RzPVwiaW5kaWNhdG9yRG90c1wiPlxyXG5cdFx0XHRcdDxzd2lwZXItaXRlbSB2LWZvcj1cIihpdGVtLCBpbmRleCkgaW4gYmFubmVyXCIgOmtleT1cImluZGV4XCI+XHJcblx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJpbWdcIiBAY2xpY2s9XCJsaW5rVG8oaXRlbSlcIiA6c3JjPVwiaXRlbS5iYW5uZXJJbWdcIj48L2ltYWdlPlxyXG5cdFx0XHRcdDwvc3dpcGVyLWl0ZW0+XHJcblx0XHRcdDwvc3dpcGVyPlxyXG5cdFx0PC92aWV3PlxyXG5cdFx0XHJcblx0XHQ8dmlldyBjbGFzcz1cImxpc3RcIj5cclxuXHRcdFx0PHZpZXcgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIHVzZXJJbWdMaXN0XCIgOmtleT1cImluZGV4XCIgY2xhc3M9XCJsaXN0LWl0ZW1cIj5cclxuXHRcdFx0XHQ8IS0tIOWxleekuueUqOaIt+ebuOWFs+S/oeaBryAtLT5cclxuXHRcdFx0XHRcdDx0ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmYi1kLXIgZmItai1zYiBmYi1hLWNcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZiLWQtciBmYi1hLWMgaGVhZC1ib3hcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBjbGFzcz1cImhlYWRcIiA6c3JjPVwiaXRlbS5pbWdcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJtbC0xMFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiXCI+e3tpdGVtLnVzZXJuYW1lfX08L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZiLWQtciBmYi1qLXNiXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0PuWbvuaghzwvdGV4dD4gIDx0ZXh0PjExMTExPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQ+5Zu+5qCHPC90ZXh0PiAgPHRleHQ+MTExMTE8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dD7lm77moIc8L3RleHQ+ICA8dGV4dD4xMTExMTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRqaWFudG91XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQgICAgXHJcblx0XHRcdFx0XHQ8L3RlbXBsYXRlPlxyXG5cdFx0XHRcdDwhLS0gXHTlsZXnpLrnlKjmiLflr7nlupTkuInlvKDlm74gLS0+XHJcblx0XHRcdFx0XHQ8dGVtcGxhdGU+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmItZC1yIGZiLWotc2IgaW1nLWJveFwiPlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IHYtZm9yPVwiKHBpYyxwYXJhbSkgaW4gaXRlbS5pbWdMaXN0XCIgOmtleT1cInBhcmFtXCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGltYWdlIGNsYXNzPVwidGhyZWVJbWdcIiBAY2xpY2s9XCJsaW5rVG8oaXRlbSlcIiA6c3JjPVwicGljLmltZ1VybFwiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0PC90ZW1wbGF0ZT5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0aW1wb3J0IHtnZXRCYW5uZXJMaXN0LGdldFVzZXJJbWdMaXN0fSBmcm9tICdAL2FwaS9jcmVhdG9yLmpzJyBcclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdGJhbm5lcjogW10sXHJcblx0XHRcdFx0dXNlckltZ0xpc3Q6W10sXHJcblx0XHRcdFx0YXV0b3BsYXk6IHRydWUsXHJcblx0XHRcdFx0aW50ZXJ2YWw6IDIwMDAsXHJcblx0XHRcdFx0ZHVyYXRpb246IDEwMDAsXHJcblx0XHRcdFx0aW5kaWNhdG9yRG90czogdHJ1ZSxcclxuXHRcdFx0XHRcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdG9uTG9hZCgpIHtcclxuXHRcdFx0dGhpcy5nZXRCYW5uZXIoKTtcclxuXHRcdFx0dGhpcy5nZXRVc2VySW1nTGlzdCgpO1xyXG5cdFx0fSxcclxuXHRcdG1ldGhvZHM6IHtcclxuXHRcdFx0bGlua1RvKGl0ZW0pe1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKGl0ZW0uYmFubmVySW1nKVxyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdFx0Y29udGVudDogJ+i3s+i9rOWVpicsIFxyXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2VcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0XHJcblx0XHRcdGdldFVzZXJEZXRhaWxzKGl0ZW0pe1xyXG5cdFx0XHRcdC8vVE9ETyDngrnlh7vot7Povazlr7nlupTnlKjmiLfor6bmg4XpobXpnaJcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhpdGVtKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0XHJcblx0XHRcdGFzeW5jIGdldEJhbm5lcigpe1xyXG5cdFx0XHRcdGNvbnN0IHJlcyA9IGF3YWl0IGdldEJhbm5lckxpc3QoKVxyXG5cdFx0XHRcdGlmKHJlcy5kYXRhLmNvZGUgPT09IDIwMCl7XHJcblx0XHRcdFx0XHR0aGlzLmJhbm5lciA9IHJlcy5kYXRhLmRhdGFcclxuXHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdFx0XHRjb250ZW50OiAnYmFubmVy5Yqg6L295aSx6LSl77yBJywgXHJcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdFxyXG5cdFx0XHRhc3luYyBnZXRVc2VySW1nTGlzdCgpe1xyXG5cdFx0XHRcdGNvbnN0IHJlcyA9IGF3YWl0IGdldFVzZXJJbWdMaXN0KClcclxuXHRcdFx0XHRpZihyZXMuZGF0YS5jb2RlID09PSAyMDApe1xyXG5cdFx0XHRcdFx0dGhpcy51c2VySW1nTGlzdCA9IHJlcy5kYXRhLmRhdGFcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCd1c2VyTGlzdEltZycsdGhpcy51c2VySW1nTGlzdClcclxuXHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdFx0XHRjb250ZW50OiAn55So5oi35Zu+54mH5YiX6KGo5Yqg6L295aSx6LSl77yBJywgXHJcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQgbGFuZz1cInNjc3NcIj5cclxuXHQuY29udGVudCB7XHJcblx0XHRwYWRkaW5nOiAyMHJweDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XHJcblx0XHRmb250LXNpemU6IDIycnB4O1xyXG5cdFx0Lmxpc3Qge1xyXG5cdFx0XHRtYXJnaW4tdG9wOiAyMHJweDtcclxuXHRcdFx0Ji1pdGVtIHtcclxuXHRcdFx0XHRwYWRkaW5nOiA1cnB4O1xyXG5cdFx0XHRcdG1hcmdpbi10b3A6IDIwcnB4O1xyXG5cdFx0XHR9XHJcblx0XHRcdC5oZWFkLWJveCB7XHJcblx0XHRcdFx0ZmxleDogLjg7XHJcblx0XHRcdFx0Jj4ubWwtMTAge1xyXG5cdFx0XHRcdFx0ZmxleDogMTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0XHRcclxuXHRcdFx0LmltZy1ib3gge1xyXG5cdFx0XHRcdG1hcmdpbi10b3A6IDEwcnB4O1xyXG5cdFx0XHRcdD52aWV3IHtcclxuXHRcdFx0XHRcdHdpZHRoOiAzMiU7XHJcblx0XHRcdFx0XHRpbWFnZSB7XHJcblx0XHRcdFx0XHRcdGJvcmRlci1yYWRpdXM6IDhycHg7XHJcblx0XHRcdFx0XHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHRcclxuXHQuc3dpcGVyLWJveCB7XHJcblx0XHRoZWlnaHQ6IDI1MHJweDtcclxuXHRcdC8vIGJvcmRlcjogMnJweCBzb2xpZCAjMThCQzM3O1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogOHJweDtcclxuXHRcdG92ZXJmbG93OiBoaWRkZW47XHJcblx0XHRcclxuXHR9XHJcblxyXG5cdC5zd2lwZXItaXRlbSB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0aGVpZ2h0OiAyMDBweDtcclxuXHRcdGNvbG9yOiAjZmZmO1xyXG5cdH1cclxuXHJcblx0LmltZyB7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHR9XHJcblx0XHJcblx0LmhlYWQge1xyXG5cdFx0Ly8gZmxleDogMTtcclxuXHRcdC8vIGRpc3BsYXk6IGZsZXg7XHJcblx0XHR3aWR0aDo4MHJweDtcclxuXHRcdGhlaWdodDo4MHJweDtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcclxuXHRcdC8vIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuXHRcdC8vIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuXHR9XHJcblx0XHJcblx0LnVzZXJOYW1lIHtcclxuXHRcdFxyXG5cdFx0bWFyZ2luLWxlZnQ6IDEwcnB4O1xyXG5cdFx0XHJcblx0fVxyXG5cdFxyXG5cdC50aHJlZUltZyB7XHJcblx0XHRoZWlnaHQ6MzAwcnB4O1xyXG5cdFx0d2lkdGg6MjAwcnB4O1xyXG5cdH1cclxuPC9zdHlsZT5cclxuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxcXFxkaXN0XFxcXGxvYWRlci5qcz8/cmVmLS04LW9uZU9mLTEtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxjc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFxzdHlsZVBvc3RMb2FkZXIuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXHBvc3Rjc3MtbG9hZGVyXFxcXHNyY1xcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHNhc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS00IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtNSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9jcmVhdG9yLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTU4MzBhZDYwJnNjb3BlZD10cnVlJmxhbmc9c2NzcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxcXFxkaXN0XFxcXGxvYWRlci5qcz8/cmVmLS04LW9uZU9mLTEtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxjc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFxzdHlsZVBvc3RMb2FkZXIuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXHBvc3Rjc3MtbG9hZGVyXFxcXHNyY1xcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHNhc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS00IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtNSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9jcmVhdG9yLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTU4MzBhZDYwJnNjb3BlZD10cnVlJmxhbmc9c2NzcyZcIiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuICAgIGlmKG1vZHVsZS5ob3QpIHtcbiAgICAgIC8vIDE2NTI2OTY5ODI2MjZcbiAgICAgIHZhciBjc3NSZWxvYWQgPSByZXF1aXJlKFwiRDovSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9obXIvaG90TW9kdWxlUmVwbGFjZW1lbnQuanNcIikobW9kdWxlLmlkLCB7XCJobXJcIjp0cnVlLFwicHVibGljUGF0aFwiOlwiLi4vLi4vXCIsXCJsb2NhbHNcIjpmYWxzZX0pO1xuICAgICAgbW9kdWxlLmhvdC5kaXNwb3NlKGNzc1JlbG9hZCk7XG4gICAgICBtb2R1bGUuaG90LmFjY2VwdCh1bmRlZmluZWQsIGNzc1JlbG9hZCk7XG4gICAgfVxuICAiXSwic291cmNlUm9vdCI6IiJ9
\ No newline at end of file
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy9jcmVhdG9yL2NyZWF0b3IudnVlPzE0ZTYiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svcGFnZXMvY3JlYXRvci9jcmVhdG9yLnZ1ZT84OTY2Iiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL2NyZWF0b3IvY3JlYXRvci52dWU/ZWNjMSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy9jcmVhdG9yL2NyZWF0b3IudnVlP2ZmZDciLCJ1bmktYXBwOi8vL3BhZ2VzL2NyZWF0b3IvY3JlYXRvci52dWUiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svcGFnZXMvY3JlYXRvci9jcmVhdG9yLnZ1ZT81YTM2Iiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL2NyZWF0b3IvY3JlYXRvci52dWU/NDY4ZCJdLCJuYW1lcyI6WyJ3eCIsIl9fd2VicGFja19yZXF1aXJlX1VOSV9NUF9QTFVHSU5fXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJjcmVhdGVQYWdlIiwiUGFnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztzREFBQTtBQUNBO0FBQ0Esa0csNkZBRm1CQSxFQUFFLENBQUNDLGlDQUFILEdBQXVDQyxtQkFBdkM7QUFHbkJDLFVBQVUsQ0FBQ0MsZ0JBQUQsQ0FBVixDOzs7Ozs7Ozs7Ozs7O0FDSEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWdJO0FBQ2hJO0FBQzJEO0FBQ0w7QUFDc0M7OztBQUc1RjtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSw2RUFBTTtBQUNSLEVBQUUsOEZBQU07QUFDUixFQUFFLHVHQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLGtHQUFVO0FBQ1o7QUFDQTs7QUFFQTtBQUNlLGdGOzs7Ozs7Ozs7Ozs7QUN2QmY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQ1JBO0FBQUE7QUFBQTtBQUFBO0FBQWltQixDQUFnQiwybkJBQUcsRUFBQyxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMERybkIsK0Q7QUFDQTtBQUNBLE1BREEsa0JBQ0E7QUFDQTtBQUNBLGdCQURBO0FBRUEscUJBRkE7QUFHQSxvQkFIQTtBQUlBLG9CQUpBO0FBS0Esb0JBTEE7QUFNQSx5QkFOQTs7O0FBU0EsR0FYQTtBQVlBLFFBWkEsb0JBWUE7QUFDQTtBQUNBO0FBQ0EsR0FmQTtBQWdCQTtBQUNBLFVBREEsa0JBQ0EsSUFEQSxFQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQURBO0FBRUEseUJBRkE7O0FBSUEsS0FQQTs7QUFTQSxrQkFUQSwwQkFTQSxJQVRBLEVBU0E7QUFDQTtBQUNBO0FBQ0EsS0FaQTs7QUFjQSxhQWRBLHVCQWNBO0FBQ0EsK0NBREEsU0FDQSxHQURBO0FBRUE7QUFDQTtBQUNBLGlCQUZBLE1BRUE7QUFDQTtBQUNBLDBDQURBO0FBRUEscUNBRkE7O0FBSUEsaUJBVEE7QUFVQSxLQXhCQTs7QUEwQkEsa0JBMUJBLDRCQTBCQTtBQUNBLGdEQURBLFNBQ0EsR0FEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBLGlCQUhBLE1BR0E7QUFDQTtBQUNBLDBDQURBO0FBRUEscUNBRkE7O0FBSUEsaUJBVkE7QUFXQSxLQXJDQSxFQWhCQSxFOzs7Ozs7Ozs7Ozs7O0FDM0RBO0FBQUE7QUFBQTtBQUFBO0FBQW9xQyxDQUFnQiwwb0NBQUcsRUFBQyxDOzs7Ozs7Ozs7OztBQ0F4ckM7QUFDQSxPQUFPLEtBQVUsRUFBRSxrQkFLZCIsImZpbGUiOiJwYWdlcy9jcmVhdG9yL2NyZWF0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3VuaS1wYWdlcyc7d3guX193ZWJwYWNrX3JlcXVpcmVfVU5JX01QX1BMVUdJTl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXztcbmltcG9ydCBWdWUgZnJvbSAndnVlJ1xuaW1wb3J0IFBhZ2UgZnJvbSAnLi9wYWdlcy9jcmVhdG9yL2NyZWF0b3IudnVlJ1xuY3JlYXRlUGFnZShQYWdlKSIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vY3JlYXRvci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTgzMGFkNjAmc2NvcGVkPXRydWUmXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9jcmVhdG9yLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vY3JlYXRvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vY3JlYXRvci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD01ODMwYWQ2MCZzY29wZWQ9dHJ1ZSZsYW5nPXNjc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxccnVudGltZVxcXFxjb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCI1ODMwYWQ2MFwiLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWdlcy9jcmVhdG9yL2NyZWF0b3IudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHRlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTE2LTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcdGVtcGxhdGUuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXVuaS1hcHAtbG9hZGVyXFxcXHBhZ2UtbWV0YS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9jcmVhdG9yLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ODMwYWQ2MCZzY29wZWQ9dHJ1ZSZcIiIsInZhciBjb21wb25lbnRzXG52YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbn1cbnZhciByZWN5Y2xhYmxlUmVuZGVyID0gZmFsc2VcbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL2NyZWF0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL2NyZWF0b3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwiY29udGVudFwiPlxyXG5cdFx0PHZpZXc+XHJcblx0XHRcdDxzd2lwZXIgY2xhc3M9XCJzd2lwZXItYm94XCIgOmF1dG9wbGF5PVwiYXV0b3BsYXlcIiA6aW50ZXJ2YWw9XCJpbnRlcnZhbFwiIDpkdXJhdGlvbj1cImR1cmF0aW9uXCIgOmluZGljYXRvci1kb3RzPVwiaW5kaWNhdG9yRG90c1wiPlxyXG5cdFx0XHRcdDxzd2lwZXItaXRlbSB2LWZvcj1cIihpdGVtLCBpbmRleCkgaW4gYmFubmVyXCIgOmtleT1cImluZGV4XCI+XHJcblx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJpbWdcIiBAY2xpY2s9XCJsaW5rVG8oaXRlbSlcIiA6c3JjPVwiaXRlbS5iYW5uZXJJbWdcIj48L2ltYWdlPlxyXG5cdFx0XHRcdDwvc3dpcGVyLWl0ZW0+XHJcblx0XHRcdDwvc3dpcGVyPlxyXG5cdFx0PC92aWV3PlxyXG5cdFx0XHJcblx0XHQ8dmlldyBjbGFzcz1cImxpc3RcIj5cclxuXHRcdFx0PHZpZXcgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIHVzZXJJbWdMaXN0XCIgOmtleT1cImluZGV4XCIgY2xhc3M9XCJsaXN0LWl0ZW1cIj5cclxuXHRcdFx0XHQ8IS0tIOWxleekuueUqOaIt+ebuOWFs+S/oeaBryAtLT5cclxuXHRcdFx0XHRcdDx0ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmYi1kLXIgZmItai1zYiBmYi1hLWNcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZiLWQtciBmYi1hLWMgaGVhZC1ib3hcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxpbWFnZSBjbGFzcz1cImhlYWRcIiA6c3JjPVwiaXRlbS5pbWdcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJtbC0xMFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwiXCI+e3tpdGVtLnVzZXJuYW1lfX08L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZiLWQtciBmYi1qLXNiXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0PuWbvuaghzwvdGV4dD4gIDx0ZXh0PjExMTExPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQ+5Zu+5qCHPC90ZXh0PiAgPHRleHQ+MTExMTE8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dD7lm77moIc8L3RleHQ+ICA8dGV4dD4xMTExMTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRqaWFudG91XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQgICAgXHJcblx0XHRcdFx0XHQ8L3RlbXBsYXRlPlxyXG5cdFx0XHRcdDwhLS0gXHTlsZXnpLrnlKjmiLflr7nlupTkuInlvKDlm74gLS0+XHJcblx0XHRcdFx0XHQ8dGVtcGxhdGU+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmItZC1yIGZiLWotc2IgaW1nLWJveFwiPlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IHYtZm9yPVwiKHBpYyxwYXJhbSkgaW4gaXRlbS5pbWdMaXN0XCIgOmtleT1cInBhcmFtXCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGltYWdlIGNsYXNzPVwidGhyZWVJbWdcIiBAY2xpY2s9XCJsaW5rVG8oaXRlbSlcIiA6c3JjPVwicGljLmltZ1VybFwiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0PC90ZW1wbGF0ZT5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0aW1wb3J0IHtnZXRCYW5uZXJMaXN0LGdldFVzZXJJbWdMaXN0fSBmcm9tICdAL2FwaS9jcmVhdG9yLmpzJyBcclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdGJhbm5lcjogW10sXHJcblx0XHRcdFx0dXNlckltZ0xpc3Q6W10sXHJcblx0XHRcdFx0YXV0b3BsYXk6IHRydWUsXHJcblx0XHRcdFx0aW50ZXJ2YWw6IDIwMDAsXHJcblx0XHRcdFx0ZHVyYXRpb246IDEwMDAsXHJcblx0XHRcdFx0aW5kaWNhdG9yRG90czogdHJ1ZSxcclxuXHRcdFx0XHRcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdG9uTG9hZCgpIHtcclxuXHRcdFx0dGhpcy5nZXRCYW5uZXIoKTtcclxuXHRcdFx0dGhpcy5nZXRVc2VySW1nTGlzdCgpO1xyXG5cdFx0fSxcclxuXHRcdG1ldGhvZHM6IHtcclxuXHRcdFx0bGlua1RvKGl0ZW0pe1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKGl0ZW0uYmFubmVySW1nKVxyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdFx0Y29udGVudDogJ+i3s+i9rOWVpicsIFxyXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2VcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0XHJcblx0XHRcdGdldFVzZXJEZXRhaWxzKGl0ZW0pe1xyXG5cdFx0XHRcdC8vVE9ETyDngrnlh7vot7Povazlr7nlupTnlKjmiLfor6bmg4XpobXpnaJcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhpdGVtKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0XHJcblx0XHRcdGFzeW5jIGdldEJhbm5lcigpe1xyXG5cdFx0XHRcdGNvbnN0IHJlcyA9IGF3YWl0IGdldEJhbm5lckxpc3QoKVxyXG5cdFx0XHRcdGlmKHJlcy5kYXRhLmNvZGUgPT09IDIwMCl7XHJcblx0XHRcdFx0XHR0aGlzLmJhbm5lciA9IHJlcy5kYXRhLmRhdGFcclxuXHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdFx0XHRjb250ZW50OiAnYmFubmVy5Yqg6L295aSx6LSl77yBJywgXHJcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdFxyXG5cdFx0XHRhc3luYyBnZXRVc2VySW1nTGlzdCgpe1xyXG5cdFx0XHRcdGNvbnN0IHJlcyA9IGF3YWl0IGdldFVzZXJJbWdMaXN0KClcclxuXHRcdFx0XHRpZihyZXMuZGF0YS5jb2RlID09PSAyMDApe1xyXG5cdFx0XHRcdFx0dGhpcy51c2VySW1nTGlzdCA9IHJlcy5kYXRhLmRhdGFcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCd1c2VyTGlzdEltZycsdGhpcy51c2VySW1nTGlzdClcclxuXHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdFx0XHRjb250ZW50OiAn55So5oi35Zu+54mH5YiX6KGo5Yqg6L295aSx6LSl77yBJywgXHJcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQgbGFuZz1cInNjc3NcIj5cclxuXHQuY29udGVudCB7XHJcblx0XHRwYWRkaW5nOiAyMHJweDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XHJcblx0XHRmb250LXNpemU6IDIycnB4O1xyXG5cdFx0Lmxpc3Qge1xyXG5cdFx0XHRtYXJnaW4tdG9wOiAyMHJweDtcclxuXHRcdFx0Ji1pdGVtIHtcclxuXHRcdFx0XHRwYWRkaW5nOiA1cnB4O1xyXG5cdFx0XHRcdG1hcmdpbi10b3A6IDIwcnB4O1xyXG5cdFx0XHR9XHJcblx0XHRcdC5oZWFkLWJveCB7XHJcblx0XHRcdFx0ZmxleDogLjg7XHJcblx0XHRcdFx0Jj4ubWwtMTAge1xyXG5cdFx0XHRcdFx0ZmxleDogMTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0XHRcclxuXHRcdFx0LmltZy1ib3gge1xyXG5cdFx0XHRcdG1hcmdpbi10b3A6IDEwcnB4O1xyXG5cdFx0XHRcdD52aWV3IHtcclxuXHRcdFx0XHRcdHdpZHRoOiAzMiU7XHJcblx0XHRcdFx0XHRpbWFnZSB7XHJcblx0XHRcdFx0XHRcdGJvcmRlci1yYWRpdXM6IDhycHg7XHJcblx0XHRcdFx0XHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHRcclxuXHQuc3dpcGVyLWJveCB7XHJcblx0XHRoZWlnaHQ6IDI1MHJweDtcclxuXHRcdC8vIGJvcmRlcjogMnJweCBzb2xpZCAjMThCQzM3O1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogOHJweDtcclxuXHRcdG92ZXJmbG93OiBoaWRkZW47XHJcblx0XHRcclxuXHR9XHJcblxyXG5cdC5zd2lwZXItaXRlbSB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0aGVpZ2h0OiAyMDBweDtcclxuXHRcdGNvbG9yOiAjZmZmO1xyXG5cdH1cclxuXHJcblx0LmltZyB7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHR9XHJcblx0XHJcblx0LmhlYWQge1xyXG5cdFx0Ly8gZmxleDogMTtcclxuXHRcdC8vIGRpc3BsYXk6IGZsZXg7XHJcblx0XHR3aWR0aDo4MHJweDtcclxuXHRcdGhlaWdodDo4MHJweDtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDUwJTtcclxuXHRcdC8vIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuXHRcdC8vIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuXHR9XHJcblx0XHJcblx0LnVzZXJOYW1lIHtcclxuXHRcdFxyXG5cdFx0bWFyZ2luLWxlZnQ6IDEwcnB4O1xyXG5cdFx0XHJcblx0fVxyXG5cdFxyXG5cdC50aHJlZUltZyB7XHJcblx0XHRoZWlnaHQ6MzAwcnB4O1xyXG5cdFx0d2lkdGg6MjAwcnB4O1xyXG5cdH1cclxuPC9zdHlsZT5cclxuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxcXFxkaXN0XFxcXGxvYWRlci5qcz8/cmVmLS04LW9uZU9mLTEtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxjc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFxzdHlsZVBvc3RMb2FkZXIuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXHBvc3Rjc3MtbG9hZGVyXFxcXHNyY1xcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHNhc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS00IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtNSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9jcmVhdG9yLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTU4MzBhZDYwJnNjb3BlZD10cnVlJmxhbmc9c2NzcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxcXFxkaXN0XFxcXGxvYWRlci5qcz8/cmVmLS04LW9uZU9mLTEtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxjc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFxzdHlsZVBvc3RMb2FkZXIuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXHBvc3Rjc3MtbG9hZGVyXFxcXHNyY1xcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHNhc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS00IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtNSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9jcmVhdG9yLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTU4MzBhZDYwJnNjb3BlZD10cnVlJmxhbmc9c2NzcyZcIiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuICAgIGlmKG1vZHVsZS5ob3QpIHtcbiAgICAgIC8vIDE2NTMzMTIyNTQzMDRcbiAgICAgIHZhciBjc3NSZWxvYWQgPSByZXF1aXJlKFwiRDovSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9obXIvaG90TW9kdWxlUmVwbGFjZW1lbnQuanNcIikobW9kdWxlLmlkLCB7XCJobXJcIjp0cnVlLFwicHVibGljUGF0aFwiOlwiLi4vLi4vXCIsXCJsb2NhbHNcIjpmYWxzZX0pO1xuICAgICAgbW9kdWxlLmhvdC5kaXNwb3NlKGNzc1JlbG9hZCk7XG4gICAgICBtb2R1bGUuaG90LmFjY2VwdCh1bmRlZmluZWQsIGNzc1JlbG9hZCk7XG4gICAgfVxuICAiXSwic291cmNlUm9vdCI6IiJ9
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-toutiao/pages/creator/imgDetail.js b/unpackage/dist/dev/mp-toutiao/pages/creator/imgDetail.js
new file mode 100644
index 0000000..0471443
--- /dev/null
+++ b/unpackage/dist/dev/mp-toutiao/pages/creator/imgDetail.js
@@ -0,0 +1,224 @@
+(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["pages/creator/imgDetail"],{
+
+/***/ 178:
+/*!*******************************************************************************!*\
+ !*** E:/开发/bnyer-cloud-tiktok/main.js?{"page":"pages%2Fcreator%2FimgDetail"} ***!
+ \*******************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(wx, createPage) {__webpack_require__(/*! uni-pages */ 5);
+var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 3));
+var _imgDetail = _interopRequireDefault(__webpack_require__(/*! ./pages/creator/imgDetail.vue */ 179));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}wx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;
+createPage(_imgDetail.default);
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-toutiao/dist/index.js */ 1)["default"], __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-toutiao/dist/index.js */ 1)["createPage"]))
+
+/***/ }),
+
+/***/ 179:
+/*!************************************************************!*\
+ !*** E:/开发/bnyer-cloud-tiktok/pages/creator/imgDetail.vue ***!
+ \************************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _imgDetail_vue_vue_type_template_id_34e6d028___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./imgDetail.vue?vue&type=template&id=34e6d028& */ 180);
+/* harmony import */ var _imgDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./imgDetail.vue?vue&type=script&lang=js& */ 182);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _imgDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _imgDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+/* harmony import */ var _imgDetail_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./imgDetail.vue?vue&type=style&index=0&lang=less& */ 184);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 11);
+
+var renderjs
+
+
+
+
+
+/* normalize component */
+
+var component = Object(_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
+ _imgDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
+ _imgDetail_vue_vue_type_template_id_34e6d028___WEBPACK_IMPORTED_MODULE_0__["render"],
+ _imgDetail_vue_vue_type_template_id_34e6d028___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
+ false,
+ null,
+ null,
+ null,
+ false,
+ _imgDetail_vue_vue_type_template_id_34e6d028___WEBPACK_IMPORTED_MODULE_0__["components"],
+ renderjs
+)
+
+component.options.__file = "pages/creator/imgDetail.vue"
+/* harmony default export */ __webpack_exports__["default"] = (component.exports);
+
+/***/ }),
+
+/***/ 180:
+/*!*******************************************************************************************!*\
+ !*** E:/开发/bnyer-cloud-tiktok/pages/creator/imgDetail.vue?vue&type=template&id=34e6d028& ***!
+ \*******************************************************************************************/
+/*! exports provided: render, staticRenderFns, recyclableRender, components */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_imgDetail_vue_vue_type_template_id_34e6d028___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./imgDetail.vue?vue&type=template&id=34e6d028& */ 181);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_imgDetail_vue_vue_type_template_id_34e6d028___WEBPACK_IMPORTED_MODULE_0__["render"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_imgDetail_vue_vue_type_template_id_34e6d028___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_imgDetail_vue_vue_type_template_id_34e6d028___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_imgDetail_vue_vue_type_template_id_34e6d028___WEBPACK_IMPORTED_MODULE_0__["components"]; });
+
+
+
+/***/ }),
+
+/***/ 181:
+/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/pages/creator/imgDetail.vue?vue&type=template&id=34e6d028& ***!
+ \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! exports provided: render, staticRenderFns, recyclableRender, components */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
+var components
+var render = function() {
+ var _vm = this
+ var _h = _vm.$createElement
+ var _c = _vm._self._c || _h
+}
+var recyclableRender = false
+var staticRenderFns = []
+render._withStripped = true
+
+
+
+/***/ }),
+
+/***/ 182:
+/*!*************************************************************************************!*\
+ !*** E:/开发/bnyer-cloud-tiktok/pages/creator/imgDetail.vue?vue&type=script&lang=js& ***!
+ \*************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_imgDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./imgDetail.vue?vue&type=script&lang=js& */ 183);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_imgDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_imgDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_imgDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_imgDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+ /* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_imgDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
+
+/***/ }),
+
+/***/ 183:
+/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/pages/creator/imgDetail.vue?vue&type=script&lang=js& ***!
+ \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _regenerator = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/regenerator */ 20));
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+var _creator = __webpack_require__(/*! @/api/creator.js */ 78);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {try {var info = gen[key](arg);var value = info.value;} catch (error) {reject(error);return;}if (info.done) {resolve(value);} else {Promise.resolve(value).then(_next, _throw);}}function _asyncToGenerator(fn) {return function () {var self = this,args = arguments;return new Promise(function (resolve, reject) {var gen = fn.apply(self, args);function _next(value) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);}function _throw(err) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);}_next(undefined);});};}var _default =
+
+
+{
+ data: function data() {
+ return {
+ detailMsg: {} };
+
+ },
+ created: function created() {var _this = this;
+ uni.getStorage({
+ key: 'detailId',
+ success: function success(res) {
+ _this.getImgDetail(res.data);
+ } });
+
+ },
+ methods: {
+ getImgDetail: function getImgDetail(id) {var _this2 = this;return _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee() {var res;return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:_context.next = 2;return (
+ (0, _creator.detailsTiktokImg)(id));case 2:res = _context.sent;
+ if (res.data.code === 200) {
+ _this2.detailMsg = res.data.data;
+ console.log('图片详情', _this2.detailMsg);
+ } else {
+ uni.showToast({
+ title: '请输入艺术家代号',
+ icon: 'error' });
+
+ }case 4:case "end":return _context.stop();}}}, _callee);}))();
+ } } };exports.default = _default;
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-toutiao/dist/index.js */ 1)["default"]))
+
+/***/ }),
+
+/***/ 184:
+/*!**********************************************************************************************!*\
+ !*** E:/开发/bnyer-cloud-tiktok/pages/creator/imgDetail.vue?vue&type=style&index=0&lang=less& ***!
+ \**********************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_10_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_10_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_imgDetail_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-oneOf-1-2!./node_modules/postcss-loader/src??ref--10-oneOf-1-3!./node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./imgDetail.vue?vue&type=style&index=0&lang=less& */ 185);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_10_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_10_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_imgDetail_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_10_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_10_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_imgDetail_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_0__);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_10_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_10_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_imgDetail_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_10_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_10_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_imgDetail_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+ /* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_10_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_10_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_imgDetail_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_0___default.a);
+
+/***/ }),
+
+/***/ 185:
+/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-oneOf-1-2!./node_modules/postcss-loader/src??ref--10-oneOf-1-3!./node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/pages/creator/imgDetail.vue?vue&type=style&index=0&lang=less& ***!
+ \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// extracted by mini-css-extract-plugin
+ if(false) { var cssReload; }
+
+
+/***/ })
+
+},[[178,"common/runtime","common/vendor"]]]);
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyIsbnVsbCwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL2NyZWF0b3IvaW1nRGV0YWlsLnZ1ZT9hNGYwIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL2NyZWF0b3IvaW1nRGV0YWlsLnZ1ZT9jZmRhIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL2NyZWF0b3IvaW1nRGV0YWlsLnZ1ZT8wMjY3IiwidW5pLWFwcDovLy9wYWdlcy9jcmVhdG9yL2ltZ0RldGFpbC52dWUiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svcGFnZXMvY3JlYXRvci9pbWdEZXRhaWwudnVlP2YwMWIiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svcGFnZXMvY3JlYXRvci9pbWdEZXRhaWwudnVlPzkyNDIiXSwibmFtZXMiOlsid3giLCJfX3dlYnBhY2tfcmVxdWlyZV9VTklfTVBfUExVR0lOX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwiY3JlYXRlUGFnZSIsIlBhZ2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7c0RBQUE7QUFDQTtBQUNBLHVHLDZGQUZtQkEsRUFBRSxDQUFDQyxpQ0FBSCxHQUF1Q0MsbUJBQXZDO0FBR25CQyxVQUFVLENBQUNDLGtCQUFELENBQVYsQzs7Ozs7Ozs7Ozs7OztBQ0hBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFzSDtBQUN0SDtBQUM2RDtBQUNMO0FBQ2M7OztBQUd0RTtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSwrRUFBTTtBQUNSLEVBQUUsb0ZBQU07QUFDUixFQUFFLDZGQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHdGQUFVO0FBQ1o7QUFDQTs7QUFFQTtBQUNlLGdGOzs7Ozs7Ozs7Ozs7QUN2QmY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQ1JBO0FBQUE7QUFBQTtBQUFBO0FBQW1tQixDQUFnQiw2bkJBQUcsRUFBQyxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMyQnZuQiwrRDs7O0FBR0E7QUFDQSxNQURBLGtCQUNBO0FBQ0E7QUFDQSxtQkFEQTs7QUFHQSxHQUxBO0FBTUEsU0FOQSxxQkFNQTtBQUNBO0FBQ0EscUJBREE7QUFFQTtBQUNBO0FBQ0EsT0FKQTs7QUFNQSxHQWJBO0FBY0E7QUFDQSxnQkFEQSx3QkFDQSxFQURBLEVBQ0E7QUFDQSxvREFEQSxTQUNBLEdBREE7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFIQSxNQUdBO0FBQ0E7QUFDQSxxQ0FEQTtBQUVBLGlDQUZBOztBQUlBLGlCQVZBO0FBV0EsS0FaQSxFQWRBLEU7Ozs7Ozs7Ozs7Ozs7QUM5QkE7QUFBQTtBQUFBO0FBQUE7QUFBMm1DLENBQWdCLHFsQ0FBRyxFQUFDLEM7Ozs7Ozs7Ozs7O0FDQS9uQztBQUNBLE9BQU8sS0FBVSxFQUFFLGtCQUtkIiwiZmlsZSI6InBhZ2VzL2NyZWF0b3IvaW1nRGV0YWlsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd1bmktcGFnZXMnO3d4Ll9fd2VicGFja19yZXF1aXJlX1VOSV9NUF9QTFVHSU5fXyA9IF9fd2VicGFja19yZXF1aXJlX187XG5pbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcbmltcG9ydCBQYWdlIGZyb20gJy4vcGFnZXMvY3JlYXRvci9pbWdEZXRhaWwudnVlJ1xuY3JlYXRlUGFnZShQYWdlKSIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vaW1nRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zNGU2ZDAyOCZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2ltZ0RldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL2ltZ0RldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vaW1nRGV0YWlsLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9bGVzcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxydW50aW1lXFxcXGNvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWdlcy9jcmVhdG9yL2ltZ0RldGFpbC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGxvYWRlcnNcXFxcdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTYtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFx0ZW1wbGF0ZS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stdW5pLWFwcC1sb2FkZXJcXFxccGFnZS1tZXRhLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL2ltZ0RldGFpbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzRlNmQwMjgmXCIiLCJ2YXIgY29tcG9uZW50c1xudmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG59XG52YXIgcmVjeWNsYWJsZVJlbmRlciA9IGZhbHNlXG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IiwiaW1wb3J0IG1vZCBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMi0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHNjcmlwdC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9pbWdEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL2ltZ0RldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCI8dGVtcGxhdGU+XHJcblx0PHZpZXcgY2xhc3M9XCJpbWdEZXRhaWxcIj5cclxuXHRcdDxpbWFnZSBjbGFzcz1cIm1haW4taW1nXCIgOnNyYz1cImRldGFpbE1zZy5pbWdVcmxcIiBtb2RlPVwiXCI+PC9pbWFnZT5cclxuXHRcdDx2aWV3IGNsYXNzPVwidG9vbGJhclwiPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInRvb2xiYXItYm94XCI+XHJcblx0XHRcdFx0PHRleHQ+54Ot6ZeoPC90ZXh0PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwidG9vbGJhci1ib3hcIj5cclxuXHRcdFx0XHQ8dGV4dD7kuIvovb08L3RleHQ+XHJcblx0XHRcdFx0PHRleHQ+5LiL6L29e3tkZXRhaWxNc2cuZG93bmxvYWROdW19fTwvdGV4dD5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInRvb2xiYXItYm94XCI+XHJcblx0XHRcdFx0PHRleHQ+5Zac5qyiPC90ZXh0PlxyXG5cdFx0XHRcdDx0ZXh0PuWWnOasont7ZGV0YWlsTXNnLmdyZWF0TnVtfX08L3RleHQ+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJ0b29sYmFyLWJveFwiPlxyXG5cdFx0XHRcdDx0ZXh0PuaUtuiXjzwvdGV4dD5cclxuXHRcdFx0XHQ8dGV4dD7mlLbol497e2RldGFpbE1zZy5jb2xsZWN0aW9uTnVtfX08L3RleHQ+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJ0b29sYmFyLWJveFwiPlxyXG5cdFx0XHRcdDx0ZXh0PuWIhuS6qzwvdGV4dD5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0aW1wb3J0IHtcclxuXHRcdGRldGFpbHNUaWt0b2tJbWdcclxuXHR9IGZyb20gJ0AvYXBpL2NyZWF0b3IuanMnXHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRkZXRhaWxNc2c6IHt9XHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRjcmVhdGVkKCkge1xyXG5cdFx0XHR1bmkuZ2V0U3RvcmFnZSh7XHJcblx0XHRcdFx0a2V5OiAnZGV0YWlsSWQnLFxyXG5cdFx0XHRcdHN1Y2Nlc3M6IHJlcyA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmdldEltZ0RldGFpbChyZXMuZGF0YSlcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRhc3luYyBnZXRJbWdEZXRhaWwoaWQpIHtcclxuXHRcdFx0XHRjb25zdCByZXMgPSBhd2FpdCBkZXRhaWxzVGlrdG9rSW1nKGlkKVxyXG5cdFx0XHRcdGlmIChyZXMuZGF0YS5jb2RlID09PSAyMDApIHtcclxuXHRcdFx0XHRcdHRoaXMuZGV0YWlsTXNnID0gcmVzLmRhdGEuZGF0YVxyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ+WbvueJh+ivpuaDhScsIHRoaXMuZGV0YWlsTXNnKVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcclxuXHRcdFx0XHRcdFx0dGl0bGU6ICfor7fovpPlhaXoibrmnK/lrrbku6Plj7cnLFxyXG5cdFx0XHRcdFx0XHRpY29uOiAnZXJyb3InXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cclxuXHQuaW1nRGV0YWlsIHtcclxuXHRcdGhlaWdodDogMTAwdmg7XHJcblx0XHR3aWR0aDogMTAwdnc7XHJcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0Lm1haW4taW1nIHtcclxuXHRcdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRcdGhlaWdodDoxMDAlO1xyXG5cdFx0fVxyXG5cdFx0LnRvb2xiYXJ7XHJcblx0XHRcdHdpZHRoOiA2MHB4O1xyXG5cdFx0XHRoZWlnaHQ6IDM2MHB4O1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuMik7XHJcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdFx0Ym90dG9tOiA3NnB4O1xyXG5cdFx0XHRyaWdodDogMTBweDtcclxuXHRcdFx0Ym9yZGVyLXJhZGl1czogNjBweDtcclxuXHRcdFx0LnRvb2xiYXItYm94e1xyXG5cdFx0XHRcdGhlaWdodDogNjBweDtcclxuXHRcdFx0XHR0ZXh0e1xyXG5cdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XHJcblx0XHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRcdFx0XHRsaW5lLWhlaWdodDogMzBweDtcclxuXHRcdFx0XHRcdGZvbnQtc2l6ZTogMTJweDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbjwvc3R5bGU+XG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXFxcXGRpc3RcXFxcbG9hZGVyLmpzPz9yZWYtLTEwLW9uZU9mLTEtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxjc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTEwLW9uZU9mLTEtMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGxvYWRlcnNcXFxcc3R5bGVQb3N0TG9hZGVyLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMC1vbmVPZi0xLTIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxccG9zdGNzcy1sb2FkZXJcXFxcc3JjXFxcXGluZGV4LmpzPz9yZWYtLTEwLW9uZU9mLTEtMyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxsZXNzLWxvYWRlclxcXFxkaXN0XFxcXGNqcy5qcz8/cmVmLS0xMC1vbmVPZi0xLTQhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEwLW9uZU9mLTEtNSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9pbWdEZXRhaWwudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1sZXNzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXFxcXGRpc3RcXFxcbG9hZGVyLmpzPz9yZWYtLTEwLW9uZU9mLTEtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxjc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTEwLW9uZU9mLTEtMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGxvYWRlcnNcXFxcc3R5bGVQb3N0TG9hZGVyLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMC1vbmVPZi0xLTIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxccG9zdGNzcy1sb2FkZXJcXFxcc3JjXFxcXGluZGV4LmpzPz9yZWYtLTEwLW9uZU9mLTEtMyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxsZXNzLWxvYWRlclxcXFxkaXN0XFxcXGNqcy5qcz8/cmVmLS0xMC1vbmVPZi0xLTQhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEwLW9uZU9mLTEtNSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9pbWdEZXRhaWwudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1sZXNzJlwiIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG4gICAgaWYobW9kdWxlLmhvdCkge1xuICAgICAgLy8gMTY1MzMxNDc1MDU5M1xuICAgICAgdmFyIGNzc1JlbG9hZCA9IHJlcXVpcmUoXCJEOi9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9taW5pLWNzcy1leHRyYWN0LXBsdWdpbi9kaXN0L2htci9ob3RNb2R1bGVSZXBsYWNlbWVudC5qc1wiKShtb2R1bGUuaWQsIHtcImhtclwiOnRydWUsXCJwdWJsaWNQYXRoXCI6XCIuLi8uLi9cIixcImxvY2Fsc1wiOmZhbHNlfSk7XG4gICAgICBtb2R1bGUuaG90LmRpc3Bvc2UoY3NzUmVsb2FkKTtcbiAgICAgIG1vZHVsZS5ob3QuYWNjZXB0KHVuZGVmaW5lZCwgY3NzUmVsb2FkKTtcbiAgICB9XG4gICJdLCJzb3VyY2VSb290IjoiIn0=
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-toutiao/pages/creator/imgDetail.json b/unpackage/dist/dev/mp-toutiao/pages/creator/imgDetail.json
new file mode 100644
index 0000000..ebb2138
--- /dev/null
+++ b/unpackage/dist/dev/mp-toutiao/pages/creator/imgDetail.json
@@ -0,0 +1,5 @@
+{
+ "navigationBarTitleText": "",
+ "enablePullDownRefresh": true,
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-toutiao/pages/creator/imgDetail.ttml b/unpackage/dist/dev/mp-toutiao/pages/creator/imgDetail.ttml
new file mode 100644
index 0000000..22f6840
--- /dev/null
+++ b/unpackage/dist/dev/mp-toutiao/pages/creator/imgDetail.ttml
@@ -0,0 +1 @@
+热门下载{{"下载"+detailMsg.downloadNum}}喜欢{{"喜欢"+detailMsg.greatNum}}收藏{{"收藏"+detailMsg.collectionNum}}分享
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-toutiao/pages/creator/imgDetail.ttss b/unpackage/dist/dev/mp-toutiao/pages/creator/imgDetail.ttss
new file mode 100644
index 0000000..3b34645
--- /dev/null
+++ b/unpackage/dist/dev/mp-toutiao/pages/creator/imgDetail.ttss
@@ -0,0 +1,29 @@
+.imgDetail {
+ height: 100vh;
+ width: 100vw;
+ overflow: hidden;
+ position: relative;
+}
+.imgDetail .main-img {
+ width: 100%;
+ height: 100%;
+}
+.imgDetail .toolbar {
+ width: 60px;
+ height: 360px;
+ background-color: rgba(255, 255, 255, 0.2);
+ position: absolute;
+ bottom: 76px;
+ right: 10px;
+ border-radius: 60px;
+}
+.imgDetail .toolbar .toolbar-box {
+ height: 60px;
+}
+.imgDetail .toolbar .toolbar-box text {
+ display: block;
+ text-align: center;
+ line-height: 30px;
+ font-size: 12px;
+}
+
diff --git a/unpackage/dist/dev/mp-toutiao/pages/creator/userDetail.js b/unpackage/dist/dev/mp-toutiao/pages/creator/userDetail.js
index 2a82de4..55b65a4 100644
--- a/unpackage/dist/dev/mp-toutiao/pages/creator/userDetail.js
+++ b/unpackage/dist/dev/mp-toutiao/pages/creator/userDetail.js
@@ -1,6 +1,6 @@
(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["pages/creator/userDetail"],{
-/***/ 156:
+/***/ 81:
/*!********************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/main.js?{"page":"pages%2Fcreator%2FuserDetail"} ***!
\********************************************************************************/
@@ -10,13 +10,13 @@
"use strict";
/* WEBPACK VAR INJECTION */(function(wx, createPage) {__webpack_require__(/*! uni-pages */ 5);
var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 3));
-var _userDetail = _interopRequireDefault(__webpack_require__(/*! ./pages/creator/userDetail.vue */ 157));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}wx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;
+var _userDetail = _interopRequireDefault(__webpack_require__(/*! ./pages/creator/userDetail.vue */ 82));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}wx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;
createPage(_userDetail.default);
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-toutiao/dist/index.js */ 1)["default"], __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-toutiao/dist/index.js */ 1)["createPage"]))
/***/ }),
-/***/ 157:
+/***/ 82:
/*!*************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/pages/creator/userDetail.vue ***!
\*************************************************************/
@@ -25,10 +25,10 @@ createPage(_userDetail.default);
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _userDetail_vue_vue_type_template_id_26547a78___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./userDetail.vue?vue&type=template&id=26547a78& */ 158);
-/* harmony import */ var _userDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./userDetail.vue?vue&type=script&lang=js& */ 160);
+/* harmony import */ var _userDetail_vue_vue_type_template_id_26547a78___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./userDetail.vue?vue&type=template&id=26547a78& */ 83);
+/* harmony import */ var _userDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./userDetail.vue?vue&type=script&lang=js& */ 85);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _userDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _userDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
-/* harmony import */ var _userDetail_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./userDetail.vue?vue&type=style&index=0&lang=less& */ 162);
+/* harmony import */ var _userDetail_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./userDetail.vue?vue&type=style&index=0&lang=less& */ 87);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 11);
var renderjs
@@ -57,7 +57,7 @@ component.options.__file = "pages/creator/userDetail.vue"
/***/ }),
-/***/ 158:
+/***/ 83:
/*!********************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/pages/creator/userDetail.vue?vue&type=template&id=26547a78& ***!
\********************************************************************************************/
@@ -66,7 +66,7 @@ component.options.__file = "pages/creator/userDetail.vue"
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userDetail_vue_vue_type_template_id_26547a78___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./userDetail.vue?vue&type=template&id=26547a78& */ 159);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userDetail_vue_vue_type_template_id_26547a78___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./userDetail.vue?vue&type=template&id=26547a78& */ 84);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userDetail_vue_vue_type_template_id_26547a78___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userDetail_vue_vue_type_template_id_26547a78___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
@@ -79,7 +79,7 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
-/***/ 159:
+/***/ 84:
/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/pages/creator/userDetail.vue?vue&type=template&id=26547a78& ***!
\********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -96,7 +96,7 @@ var components
try {
components = {
uniSegmentedControl: function() {
- return __webpack_require__.e(/*! import() | uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control */ "uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control").then(__webpack_require__.bind(null, /*! @/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue */ 170))
+ return __webpack_require__.e(/*! import() | uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control */ "uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control").then(__webpack_require__.bind(null, /*! @/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue */ 131))
}
}
} catch (e) {
@@ -129,7 +129,7 @@ render._withStripped = true
/***/ }),
-/***/ 160:
+/***/ 85:
/*!**************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/pages/creator/userDetail.vue?vue&type=script&lang=js& ***!
\**************************************************************************************/
@@ -138,14 +138,14 @@ render._withStripped = true
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./userDetail.vue?vue&type=script&lang=js& */ 161);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./userDetail.vue?vue&type=script&lang=js& */ 86);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userDetail_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
-/***/ 161:
+/***/ 86:
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/pages/creator/userDetail.vue?vue&type=script&lang=js& ***!
\*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -246,12 +246,13 @@ var _creator = __webpack_require__(/*! @/api/creator.js */ 78); //
//
var _default = { data: function data() {return { userMsg: {}, current: 0, arrList: ['背景图', '头像', '表情包'], imgWidth: 0, // 图片宽
imgHeight: 0 // 图片高
- };}, created: function created() {var _this = this;uni.getSystemInfo({ success: function success(res) {console.log(res);_this.imgWidth = res.windowWidth - 60 + 'rpx';_this.imgHeight = (res.windowWidth - 60) * 2 - 30 + 'rpx';} });uni.getStorage({ key: 'userDetail', success: function success(res) {console.log('getStorage', res);_this.userMsg = res.data;} });}, methods: { onClickItem: function onClickItem(e) {console.log('点击', e);} } };exports.default = _default;
+ };}, created: function created() {var _this = this;uni.getSystemInfo({ success: function success(res) {console.log(res);_this.imgWidth = res.windowWidth - 60 + 'rpx';_this.imgHeight = (res.windowWidth - 60) * 2 - 30 + 'rpx';} });uni.getStorage({ key: 'userDetail', success: function success(res) {console.log('getStorage', res);_this.userMsg = res.data;} });}, methods: { onClickItem: function onClickItem(e) {console.log('点击', e);}, // 前往详情页
+ targetDetail: function targetDetail(item) {console.log('跳转', item);if (item.id) {uni.setStorage({ key: 'detailId', data: item.id, success: function success() {console.log(111111);uni.redirectTo({ url: './imgDetail' });} });}} } };exports.default = _default;
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-toutiao/dist/index.js */ 1)["default"]))
/***/ }),
-/***/ 162:
+/***/ 87:
/*!***********************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/pages/creator/userDetail.vue?vue&type=style&index=0&lang=less& ***!
\***********************************************************************************************/
@@ -260,14 +261,14 @@ var _default = { data: function data() {return { userMsg: {}, current: 0, arrLis
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_10_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_10_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userDetail_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-oneOf-1-2!./node_modules/postcss-loader/src??ref--10-oneOf-1-3!./node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./userDetail.vue?vue&type=style&index=0&lang=less& */ 163);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_10_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_10_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userDetail_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-oneOf-1-2!./node_modules/postcss-loader/src??ref--10-oneOf-1-3!./node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./userDetail.vue?vue&type=style&index=0&lang=less& */ 88);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_10_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_10_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userDetail_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_10_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_10_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userDetail_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_10_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_10_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userDetail_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_10_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_10_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userDetail_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_10_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_10_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_10_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_less_loader_dist_cjs_js_ref_10_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_10_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userDetail_vue_vue_type_style_index_0_lang_less___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
-/***/ 163:
+/***/ 88:
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-oneOf-1-2!./node_modules/postcss-loader/src??ref--10-oneOf-1-3!./node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--10-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/pages/creator/userDetail.vue?vue&type=style&index=0&lang=less& ***!
\*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -280,5 +281,5 @@ __webpack_require__.r(__webpack_exports__);
/***/ })
-},[[156,"common/runtime","common/vendor"]]]);
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyIsbnVsbCwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL2NyZWF0b3IvdXNlckRldGFpbC52dWU/ZjAyZCIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy9jcmVhdG9yL3VzZXJEZXRhaWwudnVlPzQ4ZjAiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svcGFnZXMvY3JlYXRvci91c2VyRGV0YWlsLnZ1ZT81ZTE5IiwidW5pLWFwcDovLy9wYWdlcy9jcmVhdG9yL3VzZXJEZXRhaWwudnVlIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL2NyZWF0b3IvdXNlckRldGFpbC52dWU/YTdhZCIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy9jcmVhdG9yL3VzZXJEZXRhaWwudnVlP2M5MWEiXSwibmFtZXMiOlsid3giLCJfX3dlYnBhY2tfcmVxdWlyZV9VTklfTVBfUExVR0lOX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwiY3JlYXRlUGFnZSIsIlBhZ2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7c0RBQUE7QUFDQTtBQUNBLHlHLDZGQUZtQkEsRUFBRSxDQUFDQyxpQ0FBSCxHQUF1Q0MsbUJBQXZDO0FBR25CQyxVQUFVLENBQUNDLG1CQUFELENBQVYsQzs7Ozs7Ozs7Ozs7OztBQ0hBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF1SDtBQUN2SDtBQUM4RDtBQUNMO0FBQ2M7OztBQUd2RTtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSxnRkFBTTtBQUNSLEVBQUUscUZBQU07QUFDUixFQUFFLDhGQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHlGQUFVO0FBQ1o7QUFDQTs7QUFFQTtBQUNlLGdGOzs7Ozs7Ozs7Ozs7QUN2QmY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDRXQUVOO0FBQ1A7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNqQ0E7QUFBQTtBQUFBO0FBQUE7QUFBb21CLENBQWdCLDhuQkFBRyxFQUFDLEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM4Q3huQiwrRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2VBR0EsRUFDQSxJQURBLGtCQUNBLENBQ0EsU0FDQSxXQURBLEVBRUEsVUFGQSxFQUdBLDZCQUhBLEVBSUEsV0FKQSxFQUlBO0FBQ0Esa0JBTEEsQ0FLQTtBQUxBLE1BT0EsQ0FUQSxFQVVBLE9BVkEscUJBVUEsa0JBQ0Esb0JBQ0EsZ0NBQ0EsaUJBQ0EsOENBQ0EsMERBQ0EsQ0FMQSxJQU9BLGlCQUNBLGlCQURBLEVBRUEsZ0NBQ0EsK0JBQ0EseUJBQ0EsQ0FMQSxJQU9BLENBekJBLEVBMEJBLFdBQ0EsV0FEQSx1QkFDQSxDQURBLEVBQ0EsQ0FDQSxxQkFDQSxDQUhBLEVBMUJBLEU7Ozs7Ozs7Ozs7Ozs7QUNqREE7QUFBQTtBQUFBO0FBQUE7QUFBNG1DLENBQWdCLHNsQ0FBRyxFQUFDLEM7Ozs7Ozs7Ozs7O0FDQWhvQztBQUNBLE9BQU8sS0FBVSxFQUFFLGtCQUtkIiwiZmlsZSI6InBhZ2VzL2NyZWF0b3IvdXNlckRldGFpbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAndW5pLXBhZ2VzJzt3eC5fX3dlYnBhY2tfcmVxdWlyZV9VTklfTVBfUExVR0lOX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fO1xuaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgUGFnZSBmcm9tICcuL3BhZ2VzL2NyZWF0b3IvdXNlckRldGFpbC52dWUnXG5jcmVhdGVQYWdlKFBhZ2UpIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSBmcm9tIFwiLi91c2VyRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNjU0N2E3OCZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL3VzZXJEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi91c2VyRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi91c2VyRGV0YWlsLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9bGVzcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxydW50aW1lXFxcXGNvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWdlcy9jcmVhdG9yL3VzZXJEZXRhaWwudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHRlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTE2LTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcdGVtcGxhdGUuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXVuaS1hcHAtbG9hZGVyXFxcXHBhZ2UtbWV0YS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91c2VyRGV0YWlsLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNjU0N2E3OCZcIiIsInZhciBjb21wb25lbnRzXG50cnkge1xuICBjb21wb25lbnRzID0ge1xuICAgIHVuaVNlZ21lbnRlZENvbnRyb2w6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGltcG9ydChcbiAgICAgICAgLyogd2VicGFja0NodW5rTmFtZTogXCJ1bmlfbW9kdWxlcy91bmktc2VnbWVudGVkLWNvbnRyb2wvY29tcG9uZW50cy91bmktc2VnbWVudGVkLWNvbnRyb2wvdW5pLXNlZ21lbnRlZC1jb250cm9sXCIgKi8gXCJAL3VuaV9tb2R1bGVzL3VuaS1zZWdtZW50ZWQtY29udHJvbC9jb21wb25lbnRzL3VuaS1zZWdtZW50ZWQtY29udHJvbC91bmktc2VnbWVudGVkLWNvbnRyb2wudnVlXCJcbiAgICAgIClcbiAgICB9XG4gIH1cbn0gY2F0Y2ggKGUpIHtcbiAgaWYgKFxuICAgIGUubWVzc2FnZS5pbmRleE9mKFwiQ2Fubm90IGZpbmQgbW9kdWxlXCIpICE9PSAtMSAmJlxuICAgIGUubWVzc2FnZS5pbmRleE9mKFwiLnZ1ZVwiKSAhPT0gLTFcbiAgKSB7XG4gICAgY29uc29sZS5lcnJvcihlLm1lc3NhZ2UpXG4gICAgY29uc29sZS5lcnJvcihcIjEuIOaOkuafpee7hOS7tuWQjeensOaLvOWGmeaYr+WQpuato+ehrlwiKVxuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIjIuIOaOkuafpee7hOS7tuaYr+WQpuespuWQiCBlYXN5Y29tIOinhOiMg++8jOaWh+aho++8mmh0dHBzOi8vdW5pYXBwLmRjbG91ZC5uZXQuY24vY29sbG9jYXRpb24vcGFnZXM/aWQ9ZWFzeWNvbVwiXG4gICAgKVxuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIjMuIOiLpee7hOS7tuS4jeespuWQiCBlYXN5Y29tIOinhOiMg++8jOmcgOaJi+WKqOW8leWFpe+8jOW5tuWcqCBjb21wb25lbnRzIOS4reazqOWGjOivpee7hOS7tlwiXG4gICAgKVxuICB9IGVsc2Uge1xuICAgIHRocm93IGVcbiAgfVxufVxudmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG59XG52YXIgcmVjeWNsYWJsZVJlbmRlciA9IGZhbHNlXG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IiwiaW1wb3J0IG1vZCBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMi0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHNjcmlwdC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91c2VyRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMi0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHNjcmlwdC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91c2VyRGV0YWlsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiIsIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyBjbGFzcz1cInVzZXJEZXRhaWxcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwiYXZhdGFyLWJveFwiPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImF2YXRhci10b3BcIj5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImF2YXRhci1sZWZ0LWJveFwiPlxyXG5cdFx0XHRcdFx0PGltYWdlIDpzcmM9XCJ1c2VyTXNnLmltZ1wiIG1vZGU9XCJcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0PHRleHQ+e3t1c2VyTXNnLnVzZXJuYW1lfX08L3RleHQ+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYXZhdGFyLXJpZ2h0LWJveFwiPlxyXG5cdFx0XHRcdFx0PGltYWdlIHNyYz1cIi4uLy4uL3N0YXRpYy9pbWcvc2hhcmUuc3ZnXCIgbW9kZT1cIlwiPjwvaW1hZ2U+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiYXZhdGFyLWJveC10ZXh0XCI+XHJcblx0XHRcdFx05Liq5oCn562+5ZCNXHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJhdmF0YXItYm94LXRhZ1wiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYXZhdGFyLWJveC10YWctbGVmdFwiPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0YWctbGVmdC1ib3hcIj5cclxuXHRcdFx0XHRcdFx0PHRleHQ+MTEyPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHQ8dGV4dD7kvZzlk4E8L3RleHQ+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInRhZy1sZWZ0LWJveFwiPlxyXG5cdFx0XHRcdFx0XHQ8dGV4dD4xMTI8L3RleHQ+XHJcblx0XHRcdFx0XHRcdDx0ZXh0PuaUtuiXjzwvdGV4dD5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwidGFnLWxlZnQtYm94XCI+XHJcblx0XHRcdFx0XHRcdDx0ZXh0PjExMjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0PHRleHQ+5Zac5qyiPC90ZXh0PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImF2YXRhci1ib3gtdGFnLXJpZ2h0XCI+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cIm1pZGRsZVwiPlxyXG5cdFx0XHQ8dW5pLXNlZ21lbnRlZC1jb250cm9sIDpjdXJyZW50PVwiY3VycmVudFwiIDp2YWx1ZXM9XCJhcnJMaXN0XCIgQGNsaWNrSXRlbT1cIm9uQ2xpY2tJdGVtXCIgc3R5bGVUeXBlPVwidGV4dFwiXHJcblx0XHRcdFx0YWN0aXZlQ29sb3I9XCIjMTFBOEZEXCI+PC91bmktc2VnbWVudGVkLWNvbnRyb2w+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cImJvdHRvbVwiPlxyXG5cdFx0XHQ8aW1hZ2UgOnNyYz1cIml0ZW0uaW1nVXJsXCIgbW9kZT1cIlwiIHYtZm9yPVwiKGl0ZW0saW5kZXgpIGluIHVzZXJNc2cuaW1nTGlzdFwiIDprZXk9XCJpbmRleFwiXHJcblx0XHRcdFx0OnN0eWxlPVwiJ3dpZHRoOicraW1nV2lkdGgrJztoZWlnaHQ6JytpbWdIZWlnaHRcIj48L2ltYWdlPlxyXG5cdFx0PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0aW1wb3J0IHtcclxuXHRcdHRpa3Rva1VzZXJEZXRhaWxzXHJcblx0fSBmcm9tICdAL2FwaS9jcmVhdG9yLmpzJ1xyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0dXNlck1zZzoge30sXHJcblx0XHRcdFx0Y3VycmVudDogMCxcclxuXHRcdFx0XHRhcnJMaXN0OiBbJ+iDjOaZr+WbvicsICflpLTlg48nLCAn6KGo5oOF5YyFJ10sXHJcblx0XHRcdFx0aW1nV2lkdGg6IDAsIC8vIOWbvueJh+WuvVxyXG5cdFx0XHRcdGltZ0hlaWdodDogMCwgLy8g5Zu+54mH6auYXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRjcmVhdGVkKCkge1xyXG5cdFx0XHR1bmkuZ2V0U3lzdGVtSW5mbyh7XHJcblx0XHRcdFx0c3VjY2VzczogcmVzID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcylcclxuXHRcdFx0XHRcdHRoaXMuaW1nV2lkdGggPSByZXMud2luZG93V2lkdGggLSA2MCArICdycHgnXHJcblx0XHRcdFx0XHR0aGlzLmltZ0hlaWdodCA9IChyZXMud2luZG93V2lkdGggLSA2MCkgKiAyIC0gMzAgKyAncnB4J1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSlcclxuXHRcdFx0dW5pLmdldFN0b3JhZ2Uoe1xyXG5cdFx0XHRcdGtleTogJ3VzZXJEZXRhaWwnLFxyXG5cdFx0XHRcdHN1Y2Nlc3M6IHJlcyA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnZ2V0U3RvcmFnZScsIHJlcylcclxuXHRcdFx0XHRcdHRoaXMudXNlck1zZyA9IHJlcy5kYXRhXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdG1ldGhvZHM6IHtcclxuXHRcdFx0b25DbGlja0l0ZW0oZSkge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCfngrnlh7snLCBlKVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxyXG5cdC51c2VyRGV0YWlsIHtcclxuXHRcdC5hdmF0YXItYm94IHtcclxuXHRcdFx0cGFkZGluZzogMjBycHggMjBycHg7XHJcblx0XHRcdGJhY2tncm91bmQ6ICMxMUE4RkQ7XHJcblxyXG5cdFx0XHQuYXZhdGFyLXRvcCB7XHJcblx0XHRcdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdFx0XHRoZWlnaHQ6IDEyMHJweDtcclxuXHJcblx0XHRcdFx0LmF2YXRhci1sZWZ0LWJveCB7XHJcblx0XHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRcdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG5cdFx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcblx0XHRcdFx0XHRpbWFnZSB7XHJcblx0XHRcdFx0XHRcdHdpZHRoOiA4MHJweDtcclxuXHRcdFx0XHRcdFx0aGVpZ2h0OiA4MHJweDtcclxuXHRcdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogODBycHg7XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0dGV4dCB7XHJcblx0XHRcdFx0XHRcdGZvbnQtc2l6ZTogMTRweDtcclxuXHRcdFx0XHRcdFx0Y29sb3I6ICNmZmY7XHJcblx0XHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiAyMHJweDtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC5hdmF0YXItcmlnaHQtYm94IHtcclxuXHRcdFx0XHRcdGltYWdlIHtcclxuXHRcdFx0XHRcdFx0d2lkdGg6IDQwcnB4O1xyXG5cdFx0XHRcdFx0XHRoZWlnaHQ6IDQwcnB4O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LmF2YXRhci1ib3gtdGV4dCB7XHJcblx0XHRcdFx0Y29sb3I6ICNmZmY7XHJcblx0XHRcdFx0Zm9udC1zaXplOiAxMnB4O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQuYXZhdGFyLWJveC10YWcge1xyXG5cdFx0XHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRcdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG5cdFx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRcdFx0bWFyZ2luLXRvcDogMjRycHg7XHJcblxyXG5cdFx0XHRcdC5hdmF0YXItYm94LXRhZy1sZWZ0IHtcclxuXHRcdFx0XHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRcdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcblx0XHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cclxuXHRcdFx0XHRcdC50YWctbGVmdC1ib3gge1xyXG5cdFx0XHRcdFx0XHR3aWR0aDogMTIwcnB4O1xyXG5cclxuXHRcdFx0XHRcdFx0dGV4dCB7XHJcblx0XHRcdFx0XHRcdFx0ZGlzcGxheTogYmxvY2s7XHJcblx0XHRcdFx0XHRcdFx0Y29sb3I6ICNmZmY7XHJcblx0XHRcdFx0XHRcdFx0Zm9udC1zaXplOiAxMnB4O1xyXG5cdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHR0ZXh0Omxhc3QtY2hpbGQge1xyXG5cdFx0XHRcdFx0XHRcdG1hcmdpbi10b3A6IDhycHg7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQubWlkZGxlIHtcclxuXHRcdFx0LnNlZ21lbnRlZC1jb250cm9sIHtcclxuXHRcdFx0XHRib3JkZXItcmFkaXVzOiA4cnB4IDhycHggMCAwO1xyXG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTcsIDE2OCwgMjUzLCAwLjEpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0LmJvdHRvbSB7XHJcblx0XHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRcdGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuXHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdFx0ZmxleC13cmFwOiB3cmFwO1xyXG5cclxuXHRcdFx0aW1hZ2Uge1xyXG5cdFx0XHRcdG1hcmdpbi10b3A6IDQwcnB4O1xyXG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiA0MHJweDtcclxuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAxNnJweDtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuPC9zdHlsZT5cbiIsImltcG9ydCBtb2QgZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cXFxcZGlzdFxcXFxsb2FkZXIuanM/P3JlZi0tMTAtb25lT2YtMS0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGNzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tMTAtb25lT2YtMS0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFxzdHlsZVBvc3RMb2FkZXIuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEwLW9uZU9mLTEtMiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxwb3N0Y3NzLWxvYWRlclxcXFxzcmNcXFxcaW5kZXguanM/P3JlZi0tMTAtb25lT2YtMS0zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGxlc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTEwLW9uZU9mLTEtNCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTAtb25lT2YtMS01IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VzZXJEZXRhaWwudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1sZXNzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXFxcXGRpc3RcXFxcbG9hZGVyLmpzPz9yZWYtLTEwLW9uZU9mLTEtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxjc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTEwLW9uZU9mLTEtMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGxvYWRlcnNcXFxcc3R5bGVQb3N0TG9hZGVyLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMC1vbmVPZi0xLTIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxccG9zdGNzcy1sb2FkZXJcXFxcc3JjXFxcXGluZGV4LmpzPz9yZWYtLTEwLW9uZU9mLTEtMyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxsZXNzLWxvYWRlclxcXFxkaXN0XFxcXGNqcy5qcz8/cmVmLS0xMC1vbmVPZi0xLTQhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEwLW9uZU9mLTEtNSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91c2VyRGV0YWlsLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9bGVzcyZcIiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuICAgIGlmKG1vZHVsZS5ob3QpIHtcbiAgICAgIC8vIDE2NTI3MDI0MzEyNDZcbiAgICAgIHZhciBjc3NSZWxvYWQgPSByZXF1aXJlKFwiRDovSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9obXIvaG90TW9kdWxlUmVwbGFjZW1lbnQuanNcIikobW9kdWxlLmlkLCB7XCJobXJcIjp0cnVlLFwicHVibGljUGF0aFwiOlwiLi4vLi4vXCIsXCJsb2NhbHNcIjpmYWxzZX0pO1xuICAgICAgbW9kdWxlLmhvdC5kaXNwb3NlKGNzc1JlbG9hZCk7XG4gICAgICBtb2R1bGUuaG90LmFjY2VwdCh1bmRlZmluZWQsIGNzc1JlbG9hZCk7XG4gICAgfVxuICAiXSwic291cmNlUm9vdCI6IiJ9
\ No newline at end of file
+},[[81,"common/runtime","common/vendor"]]]);
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyIsbnVsbCwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL2NyZWF0b3IvdXNlckRldGFpbC52dWU/ZjAyZCIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy9jcmVhdG9yL3VzZXJEZXRhaWwudnVlPzQ4ZjAiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svcGFnZXMvY3JlYXRvci91c2VyRGV0YWlsLnZ1ZT81ZTE5IiwidW5pLWFwcDovLy9wYWdlcy9jcmVhdG9yL3VzZXJEZXRhaWwudnVlIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL2NyZWF0b3IvdXNlckRldGFpbC52dWU/YTdhZCIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy9jcmVhdG9yL3VzZXJEZXRhaWwudnVlP2M5MWEiXSwibmFtZXMiOlsid3giLCJfX3dlYnBhY2tfcmVxdWlyZV9VTklfTVBfUExVR0lOX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwiY3JlYXRlUGFnZSIsIlBhZ2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7c0RBQUE7QUFDQTtBQUNBLHdHLDZGQUZtQkEsRUFBRSxDQUFDQyxpQ0FBSCxHQUF1Q0MsbUJBQXZDO0FBR25CQyxVQUFVLENBQUNDLG1CQUFELENBQVYsQzs7Ozs7Ozs7Ozs7OztBQ0hBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF1SDtBQUN2SDtBQUM4RDtBQUNMO0FBQ2M7OztBQUd2RTtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSxnRkFBTTtBQUNSLEVBQUUscUZBQU07QUFDUixFQUFFLDhGQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHlGQUFVO0FBQ1o7QUFDQTs7QUFFQTtBQUNlLGdGOzs7Ozs7Ozs7Ozs7QUN2QmY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLDRXQUVOO0FBQ1A7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNqQ0E7QUFBQTtBQUFBO0FBQUE7QUFBb21CLENBQWdCLDhuQkFBRyxFQUFDLEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM4Q3huQiwrRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2VBR0EsRUFDQSxJQURBLGtCQUNBLENBQ0EsU0FDQSxXQURBLEVBRUEsVUFGQSxFQUdBLDZCQUhBLEVBSUEsV0FKQSxFQUlBO0FBQ0Esa0JBTEEsQ0FLQTtBQUxBLE1BT0EsQ0FUQSxFQVVBLE9BVkEscUJBVUEsa0JBQ0Esb0JBQ0EsZ0NBQ0EsaUJBQ0EsOENBQ0EsMERBQ0EsQ0FMQSxJQU9BLGlCQUNBLGlCQURBLEVBRUEsZ0NBQ0EsK0JBQ0EseUJBQ0EsQ0FMQSxJQU9BLENBekJBLEVBMEJBLFdBQ0EsV0FEQSx1QkFDQSxDQURBLEVBQ0EsQ0FDQSxxQkFDQSxDQUhBLEVBSUE7QUFDQSxnQkFMQSx3QkFLQSxJQUxBLEVBS0EsQ0FDQSx3QkFDQSxjQUNBLGlCQUNBLGVBREEsRUFFQSxhQUZBLEVBR0EsT0FIQSxxQkFHQSxDQUNBLG9CQUNBLGlCQUNBLGtCQURBLElBR0EsQ0FSQSxJQVVBLENBQ0EsQ0FuQkEsRUExQkEsRTs7Ozs7Ozs7Ozs7OztBQ2pEQTtBQUFBO0FBQUE7QUFBQTtBQUE0bUMsQ0FBZ0Isc2xDQUFHLEVBQUMsQzs7Ozs7Ozs7Ozs7QUNBaG9DO0FBQ0EsT0FBTyxLQUFVLEVBQUUsa0JBS2QiLCJmaWxlIjoicGFnZXMvY3JlYXRvci91c2VyRGV0YWlsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd1bmktcGFnZXMnO3d4Ll9fd2VicGFja19yZXF1aXJlX1VOSV9NUF9QTFVHSU5fXyA9IF9fd2VicGFja19yZXF1aXJlX187XG5pbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcbmltcG9ydCBQYWdlIGZyb20gJy4vcGFnZXMvY3JlYXRvci91c2VyRGV0YWlsLnZ1ZSdcbmNyZWF0ZVBhZ2UoUGFnZSkiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VzZXJEZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI2NTQ3YTc4JlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vdXNlckRldGFpbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL3VzZXJEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL3VzZXJEZXRhaWwudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1sZXNzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXHJ1bnRpbWVcXFxcY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhZ2VzL2NyZWF0b3IvdXNlckRldGFpbC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGxvYWRlcnNcXFxcdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTYtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFx0ZW1wbGF0ZS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stdW5pLWFwcC1sb2FkZXJcXFxccGFnZS1tZXRhLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VzZXJEZXRhaWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTI2NTQ3YTc4JlwiIiwidmFyIGNvbXBvbmVudHNcbnRyeSB7XG4gIGNvbXBvbmVudHMgPSB7XG4gICAgdW5pU2VnbWVudGVkQ29udHJvbDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gaW1wb3J0KFxuICAgICAgICAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInVuaV9tb2R1bGVzL3VuaS1zZWdtZW50ZWQtY29udHJvbC9jb21wb25lbnRzL3VuaS1zZWdtZW50ZWQtY29udHJvbC91bmktc2VnbWVudGVkLWNvbnRyb2xcIiAqLyBcIkAvdW5pX21vZHVsZXMvdW5pLXNlZ21lbnRlZC1jb250cm9sL2NvbXBvbmVudHMvdW5pLXNlZ21lbnRlZC1jb250cm9sL3VuaS1zZWdtZW50ZWQtY29udHJvbC52dWVcIlxuICAgICAgKVxuICAgIH1cbiAgfVxufSBjYXRjaCAoZSkge1xuICBpZiAoXG4gICAgZS5tZXNzYWdlLmluZGV4T2YoXCJDYW5ub3QgZmluZCBtb2R1bGVcIikgIT09IC0xICYmXG4gICAgZS5tZXNzYWdlLmluZGV4T2YoXCIudnVlXCIpICE9PSAtMVxuICApIHtcbiAgICBjb25zb2xlLmVycm9yKGUubWVzc2FnZSlcbiAgICBjb25zb2xlLmVycm9yKFwiMS4g5o6S5p+l57uE5Lu25ZCN56ew5ou85YaZ5piv5ZCm5q2j56GuXCIpXG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiMi4g5o6S5p+l57uE5Lu25piv5ZCm56ym5ZCIIGVhc3ljb20g6KeE6IyD77yM5paH5qGj77yaaHR0cHM6Ly91bmlhcHAuZGNsb3VkLm5ldC5jbi9jb2xsb2NhdGlvbi9wYWdlcz9pZD1lYXN5Y29tXCJcbiAgICApXG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiMy4g6Iul57uE5Lu25LiN56ym5ZCIIGVhc3ljb20g6KeE6IyD77yM6ZyA5omL5Yqo5byV5YWl77yM5bm25ZyoIGNvbXBvbmVudHMg5Lit5rOo5YaM6K+l57uE5Lu2XCJcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgZVxuICB9XG59XG52YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbn1cbnZhciByZWN5Y2xhYmxlUmVuZGVyID0gZmFsc2VcbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VzZXJEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VzZXJEZXRhaWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwidXNlckRldGFpbFwiPlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJhdmF0YXItYm94XCI+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiYXZhdGFyLXRvcFwiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYXZhdGFyLWxlZnQtYm94XCI+XHJcblx0XHRcdFx0XHQ8aW1hZ2UgOnNyYz1cInVzZXJNc2cuaW1nXCIgbW9kZT1cIlwiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHQ8dGV4dD57e3VzZXJNc2cudXNlcm5hbWV9fTwvdGV4dD5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJhdmF0YXItcmlnaHQtYm94XCI+XHJcblx0XHRcdFx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vc3RhdGljL2ltZy9zaGFyZS5zdmdcIiBtb2RlPVwiXCI+PC9pbWFnZT5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJhdmF0YXItYm94LXRleHRcIj5cclxuXHRcdFx0XHTkuKrmgKfnrb7lkI1cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImF2YXRhci1ib3gtdGFnXCI+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJhdmF0YXItYm94LXRhZy1sZWZ0XCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInRhZy1sZWZ0LWJveFwiPlxyXG5cdFx0XHRcdFx0XHQ8dGV4dD4xMTI8L3RleHQ+XHJcblx0XHRcdFx0XHRcdDx0ZXh0PuS9nOWTgTwvdGV4dD5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwidGFnLWxlZnQtYm94XCI+XHJcblx0XHRcdFx0XHRcdDx0ZXh0PjExMjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0PHRleHQ+5pS26JePPC90ZXh0PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0YWctbGVmdC1ib3hcIj5cclxuXHRcdFx0XHRcdFx0PHRleHQ+MTEyPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHQ8dGV4dD7llpzmrKI8L3RleHQ+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYXZhdGFyLWJveC10YWctcmlnaHRcIj5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwibWlkZGxlXCI+XHJcblx0XHRcdDx1bmktc2VnbWVudGVkLWNvbnRyb2wgOmN1cnJlbnQ9XCJjdXJyZW50XCIgOnZhbHVlcz1cImFyckxpc3RcIiBAY2xpY2tJdGVtPVwib25DbGlja0l0ZW1cIiBzdHlsZVR5cGU9XCJ0ZXh0XCJcclxuXHRcdFx0XHRhY3RpdmVDb2xvcj1cIiMxMUE4RkRcIj48L3VuaS1zZWdtZW50ZWQtY29udHJvbD5cclxuXHRcdDwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwiYm90dG9tXCI+XHJcblx0XHRcdDxpbWFnZSA6c3JjPVwiaXRlbS5pbWdVcmxcIiBtb2RlPVwiXCIgdi1mb3I9XCIoaXRlbSxpbmRleCkgaW4gdXNlck1zZy5pbWdMaXN0XCIgOmtleT1cImluZGV4XCJcclxuXHRcdFx0XHQ6c3R5bGU9XCInd2lkdGg6JytpbWdXaWR0aCsnO2hlaWdodDonK2ltZ0hlaWdodFwiIEBjbGljaz1cInRhcmdldERldGFpbChpdGVtKVwiPjwvaW1hZ2U+XHJcblx0XHQ8L3ZpZXc+XHJcblx0PC92aWV3PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuXHRpbXBvcnQge1xyXG5cdFx0dGlrdG9rVXNlckRldGFpbHNcclxuXHR9IGZyb20gJ0AvYXBpL2NyZWF0b3IuanMnXHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHR1c2VyTXNnOiB7fSxcclxuXHRcdFx0XHRjdXJyZW50OiAwLFxyXG5cdFx0XHRcdGFyckxpc3Q6IFsn6IOM5pmv5Zu+JywgJ+WktOWDjycsICfooajmg4XljIUnXSxcclxuXHRcdFx0XHRpbWdXaWR0aDogMCwgLy8g5Zu+54mH5a69XHJcblx0XHRcdFx0aW1nSGVpZ2h0OiAwLCAvLyDlm77niYfpq5hcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdGNyZWF0ZWQoKSB7XHJcblx0XHRcdHVuaS5nZXRTeXN0ZW1JbmZvKHtcclxuXHRcdFx0XHRzdWNjZXNzOiByZXMgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzKVxyXG5cdFx0XHRcdFx0dGhpcy5pbWdXaWR0aCA9IHJlcy53aW5kb3dXaWR0aCAtIDYwICsgJ3JweCdcclxuXHRcdFx0XHRcdHRoaXMuaW1nSGVpZ2h0ID0gKHJlcy53aW5kb3dXaWR0aCAtIDYwKSAqIDIgLSAzMCArICdycHgnXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0XHR1bmkuZ2V0U3RvcmFnZSh7XHJcblx0XHRcdFx0a2V5OiAndXNlckRldGFpbCcsXHJcblx0XHRcdFx0c3VjY2VzczogcmVzID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdnZXRTdG9yYWdlJywgcmVzKVxyXG5cdFx0XHRcdFx0dGhpcy51c2VyTXNnID0gcmVzLmRhdGFcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRvbkNsaWNrSXRlbShlKSB7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ+eCueWHuycsIGUpXHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOWJjeW+gOivpuaDhemhtVxyXG5cdFx0XHR0YXJnZXREZXRhaWwoaXRlbSkge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCfot7PovawnLCBpdGVtKVxyXG5cdFx0XHRcdGlmIChpdGVtLmlkKSB7XHJcblx0XHRcdFx0XHR1bmkuc2V0U3RvcmFnZSh7XHJcblx0XHRcdFx0XHRcdGtleTogJ2RldGFpbElkJyxcclxuXHRcdFx0XHRcdFx0ZGF0YTogaXRlbS5pZCxcclxuXHRcdFx0XHRcdFx0c3VjY2VzcygpIHtcclxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygxMTExMTEpXHJcblx0XHRcdFx0XHRcdFx0dW5pLnJlZGlyZWN0VG8oe1xyXG5cdFx0XHRcdFx0XHRcdFx0dXJsOiAnLi9pbWdEZXRhaWwnXHJcblx0XHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XHJcblx0LnVzZXJEZXRhaWwge1xyXG5cdFx0LmF2YXRhci1ib3gge1xyXG5cdFx0XHRwYWRkaW5nOiAyMHJweCAyMHJweDtcclxuXHRcdFx0YmFja2dyb3VuZDogIzExQThGRDtcclxuXHJcblx0XHRcdC5hdmF0YXItdG9wIHtcclxuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuXHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0XHRcdGhlaWdodDogMTIwcnB4O1xyXG5cclxuXHRcdFx0XHQuYXZhdGFyLWxlZnQtYm94IHtcclxuXHRcdFx0XHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRcdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcblx0XHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cclxuXHRcdFx0XHRcdGltYWdlIHtcclxuXHRcdFx0XHRcdFx0d2lkdGg6IDgwcnB4O1xyXG5cdFx0XHRcdFx0XHRoZWlnaHQ6IDgwcnB4O1xyXG5cdFx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiA4MHJweDtcclxuXHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHR0ZXh0IHtcclxuXHRcdFx0XHRcdFx0Zm9udC1zaXplOiAxNHB4O1xyXG5cdFx0XHRcdFx0XHRjb2xvcjogI2ZmZjtcclxuXHRcdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IDIwcnB4O1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0LmF2YXRhci1yaWdodC1ib3gge1xyXG5cdFx0XHRcdFx0aW1hZ2Uge1xyXG5cdFx0XHRcdFx0XHR3aWR0aDogNDBycHg7XHJcblx0XHRcdFx0XHRcdGhlaWdodDogNDBycHg7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQuYXZhdGFyLWJveC10ZXh0IHtcclxuXHRcdFx0XHRjb2xvcjogI2ZmZjtcclxuXHRcdFx0XHRmb250LXNpemU6IDEycHg7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC5hdmF0YXItYm94LXRhZyB7XHJcblx0XHRcdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdFx0XHRtYXJnaW4tdG9wOiAyNHJweDtcclxuXHJcblx0XHRcdFx0LmF2YXRhci1ib3gtdGFnLWxlZnQge1xyXG5cdFx0XHRcdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdFx0XHRcdGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuXHRcdFx0XHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG5cdFx0XHRcdFx0LnRhZy1sZWZ0LWJveCB7XHJcblx0XHRcdFx0XHRcdHdpZHRoOiAxMjBycHg7XHJcblxyXG5cdFx0XHRcdFx0XHR0ZXh0IHtcclxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5OiBibG9jaztcclxuXHRcdFx0XHRcdFx0XHRjb2xvcjogI2ZmZjtcclxuXHRcdFx0XHRcdFx0XHRmb250LXNpemU6IDEycHg7XHJcblx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdHRleHQ6bGFzdC1jaGlsZCB7XHJcblx0XHRcdFx0XHRcdFx0bWFyZ2luLXRvcDogOHJweDtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC5taWRkbGUge1xyXG5cdFx0XHQuc2VnbWVudGVkLWNvbnRyb2wge1xyXG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDhycHggOHJweCAwIDA7XHJcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNywgMTY4LCAyNTMsIDAuMSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQuYm90dG9tIHtcclxuXHRcdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdFx0anVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG5cdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0XHRmbGV4LXdyYXA6IHdyYXA7XHJcblxyXG5cdFx0XHRpbWFnZSB7XHJcblx0XHRcdFx0bWFyZ2luLXRvcDogNDBycHg7XHJcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IDQwcnB4O1xyXG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDE2cnB4O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG48L3N0eWxlPlxuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxcXFxkaXN0XFxcXGxvYWRlci5qcz8/cmVmLS0xMC1vbmVPZi0xLTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcY3NzLWxvYWRlclxcXFxkaXN0XFxcXGNqcy5qcz8/cmVmLS0xMC1vbmVPZi0xLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHN0eWxlUG9zdExvYWRlci5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTAtb25lT2YtMS0yIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXHBvc3Rjc3MtbG9hZGVyXFxcXHNyY1xcXFxpbmRleC5qcz8/cmVmLS0xMC1vbmVPZi0xLTMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcbGVzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tMTAtb25lT2YtMS00IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMC1vbmVPZi0xLTUhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vdXNlckRldGFpbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWxlc3MmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cXFxcZGlzdFxcXFxsb2FkZXIuanM/P3JlZi0tMTAtb25lT2YtMS0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGNzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tMTAtb25lT2YtMS0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFxzdHlsZVBvc3RMb2FkZXIuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEwLW9uZU9mLTEtMiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxwb3N0Y3NzLWxvYWRlclxcXFxzcmNcXFxcaW5kZXguanM/P3JlZi0tMTAtb25lT2YtMS0zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGxlc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTEwLW9uZU9mLTEtNCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTAtb25lT2YtMS01IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VzZXJEZXRhaWwudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1sZXNzJlwiIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG4gICAgaWYobW9kdWxlLmhvdCkge1xuICAgICAgLy8gMTY1MzMxNDczNDAxMFxuICAgICAgdmFyIGNzc1JlbG9hZCA9IHJlcXVpcmUoXCJEOi9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9taW5pLWNzcy1leHRyYWN0LXBsdWdpbi9kaXN0L2htci9ob3RNb2R1bGVSZXBsYWNlbWVudC5qc1wiKShtb2R1bGUuaWQsIHtcImhtclwiOnRydWUsXCJwdWJsaWNQYXRoXCI6XCIuLi8uLi9cIixcImxvY2Fsc1wiOmZhbHNlfSk7XG4gICAgICBtb2R1bGUuaG90LmRpc3Bvc2UoY3NzUmVsb2FkKTtcbiAgICAgIG1vZHVsZS5ob3QuYWNjZXB0KHVuZGVmaW5lZCwgY3NzUmVsb2FkKTtcbiAgICB9XG4gICJdLCJzb3VyY2VSb290IjoiIn0=
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-toutiao/pages/creator/userDetail.ttml b/unpackage/dist/dev/mp-toutiao/pages/creator/userDetail.ttml
index 7e140b1..b14b741 100644
--- a/unpackage/dist/dev/mp-toutiao/pages/creator/userDetail.ttml
+++ b/unpackage/dist/dev/mp-toutiao/pages/creator/userDetail.ttml
@@ -1 +1 @@
-{{userMsg.username}}个性签名112作品112收藏112喜欢
\ No newline at end of file
+{{userMsg.username}}个性签名112作品112收藏112喜欢
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-toutiao/pages/index/choiceness.js b/unpackage/dist/dev/mp-toutiao/pages/index/choiceness.js
index 0beadb1..705ff1b 100644
--- a/unpackage/dist/dev/mp-toutiao/pages/index/choiceness.js
+++ b/unpackage/dist/dev/mp-toutiao/pages/index/choiceness.js
@@ -96,7 +96,7 @@ var components
try {
components = {
uniSearchBar: function() {
- return Promise.all(/*! import() | uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue */ 112))
+ return Promise.all(/*! import() | uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue */ 120))
}
}
} catch (e) {
@@ -173,6 +173,7 @@ __webpack_require__.r(__webpack_exports__);
+
var _index = __webpack_require__(/*! @/api/index.js */ 23);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {try {var info = gen[key](arg);var value = info.value;} catch (error) {reject(error);return;}if (info.done) {resolve(value);} else {Promise.resolve(value).then(_next, _throw);}}function _asyncToGenerator(fn) {return function () {var self = this,args = arguments;return new Promise(function (resolve, reject) {var gen = fn.apply(self, args);function _next(value) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);}function _throw(err) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);}_next(undefined);});};}var _default =
@@ -214,6 +215,22 @@ var _index = __webpack_require__(/*! @/api/index.js */ 23);function _interopRequ
icon: 'error' });
}case 4:case "end":return _context.stop();}}}, _callee);}))();
+ },
+ // 前往详情页
+ targetDetail: function targetDetail(item) {
+ console.log('跳转', item);
+ if (item.id) {
+ uni.setStorage({
+ key: 'detailId',
+ data: item.id,
+ success: function success() {
+ console.log(111111);
+ uni.redirectTo({
+ url: '../creator/imgDetail' });
+
+ } });
+
+ }
} }
// onUnload() {
@@ -256,4 +273,4 @@ __webpack_require__.r(__webpack_exports__);
/***/ })
},[[64,"common/runtime","common/vendor"]]]);
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyIsbnVsbCwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL2luZGV4L2Nob2ljZW5lc3MudnVlP2VkZWUiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svcGFnZXMvaW5kZXgvY2hvaWNlbmVzcy52dWU/NDI5MyIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy9pbmRleC9jaG9pY2VuZXNzLnZ1ZT9jNGUzIiwidW5pLWFwcDovLy9wYWdlcy9pbmRleC9jaG9pY2VuZXNzLnZ1ZSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy9pbmRleC9jaG9pY2VuZXNzLnZ1ZT85NTBjIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL2luZGV4L2Nob2ljZW5lc3MudnVlP2ZiMDMiXSwibmFtZXMiOlsid3giLCJfX3dlYnBhY2tfcmVxdWlyZV9VTklfTVBfUExVR0lOX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwiY3JlYXRlUGFnZSIsIlBhZ2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7c0RBQUE7QUFDQTtBQUNBLHNHLDZGQUZtQkEsRUFBRSxDQUFDQyxpQ0FBSCxHQUF1Q0MsbUJBQXZDO0FBR25CQyxVQUFVLENBQUNDLG1CQUFELENBQVYsQzs7Ozs7Ozs7Ozs7OztBQ0hBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF1SDtBQUN2SDtBQUM4RDtBQUNMO0FBQ2M7OztBQUd2RTtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSxnRkFBTTtBQUNSLEVBQUUscUZBQU07QUFDUixFQUFFLDhGQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHlGQUFVO0FBQ1o7QUFDQTs7QUFFQTtBQUNlLGdGOzs7Ozs7Ozs7Ozs7QUN2QmY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1XQUVOO0FBQ1A7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNqQ0E7QUFBQTtBQUFBO0FBQUE7QUFBb21CLENBQWdCLDhuQkFBRyxFQUFDLEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3FCeG5CLDJEOzs7QUFHQTtBQUNBLE1BREEsa0JBQ0E7QUFDQTtBQUNBLGtCQURBLEVBQ0E7QUFDQSxrQkFGQSxFQUVBO0FBQ0EsaUJBSEEsRUFHQTtBQUNBLGtCQUpBLENBSUE7QUFKQTtBQU1BLEdBUkE7QUFTQSxTQVRBLHFCQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FOQTs7QUFRQSxHQWxCQTtBQW1CQTtBQUNBO0FBQ0EsY0FGQSx3QkFFQTtBQUNBLHdDQURBLFNBQ0EsR0FEQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBRkEsTUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQVJBLE1BUUE7QUFDQTtBQUNBLHVDQURBO0FBRUEsaUNBRkE7O0FBSUEsaUJBZkE7QUFnQkEsS0FsQkE7O0FBb0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEzQ0EsQzs7Ozs7Ozs7Ozs7OztBQ3hCQTtBQUFBO0FBQUE7QUFBQTtBQUE0bUMsQ0FBZ0Isc2xDQUFHLEVBQUMsQzs7Ozs7Ozs7Ozs7QUNBaG9DO0FBQ0EsT0FBTyxLQUFVLEVBQUUsa0JBS2QiLCJmaWxlIjoicGFnZXMvaW5kZXgvY2hvaWNlbmVzcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAndW5pLXBhZ2VzJzt3eC5fX3dlYnBhY2tfcmVxdWlyZV9VTklfTVBfUExVR0lOX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fO1xuaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgUGFnZSBmcm9tICcuL3BhZ2VzL2luZGV4L2Nob2ljZW5lc3MudnVlJ1xuY3JlYXRlUGFnZShQYWdlKSIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vY2hvaWNlbmVzcy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWY5YTBhY2UmXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9jaG9pY2VuZXNzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vY2hvaWNlbmVzcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vY2hvaWNlbmVzcy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWxlc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxccnVudGltZVxcXFxjb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFnZXMvaW5kZXgvY2hvaWNlbmVzcy52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGxvYWRlcnNcXFxcdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTYtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFx0ZW1wbGF0ZS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stdW5pLWFwcC1sb2FkZXJcXFxccGFnZS1tZXRhLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL2Nob2ljZW5lc3MudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVmOWEwYWNlJlwiIiwidmFyIGNvbXBvbmVudHNcbnRyeSB7XG4gIGNvbXBvbmVudHMgPSB7XG4gICAgdW5pU2VhcmNoQmFyOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBpbXBvcnQoXG4gICAgICAgIC8qIHdlYnBhY2tDaHVua05hbWU6IFwidW5pX21vZHVsZXMvdW5pLXNlYXJjaC1iYXIvY29tcG9uZW50cy91bmktc2VhcmNoLWJhci91bmktc2VhcmNoLWJhclwiICovIFwiQC91bmlfbW9kdWxlcy91bmktc2VhcmNoLWJhci9jb21wb25lbnRzL3VuaS1zZWFyY2gtYmFyL3VuaS1zZWFyY2gtYmFyLnZ1ZVwiXG4gICAgICApXG4gICAgfVxuICB9XG59IGNhdGNoIChlKSB7XG4gIGlmIChcbiAgICBlLm1lc3NhZ2UuaW5kZXhPZihcIkNhbm5vdCBmaW5kIG1vZHVsZVwiKSAhPT0gLTEgJiZcbiAgICBlLm1lc3NhZ2UuaW5kZXhPZihcIi52dWVcIikgIT09IC0xXG4gICkge1xuICAgIGNvbnNvbGUuZXJyb3IoZS5tZXNzYWdlKVxuICAgIGNvbnNvbGUuZXJyb3IoXCIxLiDmjpLmn6Xnu4Tku7blkI3np7Dmi7zlhpnmmK/lkKbmraPnoa5cIilcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCIyLiDmjpLmn6Xnu4Tku7bmmK/lkKbnrKblkIggZWFzeWNvbSDop4TojIPvvIzmlofmoaPvvJpodHRwczovL3VuaWFwcC5kY2xvdWQubmV0LmNuL2NvbGxvY2F0aW9uL3BhZ2VzP2lkPWVhc3ljb21cIlxuICAgIClcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCIzLiDoi6Xnu4Tku7bkuI3nrKblkIggZWFzeWNvbSDop4TojIPvvIzpnIDmiYvliqjlvJXlhaXvvIzlubblnKggY29tcG9uZW50cyDkuK3ms6jlhozor6Xnu4Tku7ZcIlxuICAgIClcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBlXG4gIH1cbn1cbnZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxufVxudmFyIHJlY3ljbGFibGVSZW5kZXIgPSBmYWxzZVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSIsImltcG9ydCBtb2QgZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcYmFiZWwtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTItMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzY3JpcHQuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vY2hvaWNlbmVzcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcYmFiZWwtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTItMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzY3JpcHQuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vY2hvaWNlbmVzcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCI8dGVtcGxhdGU+XHJcblx0PHZpZXcgY2xhc3M9XCJjaG9pY2VuZXNzXCI+XHJcblx0XHQ8dW5pLXNlYXJjaC1iYXIgY2xhc3M9XCJ1bmktbXQtMTBcIiBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpeWWnOasoueahOiJuuacr+WutuS7o+WPt+WQp35cIiBjbGVhckJ1dHRvbj1cImF1dG9cIiBjYW5jZWxCdXR0b249XCJub25lXCJcclxuXHRcdFx0QGNvbmZpcm09XCJzZWFyY2hcIiAvPlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJjaG9pY2VuZXNzLWxpc3RcIj5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJpbWdMaXN0MVwiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmlyc3QtYm94XCIgOnN0eWxlPVwiJ3dpZHRoOicraW1nV2lkdGhcIj5cclxuXHRcdFx0XHRcdOeDremXqOS9nOWTgVxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8aW1hZ2Ugdi1mb3I9XCIoaXRlbSxpbmRleCkgaW4gaW1nTGlzdDFcIiA6a2V5PSdpbmRleCcgY2xhc3M9XCJpbWctYm94XCIgOnN0eWxlPVwiJ3dpZHRoOicraW1nV2lkdGgrJztoZWlnaHQ6JytpbWdIZWlnaHRcIlxyXG5cdFx0XHRcdFx0OnNyYz1cIml0ZW0uaW1nVXJsXCIgbW9kZT1cIlwiPjwvaW1hZ2U+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJpbWdMaXN0MlwiPlxyXG5cdFx0XHRcdDxpbWFnZSB2LWZvcj1cIihpdGVtLGluZGV4KSBpbiBpbWdMaXN0MlwiIDprZXk9J2luZGV4JyBjbGFzcz1cImltZy1ib3hcIiA6c3R5bGU9XCInd2lkdGg6JytpbWdXaWR0aCsnO2hlaWdodDonK2ltZ0hlaWdodFwiXHJcblx0XHRcdFx0XHQ6c3JjPVwiaXRlbS5pbWdVcmxcIiBtb2RlPVwiXCI+PC9pbWFnZT5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0aW1wb3J0IHtcclxuXHRcdGltZ0xpc3RzXHJcblx0fSBmcm9tICdAL2FwaS9pbmRleC5qcydcclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdGltZ0xpc3QxOiBbXSwgLy/lm77niYfliJfooahcclxuXHRcdFx0XHRpbWdMaXN0MjogW10sIC8v5Zu+54mH5YiX6KGoXHJcblx0XHRcdFx0aW1nV2lkdGg6IDAsIC8vIOWbvueJh+WuvVxyXG5cdFx0XHRcdGltZ0hlaWdodDogMCwgLy8g5Zu+54mH6auYXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRjcmVhdGVkKCkge1xyXG5cdFx0XHR1bmkuZ2V0U3lzdGVtSW5mbyh7XHJcblx0XHRcdFx0c3VjY2VzczogcmVzID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcylcclxuXHRcdFx0XHRcdHRoaXMuaW1nV2lkdGggPSByZXMud2luZG93V2lkdGggLSA2MCArICdycHgnXHJcblx0XHRcdFx0XHR0aGlzLmltZ0hlaWdodCA9IChyZXMud2luZG93V2lkdGggLSA2MCkgKiAyIC0gMzAgKydycHgnXHJcblx0XHRcdFx0XHR0aGlzLmdldEltZ0xpc3QoKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdC8vIOWbvueJh+WIl+ihqOWIhuexu+WunueOsOeAkeW4g+a1gVxyXG5cdFx0XHRhc3luYyBnZXRJbWdMaXN0KCkge1xyXG5cdFx0XHRcdGNvbnN0IHJlcyA9IGF3YWl0IGltZ0xpc3RzKClcclxuXHRcdFx0XHRpZiAocmVzLmRhdGEuY29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHJlcy5kYXRhLnJvd3MubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdFx0aWYgKGkgJSAyID09IDApIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmltZ0xpc3QyLnB1c2gocmVzLmRhdGEucm93c1tpXSlcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmltZ0xpc3QxLnB1c2gocmVzLmRhdGEucm93c1tpXSlcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcclxuXHRcdFx0XHRcdFx0dGl0bGU6IHJlcy5kYXRhLm1zZyxcclxuXHRcdFx0XHRcdFx0aWNvbjogJ2Vycm9yJ1xyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHQvLyBvblVubG9hZCgpIHtcclxuXHRcdC8vIFx0dW5pLnN3aXRjaFRhYih7XHJcblx0XHQvLyBcdFx0dXJsOiAnL3BhZ2VzL2luZGV4L2luZGV4J1xyXG5cdFx0Ly8gXHR9KVxyXG5cdFx0Ly8gfSxcclxuXHR9XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XHJcblx0LmNob2ljZW5lc3Mge1xyXG5cdFx0cGFkZGluZy1yaWdodDogNDBycHg7XHJcblx0XHRwYWRkaW5nLXRvcDogNDBycHg7XHJcblx0XHQudW5pLXNlYXJjaGJhciB7XHJcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICMxMUE4RkQ7XHJcblx0XHRcdGJvcmRlci1yYWRpdXM6IDE2cnB4O1xyXG5cdFx0XHRwYWRkaW5nOiAwO1xyXG5cclxuXHRcdFx0LnVuaS1zZWFyY2hiYXJfX2JveCB7XHJcblx0XHRcdFx0cGFkZGluZzogMDtcclxuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAxNnJweCAhaW1wb3J0YW50O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0LmNob2ljZW5lc3MtbGlzdCB7XHJcblx0XHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRcdC5maXJzdC1ib3gge1xyXG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDE2cnB4O1xyXG5cdFx0XHRcdGZvbnQtc2l6ZTogMTZweDtcclxuXHRcdFx0XHRtYXJnaW4tdG9wOiA0MHJweDtcclxuXHRcdFx0XHRtYXJnaW4tbGVmdDogNDBycHg7XHJcblx0XHRcdFx0Y29sb3I6ICNmZmY7XHJcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDYwcnB4O1xyXG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdFx0XHRoZWlnaHQ6IDYwcnB4O1xyXG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICMxMUE4RkQ7XHJcblx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdFx0XHRcdHZlcnRpY2FsLWFsaWduOiB0b3A7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGltYWdlIHtcclxuXHRcdFx0XHRtYXJnaW4tdG9wOiA0MHJweDtcclxuXHRcdFx0XHRtYXJnaW4tbGVmdDogNDBycHg7XHJcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMTZycHg7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbjwvc3R5bGU+XG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXFxcXGRpc3RcXFxcbG9hZGVyLmpzPz9yZWYtLTEwLW9uZU9mLTEtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxjc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTEwLW9uZU9mLTEtMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGxvYWRlcnNcXFxcc3R5bGVQb3N0TG9hZGVyLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMC1vbmVPZi0xLTIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxccG9zdGNzcy1sb2FkZXJcXFxcc3JjXFxcXGluZGV4LmpzPz9yZWYtLTEwLW9uZU9mLTEtMyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxsZXNzLWxvYWRlclxcXFxkaXN0XFxcXGNqcy5qcz8/cmVmLS0xMC1vbmVPZi0xLTQhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEwLW9uZU9mLTEtNSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9jaG9pY2VuZXNzLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9bGVzcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxcXFxkaXN0XFxcXGxvYWRlci5qcz8/cmVmLS0xMC1vbmVPZi0xLTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcY3NzLWxvYWRlclxcXFxkaXN0XFxcXGNqcy5qcz8/cmVmLS0xMC1vbmVPZi0xLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHN0eWxlUG9zdExvYWRlci5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTAtb25lT2YtMS0yIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXHBvc3Rjc3MtbG9hZGVyXFxcXHNyY1xcXFxpbmRleC5qcz8/cmVmLS0xMC1vbmVPZi0xLTMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcbGVzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tMTAtb25lT2YtMS00IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMC1vbmVPZi0xLTUhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vY2hvaWNlbmVzcy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWxlc3MmXCIiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbiAgICBpZihtb2R1bGUuaG90KSB7XG4gICAgICAvLyAxNjUyNzAyMzMyNDYwXG4gICAgICB2YXIgY3NzUmVsb2FkID0gcmVxdWlyZShcIkQ6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luL2Rpc3QvaG1yL2hvdE1vZHVsZVJlcGxhY2VtZW50LmpzXCIpKG1vZHVsZS5pZCwge1wiaG1yXCI6dHJ1ZSxcInB1YmxpY1BhdGhcIjpcIi4uLy4uL1wiLFwibG9jYWxzXCI6ZmFsc2V9KTtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShjc3NSZWxvYWQpO1xuICAgICAgbW9kdWxlLmhvdC5hY2NlcHQodW5kZWZpbmVkLCBjc3NSZWxvYWQpO1xuICAgIH1cbiAgIl0sInNvdXJjZVJvb3QiOiIifQ==
\ No newline at end of file
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyIsbnVsbCwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL2luZGV4L2Nob2ljZW5lc3MudnVlP2VkZWUiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svcGFnZXMvaW5kZXgvY2hvaWNlbmVzcy52dWU/NDI5MyIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy9pbmRleC9jaG9pY2VuZXNzLnZ1ZT9jNGUzIiwidW5pLWFwcDovLy9wYWdlcy9pbmRleC9jaG9pY2VuZXNzLnZ1ZSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy9pbmRleC9jaG9pY2VuZXNzLnZ1ZT85NTBjIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL2luZGV4L2Nob2ljZW5lc3MudnVlP2ZiMDMiXSwibmFtZXMiOlsid3giLCJfX3dlYnBhY2tfcmVxdWlyZV9VTklfTVBfUExVR0lOX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwiY3JlYXRlUGFnZSIsIlBhZ2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7c0RBQUE7QUFDQTtBQUNBLHNHLDZGQUZtQkEsRUFBRSxDQUFDQyxpQ0FBSCxHQUF1Q0MsbUJBQXZDO0FBR25CQyxVQUFVLENBQUNDLG1CQUFELENBQVYsQzs7Ozs7Ozs7Ozs7OztBQ0hBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF1SDtBQUN2SDtBQUM4RDtBQUNMO0FBQ2M7OztBQUd2RTtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSxnRkFBTTtBQUNSLEVBQUUscUZBQU07QUFDUixFQUFFLDhGQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHlGQUFVO0FBQ1o7QUFDQTs7QUFFQTtBQUNlLGdGOzs7Ozs7Ozs7Ozs7QUN2QmY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1XQUVOO0FBQ1A7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNqQ0E7QUFBQTtBQUFBO0FBQUE7QUFBb21CLENBQWdCLDhuQkFBRyxFQUFDLEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNzQnhuQiwyRDs7O0FBR0E7QUFDQSxNQURBLGtCQUNBO0FBQ0E7QUFDQSxrQkFEQSxFQUNBO0FBQ0Esa0JBRkEsRUFFQTtBQUNBLGlCQUhBLEVBR0E7QUFDQSxrQkFKQSxDQUlBO0FBSkE7QUFNQSxHQVJBO0FBU0EsU0FUQSxxQkFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTkE7O0FBUUEsR0FsQkE7QUFtQkE7QUFDQTtBQUNBLGNBRkEsd0JBRUE7QUFDQSx3Q0FEQSxTQUNBLEdBREE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUZBLE1BRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFSQSxNQVFBO0FBQ0E7QUFDQSx1Q0FEQTtBQUVBLGlDQUZBOztBQUlBLGlCQWZBO0FBZ0JBLEtBbEJBO0FBbUJBO0FBQ0EsZ0JBcEJBLHdCQW9CQSxJQXBCQSxFQW9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQURBO0FBRUEsdUJBRkE7QUFHQSxpQkFIQSxxQkFHQTtBQUNBO0FBQ0E7QUFDQSx5Q0FEQTs7QUFHQSxXQVJBOztBQVVBO0FBQ0EsS0FsQ0E7O0FBb0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUEzREEsQzs7Ozs7Ozs7Ozs7OztBQ3pCQTtBQUFBO0FBQUE7QUFBQTtBQUE0bUMsQ0FBZ0Isc2xDQUFHLEVBQUMsQzs7Ozs7Ozs7Ozs7QUNBaG9DO0FBQ0EsT0FBTyxLQUFVLEVBQUUsa0JBS2QiLCJmaWxlIjoicGFnZXMvaW5kZXgvY2hvaWNlbmVzcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAndW5pLXBhZ2VzJzt3eC5fX3dlYnBhY2tfcmVxdWlyZV9VTklfTVBfUExVR0lOX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fO1xuaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgUGFnZSBmcm9tICcuL3BhZ2VzL2luZGV4L2Nob2ljZW5lc3MudnVlJ1xuY3JlYXRlUGFnZShQYWdlKSIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vY2hvaWNlbmVzcy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NWY5YTBhY2UmXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9jaG9pY2VuZXNzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vY2hvaWNlbmVzcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vY2hvaWNlbmVzcy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWxlc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxccnVudGltZVxcXFxjb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFnZXMvaW5kZXgvY2hvaWNlbmVzcy52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGxvYWRlcnNcXFxcdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTYtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFx0ZW1wbGF0ZS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stdW5pLWFwcC1sb2FkZXJcXFxccGFnZS1tZXRhLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL2Nob2ljZW5lc3MudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTVmOWEwYWNlJlwiIiwidmFyIGNvbXBvbmVudHNcbnRyeSB7XG4gIGNvbXBvbmVudHMgPSB7XG4gICAgdW5pU2VhcmNoQmFyOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBpbXBvcnQoXG4gICAgICAgIC8qIHdlYnBhY2tDaHVua05hbWU6IFwidW5pX21vZHVsZXMvdW5pLXNlYXJjaC1iYXIvY29tcG9uZW50cy91bmktc2VhcmNoLWJhci91bmktc2VhcmNoLWJhclwiICovIFwiQC91bmlfbW9kdWxlcy91bmktc2VhcmNoLWJhci9jb21wb25lbnRzL3VuaS1zZWFyY2gtYmFyL3VuaS1zZWFyY2gtYmFyLnZ1ZVwiXG4gICAgICApXG4gICAgfVxuICB9XG59IGNhdGNoIChlKSB7XG4gIGlmIChcbiAgICBlLm1lc3NhZ2UuaW5kZXhPZihcIkNhbm5vdCBmaW5kIG1vZHVsZVwiKSAhPT0gLTEgJiZcbiAgICBlLm1lc3NhZ2UuaW5kZXhPZihcIi52dWVcIikgIT09IC0xXG4gICkge1xuICAgIGNvbnNvbGUuZXJyb3IoZS5tZXNzYWdlKVxuICAgIGNvbnNvbGUuZXJyb3IoXCIxLiDmjpLmn6Xnu4Tku7blkI3np7Dmi7zlhpnmmK/lkKbmraPnoa5cIilcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCIyLiDmjpLmn6Xnu4Tku7bmmK/lkKbnrKblkIggZWFzeWNvbSDop4TojIPvvIzmlofmoaPvvJpodHRwczovL3VuaWFwcC5kY2xvdWQubmV0LmNuL2NvbGxvY2F0aW9uL3BhZ2VzP2lkPWVhc3ljb21cIlxuICAgIClcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCIzLiDoi6Xnu4Tku7bkuI3nrKblkIggZWFzeWNvbSDop4TojIPvvIzpnIDmiYvliqjlvJXlhaXvvIzlubblnKggY29tcG9uZW50cyDkuK3ms6jlhozor6Xnu4Tku7ZcIlxuICAgIClcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBlXG4gIH1cbn1cbnZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxufVxudmFyIHJlY3ljbGFibGVSZW5kZXIgPSBmYWxzZVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSIsImltcG9ydCBtb2QgZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcYmFiZWwtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTItMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzY3JpcHQuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vY2hvaWNlbmVzcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcYmFiZWwtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTItMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzY3JpcHQuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vY2hvaWNlbmVzcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCI8dGVtcGxhdGU+XHJcblx0PHZpZXcgY2xhc3M9XCJjaG9pY2VuZXNzXCI+XHJcblx0XHQ8dW5pLXNlYXJjaC1iYXIgY2xhc3M9XCJ1bmktbXQtMTBcIiBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpeWWnOasoueahOiJuuacr+WutuS7o+WPt+WQp35cIiBjbGVhckJ1dHRvbj1cImF1dG9cIiBjYW5jZWxCdXR0b249XCJub25lXCJcclxuXHRcdFx0QGNvbmZpcm09XCJzZWFyY2hcIiAvPlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJjaG9pY2VuZXNzLWxpc3RcIj5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJpbWdMaXN0MVwiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiZmlyc3QtYm94XCIgOnN0eWxlPVwiJ3dpZHRoOicraW1nV2lkdGhcIj5cclxuXHRcdFx0XHRcdOeDremXqOS9nOWTgVxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8aW1hZ2Ugdi1mb3I9XCIoaXRlbSxpbmRleCkgaW4gaW1nTGlzdDFcIiA6a2V5PSdpbmRleCcgY2xhc3M9XCJpbWctYm94XCJcclxuXHRcdFx0XHRcdDpzdHlsZT1cIid3aWR0aDonK2ltZ1dpZHRoKyc7aGVpZ2h0OicraW1nSGVpZ2h0XCIgOnNyYz1cIml0ZW0uaW1nVXJsXCIgQGNsaWNrPVwidGFyZ2V0RGV0YWlsKGl0ZW0pXCJcclxuXHRcdFx0XHRcdG1vZGU9XCJcIj48L2ltYWdlPlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiaW1nTGlzdDJcIj5cclxuXHRcdFx0XHQ8aW1hZ2Ugdi1mb3I9XCIoaXRlbSxpbmRleCkgaW4gaW1nTGlzdDJcIiA6a2V5PSdpbmRleCcgY2xhc3M9XCJpbWctYm94XCJcclxuXHRcdFx0XHRcdDpzdHlsZT1cIid3aWR0aDonK2ltZ1dpZHRoKyc7aGVpZ2h0OicraW1nSGVpZ2h0XCIgOnNyYz1cIml0ZW0uaW1nVXJsXCIgbW9kZT1cIlwiPjwvaW1hZ2U+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdmlldz5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGltcG9ydCB7XHJcblx0XHRpbWdMaXN0c1xyXG5cdH0gZnJvbSAnQC9hcGkvaW5kZXguanMnXHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRpbWdMaXN0MTogW10sIC8v5Zu+54mH5YiX6KGoXHJcblx0XHRcdFx0aW1nTGlzdDI6IFtdLCAvL+WbvueJh+WIl+ihqFxyXG5cdFx0XHRcdGltZ1dpZHRoOiAwLCAvLyDlm77niYflrr1cclxuXHRcdFx0XHRpbWdIZWlnaHQ6IDAsIC8vIOWbvueJh+mrmFxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0Y3JlYXRlZCgpIHtcclxuXHRcdFx0dW5pLmdldFN5c3RlbUluZm8oe1xyXG5cdFx0XHRcdHN1Y2Nlc3M6IHJlcyA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMpXHJcblx0XHRcdFx0XHR0aGlzLmltZ1dpZHRoID0gcmVzLndpbmRvd1dpZHRoIC0gNjAgKyAncnB4J1xyXG5cdFx0XHRcdFx0dGhpcy5pbWdIZWlnaHQgPSAocmVzLndpbmRvd1dpZHRoIC0gNjApICogMiAtIDMwICsgJ3JweCdcclxuXHRcdFx0XHRcdHRoaXMuZ2V0SW1nTGlzdCgpXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdG1ldGhvZHM6IHtcclxuXHRcdFx0Ly8g5Zu+54mH5YiX6KGo5YiG57G75a6e546w54CR5biD5rWBXHJcblx0XHRcdGFzeW5jIGdldEltZ0xpc3QoKSB7XHJcblx0XHRcdFx0Y29uc3QgcmVzID0gYXdhaXQgaW1nTGlzdHMoKVxyXG5cdFx0XHRcdGlmIChyZXMuZGF0YS5jb2RlID09PSAyMDApIHtcclxuXHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcmVzLmRhdGEucm93cy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0XHRpZiAoaSAlIDIgPT0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuaW1nTGlzdDIucHVzaChyZXMuZGF0YS5yb3dzW2ldKVxyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuaW1nTGlzdDEucHVzaChyZXMuZGF0YS5yb3dzW2ldKVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHR0aXRsZTogcmVzLmRhdGEubXNnLFxyXG5cdFx0XHRcdFx0XHRpY29uOiAnZXJyb3InXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5YmN5b6A6K+m5oOF6aG1XHJcblx0XHRcdHRhcmdldERldGFpbChpdGVtKSB7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ+i3s+i9rCcsIGl0ZW0pXHJcblx0XHRcdFx0aWYgKGl0ZW0uaWQpIHtcclxuXHRcdFx0XHRcdHVuaS5zZXRTdG9yYWdlKHtcclxuXHRcdFx0XHRcdFx0a2V5OiAnZGV0YWlsSWQnLFxyXG5cdFx0XHRcdFx0XHRkYXRhOiBpdGVtLmlkLFxyXG5cdFx0XHRcdFx0XHRzdWNjZXNzKCkge1xyXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKDExMTExMSlcclxuXHRcdFx0XHRcdFx0XHR1bmkucmVkaXJlY3RUbyh7XHJcblx0XHRcdFx0XHRcdFx0XHR1cmw6ICcuLi9jcmVhdG9yL2ltZ0RldGFpbCdcclxuXHRcdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdC8vIG9uVW5sb2FkKCkge1xyXG5cdFx0Ly8gXHR1bmkuc3dpdGNoVGFiKHtcclxuXHRcdC8vIFx0XHR1cmw6ICcvcGFnZXMvaW5kZXgvaW5kZXgnXHJcblx0XHQvLyBcdH0pXHJcblx0XHQvLyB9LFxyXG5cdH1cclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cclxuXHQuY2hvaWNlbmVzcyB7XHJcblx0XHRwYWRkaW5nLXJpZ2h0OiA0MHJweDtcclxuXHRcdHBhZGRpbmctdG9wOiA0MHJweDtcclxuXHJcblx0XHQudW5pLXNlYXJjaGJhciB7XHJcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICMxMUE4RkQ7XHJcblx0XHRcdGJvcmRlci1yYWRpdXM6IDE2cnB4O1xyXG5cdFx0XHRwYWRkaW5nOiAwO1xyXG5cclxuXHRcdFx0LnVuaS1zZWFyY2hiYXJfX2JveCB7XHJcblx0XHRcdFx0cGFkZGluZzogMDtcclxuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAxNnJweCAhaW1wb3J0YW50O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0LmNob2ljZW5lc3MtbGlzdCB7XHJcblx0XHRcdGRpc3BsYXk6IGZsZXg7XHJcblxyXG5cdFx0XHQuZmlyc3QtYm94IHtcclxuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAxNnJweDtcclxuXHRcdFx0XHRmb250LXNpemU6IDE2cHg7XHJcblx0XHRcdFx0bWFyZ2luLXRvcDogNDBycHg7XHJcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IDQwcnB4O1xyXG5cdFx0XHRcdGNvbG9yOiAjZmZmO1xyXG5cdFx0XHRcdGxpbmUtaGVpZ2h0OiA2MHJweDtcclxuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRcdFx0aGVpZ2h0OiA2MHJweDtcclxuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMTFBOEZEO1xyXG5cdFx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHRcdFx0XHR2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpbWFnZSB7XHJcblx0XHRcdFx0bWFyZ2luLXRvcDogNDBycHg7XHJcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IDQwcnB4O1xyXG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDE2cnB4O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG48L3N0eWxlPlxuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxcXFxkaXN0XFxcXGxvYWRlci5qcz8/cmVmLS0xMC1vbmVPZi0xLTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcY3NzLWxvYWRlclxcXFxkaXN0XFxcXGNqcy5qcz8/cmVmLS0xMC1vbmVPZi0xLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHN0eWxlUG9zdExvYWRlci5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTAtb25lT2YtMS0yIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXHBvc3Rjc3MtbG9hZGVyXFxcXHNyY1xcXFxpbmRleC5qcz8/cmVmLS0xMC1vbmVPZi0xLTMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcbGVzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tMTAtb25lT2YtMS00IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMC1vbmVPZi0xLTUhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vY2hvaWNlbmVzcy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWxlc3MmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cXFxcZGlzdFxcXFxsb2FkZXIuanM/P3JlZi0tMTAtb25lT2YtMS0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGNzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tMTAtb25lT2YtMS0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFxzdHlsZVBvc3RMb2FkZXIuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEwLW9uZU9mLTEtMiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxwb3N0Y3NzLWxvYWRlclxcXFxzcmNcXFxcaW5kZXguanM/P3JlZi0tMTAtb25lT2YtMS0zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGxlc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTEwLW9uZU9mLTEtNCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTAtb25lT2YtMS01IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL2Nob2ljZW5lc3MudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1sZXNzJlwiIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG4gICAgaWYobW9kdWxlLmhvdCkge1xuICAgICAgLy8gMTY1MzMxNDY4NDg3MVxuICAgICAgdmFyIGNzc1JlbG9hZCA9IHJlcXVpcmUoXCJEOi9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9taW5pLWNzcy1leHRyYWN0LXBsdWdpbi9kaXN0L2htci9ob3RNb2R1bGVSZXBsYWNlbWVudC5qc1wiKShtb2R1bGUuaWQsIHtcImhtclwiOnRydWUsXCJwdWJsaWNQYXRoXCI6XCIuLi8uLi9cIixcImxvY2Fsc1wiOmZhbHNlfSk7XG4gICAgICBtb2R1bGUuaG90LmRpc3Bvc2UoY3NzUmVsb2FkKTtcbiAgICAgIG1vZHVsZS5ob3QuYWNjZXB0KHVuZGVmaW5lZCwgY3NzUmVsb2FkKTtcbiAgICB9XG4gICJdLCJzb3VyY2VSb290IjoiIn0=
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-toutiao/pages/index/choiceness.ttml b/unpackage/dist/dev/mp-toutiao/pages/index/choiceness.ttml
index a1b0d01..bb411ba 100644
--- a/unpackage/dist/dev/mp-toutiao/pages/index/choiceness.ttml
+++ b/unpackage/dist/dev/mp-toutiao/pages/index/choiceness.ttml
@@ -1 +1 @@
-热门作品
\ No newline at end of file
+热门作品
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-toutiao/pages/index/index.js b/unpackage/dist/dev/mp-toutiao/pages/index/index.js
index 15405fc..15e0c04 100644
--- a/unpackage/dist/dev/mp-toutiao/pages/index/index.js
+++ b/unpackage/dist/dev/mp-toutiao/pages/index/index.js
@@ -96,7 +96,7 @@ var components
try {
components = {
uniSearchBar: function() {
- return Promise.all(/*! import() | uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue */ 112))
+ return Promise.all(/*! import() | uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue */ 120))
}
}
} catch (e) {
@@ -303,4 +303,4 @@ __webpack_require__.r(__webpack_exports__);
/***/ })
},[[14,"common/runtime","common/vendor"]]]);
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyIsbnVsbCwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL2luZGV4L2luZGV4LnZ1ZT8xZmFlIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL2luZGV4L2luZGV4LnZ1ZT8yYjZkIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL2luZGV4L2luZGV4LnZ1ZT9kMzFjIiwidW5pLWFwcDovLy9wYWdlcy9pbmRleC9pbmRleC52dWUiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svcGFnZXMvaW5kZXgvaW5kZXgudnVlPzdkZDkiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svcGFnZXMvaW5kZXgvaW5kZXgudnVlPzlkZDYiXSwibmFtZXMiOlsid3giLCJfX3dlYnBhY2tfcmVxdWlyZV9VTklfTVBfUExVR0lOX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwiY3JlYXRlUGFnZSIsIlBhZ2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7c0RBQUE7QUFDQTtBQUNBLDRGLDZGQUZtQkEsRUFBRSxDQUFDQyxpQ0FBSCxHQUF1Q0MsbUJBQXZDO0FBR25CQyxVQUFVLENBQUNDLGNBQUQsQ0FBVixDOzs7Ozs7Ozs7Ozs7O0FDSEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtIO0FBQ2xIO0FBQ3lEO0FBQ0w7QUFDYzs7O0FBR2xFO0FBQ3FLO0FBQ3JLLGdCQUFnQiwrS0FBVTtBQUMxQixFQUFFLDJFQUFNO0FBQ1IsRUFBRSxnRkFBTTtBQUNSLEVBQUUseUZBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsb0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0Y7Ozs7Ozs7Ozs7OztBQ3ZCZjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7OztBQ0FBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsbVdBRU47QUFDUDtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQ2pDQTtBQUFBO0FBQUE7QUFBQTtBQUErbEIsQ0FBZ0IseW5CQUFHLEVBQUMsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDaUNubkIsMkQ7OztBQUdBO0FBQ0EsTUFEQSxrQkFDQTtBQUNBO0FBQ0Esa0JBREE7O0FBR0EsR0FMQTtBQU1BLFNBTkEscUJBTUE7QUFDQTtBQUNBLEdBUkE7QUFTQSxjQVRBLHdCQVNBLENBVEEsRUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBREE7O0FBR0E7QUFDQSxHQWpCQTtBQWtCQTtBQUNBLFVBREEsa0JBQ0EsR0FEQSxFQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FIQSxNQUdBO0FBQ0E7QUFDQSwyQkFEQTtBQUVBLHVCQUZBOztBQUlBOztBQUVBLEtBWkE7QUFhQTtBQUNBLGVBZEEseUJBY0E7QUFDQSw4Q0FEQSxTQUNBLEdBREE7QUFFQTtBQUNBO0FBQ0EsaUJBRkEsTUFFQTtBQUNBO0FBQ0EsdUNBREE7QUFFQSxpQ0FGQTs7QUFJQTtBQUNBLGdEQVZBO0FBV0EsS0F6QkE7QUEwQkE7QUFDQSxnQkEzQkEsd0JBMkJBLFFBM0JBLEVBMkJBO0FBQ0Esd0JBREE7QUFFQTtBQUNBLHNDQURBLEdBRkEsU0FFQSxHQUZBOztBQUtBO0FBQ0E7QUFDQTtBQUNBLHFDQURBO0FBRUEsdUNBRkE7QUFHQSwyQkFIQSxxQkFHQTtBQUNBO0FBQ0Esb0RBREE7O0FBR0EscUJBUEE7O0FBU0EsaUJBVkEsTUFVQTtBQUNBO0FBQ0EsdUNBREE7QUFFQSxpQ0FGQTs7QUFJQSxpQkFyQkE7OztBQXdCQTtBQUNBLGtDQURBO0FBRUEsK0JBRkEsSUF4QkE7OztBQTZCQSxLQXhEQTtBQXlEQTtBQUNBLGdCQTFEQSwwQkEwREE7QUFDQTtBQUNBO0FBQ0EsS0E3REEsRUFsQkEsRTs7Ozs7Ozs7Ozs7OztBQ3BDQTtBQUFBO0FBQUE7QUFBQTtBQUF1bUMsQ0FBZ0IsaWxDQUFHLEVBQUMsQzs7Ozs7Ozs7Ozs7QUNBM25DO0FBQ0EsT0FBTyxLQUFVLEVBQUUsa0JBS2QiLCJmaWxlIjoicGFnZXMvaW5kZXgvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3VuaS1wYWdlcyc7d3guX193ZWJwYWNrX3JlcXVpcmVfVU5JX01QX1BMVUdJTl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXztcbmltcG9ydCBWdWUgZnJvbSAndnVlJ1xuaW1wb3J0IFBhZ2UgZnJvbSAnLi9wYWdlcy9pbmRleC9pbmRleC52dWUnXG5jcmVhdGVQYWdlKFBhZ2UpIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSBmcm9tIFwiLi9pbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTcyODAyMjgmXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi9pbmRleC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWxlc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxccnVudGltZVxcXFxjb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFnZXMvaW5kZXgvaW5kZXgudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHRlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTE2LTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcdGVtcGxhdGUuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXVuaS1hcHAtbG9hZGVyXFxcXHBhZ2UtbWV0YS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9pbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTcyODAyMjgmXCIiLCJ2YXIgY29tcG9uZW50c1xudHJ5IHtcbiAgY29tcG9uZW50cyA9IHtcbiAgICB1bmlTZWFyY2hCYXI6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGltcG9ydChcbiAgICAgICAgLyogd2VicGFja0NodW5rTmFtZTogXCJ1bmlfbW9kdWxlcy91bmktc2VhcmNoLWJhci9jb21wb25lbnRzL3VuaS1zZWFyY2gtYmFyL3VuaS1zZWFyY2gtYmFyXCIgKi8gXCJAL3VuaV9tb2R1bGVzL3VuaS1zZWFyY2gtYmFyL2NvbXBvbmVudHMvdW5pLXNlYXJjaC1iYXIvdW5pLXNlYXJjaC1iYXIudnVlXCJcbiAgICAgIClcbiAgICB9XG4gIH1cbn0gY2F0Y2ggKGUpIHtcbiAgaWYgKFxuICAgIGUubWVzc2FnZS5pbmRleE9mKFwiQ2Fubm90IGZpbmQgbW9kdWxlXCIpICE9PSAtMSAmJlxuICAgIGUubWVzc2FnZS5pbmRleE9mKFwiLnZ1ZVwiKSAhPT0gLTFcbiAgKSB7XG4gICAgY29uc29sZS5lcnJvcihlLm1lc3NhZ2UpXG4gICAgY29uc29sZS5lcnJvcihcIjEuIOaOkuafpee7hOS7tuWQjeensOaLvOWGmeaYr+WQpuato+ehrlwiKVxuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIjIuIOaOkuafpee7hOS7tuaYr+WQpuespuWQiCBlYXN5Y29tIOinhOiMg++8jOaWh+aho++8mmh0dHBzOi8vdW5pYXBwLmRjbG91ZC5uZXQuY24vY29sbG9jYXRpb24vcGFnZXM/aWQ9ZWFzeWNvbVwiXG4gICAgKVxuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIjMuIOiLpee7hOS7tuS4jeespuWQiCBlYXN5Y29tIOinhOiMg++8jOmcgOaJi+WKqOW8leWFpe+8jOW5tuWcqCBjb21wb25lbnRzIOS4reazqOWGjOivpee7hOS7tlwiXG4gICAgKVxuICB9IGVsc2Uge1xuICAgIHRocm93IGVcbiAgfVxufVxudmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG59XG52YXIgcmVjeWNsYWJsZVJlbmRlciA9IGZhbHNlXG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IiwiaW1wb3J0IG1vZCBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMi0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHNjcmlwdC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcYmFiZWwtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTItMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzY3JpcHQuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwiY29udGFpbmVyXCI+XHJcblx0XHQ8dmlldyBjbGFzcz1cInRvcFwiPlxyXG5cdFx0XHQ8aW1hZ2UgY2xhc3M9XCJiYWNrLWltZ1wiIHNyYz1cIi4uLy4uL3N0YXRpYy9pbWcvc3RhcnQuZ2lmXCIgbW9kZT1cIlwiPjwvaW1hZ2U+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwidG9wLWJvdHRvbVwiPlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx1bmktc2VhcmNoLWJhciBjbGFzcz1cInVuaS1tdC0xMFwiIHBsYWNlaG9sZGVyPVwi6K+36L6T5YWl5Zac5qyi55qE6Im65pyv5a625Luj5Y+35ZCnflwiIGNsZWFyQnV0dG9uPVwiYXV0b1wiIGNhbmNlbEJ1dHRvbj1cIm5vbmVcIlxyXG5cdFx0XHRcdEBjb25maXJtPVwic2VhcmNoXCIgLz5cclxuXHRcdFx0PHRleHQ+5aSn5a626YO95Zyo5pCcPC90ZXh0PlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInVzZXItbGlzdFwiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidXNlci1saXN0LWJveFwiIHYtZm9yPVwiKGl0ZW0saW5kZXgpIGluIHVzZXJMaXN0XCIgOmtleT0naXRlbS5pZCdcclxuXHRcdFx0XHRcdEBjbGljaz1cImdvVXNlckRldGFpbChpdGVtLnNjYW5Db2RlKVwiPlxyXG5cdFx0XHRcdFx0PGltYWdlIDpzcmM9XCJpdGVtLmltZ1wiIG1vZGU9XCJcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0PHRleHQ+e3tpdGVtLnRpa3Rva051bWJlcn19PC90ZXh0PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInVzZXItbGlzdC1ib3hcIiB2LWZvcj1cIihpdGVtLGluZGV4KSBpbiB1c2VyTGlzdFwiIDprZXk9J2l0ZW0uaWQnPlxyXG5cdFx0XHRcdFx0PGltYWdlIDpzcmM9XCJpdGVtLmltZ1wiIG1vZGU9XCJcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0PHRleHQ+e3tpdGVtLnRpa3Rva051bWJlcn19PC90ZXh0PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInVzZXItbGlzdC1ib3hcIiB2LWZvcj1cIihpdGVtLGluZGV4KSBpbiB1c2VyTGlzdFwiIDprZXk9J2l0ZW0uaWQnPlxyXG5cdFx0XHRcdFx0PGltYWdlIDpzcmM9XCJpdGVtLmltZ1wiIG1vZGU9XCJcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0PHRleHQ+e3tpdGVtLnRpa3Rva051bWJlcn19PC90ZXh0PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJtaWRkbGVcIj5cclxuXHRcdFx0PHRleHQ+6L+R5pyf57K+6YCJPC90ZXh0PlxyXG5cdFx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vc3RhdGljL2ltZy9zbGlkZS10b3Auc3ZnXCIgbW9kZT1cIlwiPjwvaW1hZ2U+XHJcblx0XHQ8L3ZpZXc+XHJcblx0PC92aWV3PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuXHRpbXBvcnQge1xyXG5cdFx0dGlrdG9rVXNlckltZ3MsdGlrdG9rVXNlckRldGFpbHNcclxuXHR9IGZyb20gJ0AvYXBpL2luZGV4LmpzJ1xyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0dXNlckxpc3Q6IFtdXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRjcmVhdGVkKCkge1xyXG5cdFx0XHR0aGlzLmdldFVzZXJMaXN0KClcclxuXHRcdH0sXHJcblx0XHRvblBhZ2VTY3JvbGwoZSkge1xyXG5cdFx0XHQvLyDkvKDlhaVzY3JvbGxUb3DlgLzlubbop6blj5HmiYDmnIllYXN5LWxvYWRpbWFnZee7hOS7tuS4i+eahOa7muWKqOebkeWQrOS6i+S7tlxyXG5cdFx0XHRjb25zb2xlLmxvZygnZS5zY3JvbGxUb3AnLCBlLnNjcm9sbFRvcClcclxuXHRcdFx0aWYgKGUuc2Nyb2xsVG9wID4gMjAwKSB7XHJcblx0XHRcdFx0dW5pLnJlZGlyZWN0VG8oe1xyXG5cdFx0XHRcdFx0dXJsOiAnLi9jaG9pY2VuZXNzJ1xyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdHNlYXJjaChyZXMpIHtcclxuXHRcdFx0XHRpZiAocmVzLnZhbHVlKSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnc2VhcmNoJyxyZXMudmFsdWUpXHJcblx0XHRcdFx0XHR0aGlzLmdvVXNlckRldGFpbChyZXMudmFsdWUpXHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHR0aXRsZTogJ+ivt+i+k+WFpeiJuuacr+WutuS7o+WPtycsXHJcblx0XHRcdFx0XHRcdGljb246ICdlcnJvcidcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g6I635Y+W5o6o6I2Q55So5oi35YiX6KGoXHJcblx0XHRcdGFzeW5jIGdldFVzZXJMaXN0KCkge1xyXG5cdFx0XHRcdGNvbnN0IHJlcyA9IGF3YWl0IHRpa3Rva1VzZXJJbWdzKClcclxuXHRcdFx0XHRpZiAocmVzLmRhdGEuY29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHR0aGlzLnVzZXJMaXN0ID0gcmVzLmRhdGEuZGF0YVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcclxuXHRcdFx0XHRcdFx0dGl0bGU6IHJlcy5kYXRhLm1zZyxcclxuXHRcdFx0XHRcdFx0aWNvbjogJ2Vycm9yJ1xyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ2dldFVzZXJMaXN0JywgcmVzKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDliY3lvoDnlKjmiLfnqbrpl7RcclxuXHRcdFx0YXN5bmMgZ29Vc2VyRGV0YWlsKHNjYW5Db2RlKSB7XHJcblx0XHRcdFx0aWYgKHNjYW5Db2RlKSB7XHJcblx0XHRcdFx0XHRjb25zdCByZXMgPSBhd2FpdCB0aWt0b2tVc2VyRGV0YWlscyh7XHJcblx0XHRcdFx0XHRcdHNjYW5Db2RlXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ3Rpa3Rva1VzZXJEZXRhaWxzJyxyZXMpXHJcblx0XHRcdFx0XHRpZiAocmVzLmRhdGEuY29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHRcdHVuaS5zZXRTdG9yYWdlKHtcclxuXHRcdFx0XHRcdFx0XHRrZXk6ICd1c2VyRGV0YWlsJyxcclxuXHRcdFx0XHRcdFx0XHRkYXRhOiByZXMuZGF0YS5kYXRhLFxyXG5cdFx0XHRcdFx0XHRcdHN1Y2Nlc3MoKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR1bmkucmVkaXJlY3RUbyh7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHVybDogJy4uL2NyZWF0b3IvdXNlckRldGFpbCdcclxuXHRcdFx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XHJcblx0XHRcdFx0XHRcdFx0dGl0bGU6IHJlcy5kYXRhLm1zZyxcclxuXHRcdFx0XHRcdFx0XHRpY29uOiAnZXJyb3InXHJcblx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XHJcblx0XHRcdFx0XHRcdHRpdGxlOiAn5pCc57Si56CB5LiN6IO95Li656m6JyxcclxuXHRcdFx0XHRcdFx0aWNvbjogJ2Vycm9yJ1xyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOa7muWKqOebkeWQrFxyXG5cdFx0XHRoYW5kbGVTY3JvbGwoKSB7XHJcblx0XHRcdFx0bGV0IHNjcm9sbFRvcCA9IHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wXHJcblx0XHRcdFx0Y29uc29sZS5sb2coc2Nyb2xsVG9wKVxyXG5cdFx0XHR9LFxyXG5cdFx0fSxcclxuXHR9XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XHJcblx0LmNvbnRhaW5lciB7XHJcblx0XHQudG9wIHtcclxuXHRcdFx0d2lkdGg6IDEwMHZ3O1xyXG5cclxuXHRcdFx0aW1hZ2Uge1xyXG5cdFx0XHRcdHdpZHRoOiAxMDB2dztcclxuXHRcdFx0XHRoZWlnaHQ6IDQwMHJweDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LnVuaS1zZWFyY2hiYXIge1xyXG5cdFx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICMxMUE4RkQ7XHJcblx0XHRcdFx0bWFyZ2luOiAwIDQwcnB4O1xyXG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDE2cnB4O1xyXG5cdFx0XHRcdHBhZGRpbmc6IDA7XHJcblxyXG5cdFx0XHRcdC51bmktc2VhcmNoYmFyX19ib3gge1xyXG5cdFx0XHRcdFx0cGFkZGluZzogMDtcclxuXHRcdFx0XHRcdGJvcmRlci1yYWRpdXM6IDE2cnB4ICFpbXBvcnRhbnQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQ+dGV4dCB7XHJcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0XHRcdFx0Zm9udC1zaXplOiAxNHB4O1xyXG5cdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdFx0XHRwYWRkaW5nLXRvcDogNDBycHg7XHJcblx0XHRcdFx0cGFkZGluZy1ib3R0b206IDIwcnB4O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQudXNlci1saXN0IHtcclxuXHRcdFx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0XHRcdGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuXHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0XHRcdG92ZXJmbG93LXg6IGF1dG87XHJcblxyXG5cdFx0XHRcdC51c2VyLWxpc3QtYm94IHtcclxuXHRcdFx0XHRcdHdpZHRoOiAxNDBycHg7XHJcblx0XHRcdFx0XHRwYWRkaW5nOiAyMHJweDtcclxuXHRcdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHJcblx0XHRcdFx0XHRpbWFnZSB7XHJcblx0XHRcdFx0XHRcdHdpZHRoOiAxMDBycHg7XHJcblx0XHRcdFx0XHRcdGhlaWdodDogMTAwcnB4O1xyXG5cdFx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiAxMDBycHg7XHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0dGV4dCB7XHJcblx0XHRcdFx0XHRcdGZvbnQtc2l6ZTogMjRycHg7XHJcblx0XHRcdFx0XHRcdGNvbG9yOiAjMUUxRTFFO1xyXG5cdFx0XHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0Lm1pZGRsZSB7XHJcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdFx0aGVpZ2h0OiBjYWxjKDEwMHZoIC0gMjQ4cnB4KTtcclxuXHRcdFx0cGFkZGluZy10b3A6IDQwcnB4O1xyXG5cclxuXHRcdFx0dGV4dCB7XHJcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0XHRcdFx0Zm9udC1zaXplOiAxNHB4O1xyXG5cdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpbWFnZSB7XHJcblx0XHRcdFx0d2lkdGg6IDQwcnB4O1xyXG5cdFx0XHRcdGhlaWdodDogNDBycHg7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbjwvc3R5bGU+XG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXFxcXGRpc3RcXFxcbG9hZGVyLmpzPz9yZWYtLTEwLW9uZU9mLTEtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxjc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTEwLW9uZU9mLTEtMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGxvYWRlcnNcXFxcc3R5bGVQb3N0TG9hZGVyLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMC1vbmVPZi0xLTIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxccG9zdGNzcy1sb2FkZXJcXFxcc3JjXFxcXGluZGV4LmpzPz9yZWYtLTEwLW9uZU9mLTEtMyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxsZXNzLWxvYWRlclxcXFxkaXN0XFxcXGNqcy5qcz8/cmVmLS0xMC1vbmVPZi0xLTQhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEwLW9uZU9mLTEtNSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9pbmRleC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWxlc3MmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cXFxcZGlzdFxcXFxsb2FkZXIuanM/P3JlZi0tMTAtb25lT2YtMS0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGNzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tMTAtb25lT2YtMS0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFxzdHlsZVBvc3RMb2FkZXIuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEwLW9uZU9mLTEtMiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxwb3N0Y3NzLWxvYWRlclxcXFxzcmNcXFxcaW5kZXguanM/P3JlZi0tMTAtb25lT2YtMS0zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGxlc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTEwLW9uZU9mLTEtNCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTAtb25lT2YtMS01IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9bGVzcyZcIiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuICAgIGlmKG1vZHVsZS5ob3QpIHtcbiAgICAgIC8vIDE2NTI3MDI1NjYyMTRcbiAgICAgIHZhciBjc3NSZWxvYWQgPSByZXF1aXJlKFwiRDovSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9obXIvaG90TW9kdWxlUmVwbGFjZW1lbnQuanNcIikobW9kdWxlLmlkLCB7XCJobXJcIjp0cnVlLFwicHVibGljUGF0aFwiOlwiLi4vLi4vXCIsXCJsb2NhbHNcIjpmYWxzZX0pO1xuICAgICAgbW9kdWxlLmhvdC5kaXNwb3NlKGNzc1JlbG9hZCk7XG4gICAgICBtb2R1bGUuaG90LmFjY2VwdCh1bmRlZmluZWQsIGNzc1JlbG9hZCk7XG4gICAgfVxuICAiXSwic291cmNlUm9vdCI6IiJ9
\ No newline at end of file
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy9pbmRleC9pbmRleC52dWU/YTZhYSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy9pbmRleC9pbmRleC52dWU/MWZhZSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy9pbmRleC9pbmRleC52dWU/MmI2ZCIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy9pbmRleC9pbmRleC52dWU/ZDMxYyIsInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgvaW5kZXgudnVlIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL2luZGV4L2luZGV4LnZ1ZT83ZGQ5Iiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL2luZGV4L2luZGV4LnZ1ZT85ZGQ2Il0sIm5hbWVzIjpbInd4IiwiX193ZWJwYWNrX3JlcXVpcmVfVU5JX01QX1BMVUdJTl9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsImNyZWF0ZVBhZ2UiLCJQYWdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O3NEQUFBO0FBQ0E7QUFDQSw0Riw2RkFGbUJBLEVBQUUsQ0FBQ0MsaUNBQUgsR0FBdUNDLG1CQUF2QztBQUduQkMsVUFBVSxDQUFDQyxjQUFELENBQVYsQzs7Ozs7Ozs7Ozs7OztBQ0hBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrSDtBQUNsSDtBQUN5RDtBQUNMO0FBQ2M7OztBQUdsRTtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSwyRUFBTTtBQUNSLEVBQUUsZ0ZBQU07QUFDUixFQUFFLHlGQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLG9GQUFVO0FBQ1o7QUFDQTs7QUFFQTtBQUNlLGdGOzs7Ozs7Ozs7Ozs7QUN2QmY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLG1XQUVOO0FBQ1A7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNqQ0E7QUFBQTtBQUFBO0FBQUE7QUFBK2xCLENBQWdCLHluQkFBRyxFQUFDLEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2lDbm5CLDJEOzs7QUFHQTtBQUNBLE1BREEsa0JBQ0E7QUFDQTtBQUNBLGtCQURBOztBQUdBLEdBTEE7QUFNQSxTQU5BLHFCQU1BO0FBQ0E7QUFDQSxHQVJBO0FBU0EsY0FUQSx3QkFTQSxDQVRBLEVBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQURBOztBQUdBO0FBQ0EsR0FqQkE7QUFrQkE7QUFDQSxVQURBLGtCQUNBLEdBREEsRUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BSEEsTUFHQTtBQUNBO0FBQ0EsMkJBREE7QUFFQSx1QkFGQTs7QUFJQTs7QUFFQSxLQVpBO0FBYUE7QUFDQSxlQWRBLHlCQWNBO0FBQ0EsOENBREEsU0FDQSxHQURBO0FBRUE7QUFDQTtBQUNBLGlCQUZBLE1BRUE7QUFDQTtBQUNBLHVDQURBO0FBRUEsaUNBRkE7O0FBSUE7QUFDQSxnREFWQTtBQVdBLEtBekJBO0FBMEJBO0FBQ0EsZ0JBM0JBLHdCQTJCQSxRQTNCQSxFQTJCQTtBQUNBLHdCQURBO0FBRUE7QUFDQSxzQ0FEQSxHQUZBLFNBRUEsR0FGQTs7QUFLQTtBQUNBO0FBQ0E7QUFDQSxxQ0FEQTtBQUVBLHVDQUZBO0FBR0EsMkJBSEEscUJBR0E7QUFDQTtBQUNBLG9EQURBOztBQUdBLHFCQVBBOztBQVNBLGlCQVZBLE1BVUE7QUFDQTtBQUNBLHVDQURBO0FBRUEsaUNBRkE7O0FBSUEsaUJBckJBOzs7QUF3QkE7QUFDQSxrQ0FEQTtBQUVBLCtCQUZBLElBeEJBOzs7QUE2QkEsS0F4REE7QUF5REE7QUFDQSxnQkExREEsMEJBMERBO0FBQ0E7QUFDQTtBQUNBLEtBN0RBLEVBbEJBLEU7Ozs7Ozs7Ozs7Ozs7QUNwQ0E7QUFBQTtBQUFBO0FBQUE7QUFBdW1DLENBQWdCLGlsQ0FBRyxFQUFDLEM7Ozs7Ozs7Ozs7O0FDQTNuQztBQUNBLE9BQU8sS0FBVSxFQUFFLGtCQUtkIiwiZmlsZSI6InBhZ2VzL2luZGV4L2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICd1bmktcGFnZXMnO3d4Ll9fd2VicGFja19yZXF1aXJlX1VOSV9NUF9QTFVHSU5fXyA9IF9fd2VicGFja19yZXF1aXJlX187XG5pbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcbmltcG9ydCBQYWdlIGZyb20gJy4vcGFnZXMvaW5kZXgvaW5kZXgudnVlJ1xuY3JlYXRlUGFnZShQYWdlKSIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU3MjgwMjI4JlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1sZXNzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXHJ1bnRpbWVcXFxcY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhZ2VzL2luZGV4L2luZGV4LnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsImV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFx0ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xNi0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHRlbXBsYXRlLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay11bmktYXBwLWxvYWRlclxcXFxwYWdlLW1ldGEuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTU3MjgwMjI4JlwiIiwidmFyIGNvbXBvbmVudHNcbnRyeSB7XG4gIGNvbXBvbmVudHMgPSB7XG4gICAgdW5pU2VhcmNoQmFyOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBpbXBvcnQoXG4gICAgICAgIC8qIHdlYnBhY2tDaHVua05hbWU6IFwidW5pX21vZHVsZXMvdW5pLXNlYXJjaC1iYXIvY29tcG9uZW50cy91bmktc2VhcmNoLWJhci91bmktc2VhcmNoLWJhclwiICovIFwiQC91bmlfbW9kdWxlcy91bmktc2VhcmNoLWJhci9jb21wb25lbnRzL3VuaS1zZWFyY2gtYmFyL3VuaS1zZWFyY2gtYmFyLnZ1ZVwiXG4gICAgICApXG4gICAgfVxuICB9XG59IGNhdGNoIChlKSB7XG4gIGlmIChcbiAgICBlLm1lc3NhZ2UuaW5kZXhPZihcIkNhbm5vdCBmaW5kIG1vZHVsZVwiKSAhPT0gLTEgJiZcbiAgICBlLm1lc3NhZ2UuaW5kZXhPZihcIi52dWVcIikgIT09IC0xXG4gICkge1xuICAgIGNvbnNvbGUuZXJyb3IoZS5tZXNzYWdlKVxuICAgIGNvbnNvbGUuZXJyb3IoXCIxLiDmjpLmn6Xnu4Tku7blkI3np7Dmi7zlhpnmmK/lkKbmraPnoa5cIilcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCIyLiDmjpLmn6Xnu4Tku7bmmK/lkKbnrKblkIggZWFzeWNvbSDop4TojIPvvIzmlofmoaPvvJpodHRwczovL3VuaWFwcC5kY2xvdWQubmV0LmNuL2NvbGxvY2F0aW9uL3BhZ2VzP2lkPWVhc3ljb21cIlxuICAgIClcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCIzLiDoi6Xnu4Tku7bkuI3nrKblkIggZWFzeWNvbSDop4TojIPvvIzpnIDmiYvliqjlvJXlhaXvvIzlubblnKggY29tcG9uZW50cyDkuK3ms6jlhozor6Xnu4Tku7ZcIlxuICAgIClcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBlXG4gIH1cbn1cbnZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxufVxudmFyIHJlY3ljbGFibGVSZW5kZXIgPSBmYWxzZVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSIsImltcG9ydCBtb2QgZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcYmFiZWwtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTItMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzY3JpcHQuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiIsIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyBjbGFzcz1cImNvbnRhaW5lclwiPlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJ0b3BcIj5cclxuXHRcdFx0PGltYWdlIGNsYXNzPVwiYmFjay1pbWdcIiBzcmM9XCIuLi8uLi9zdGF0aWMvaW1nL3N0YXJ0LmdpZlwiIG1vZGU9XCJcIj48L2ltYWdlPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInRvcC1ib3R0b21cIj5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8dW5pLXNlYXJjaC1iYXIgY2xhc3M9XCJ1bmktbXQtMTBcIiBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpeWWnOasoueahOiJuuacr+WutuS7o+WPt+WQp35cIiBjbGVhckJ1dHRvbj1cImF1dG9cIiBjYW5jZWxCdXR0b249XCJub25lXCJcclxuXHRcdFx0XHRAY29uZmlybT1cInNlYXJjaFwiIC8+XHJcblx0XHRcdDx0ZXh0PuWkp+WutumDveWcqOaQnDwvdGV4dD5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJ1c2VyLWxpc3RcIj5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInVzZXItbGlzdC1ib3hcIiB2LWZvcj1cIihpdGVtLGluZGV4KSBpbiB1c2VyTGlzdFwiIDprZXk9J2l0ZW0uaWQnXHJcblx0XHRcdFx0XHRAY2xpY2s9XCJnb1VzZXJEZXRhaWwoaXRlbS5zY2FuQ29kZSlcIj5cclxuXHRcdFx0XHRcdDxpbWFnZSA6c3JjPVwiaXRlbS5pbWdcIiBtb2RlPVwiXCI+PC9pbWFnZT5cclxuXHRcdFx0XHRcdDx0ZXh0Pnt7aXRlbS50aWt0b2tOdW1iZXJ9fTwvdGV4dD5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ1c2VyLWxpc3QtYm94XCIgdi1mb3I9XCIoaXRlbSxpbmRleCkgaW4gdXNlckxpc3RcIiA6a2V5PSdpdGVtLmlkJz5cclxuXHRcdFx0XHRcdDxpbWFnZSA6c3JjPVwiaXRlbS5pbWdcIiBtb2RlPVwiXCI+PC9pbWFnZT5cclxuXHRcdFx0XHRcdDx0ZXh0Pnt7aXRlbS50aWt0b2tOdW1iZXJ9fTwvdGV4dD5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ1c2VyLWxpc3QtYm94XCIgdi1mb3I9XCIoaXRlbSxpbmRleCkgaW4gdXNlckxpc3RcIiA6a2V5PSdpdGVtLmlkJz5cclxuXHRcdFx0XHRcdDxpbWFnZSA6c3JjPVwiaXRlbS5pbWdcIiBtb2RlPVwiXCI+PC9pbWFnZT5cclxuXHRcdFx0XHRcdDx0ZXh0Pnt7aXRlbS50aWt0b2tOdW1iZXJ9fTwvdGV4dD5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwibWlkZGxlXCI+XHJcblx0XHRcdDx0ZXh0Pui/keacn+eyvumAiTwvdGV4dD5cclxuXHRcdFx0PGltYWdlIHNyYz1cIi4uLy4uL3N0YXRpYy9pbWcvc2xpZGUtdG9wLnN2Z1wiIG1vZGU9XCJcIj48L2ltYWdlPlxyXG5cdFx0PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0aW1wb3J0IHtcclxuXHRcdHRpa3Rva1VzZXJJbWdzLHRpa3Rva1VzZXJEZXRhaWxzXHJcblx0fSBmcm9tICdAL2FwaS9pbmRleC5qcydcclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdHVzZXJMaXN0OiBbXVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0Y3JlYXRlZCgpIHtcclxuXHRcdFx0dGhpcy5nZXRVc2VyTGlzdCgpXHJcblx0XHR9LFxyXG5cdFx0b25QYWdlU2Nyb2xsKGUpIHtcclxuXHRcdFx0Ly8g5Lyg5YWlc2Nyb2xsVG9w5YC85bm26Kem5Y+R5omA5pyJZWFzeS1sb2FkaW1hZ2Xnu4Tku7bkuIvnmoTmu5rliqjnm5HlkKzkuovku7ZcclxuXHRcdFx0Y29uc29sZS5sb2coJ2Uuc2Nyb2xsVG9wJywgZS5zY3JvbGxUb3ApXHJcblx0XHRcdGlmIChlLnNjcm9sbFRvcCA+IDIwMCkge1xyXG5cdFx0XHRcdHVuaS5yZWRpcmVjdFRvKHtcclxuXHRcdFx0XHRcdHVybDogJy4vY2hvaWNlbmVzcydcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRzZWFyY2gocmVzKSB7XHJcblx0XHRcdFx0aWYgKHJlcy52YWx1ZSkge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ3NlYXJjaCcscmVzLnZhbHVlKVxyXG5cdFx0XHRcdFx0dGhpcy5nb1VzZXJEZXRhaWwocmVzLnZhbHVlKVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcclxuXHRcdFx0XHRcdFx0dGl0bGU6ICfor7fovpPlhaXoibrmnK/lrrbku6Plj7cnLFxyXG5cdFx0XHRcdFx0XHRpY29uOiAnZXJyb3InXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOiOt+WPluaOqOiNkOeUqOaIt+WIl+ihqFxyXG5cdFx0XHRhc3luYyBnZXRVc2VyTGlzdCgpIHtcclxuXHRcdFx0XHRjb25zdCByZXMgPSBhd2FpdCB0aWt0b2tVc2VySW1ncygpXHJcblx0XHRcdFx0aWYgKHJlcy5kYXRhLmNvZGUgPT09IDIwMCkge1xyXG5cdFx0XHRcdFx0dGhpcy51c2VyTGlzdCA9IHJlcy5kYXRhLmRhdGFcclxuXHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XHJcblx0XHRcdFx0XHRcdHRpdGxlOiByZXMuZGF0YS5tc2csXHJcblx0XHRcdFx0XHRcdGljb246ICdlcnJvcidcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdnZXRVc2VyTGlzdCcsIHJlcylcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5YmN5b6A55So5oi356m66Ze0XHJcblx0XHRcdGFzeW5jIGdvVXNlckRldGFpbChzY2FuQ29kZSkge1xyXG5cdFx0XHRcdGlmIChzY2FuQ29kZSkge1xyXG5cdFx0XHRcdFx0Y29uc3QgcmVzID0gYXdhaXQgdGlrdG9rVXNlckRldGFpbHMoe1xyXG5cdFx0XHRcdFx0XHRzY2FuQ29kZVxyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCd0aWt0b2tVc2VyRGV0YWlscycscmVzKVxyXG5cdFx0XHRcdFx0aWYgKHJlcy5kYXRhLmNvZGUgPT09IDIwMCkge1xyXG5cdFx0XHRcdFx0XHR1bmkuc2V0U3RvcmFnZSh7XHJcblx0XHRcdFx0XHRcdFx0a2V5OiAndXNlckRldGFpbCcsXHJcblx0XHRcdFx0XHRcdFx0ZGF0YTogcmVzLmRhdGEuZGF0YSxcclxuXHRcdFx0XHRcdFx0XHRzdWNjZXNzKCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dW5pLnJlZGlyZWN0VG8oe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR1cmw6ICcuLi9jcmVhdG9yL3VzZXJEZXRhaWwnXHJcblx0XHRcdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHRcdHRpdGxlOiByZXMuZGF0YS5tc2csXHJcblx0XHRcdFx0XHRcdFx0aWNvbjogJ2Vycm9yJ1xyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHR0aXRsZTogJ+aQnOe0oueggeS4jeiDveS4uuepuicsXHJcblx0XHRcdFx0XHRcdGljb246ICdlcnJvcidcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDmu5rliqjnm5HlkKxcclxuXHRcdFx0aGFuZGxlU2Nyb2xsKCkge1xyXG5cdFx0XHRcdGxldCBzY3JvbGxUb3AgPSB3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcFxyXG5cdFx0XHRcdGNvbnNvbGUubG9nKHNjcm9sbFRvcClcclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxyXG5cdC5jb250YWluZXIge1xyXG5cdFx0LnRvcCB7XHJcblx0XHRcdHdpZHRoOiAxMDB2dztcclxuXHJcblx0XHRcdGltYWdlIHtcclxuXHRcdFx0XHR3aWR0aDogMTAwdnc7XHJcblx0XHRcdFx0aGVpZ2h0OiA0MDBycHg7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC51bmktc2VhcmNoYmFyIHtcclxuXHRcdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjMTFBOEZEO1xyXG5cdFx0XHRcdG1hcmdpbjogMCA0MHJweDtcclxuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAxNnJweDtcclxuXHRcdFx0XHRwYWRkaW5nOiAwO1xyXG5cclxuXHRcdFx0XHQudW5pLXNlYXJjaGJhcl9fYm94IHtcclxuXHRcdFx0XHRcdHBhZGRpbmc6IDA7XHJcblx0XHRcdFx0XHRib3JkZXItcmFkaXVzOiAxNnJweCAhaW1wb3J0YW50O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0PnRleHQge1xyXG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdFx0XHRcdGZvbnQtc2l6ZTogMTRweDtcclxuXHRcdFx0XHRkaXNwbGF5OiBibG9jaztcclxuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRcdFx0cGFkZGluZy10b3A6IDQwcnB4O1xyXG5cdFx0XHRcdHBhZGRpbmctYm90dG9tOiAyMHJweDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LnVzZXItbGlzdCB7XHJcblx0XHRcdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcblx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdFx0XHRvdmVyZmxvdy14OiBhdXRvO1xyXG5cclxuXHRcdFx0XHQudXNlci1saXN0LWJveCB7XHJcblx0XHRcdFx0XHR3aWR0aDogMTQwcnB4O1xyXG5cdFx0XHRcdFx0cGFkZGluZzogMjBycHg7XHJcblx0XHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblxyXG5cdFx0XHRcdFx0aW1hZ2Uge1xyXG5cdFx0XHRcdFx0XHR3aWR0aDogMTAwcnB4O1xyXG5cdFx0XHRcdFx0XHRoZWlnaHQ6IDEwMHJweDtcclxuXHRcdFx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMTAwcnB4O1xyXG5cdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdHRleHQge1xyXG5cdFx0XHRcdFx0XHRmb250LXNpemU6IDI0cnB4O1xyXG5cdFx0XHRcdFx0XHRjb2xvcjogIzFFMUUxRTtcclxuXHRcdFx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC5taWRkbGUge1xyXG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRcdGhlaWdodDogY2FsYygxMDB2aCAtIDI0OHJweCk7XHJcblx0XHRcdHBhZGRpbmctdG9wOiA0MHJweDtcclxuXHJcblx0XHRcdHRleHQge1xyXG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdFx0XHRcdGZvbnQtc2l6ZTogMTRweDtcclxuXHRcdFx0XHRkaXNwbGF5OiBibG9jaztcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aW1hZ2Uge1xyXG5cdFx0XHRcdHdpZHRoOiA0MHJweDtcclxuXHRcdFx0XHRoZWlnaHQ6IDQwcnB4O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG48L3N0eWxlPlxuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxcXFxkaXN0XFxcXGxvYWRlci5qcz8/cmVmLS0xMC1vbmVPZi0xLTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcY3NzLWxvYWRlclxcXFxkaXN0XFxcXGNqcy5qcz8/cmVmLS0xMC1vbmVPZi0xLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHN0eWxlUG9zdExvYWRlci5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTAtb25lT2YtMS0yIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXHBvc3Rjc3MtbG9hZGVyXFxcXHNyY1xcXFxpbmRleC5qcz8/cmVmLS0xMC1vbmVPZi0xLTMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcbGVzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tMTAtb25lT2YtMS00IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMC1vbmVPZi0xLTUhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1sZXNzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXFxcXGRpc3RcXFxcbG9hZGVyLmpzPz9yZWYtLTEwLW9uZU9mLTEtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxjc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTEwLW9uZU9mLTEtMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGxvYWRlcnNcXFxcc3R5bGVQb3N0TG9hZGVyLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMC1vbmVPZi0xLTIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxccG9zdGNzcy1sb2FkZXJcXFxcc3JjXFxcXGluZGV4LmpzPz9yZWYtLTEwLW9uZU9mLTEtMyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxsZXNzLWxvYWRlclxcXFxkaXN0XFxcXGNqcy5qcz8/cmVmLS0xMC1vbmVPZi0xLTQhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEwLW9uZU9mLTEtNSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9pbmRleC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPWxlc3MmXCIiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbiAgICBpZihtb2R1bGUuaG90KSB7XG4gICAgICAvLyAxNjUzMzEyMjUzNTA3XG4gICAgICB2YXIgY3NzUmVsb2FkID0gcmVxdWlyZShcIkQ6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luL2Rpc3QvaG1yL2hvdE1vZHVsZVJlcGxhY2VtZW50LmpzXCIpKG1vZHVsZS5pZCwge1wiaG1yXCI6dHJ1ZSxcInB1YmxpY1BhdGhcIjpcIi4uLy4uL1wiLFwibG9jYWxzXCI6ZmFsc2V9KTtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShjc3NSZWxvYWQpO1xuICAgICAgbW9kdWxlLmhvdC5hY2NlcHQodW5kZWZpbmVkLCBjc3NSZWxvYWQpO1xuICAgIH1cbiAgIl0sInNvdXJjZVJvb3QiOiIifQ==
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-toutiao/pages/userInfo/contactUs/contactUs.js b/unpackage/dist/dev/mp-toutiao/pages/userInfo/contactUs/contactUs.js
index 9faac08..d091135 100644
--- a/unpackage/dist/dev/mp-toutiao/pages/userInfo/contactUs/contactUs.js
+++ b/unpackage/dist/dev/mp-toutiao/pages/userInfo/contactUs/contactUs.js
@@ -1,6 +1,6 @@
(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["pages/userInfo/contactUs/contactUs"],{
-/***/ 100:
+/***/ 108:
/*!********************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/main.js?{"page":"pages%2FuserInfo%2FcontactUs%2FcontactUs"} ***!
\********************************************************************************************/
@@ -10,13 +10,13 @@
"use strict";
/* WEBPACK VAR INJECTION */(function(wx, createPage) {__webpack_require__(/*! uni-pages */ 5);
var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 3));
-var _contactUs = _interopRequireDefault(__webpack_require__(/*! ./pages/userInfo/contactUs/contactUs.vue */ 101));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}wx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;
+var _contactUs = _interopRequireDefault(__webpack_require__(/*! ./pages/userInfo/contactUs/contactUs.vue */ 109));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}wx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;
createPage(_contactUs.default);
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-toutiao/dist/index.js */ 1)["default"], __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-toutiao/dist/index.js */ 1)["createPage"]))
/***/ }),
-/***/ 101:
+/***/ 109:
/*!***********************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/pages/userInfo/contactUs/contactUs.vue ***!
\***********************************************************************/
@@ -25,8 +25,8 @@ createPage(_contactUs.default);
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _contactUs_vue_vue_type_template_id_1c653070___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./contactUs.vue?vue&type=template&id=1c653070& */ 102);
-/* harmony import */ var _contactUs_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./contactUs.vue?vue&type=script&lang=js& */ 104);
+/* harmony import */ var _contactUs_vue_vue_type_template_id_1c653070___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./contactUs.vue?vue&type=template&id=1c653070& */ 110);
+/* harmony import */ var _contactUs_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./contactUs.vue?vue&type=script&lang=js& */ 112);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _contactUs_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _contactUs_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 11);
@@ -55,7 +55,7 @@ component.options.__file = "pages/userInfo/contactUs/contactUs.vue"
/***/ }),
-/***/ 102:
+/***/ 110:
/*!******************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/pages/userInfo/contactUs/contactUs.vue?vue&type=template&id=1c653070& ***!
\******************************************************************************************************/
@@ -64,7 +64,7 @@ component.options.__file = "pages/userInfo/contactUs/contactUs.vue"
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_contactUs_vue_vue_type_template_id_1c653070___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./contactUs.vue?vue&type=template&id=1c653070& */ 103);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_contactUs_vue_vue_type_template_id_1c653070___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./contactUs.vue?vue&type=template&id=1c653070& */ 111);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_contactUs_vue_vue_type_template_id_1c653070___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_contactUs_vue_vue_type_template_id_1c653070___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
@@ -77,7 +77,7 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
-/***/ 103:
+/***/ 111:
/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/pages/userInfo/contactUs/contactUs.vue?vue&type=template&id=1c653070& ***!
\******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -104,7 +104,7 @@ render._withStripped = true
/***/ }),
-/***/ 104:
+/***/ 112:
/*!************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/pages/userInfo/contactUs/contactUs.vue?vue&type=script&lang=js& ***!
\************************************************************************************************/
@@ -113,14 +113,14 @@ render._withStripped = true
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_contactUs_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./contactUs.vue?vue&type=script&lang=js& */ 105);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_contactUs_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./contactUs.vue?vue&type=script&lang=js& */ 113);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_contactUs_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_contactUs_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_contactUs_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_contactUs_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_contactUs_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
-/***/ 105:
+/***/ 113:
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/pages/userInfo/contactUs/contactUs.vue?vue&type=script&lang=js& ***!
\*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -145,5 +145,5 @@ var _default =
/***/ })
-},[[100,"common/runtime","common/vendor"]]]);
+},[[108,"common/runtime","common/vendor"]]]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy91c2VySW5mby9jb250YWN0VXMvY29udGFjdFVzLnZ1ZT8xODNkIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL3VzZXJJbmZvL2NvbnRhY3RVcy9jb250YWN0VXMudnVlP2JiZTEiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svcGFnZXMvdXNlckluZm8vY29udGFjdFVzL2NvbnRhY3RVcy52dWU/ODA5ZSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy91c2VySW5mby9jb250YWN0VXMvY29udGFjdFVzLnZ1ZT9iNzYyIiwidW5pLWFwcDovLy9wYWdlcy91c2VySW5mby9jb250YWN0VXMvY29udGFjdFVzLnZ1ZSJdLCJuYW1lcyI6WyJ3eCIsIl9fd2VicGFja19yZXF1aXJlX1VOSV9NUF9QTFVHSU5fXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJjcmVhdGVQYWdlIiwiUGFnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztzREFBQTtBQUNBO0FBQ0Esa0gsNkZBRm1CQSxFQUFFLENBQUNDLGlDQUFILEdBQXVDQyxtQkFBdkM7QUFHbkJDLFVBQVUsQ0FBQ0Msa0JBQUQsQ0FBVixDOzs7Ozs7Ozs7Ozs7O0FDSEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFzSDtBQUN0SDtBQUM2RDtBQUNMOzs7QUFHeEQ7QUFDcUs7QUFDckssZ0JBQWdCLCtLQUFVO0FBQzFCLEVBQUUsK0VBQU07QUFDUixFQUFFLG9GQUFNO0FBQ1IsRUFBRSw2RkFBZTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSx3RkFBVTtBQUNaO0FBQ0E7O0FBRUE7QUFDZSxnRjs7Ozs7Ozs7Ozs7O0FDdEJmO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7O0FDQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNSQTtBQUFBO0FBQUE7QUFBQTtBQUFtbUIsQ0FBZ0IsNm5CQUFHLEVBQUMsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ092bkI7QUFDQSxNQURBLGtCQUNBO0FBQ0E7OztBQUdBLEdBTEE7QUFNQSxhQU5BLEUiLCJmaWxlIjoicGFnZXMvdXNlckluZm8vY29udGFjdFVzL2NvbnRhY3RVcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAndW5pLXBhZ2VzJzt3eC5fX3dlYnBhY2tfcmVxdWlyZV9VTklfTVBfUExVR0lOX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fO1xuaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgUGFnZSBmcm9tICcuL3BhZ2VzL3VzZXJJbmZvL2NvbnRhY3RVcy9jb250YWN0VXMudnVlJ1xuY3JlYXRlUGFnZShQYWdlKSIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vY29udGFjdFVzLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xYzY1MzA3MCZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2NvbnRhY3RVcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL2NvbnRhY3RVcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxccnVudGltZVxcXFxjb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFnZXMvdXNlckluZm8vY29udGFjdFVzL2NvbnRhY3RVcy52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGxvYWRlcnNcXFxcdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTYtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFx0ZW1wbGF0ZS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stdW5pLWFwcC1sb2FkZXJcXFxccGFnZS1tZXRhLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL2NvbnRhY3RVcy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWM2NTMwNzAmXCIiLCJ2YXIgY29tcG9uZW50c1xudmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG59XG52YXIgcmVjeWNsYWJsZVJlbmRlciA9IGZhbHNlXG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IiwiaW1wb3J0IG1vZCBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMi0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHNjcmlwdC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9jb250YWN0VXMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL2NvbnRhY3RVcy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCI8dGVtcGxhdGU+XHJcblx0PHZpZXc+XHJcblx0XHQ8dGV4dD7ov5nmmK/ogZTns7vmiJHku6zpobXpnaI8L3RleHQ+XHJcblx0PC92aWV3PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdFxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRcclxuXHRcdH1cclxuXHR9XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlPlxyXG5cclxuPC9zdHlsZT5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-toutiao/pages/userInfo/myCollection/myCollection.js b/unpackage/dist/dev/mp-toutiao/pages/userInfo/myCollection/myCollection.js
index 47e0be1..b90763b 100644
--- a/unpackage/dist/dev/mp-toutiao/pages/userInfo/myCollection/myCollection.js
+++ b/unpackage/dist/dev/mp-toutiao/pages/userInfo/myCollection/myCollection.js
@@ -1,6 +1,54 @@
(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["pages/userInfo/myCollection/myCollection"],{
-/***/ 87:
+/***/ 100:
+/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/pages/userInfo/myCollection/myCollection.vue?vue&type=script&lang=js& ***!
+ \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _regenerator = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/regenerator */ 20));
+
+
+
+
+
+
+
+
+
+var _myCollection = __webpack_require__(/*! @/api/myCollection.js */ 101);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {try {var info = gen[key](arg);var value = info.value;} catch (error) {reject(error);return;}if (info.done) {resolve(value);} else {Promise.resolve(value).then(_next, _throw);}}function _asyncToGenerator(fn) {return function () {var self = this,args = arguments;return new Promise(function (resolve, reject) {var gen = fn.apply(self, args);function _next(value) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);}function _throw(err) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);}_next(undefined);});};}var _default =
+{
+ data: function data() {
+ return {
+ myCollection: [] };
+
+ },
+ onLoad: function onLoad() {
+ this.getMyCollection(1);
+ },
+ methods: {
+ getMyCollection: function getMyCollection(userId) {var _this = this;return _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee() {var data, res;return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:
+ data = {
+ userId: userId };_context.next = 3;return (
+
+ (0, _myCollection.getCollectionList)(data));case 3:res = _context.sent;
+ if (res.data.code === 200) {
+ _this.myCollection = res.data.data;
+ console.log(res);
+ } else {
+ uni.showModal({
+ content: '我的收藏加载失败!',
+ showCancel: false });
+
+ }case 5:case "end":return _context.stop();}}}, _callee);}))();
+ } } };exports.default = _default;
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-toutiao/dist/index.js */ 1)["default"]))
+
+/***/ }),
+
+/***/ 95:
/*!**************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/main.js?{"page":"pages%2FuserInfo%2FmyCollection%2FmyCollection"} ***!
\**************************************************************************************************/
@@ -10,13 +58,13 @@
"use strict";
/* WEBPACK VAR INJECTION */(function(wx, createPage) {__webpack_require__(/*! uni-pages */ 5);
var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 3));
-var _myCollection = _interopRequireDefault(__webpack_require__(/*! ./pages/userInfo/myCollection/myCollection.vue */ 88));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}wx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;
+var _myCollection = _interopRequireDefault(__webpack_require__(/*! ./pages/userInfo/myCollection/myCollection.vue */ 96));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}wx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;
createPage(_myCollection.default);
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-toutiao/dist/index.js */ 1)["default"], __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-toutiao/dist/index.js */ 1)["createPage"]))
/***/ }),
-/***/ 88:
+/***/ 96:
/*!*****************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/pages/userInfo/myCollection/myCollection.vue ***!
\*****************************************************************************/
@@ -25,8 +73,8 @@ createPage(_myCollection.default);
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _myCollection_vue_vue_type_template_id_3165c79c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./myCollection.vue?vue&type=template&id=3165c79c& */ 89);
-/* harmony import */ var _myCollection_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./myCollection.vue?vue&type=script&lang=js& */ 91);
+/* harmony import */ var _myCollection_vue_vue_type_template_id_3165c79c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./myCollection.vue?vue&type=template&id=3165c79c& */ 97);
+/* harmony import */ var _myCollection_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./myCollection.vue?vue&type=script&lang=js& */ 99);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _myCollection_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _myCollection_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 11);
@@ -55,7 +103,7 @@ component.options.__file = "pages/userInfo/myCollection/myCollection.vue"
/***/ }),
-/***/ 89:
+/***/ 97:
/*!************************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/pages/userInfo/myCollection/myCollection.vue?vue&type=template&id=3165c79c& ***!
\************************************************************************************************************/
@@ -64,7 +112,7 @@ component.options.__file = "pages/userInfo/myCollection/myCollection.vue"
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_myCollection_vue_vue_type_template_id_3165c79c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./myCollection.vue?vue&type=template&id=3165c79c& */ 90);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_myCollection_vue_vue_type_template_id_3165c79c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./myCollection.vue?vue&type=template&id=3165c79c& */ 98);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_myCollection_vue_vue_type_template_id_3165c79c___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_myCollection_vue_vue_type_template_id_3165c79c___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
@@ -77,7 +125,7 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
-/***/ 90:
+/***/ 98:
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/pages/userInfo/myCollection/myCollection.vue?vue&type=template&id=3165c79c& ***!
\************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -104,7 +152,7 @@ render._withStripped = true
/***/ }),
-/***/ 91:
+/***/ 99:
/*!******************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/pages/userInfo/myCollection/myCollection.vue?vue&type=script&lang=js& ***!
\******************************************************************************************************/
@@ -113,60 +161,12 @@ render._withStripped = true
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_myCollection_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./myCollection.vue?vue&type=script&lang=js& */ 92);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_myCollection_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./myCollection.vue?vue&type=script&lang=js& */ 100);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_myCollection_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_myCollection_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_myCollection_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_myCollection_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_myCollection_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
-/***/ }),
-
-/***/ 92:
-/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
- !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/pages/userInfo/myCollection/myCollection.vue?vue&type=script&lang=js& ***!
- \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/* WEBPACK VAR INJECTION */(function(uni) {Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _regenerator = _interopRequireDefault(__webpack_require__(/*! ./node_modules/@babel/runtime/regenerator */ 20));
-
-
-
-
-
-
-
-
-
-var _myCollection = __webpack_require__(/*! @/api/myCollection.js */ 93);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {try {var info = gen[key](arg);var value = info.value;} catch (error) {reject(error);return;}if (info.done) {resolve(value);} else {Promise.resolve(value).then(_next, _throw);}}function _asyncToGenerator(fn) {return function () {var self = this,args = arguments;return new Promise(function (resolve, reject) {var gen = fn.apply(self, args);function _next(value) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);}function _throw(err) {asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);}_next(undefined);});};}var _default =
-{
- data: function data() {
- return {
- myCollection: [] };
-
- },
- onLoad: function onLoad() {
- this.getMyCollection(1);
- },
- methods: {
- getMyCollection: function getMyCollection(userId) {var _this = this;return _asyncToGenerator( /*#__PURE__*/_regenerator.default.mark(function _callee() {var data, res;return _regenerator.default.wrap(function _callee$(_context) {while (1) {switch (_context.prev = _context.next) {case 0:
- data = {
- userId: userId };_context.next = 3;return (
-
- (0, _myCollection.getCollectionList)(data));case 3:res = _context.sent;
- if (res.data.code === 200) {
- _this.myCollection = res.data.data;
- console.log(res);
- } else {
- uni.showModal({
- content: '我的收藏加载失败!',
- showCancel: false });
-
- }case 5:case "end":return _context.stop();}}}, _callee);}))();
- } } };exports.default = _default;
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-toutiao/dist/index.js */ 1)["default"]))
-
/***/ })
-},[[87,"common/runtime","common/vendor"]]]);
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy91c2VySW5mby9teUNvbGxlY3Rpb24vbXlDb2xsZWN0aW9uLnZ1ZT84M2JjIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL3VzZXJJbmZvL215Q29sbGVjdGlvbi9teUNvbGxlY3Rpb24udnVlP2I5OGYiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svcGFnZXMvdXNlckluZm8vbXlDb2xsZWN0aW9uL215Q29sbGVjdGlvbi52dWU/MzUxMiIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy91c2VySW5mby9teUNvbGxlY3Rpb24vbXlDb2xsZWN0aW9uLnZ1ZT9kMzBhIiwidW5pLWFwcDovLy9wYWdlcy91c2VySW5mby9teUNvbGxlY3Rpb24vbXlDb2xsZWN0aW9uLnZ1ZSJdLCJuYW1lcyI6WyJ3eCIsIl9fd2VicGFja19yZXF1aXJlX1VOSV9NUF9QTFVHSU5fXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJjcmVhdGVQYWdlIiwiUGFnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztzREFBQTtBQUNBO0FBQ0EsMEgsNkZBRm1CQSxFQUFFLENBQUNDLGlDQUFILEdBQXVDQyxtQkFBdkM7QUFHbkJDLFVBQVUsQ0FBQ0MscUJBQUQsQ0FBVixDOzs7Ozs7Ozs7Ozs7O0FDSEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5SDtBQUN6SDtBQUNnRTtBQUNMOzs7QUFHM0Q7QUFDcUs7QUFDckssZ0JBQWdCLCtLQUFVO0FBQzFCLEVBQUUsa0ZBQU07QUFDUixFQUFFLHVGQUFNO0FBQ1IsRUFBRSxnR0FBZTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSwyRkFBVTtBQUNaO0FBQ0E7O0FBRUE7QUFDZSxnRjs7Ozs7Ozs7Ozs7O0FDdEJmO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7O0FDQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNSQTtBQUFBO0FBQUE7QUFBQTtBQUFzbUIsQ0FBZ0IsZ29CQUFHLEVBQUMsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1UxbkIseUU7QUFDQTtBQUNBLE1BREEsa0JBQ0E7QUFDQTtBQUNBLHNCQURBOztBQUdBLEdBTEE7QUFNQSxRQU5BLG9CQU1BO0FBQ0E7QUFDQSxHQVJBO0FBU0E7QUFDQSxtQkFEQSwyQkFDQSxNQURBLEVBQ0E7QUFDQSxvQkFEQSxHQUNBO0FBQ0EsZ0NBREEsRUFEQTs7QUFJQSw0REFKQSxTQUlBLEdBSkE7QUFLQTtBQUNBO0FBQ0E7QUFDQSxpQkFIQSxNQUdBO0FBQ0E7QUFDQSx3Q0FEQTtBQUVBLHFDQUZBOztBQUlBLGlCQWJBO0FBY0EsS0FmQSxFQVRBLEUiLCJmaWxlIjoicGFnZXMvdXNlckluZm8vbXlDb2xsZWN0aW9uL215Q29sbGVjdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAndW5pLXBhZ2VzJzt3eC5fX3dlYnBhY2tfcmVxdWlyZV9VTklfTVBfUExVR0lOX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fO1xuaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgUGFnZSBmcm9tICcuL3BhZ2VzL3VzZXJJbmZvL215Q29sbGVjdGlvbi9teUNvbGxlY3Rpb24udnVlJ1xuY3JlYXRlUGFnZShQYWdlKSIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vbXlDb2xsZWN0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zMTY1Yzc5YyZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL215Q29sbGVjdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL215Q29sbGVjdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxccnVudGltZVxcXFxjb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFnZXMvdXNlckluZm8vbXlDb2xsZWN0aW9uL215Q29sbGVjdGlvbi52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGxvYWRlcnNcXFxcdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTYtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFx0ZW1wbGF0ZS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stdW5pLWFwcC1sb2FkZXJcXFxccGFnZS1tZXRhLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL215Q29sbGVjdGlvbi52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MzE2NWM3OWMmXCIiLCJ2YXIgY29tcG9uZW50c1xudmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG59XG52YXIgcmVjeWNsYWJsZVJlbmRlciA9IGZhbHNlXG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IiwiaW1wb3J0IG1vZCBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMi0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHNjcmlwdC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9teUNvbGxlY3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL215Q29sbGVjdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCI8dGVtcGxhdGU+XHJcblx0PHZpZXc+XHJcblx0XHQ8dGV4dD7ov5nmmK/miJHnmoTmlLbol488L3RleHQ+XHJcblx0XHQ8dmlldyB2LWZvcj1cIihpdGVtLGluZGV4KSBpbiBteUNvbGxlY3Rpb25cIiA6a2V5PVwiaW5kZXhcIj5cclxuXHRcdFx0PGltYWdlIDpzcmM9XCJpdGVtLmltZ1VybFwiPjwvaW1hZ2U+XHJcblx0XHQ8L3ZpZXc+XHJcblx0PC92aWV3PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuXHRpbXBvcnQge2dldENvbGxlY3Rpb25MaXN0fSBmcm9tICdAL2FwaS9teUNvbGxlY3Rpb24uanMnIFxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0bXlDb2xsZWN0aW9uOltdXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRvbkxvYWQoKSB7XHJcblx0XHRcdHRoaXMuZ2V0TXlDb2xsZWN0aW9uKDEpXHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRcdGFzeW5jIGdldE15Q29sbGVjdGlvbih1c2VySWQpe1xyXG5cdFx0XHRcdGxldCBkYXRhID0ge1xyXG5cdFx0XHRcdFx0dXNlcklkIDogdXNlcklkXHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbnN0IHJlcyA9IGF3YWl0IGdldENvbGxlY3Rpb25MaXN0KGRhdGEpXHJcblx0XHRcdFx0aWYocmVzLmRhdGEuY29kZSA9PT0gMjAwKXtcclxuXHRcdFx0XHRcdHRoaXMubXlDb2xsZWN0aW9uID0gcmVzLmRhdGEuZGF0YVxyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzKVxyXG5cdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6ICfmiJHnmoTmlLbol4/liqDovb3lpLHotKXvvIEnLCBcclxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2VcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGU+XHJcblxyXG48L3N0eWxlPlxyXG4iXSwic291cmNlUm9vdCI6IiJ9
\ No newline at end of file
+},[[95,"common/runtime","common/vendor"]]]);
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvdXNlckluZm8vbXlDb2xsZWN0aW9uL215Q29sbGVjdGlvbi52dWUiLCJ1bmktYXBwOi8vL21haW4uanMiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svcGFnZXMvdXNlckluZm8vbXlDb2xsZWN0aW9uL215Q29sbGVjdGlvbi52dWU/ODNiYyIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy91c2VySW5mby9teUNvbGxlY3Rpb24vbXlDb2xsZWN0aW9uLnZ1ZT9iOThmIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL3VzZXJJbmZvL215Q29sbGVjdGlvbi9teUNvbGxlY3Rpb24udnVlPzM1MTIiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svcGFnZXMvdXNlckluZm8vbXlDb2xsZWN0aW9uL215Q29sbGVjdGlvbi52dWU/ZDMwYSJdLCJuYW1lcyI6WyJ3eCIsIl9fd2VicGFja19yZXF1aXJlX1VOSV9NUF9QTFVHSU5fXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJjcmVhdGVQYWdlIiwiUGFnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVQSwwRTtBQUNBO0FBQ0EsTUFEQSxrQkFDQTtBQUNBO0FBQ0Esc0JBREE7O0FBR0EsR0FMQTtBQU1BLFFBTkEsb0JBTUE7QUFDQTtBQUNBLEdBUkE7QUFTQTtBQUNBLG1CQURBLDJCQUNBLE1BREEsRUFDQTtBQUNBLG9CQURBLEdBQ0E7QUFDQSxnQ0FEQSxFQURBOztBQUlBLDREQUpBLFNBSUEsR0FKQTtBQUtBO0FBQ0E7QUFDQTtBQUNBLGlCQUhBLE1BR0E7QUFDQTtBQUNBLHdDQURBO0FBRUEscUNBRkE7O0FBSUEsaUJBYkE7QUFjQSxLQWZBLEVBVEEsRTs7Ozs7Ozs7Ozs7OztzRENYQTtBQUNBO0FBQ0EsMEgsNkZBRm1CQSxFQUFFLENBQUNDLGlDQUFILEdBQXVDQyxtQkFBdkM7QUFHbkJDLFVBQVUsQ0FBQ0MscUJBQUQsQ0FBVixDOzs7Ozs7Ozs7Ozs7O0FDSEE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUF5SDtBQUN6SDtBQUNnRTtBQUNMOzs7QUFHM0Q7QUFDcUs7QUFDckssZ0JBQWdCLCtLQUFVO0FBQzFCLEVBQUUsa0ZBQU07QUFDUixFQUFFLHVGQUFNO0FBQ1IsRUFBRSxnR0FBZTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRSwyRkFBVTtBQUNaO0FBQ0E7O0FBRUE7QUFDZSxnRjs7Ozs7Ozs7Ozs7O0FDdEJmO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7O0FDQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNSQTtBQUFBO0FBQUE7QUFBQTtBQUFzbUIsQ0FBZ0IsZ29CQUFHLEVBQUMsQyIsImZpbGUiOiJwYWdlcy91c2VySW5mby9teUNvbGxlY3Rpb24vbXlDb2xsZWN0aW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3PlxyXG5cdFx0PHRleHQ+6L+Z5piv5oiR55qE5pS26JePPC90ZXh0PlxyXG5cdFx0PHZpZXcgdi1mb3I9XCIoaXRlbSxpbmRleCkgaW4gbXlDb2xsZWN0aW9uXCIgOmtleT1cImluZGV4XCI+XHJcblx0XHRcdDxpbWFnZSA6c3JjPVwiaXRlbS5pbWdVcmxcIj48L2ltYWdlPlxyXG5cdFx0PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0aW1wb3J0IHtnZXRDb2xsZWN0aW9uTGlzdH0gZnJvbSAnQC9hcGkvbXlDb2xsZWN0aW9uLmpzJyBcclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdG15Q29sbGVjdGlvbjpbXVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0b25Mb2FkKCkge1xyXG5cdFx0XHR0aGlzLmdldE15Q29sbGVjdGlvbigxKVxyXG5cdFx0fSxcclxuXHRcdG1ldGhvZHM6IHtcclxuXHRcdFx0XHRhc3luYyBnZXRNeUNvbGxlY3Rpb24odXNlcklkKXtcclxuXHRcdFx0XHRsZXQgZGF0YSA9IHtcclxuXHRcdFx0XHRcdHVzZXJJZCA6IHVzZXJJZFxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb25zdCByZXMgPSBhd2FpdCBnZXRDb2xsZWN0aW9uTGlzdChkYXRhKVxyXG5cdFx0XHRcdGlmKHJlcy5kYXRhLmNvZGUgPT09IDIwMCl7XHJcblx0XHRcdFx0XHR0aGlzLm15Q29sbGVjdGlvbiA9IHJlcy5kYXRhLmRhdGFcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcylcclxuXHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdFx0XHRjb250ZW50OiAn5oiR55qE5pS26JeP5Yqg6L295aSx6LSl77yBJywgXHJcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlPlxyXG5cclxuPC9zdHlsZT5cclxuIiwiaW1wb3J0ICd1bmktcGFnZXMnO3d4Ll9fd2VicGFja19yZXF1aXJlX1VOSV9NUF9QTFVHSU5fXyA9IF9fd2VicGFja19yZXF1aXJlX187XG5pbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcbmltcG9ydCBQYWdlIGZyb20gJy4vcGFnZXMvdXNlckluZm8vbXlDb2xsZWN0aW9uL215Q29sbGVjdGlvbi52dWUnXG5jcmVhdGVQYWdlKFBhZ2UpIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSBmcm9tIFwiLi9teUNvbGxlY3Rpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTMxNjVjNzljJlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vbXlDb2xsZWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vbXlDb2xsZWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxydW50aW1lXFxcXGNvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWdlcy91c2VySW5mby9teUNvbGxlY3Rpb24vbXlDb2xsZWN0aW9uLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsImV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFx0ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xNi0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHRlbXBsYXRlLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay11bmktYXBwLWxvYWRlclxcXFxwYWdlLW1ldGEuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vbXlDb2xsZWN0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zMTY1Yzc5YyZcIiIsInZhciBjb21wb25lbnRzXG52YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbn1cbnZhciByZWN5Y2xhYmxlUmVuZGVyID0gZmFsc2VcbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL215Q29sbGVjdGlvbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcYmFiZWwtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTItMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzY3JpcHQuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vbXlDb2xsZWN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-toutiao/pages/userInfo/question/question.js b/unpackage/dist/dev/mp-toutiao/pages/userInfo/question/question.js
index 3971906..031f139 100644
--- a/unpackage/dist/dev/mp-toutiao/pages/userInfo/question/question.js
+++ b/unpackage/dist/dev/mp-toutiao/pages/userInfo/question/question.js
@@ -1,6 +1,6 @@
(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["pages/userInfo/question/question"],{
-/***/ 94:
+/***/ 102:
/*!******************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/main.js?{"page":"pages%2FuserInfo%2Fquestion%2Fquestion"} ***!
\******************************************************************************************/
@@ -10,13 +10,13 @@
"use strict";
/* WEBPACK VAR INJECTION */(function(wx, createPage) {__webpack_require__(/*! uni-pages */ 5);
var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 3));
-var _question = _interopRequireDefault(__webpack_require__(/*! ./pages/userInfo/question/question.vue */ 95));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}wx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;
+var _question = _interopRequireDefault(__webpack_require__(/*! ./pages/userInfo/question/question.vue */ 103));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}wx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;
createPage(_question.default);
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-toutiao/dist/index.js */ 1)["default"], __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-toutiao/dist/index.js */ 1)["createPage"]))
/***/ }),
-/***/ 95:
+/***/ 103:
/*!*********************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/pages/userInfo/question/question.vue ***!
\*********************************************************************/
@@ -25,8 +25,8 @@ createPage(_question.default);
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _question_vue_vue_type_template_id_2dd48d32___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./question.vue?vue&type=template&id=2dd48d32& */ 96);
-/* harmony import */ var _question_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./question.vue?vue&type=script&lang=js& */ 98);
+/* harmony import */ var _question_vue_vue_type_template_id_2dd48d32___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./question.vue?vue&type=template&id=2dd48d32& */ 104);
+/* harmony import */ var _question_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./question.vue?vue&type=script&lang=js& */ 106);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _question_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _question_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 11);
@@ -55,7 +55,7 @@ component.options.__file = "pages/userInfo/question/question.vue"
/***/ }),
-/***/ 96:
+/***/ 104:
/*!****************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/pages/userInfo/question/question.vue?vue&type=template&id=2dd48d32& ***!
\****************************************************************************************************/
@@ -64,7 +64,7 @@ component.options.__file = "pages/userInfo/question/question.vue"
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_question_vue_vue_type_template_id_2dd48d32___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./question.vue?vue&type=template&id=2dd48d32& */ 97);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_question_vue_vue_type_template_id_2dd48d32___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./question.vue?vue&type=template&id=2dd48d32& */ 105);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_question_vue_vue_type_template_id_2dd48d32___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_question_vue_vue_type_template_id_2dd48d32___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
@@ -77,7 +77,7 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
-/***/ 97:
+/***/ 105:
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/pages/userInfo/question/question.vue?vue&type=template&id=2dd48d32& ***!
\****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -104,7 +104,7 @@ render._withStripped = true
/***/ }),
-/***/ 98:
+/***/ 106:
/*!**********************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/pages/userInfo/question/question.vue?vue&type=script&lang=js& ***!
\**********************************************************************************************/
@@ -113,14 +113,14 @@ render._withStripped = true
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_question_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./question.vue?vue&type=script&lang=js& */ 99);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_question_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./question.vue?vue&type=script&lang=js& */ 107);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_question_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_question_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_question_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_question_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_question_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
-/***/ 99:
+/***/ 107:
/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/pages/userInfo/question/question.vue?vue&type=script&lang=js& ***!
\*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -145,5 +145,5 @@ var _default =
/***/ })
-},[[94,"common/runtime","common/vendor"]]]);
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy91c2VySW5mby9xdWVzdGlvbi9xdWVzdGlvbi52dWU/ZDQ1NiIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy91c2VySW5mby9xdWVzdGlvbi9xdWVzdGlvbi52dWU/NmNkNyIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy91c2VySW5mby9xdWVzdGlvbi9xdWVzdGlvbi52dWU/ZmNhZCIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy91c2VySW5mby9xdWVzdGlvbi9xdWVzdGlvbi52dWU/MDgyZiIsInVuaS1hcHA6Ly8vcGFnZXMvdXNlckluZm8vcXVlc3Rpb24vcXVlc3Rpb24udnVlIl0sIm5hbWVzIjpbInd4IiwiX193ZWJwYWNrX3JlcXVpcmVfVU5JX01QX1BMVUdJTl9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsImNyZWF0ZVBhZ2UiLCJQYWdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O3NEQUFBO0FBQ0E7QUFDQSw4Ryw2RkFGbUJBLEVBQUUsQ0FBQ0MsaUNBQUgsR0FBdUNDLG1CQUF2QztBQUduQkMsVUFBVSxDQUFDQyxpQkFBRCxDQUFWLEM7Ozs7Ozs7Ozs7Ozs7QUNIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXFIO0FBQ3JIO0FBQzREO0FBQ0w7OztBQUd2RDtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSw4RUFBTTtBQUNSLEVBQUUsbUZBQU07QUFDUixFQUFFLDRGQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHVGQUFVO0FBQ1o7QUFDQTs7QUFFQTtBQUNlLGdGOzs7Ozs7Ozs7Ozs7QUN0QmY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQ1JBO0FBQUE7QUFBQTtBQUFBO0FBQWttQixDQUFnQiw0bkJBQUcsRUFBQyxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDT3RuQjtBQUNBLE1BREEsa0JBQ0E7QUFDQTs7O0FBR0EsR0FMQTtBQU1BLGFBTkEsRSIsImZpbGUiOiJwYWdlcy91c2VySW5mby9xdWVzdGlvbi9xdWVzdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAndW5pLXBhZ2VzJzt3eC5fX3dlYnBhY2tfcmVxdWlyZV9VTklfTVBfUExVR0lOX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fO1xuaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgUGFnZSBmcm9tICcuL3BhZ2VzL3VzZXJJbmZvL3F1ZXN0aW9uL3F1ZXN0aW9uLnZ1ZSdcbmNyZWF0ZVBhZ2UoUGFnZSkiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3F1ZXN0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yZGQ0OGQzMiZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL3F1ZXN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vcXVlc3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXHJ1bnRpbWVcXFxcY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhZ2VzL3VzZXJJbmZvL3F1ZXN0aW9uL3F1ZXN0aW9uLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsImV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFx0ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xNi0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHRlbXBsYXRlLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay11bmktYXBwLWxvYWRlclxcXFxwYWdlLW1ldGEuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vcXVlc3Rpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJkZDQ4ZDMyJlwiIiwidmFyIGNvbXBvbmVudHNcbnZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxufVxudmFyIHJlY3ljbGFibGVSZW5kZXIgPSBmYWxzZVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSIsImltcG9ydCBtb2QgZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcYmFiZWwtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTItMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzY3JpcHQuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vcXVlc3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3F1ZXN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiIsIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldz5cclxuXHRcdDx0ZXh0Pui/meaYr+W4uOingemXrumimOmhtemdojwvdGV4dD5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdFxyXG5cdFx0fVxyXG5cdH1cclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGU+XHJcblxyXG48L3N0eWxlPlxyXG4iXSwic291cmNlUm9vdCI6IiJ9
\ No newline at end of file
+},[[102,"common/runtime","common/vendor"]]]);
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy91c2VySW5mby9xdWVzdGlvbi9xdWVzdGlvbi52dWU/ZDQ1NiIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy91c2VySW5mby9xdWVzdGlvbi9xdWVzdGlvbi52dWU/NmNkNyIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy91c2VySW5mby9xdWVzdGlvbi9xdWVzdGlvbi52dWU/ZmNhZCIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy91c2VySW5mby9xdWVzdGlvbi9xdWVzdGlvbi52dWU/MDgyZiIsInVuaS1hcHA6Ly8vcGFnZXMvdXNlckluZm8vcXVlc3Rpb24vcXVlc3Rpb24udnVlIl0sIm5hbWVzIjpbInd4IiwiX193ZWJwYWNrX3JlcXVpcmVfVU5JX01QX1BMVUdJTl9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsImNyZWF0ZVBhZ2UiLCJQYWdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O3NEQUFBO0FBQ0E7QUFDQSwrRyw2RkFGbUJBLEVBQUUsQ0FBQ0MsaUNBQUgsR0FBdUNDLG1CQUF2QztBQUduQkMsVUFBVSxDQUFDQyxpQkFBRCxDQUFWLEM7Ozs7Ozs7Ozs7Ozs7QUNIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXFIO0FBQ3JIO0FBQzREO0FBQ0w7OztBQUd2RDtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSw4RUFBTTtBQUNSLEVBQUUsbUZBQU07QUFDUixFQUFFLDRGQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHVGQUFVO0FBQ1o7QUFDQTs7QUFFQTtBQUNlLGdGOzs7Ozs7Ozs7Ozs7QUN0QmY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQ1JBO0FBQUE7QUFBQTtBQUFBO0FBQWttQixDQUFnQiw0bkJBQUcsRUFBQyxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDT3RuQjtBQUNBLE1BREEsa0JBQ0E7QUFDQTs7O0FBR0EsR0FMQTtBQU1BLGFBTkEsRSIsImZpbGUiOiJwYWdlcy91c2VySW5mby9xdWVzdGlvbi9xdWVzdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAndW5pLXBhZ2VzJzt3eC5fX3dlYnBhY2tfcmVxdWlyZV9VTklfTVBfUExVR0lOX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fO1xuaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgUGFnZSBmcm9tICcuL3BhZ2VzL3VzZXJJbmZvL3F1ZXN0aW9uL3F1ZXN0aW9uLnZ1ZSdcbmNyZWF0ZVBhZ2UoUGFnZSkiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3F1ZXN0aW9uLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yZGQ0OGQzMiZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL3F1ZXN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vcXVlc3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXHJ1bnRpbWVcXFxcY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhZ2VzL3VzZXJJbmZvL3F1ZXN0aW9uL3F1ZXN0aW9uLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsImV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFx0ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xNi0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHRlbXBsYXRlLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay11bmktYXBwLWxvYWRlclxcXFxwYWdlLW1ldGEuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vcXVlc3Rpb24udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTJkZDQ4ZDMyJlwiIiwidmFyIGNvbXBvbmVudHNcbnZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxufVxudmFyIHJlY3ljbGFibGVSZW5kZXIgPSBmYWxzZVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSIsImltcG9ydCBtb2QgZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcYmFiZWwtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTItMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzY3JpcHQuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vcXVlc3Rpb24udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3F1ZXN0aW9uLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiIsIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldz5cclxuXHRcdDx0ZXh0Pui/meaYr+W4uOingemXrumimOmhtemdojwvdGV4dD5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdFxyXG5cdFx0fVxyXG5cdH1cclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGU+XHJcblxyXG48L3N0eWxlPlxyXG4iXSwic291cmNlUm9vdCI6IiJ9
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-toutiao/pages/userInfo/setting/setting.js b/unpackage/dist/dev/mp-toutiao/pages/userInfo/setting/setting.js
index ed1351e..acf3889 100644
--- a/unpackage/dist/dev/mp-toutiao/pages/userInfo/setting/setting.js
+++ b/unpackage/dist/dev/mp-toutiao/pages/userInfo/setting/setting.js
@@ -1,6 +1,6 @@
(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["pages/userInfo/setting/setting"],{
-/***/ 106:
+/***/ 114:
/*!****************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/main.js?{"page":"pages%2FuserInfo%2Fsetting%2Fsetting"} ***!
\****************************************************************************************/
@@ -10,13 +10,13 @@
"use strict";
/* WEBPACK VAR INJECTION */(function(wx, createPage) {__webpack_require__(/*! uni-pages */ 5);
var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 3));
-var _setting = _interopRequireDefault(__webpack_require__(/*! ./pages/userInfo/setting/setting.vue */ 107));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}wx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;
+var _setting = _interopRequireDefault(__webpack_require__(/*! ./pages/userInfo/setting/setting.vue */ 115));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}wx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;
createPage(_setting.default);
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-toutiao/dist/index.js */ 1)["default"], __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-toutiao/dist/index.js */ 1)["createPage"]))
/***/ }),
-/***/ 107:
+/***/ 115:
/*!*******************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/pages/userInfo/setting/setting.vue ***!
\*******************************************************************/
@@ -25,8 +25,8 @@ createPage(_setting.default);
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _setting_vue_vue_type_template_id_3b3bbed8___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setting.vue?vue&type=template&id=3b3bbed8& */ 108);
-/* harmony import */ var _setting_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setting.vue?vue&type=script&lang=js& */ 110);
+/* harmony import */ var _setting_vue_vue_type_template_id_3b3bbed8___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setting.vue?vue&type=template&id=3b3bbed8& */ 116);
+/* harmony import */ var _setting_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setting.vue?vue&type=script&lang=js& */ 118);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _setting_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _setting_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 11);
@@ -55,7 +55,7 @@ component.options.__file = "pages/userInfo/setting/setting.vue"
/***/ }),
-/***/ 108:
+/***/ 116:
/*!**************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/pages/userInfo/setting/setting.vue?vue&type=template&id=3b3bbed8& ***!
\**************************************************************************************************/
@@ -64,7 +64,7 @@ component.options.__file = "pages/userInfo/setting/setting.vue"
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_setting_vue_vue_type_template_id_3b3bbed8___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./setting.vue?vue&type=template&id=3b3bbed8& */ 109);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_setting_vue_vue_type_template_id_3b3bbed8___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./setting.vue?vue&type=template&id=3b3bbed8& */ 117);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_setting_vue_vue_type_template_id_3b3bbed8___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_setting_vue_vue_type_template_id_3b3bbed8___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
@@ -77,7 +77,7 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
-/***/ 109:
+/***/ 117:
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/pages/userInfo/setting/setting.vue?vue&type=template&id=3b3bbed8& ***!
\**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -104,7 +104,7 @@ render._withStripped = true
/***/ }),
-/***/ 110:
+/***/ 118:
/*!********************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/pages/userInfo/setting/setting.vue?vue&type=script&lang=js& ***!
\********************************************************************************************/
@@ -113,14 +113,14 @@ render._withStripped = true
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_setting_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./setting.vue?vue&type=script&lang=js& */ 111);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_setting_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./setting.vue?vue&type=script&lang=js& */ 119);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_setting_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_setting_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_setting_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_setting_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_setting_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
-/***/ 111:
+/***/ 119:
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/pages/userInfo/setting/setting.vue?vue&type=script&lang=js& ***!
\***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -145,5 +145,5 @@ var _default =
/***/ })
-},[[106,"common/runtime","common/vendor"]]]);
+},[[114,"common/runtime","common/vendor"]]]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy91c2VySW5mby9zZXR0aW5nL3NldHRpbmcudnVlPzc2OTUiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svcGFnZXMvdXNlckluZm8vc2V0dGluZy9zZXR0aW5nLnZ1ZT9mYTRlIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3BhZ2VzL3VzZXJJbmZvL3NldHRpbmcvc2V0dGluZy52dWU/MzliOCIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy91c2VySW5mby9zZXR0aW5nL3NldHRpbmcudnVlP2JjYjYiLCJ1bmktYXBwOi8vL3BhZ2VzL3VzZXJJbmZvL3NldHRpbmcvc2V0dGluZy52dWUiXSwibmFtZXMiOlsid3giLCJfX3dlYnBhY2tfcmVxdWlyZV9VTklfTVBfUExVR0lOX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwiY3JlYXRlUGFnZSIsIlBhZ2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7c0RBQUE7QUFDQTtBQUNBLDRHLDZGQUZtQkEsRUFBRSxDQUFDQyxpQ0FBSCxHQUF1Q0MsbUJBQXZDO0FBR25CQyxVQUFVLENBQUNDLGdCQUFELENBQVYsQzs7Ozs7Ozs7Ozs7OztBQ0hBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0g7QUFDcEg7QUFDMkQ7QUFDTDs7O0FBR3REO0FBQ3FLO0FBQ3JLLGdCQUFnQiwrS0FBVTtBQUMxQixFQUFFLDZFQUFNO0FBQ1IsRUFBRSxrRkFBTTtBQUNSLEVBQUUsMkZBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsc0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0Y7Ozs7Ozs7Ozs7OztBQ3RCZjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7OztBQ0FBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0FDUkE7QUFBQTtBQUFBO0FBQUE7QUFBaW1CLENBQWdCLDJuQkFBRyxFQUFDLEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNPcm5CO0FBQ0EsTUFEQSxrQkFDQTtBQUNBOzs7QUFHQSxHQUxBO0FBTUEsYUFOQSxFIiwiZmlsZSI6InBhZ2VzL3VzZXJJbmZvL3NldHRpbmcvc2V0dGluZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAndW5pLXBhZ2VzJzt3eC5fX3dlYnBhY2tfcmVxdWlyZV9VTklfTVBfUExVR0lOX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fO1xuaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgUGFnZSBmcm9tICcuL3BhZ2VzL3VzZXJJbmZvL3NldHRpbmcvc2V0dGluZy52dWUnXG5jcmVhdGVQYWdlKFBhZ2UpIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSBmcm9tIFwiLi9zZXR0aW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zYjNiYmVkOCZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL3NldHRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9zZXR0aW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxydW50aW1lXFxcXGNvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWdlcy91c2VySW5mby9zZXR0aW5nL3NldHRpbmcudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHRlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTE2LTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcdGVtcGxhdGUuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXVuaS1hcHAtbG9hZGVyXFxcXHBhZ2UtbWV0YS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi9zZXR0aW5nLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zYjNiYmVkOCZcIiIsInZhciBjb21wb25lbnRzXG52YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbn1cbnZhciByZWN5Y2xhYmxlUmVuZGVyID0gZmFsc2VcbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3NldHRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3NldHRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiPHRlbXBsYXRlPlxyXG5cdDx2aWV3PlxyXG5cdFx0PHRleHQ+6L+Z5piv6K6+572u6aG16Z2iPC90ZXh0PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdG1ldGhvZHM6IHtcclxuXHRcdFx0XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZT5cclxuXHJcbjwvc3R5bGU+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-toutiao/pages/userInfo/userInfo.js b/unpackage/dist/dev/mp-toutiao/pages/userInfo/userInfo.js
index c0b3ef7..5136b4e 100644
--- a/unpackage/dist/dev/mp-toutiao/pages/userInfo/userInfo.js
+++ b/unpackage/dist/dev/mp-toutiao/pages/userInfo/userInfo.js
@@ -1,6 +1,6 @@
(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["pages/userInfo/userInfo"],{
-/***/ 81:
+/***/ 89:
/*!*******************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/main.js?{"page":"pages%2FuserInfo%2FuserInfo"} ***!
\*******************************************************************************/
@@ -10,13 +10,13 @@
"use strict";
/* WEBPACK VAR INJECTION */(function(wx, createPage) {__webpack_require__(/*! uni-pages */ 5);
var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 3));
-var _userInfo = _interopRequireDefault(__webpack_require__(/*! ./pages/userInfo/userInfo.vue */ 82));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}wx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;
+var _userInfo = _interopRequireDefault(__webpack_require__(/*! ./pages/userInfo/userInfo.vue */ 90));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}wx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;
createPage(_userInfo.default);
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-toutiao/dist/index.js */ 1)["default"], __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-toutiao/dist/index.js */ 1)["createPage"]))
/***/ }),
-/***/ 82:
+/***/ 90:
/*!************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/pages/userInfo/userInfo.vue ***!
\************************************************************/
@@ -25,8 +25,8 @@ createPage(_userInfo.default);
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _userInfo_vue_vue_type_template_id_4b7ab2a6___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./userInfo.vue?vue&type=template&id=4b7ab2a6& */ 83);
-/* harmony import */ var _userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./userInfo.vue?vue&type=script&lang=js& */ 85);
+/* harmony import */ var _userInfo_vue_vue_type_template_id_4b7ab2a6___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./userInfo.vue?vue&type=template&id=4b7ab2a6& */ 91);
+/* harmony import */ var _userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./userInfo.vue?vue&type=script&lang=js& */ 93);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 11);
@@ -55,7 +55,7 @@ component.options.__file = "pages/userInfo/userInfo.vue"
/***/ }),
-/***/ 83:
+/***/ 91:
/*!*******************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/pages/userInfo/userInfo.vue?vue&type=template&id=4b7ab2a6& ***!
\*******************************************************************************************/
@@ -64,7 +64,7 @@ component.options.__file = "pages/userInfo/userInfo.vue"
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userInfo_vue_vue_type_template_id_4b7ab2a6___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./userInfo.vue?vue&type=template&id=4b7ab2a6& */ 84);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userInfo_vue_vue_type_template_id_4b7ab2a6___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./userInfo.vue?vue&type=template&id=4b7ab2a6& */ 92);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userInfo_vue_vue_type_template_id_4b7ab2a6___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userInfo_vue_vue_type_template_id_4b7ab2a6___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
@@ -77,7 +77,7 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
-/***/ 84:
+/***/ 92:
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/pages/userInfo/userInfo.vue?vue&type=template&id=4b7ab2a6& ***!
\*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -94,10 +94,10 @@ var components
try {
components = {
uniList: function() {
- return __webpack_require__.e(/*! import() | uni_modules/uni-list/components/uni-list/uni-list */ "uni_modules/uni-list/components/uni-list/uni-list").then(__webpack_require__.bind(null, /*! @/uni_modules/uni-list/components/uni-list/uni-list.vue */ 123))
+ return __webpack_require__.e(/*! import() | uni_modules/uni-list/components/uni-list/uni-list */ "uni_modules/uni-list/components/uni-list/uni-list").then(__webpack_require__.bind(null, /*! @/uni_modules/uni-list/components/uni-list/uni-list.vue */ 138))
},
uniListItem: function() {
- return __webpack_require__.e(/*! import() | uni_modules/uni-list/components/uni-list-item/uni-list-item */ "uni_modules/uni-list/components/uni-list-item/uni-list-item").then(__webpack_require__.bind(null, /*! @/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue */ 130))
+ return __webpack_require__.e(/*! import() | uni_modules/uni-list/components/uni-list-item/uni-list-item */ "uni_modules/uni-list/components/uni-list-item/uni-list-item").then(__webpack_require__.bind(null, /*! @/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue */ 145))
}
}
} catch (e) {
@@ -130,7 +130,7 @@ render._withStripped = true
/***/ }),
-/***/ 85:
+/***/ 93:
/*!*************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/pages/userInfo/userInfo.vue?vue&type=script&lang=js& ***!
\*************************************************************************************/
@@ -139,14 +139,14 @@ render._withStripped = true
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./userInfo.vue?vue&type=script&lang=js& */ 86);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./userInfo.vue?vue&type=script&lang=js& */ 94);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_userInfo_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
-/***/ 86:
+/***/ 94:
/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/pages/userInfo/userInfo.vue?vue&type=script&lang=js& ***!
\********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -208,5 +208,5 @@ var _default =
/***/ })
-},[[81,"common/runtime","common/vendor"]]]);
+},[[89,"common/runtime","common/vendor"]]]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy91c2VySW5mby91c2VySW5mby52dWU/ZmQ0MSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy91c2VySW5mby91c2VySW5mby52dWU/MWYyOSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy91c2VySW5mby91c2VySW5mby52dWU/NzgxMCIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay9wYWdlcy91c2VySW5mby91c2VySW5mby52dWU/N2Y0MCIsInVuaS1hcHA6Ly8vcGFnZXMvdXNlckluZm8vdXNlckluZm8udnVlIl0sIm5hbWVzIjpbInd4IiwiX193ZWJwYWNrX3JlcXVpcmVfVU5JX01QX1BMVUdJTl9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsImNyZWF0ZVBhZ2UiLCJQYWdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O3NEQUFBO0FBQ0E7QUFDQSxxRyw2RkFGbUJBLEVBQUUsQ0FBQ0MsaUNBQUgsR0FBdUNDLG1CQUF2QztBQUduQkMsVUFBVSxDQUFDQyxpQkFBRCxDQUFWLEM7Ozs7Ozs7Ozs7Ozs7QUNIQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXFIO0FBQ3JIO0FBQzREO0FBQ0w7OztBQUd2RDtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSw4RUFBTTtBQUNSLEVBQUUsbUZBQU07QUFDUixFQUFFLDRGQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHVGQUFVO0FBQ1o7QUFDQTs7QUFFQTtBQUNlLGdGOzs7Ozs7Ozs7Ozs7QUN0QmY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHVQQUVOO0FBQ1AsS0FBSztBQUNMO0FBQ0EsYUFBYSxxUkFFTjtBQUNQO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0FDdENBO0FBQUE7QUFBQTtBQUFBO0FBQWttQixDQUFnQiw0bkJBQUcsRUFBQyxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNldG5CO0FBQ0EsTUFEQSxrQkFDQTtBQUNBOzs7QUFHQSxHQUxBO0FBTUE7QUFDQSxXQURBLHFCQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUZBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBUkE7O0FBVUEsU0FmQTs7QUFpQkEsS0F2QkE7QUF3QkEsa0JBeEJBLDBCQXdCQSxDQXhCQSxFQXdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBNUJBLEVBTkEsRSIsImZpbGUiOiJwYWdlcy91c2VySW5mby91c2VySW5mby5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAndW5pLXBhZ2VzJzt3eC5fX3dlYnBhY2tfcmVxdWlyZV9VTklfTVBfUExVR0lOX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fO1xuaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXG5pbXBvcnQgUGFnZSBmcm9tICcuL3BhZ2VzL3VzZXJJbmZvL3VzZXJJbmZvLnZ1ZSdcbmNyZWF0ZVBhZ2UoUGFnZSkiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VzZXJJbmZvLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00YjdhYjJhNiZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL3VzZXJJbmZvLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vdXNlckluZm8udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXHJ1bnRpbWVcXFxcY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhZ2VzL3VzZXJJbmZvL3VzZXJJbmZvLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsImV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFx0ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xNi0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHRlbXBsYXRlLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay11bmktYXBwLWxvYWRlclxcXFxwYWdlLW1ldGEuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vdXNlckluZm8udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRiN2FiMmE2JlwiIiwidmFyIGNvbXBvbmVudHNcbnRyeSB7XG4gIGNvbXBvbmVudHMgPSB7XG4gICAgdW5pTGlzdDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gaW1wb3J0KFxuICAgICAgICAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInVuaV9tb2R1bGVzL3VuaS1saXN0L2NvbXBvbmVudHMvdW5pLWxpc3QvdW5pLWxpc3RcIiAqLyBcIkAvdW5pX21vZHVsZXMvdW5pLWxpc3QvY29tcG9uZW50cy91bmktbGlzdC91bmktbGlzdC52dWVcIlxuICAgICAgKVxuICAgIH0sXG4gICAgdW5pTGlzdEl0ZW06IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGltcG9ydChcbiAgICAgICAgLyogd2VicGFja0NodW5rTmFtZTogXCJ1bmlfbW9kdWxlcy91bmktbGlzdC9jb21wb25lbnRzL3VuaS1saXN0LWl0ZW0vdW5pLWxpc3QtaXRlbVwiICovIFwiQC91bmlfbW9kdWxlcy91bmktbGlzdC9jb21wb25lbnRzL3VuaS1saXN0LWl0ZW0vdW5pLWxpc3QtaXRlbS52dWVcIlxuICAgICAgKVxuICAgIH1cbiAgfVxufSBjYXRjaCAoZSkge1xuICBpZiAoXG4gICAgZS5tZXNzYWdlLmluZGV4T2YoXCJDYW5ub3QgZmluZCBtb2R1bGVcIikgIT09IC0xICYmXG4gICAgZS5tZXNzYWdlLmluZGV4T2YoXCIudnVlXCIpICE9PSAtMVxuICApIHtcbiAgICBjb25zb2xlLmVycm9yKGUubWVzc2FnZSlcbiAgICBjb25zb2xlLmVycm9yKFwiMS4g5o6S5p+l57uE5Lu25ZCN56ew5ou85YaZ5piv5ZCm5q2j56GuXCIpXG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiMi4g5o6S5p+l57uE5Lu25piv5ZCm56ym5ZCIIGVhc3ljb20g6KeE6IyD77yM5paH5qGj77yaaHR0cHM6Ly91bmlhcHAuZGNsb3VkLm5ldC5jbi9jb2xsb2NhdGlvbi9wYWdlcz9pZD1lYXN5Y29tXCJcbiAgICApXG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiMy4g6Iul57uE5Lu25LiN56ym5ZCIIGVhc3ljb20g6KeE6IyD77yM6ZyA5omL5Yqo5byV5YWl77yM5bm25ZyoIGNvbXBvbmVudHMg5Lit5rOo5YaM6K+l57uE5Lu2XCJcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgZVxuICB9XG59XG52YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbn1cbnZhciByZWN5Y2xhYmxlUmVuZGVyID0gZmFsc2VcbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VzZXJJbmZvLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMi0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHNjcmlwdC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91c2VySW5mby52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCI8dGVtcGxhdGU+XHJcblx0PHZpZXc+XHJcblx0XHQ8dW5pLWxpc3Q+XHJcblx0XHRcdFx0PHVuaS1saXN0LWl0ZW0gdGl0bGU9XCLmiJHnmoTkv6Hmga9cIiBjbGlja2FibGUgIEBjbGljaz1cIm9uQ2xpY2tcIiA+PC91bmktbGlzdC1pdGVtPlxyXG5cdFx0XHRcdDx1bmktbGlzdC1pdGVtIHRpdGxlPVwi5oiR55qE5pS26JePXCIgOnNob3ctZXh0cmEtaWNvbj1cInRydWVcIiA6ZXh0cmEtaWNvbj1cImdpZnQtZmlsbGVkXCIgbGluayB0bz1cIi9wYWdlcy91c2VySW5mby9teUNvbGxlY3Rpb24vbXlDb2xsZWN0aW9uXCI+PC91bmktbGlzdC1pdGVtPlxyXG5cdFx0XHRcdDx1bmktbGlzdC1pdGVtIHRpdGxlPVwi5bi46KeB6Zeu6aKYXCIgOnNob3ctZXh0cmEtaWNvbj1cInRydWVcIiA6ZXh0cmEtaWNvbj1cImV4dHJhSWNvbjFcIiBsaW5rIHRvPVwiL3BhZ2VzL3VzZXJJbmZvL3F1ZXN0aW9uL3F1ZXN0aW9uXCI+PC91bmktbGlzdC1pdGVtPlxyXG5cdFx0XHRcdDx1bmktbGlzdC1pdGVtIHRpdGxlPVwi6IGU57O75oiR5LusXCIgbGluayB0bz1cIi9wYWdlcy91c2VySW5mby9jb250YWN0VXMvY29udGFjdFVzXCI+PC91bmktbGlzdC1pdGVtPlxyXG5cdFx0XHRcdDx1bmktbGlzdC1pdGVtIHRpdGxlPVwi6K6+572uXCIgbGluayB0bz1cIi9wYWdlcy91c2VySW5mby9zZXR0aW5nL3NldHRpbmdcIj48L3VuaS1saXN0LWl0ZW0+XHJcblx0XHRcdFx0PHVuaS1saXN0LWl0ZW0gdGl0bGU9XCLliIbkuqtcIiBjbGlja2FibGUgQGNsaWNrPVwiZ2V0TGluaygpXCI+PC91bmktbGlzdC1pdGVtPlxyXG5cdFx0XHRcdDxidXR0b24gb3Blbi10eXBlPVwiZ2V0UGhvbmVOdW1iZXJcIiBAZ2V0cGhvbmVudW1iZXI9XCJnZXRQaG9uZU51bWJlclwiPue7keWumuaJi+acuuWPtzwvYnV0dG9uPlxyXG5cdFx0PC91bmktbGlzdD5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdGdldExpbmsoKXtcclxuXHRcdFx0XHQvLyB1bmkuc2hvd01vZGFsKHtcclxuXHRcdFx0XHQvLyBcdGNvbnRlbnQ6ICfllabllabllabliIbkuqvllaYnLFxyXG5cdFx0XHRcdC8vIFx0c2hvd0NhbmNlbDogZmFsc2VcclxuXHRcdFx0XHQvLyB9KTtcclxuXHRcdFx0XHR1bmkubG9naW4oe1xyXG5cdFx0XHRcdCAgLy8gcHJvdmlkZXI6ICd0b3V0aWFvJyxcclxuXHRcdFx0XHQgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChpbmZvKSB7XHJcblx0XHRcdFx0ICAgIGNvbnNvbGUubG9nKCdjb2Rl5Li677yaJytKU09OLnN0cmluZ2lmeShpbmZvLmNvZGUpKTtcclxuXHRcdFx0XHQgICAgLy8g6I635Y+W55So5oi35L+h5oGvXHJcblx0XHRcdFx0ICAgIHVuaS5nZXRVc2VySW5mbyh7XHJcblx0XHRcdFx0ICAgICAgLy8gcHJvdmlkZXI6ICd0b3V0aWFvJyxcclxuXHRcdFx0XHRcdCAgd2l0aENyZWRlbnRpYWxzOiB0cnVlLFxyXG5cdFx0XHRcdCAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChpbmZvUmVzKSB7XHJcblx0XHRcdFx0XHRcdC8vY29uc29sZS5sb2coJ+S/oeaBr+S4uu+8micrSlNPTi5zdHJpbmdpZnkoaW5mb1JlcykpXHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdlbmNyeeaVsOaNruS4uu+8micraW5mb1Jlcy5lbmNyeXB0ZWREYXRhKTtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2l25pWw5o2u5Li677yaJytpbmZvUmVzLml2KTtcclxuXHRcdFx0XHQgICAgICAgIC8vY29uc29sZS5sb2coJ+eUqOaIt+aYteensOS4uu+8micgKyBpbmZvUmVzLnVzZXJJbmZvLm5pY2tOYW1lKTtcclxuXHRcdFx0XHQgICAgICB9XHJcblx0XHRcdFx0ICAgIH0pO1xyXG5cdFx0XHRcdCAgfVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRnZXRQaG9uZU51bWJlcihlKXtcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhlLmRldGFpbC5lcnJNc2cpO1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKGUuZGV0YWlsLml2KTtcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhlLmRldGFpbC5lbmNyeXB0ZWREYXRhKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGU+XHJcblxyXG48L3N0eWxlPlxyXG4iXSwic291cmNlUm9vdCI6IiJ9
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-toutiao/project.config.json b/unpackage/dist/dev/mp-toutiao/project.config.json
index d1fe836..0d96725 100644
--- a/unpackage/dist/dev/mp-toutiao/project.config.json
+++ b/unpackage/dist/dev/mp-toutiao/project.config.json
@@ -1,13 +1,8 @@
{
- "setting": {
- "urlCheck": false,
- "es6": true
- },
- "appid": "ttc408b2b55b364f6601",
- "projectname": "app",
- "condition": {
- "miniprogram": {
- "current": -1
- }
- }
-}
+ "setting": {
+ "urlCheck": false,
+ "es6": true
+ },
+ "appid": "ttc408b2b55b364f6601",
+ "projectname": "app"
+}
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-toutiao/static/img/分享 (1).svg b/unpackage/dist/dev/mp-toutiao/static/img/分享 (1).svg
deleted file mode 100644
index 8d6a93f..0000000
--- a/unpackage/dist/dev/mp-toutiao/static/img/分享 (1).svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-toutiao/static/img/分享.svg b/unpackage/dist/dev/mp-toutiao/static/img/分享.svg
deleted file mode 100644
index dbe9f96..0000000
--- a/unpackage/dist/dev/mp-toutiao/static/img/分享.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/unpackage/dist/dev/mp-toutiao/uni_modules/uni-badge/components/uni-badge/uni-badge.js b/unpackage/dist/dev/mp-toutiao/uni_modules/uni-badge/components/uni-badge/uni-badge.js
index e5c2419..de58f59 100644
--- a/unpackage/dist/dev/mp-toutiao/uni_modules/uni-badge/components/uni-badge/uni-badge.js
+++ b/unpackage/dist/dev/mp-toutiao/uni_modules/uni-badge/components/uni-badge/uni-badge.js
@@ -1,6 +1,6 @@
(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["uni_modules/uni-badge/components/uni-badge/uni-badge"],{
-/***/ 145:
+/***/ 160:
/*!*****************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-badge/components/uni-badge/uni-badge.vue ***!
\*****************************************************************************************/
@@ -9,10 +9,10 @@
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _uni_badge_vue_vue_type_template_id_7c66581c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-badge.vue?vue&type=template&id=7c66581c& */ 146);
-/* harmony import */ var _uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-badge.vue?vue&type=script&lang=js& */ 148);
+/* harmony import */ var _uni_badge_vue_vue_type_template_id_7c66581c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-badge.vue?vue&type=template&id=7c66581c& */ 161);
+/* harmony import */ var _uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-badge.vue?vue&type=script&lang=js& */ 163);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
-/* harmony import */ var _uni_badge_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uni-badge.vue?vue&type=style&index=0&lang=scss& */ 150);
+/* harmony import */ var _uni_badge_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uni-badge.vue?vue&type=style&index=0&lang=scss& */ 165);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 11);
var renderjs
@@ -41,7 +41,7 @@ component.options.__file = "uni_modules/uni-badge/components/uni-badge/uni-badge
/***/ }),
-/***/ 146:
+/***/ 161:
/*!************************************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-badge/components/uni-badge/uni-badge.vue?vue&type=template&id=7c66581c& ***!
\************************************************************************************************************************/
@@ -50,7 +50,7 @@ component.options.__file = "uni_modules/uni-badge/components/uni-badge/uni-badge
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_badge_vue_vue_type_template_id_7c66581c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-badge.vue?vue&type=template&id=7c66581c& */ 147);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_badge_vue_vue_type_template_id_7c66581c___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-badge.vue?vue&type=template&id=7c66581c& */ 162);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_badge_vue_vue_type_template_id_7c66581c___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_badge_vue_vue_type_template_id_7c66581c___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
@@ -63,7 +63,7 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
-/***/ 147:
+/***/ 162:
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/uni_modules/uni-badge/components/uni-badge/uni-badge.vue?vue&type=template&id=7c66581c& ***!
\************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -106,7 +106,7 @@ render._withStripped = true
/***/ }),
-/***/ 148:
+/***/ 163:
/*!******************************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-badge/components/uni-badge/uni-badge.vue?vue&type=script&lang=js& ***!
\******************************************************************************************************************/
@@ -115,14 +115,14 @@ render._withStripped = true
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-badge.vue?vue&type=script&lang=js& */ 149);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-badge.vue?vue&type=script&lang=js& */ 164);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_badge_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
-/***/ 149:
+/***/ 164:
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/uni_modules/uni-badge/components/uni-badge/uni-badge.vue?vue&type=script&lang=js& ***!
\*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -291,7 +291,7 @@ Object.defineProperty(exports, "__esModule", { value: true });exports.default =
/***/ }),
-/***/ 150:
+/***/ 165:
/*!***************************************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-badge/components/uni-badge/uni-badge.vue?vue&type=style&index=0&lang=scss& ***!
\***************************************************************************************************************************/
@@ -300,14 +300,14 @@ Object.defineProperty(exports, "__esModule", { value: true });exports.default =
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_badge_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-badge.vue?vue&type=style&index=0&lang=scss& */ 151);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_badge_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-badge.vue?vue&type=style&index=0&lang=scss& */ 166);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_badge_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_badge_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_badge_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_badge_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_badge_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
-/***/ 151:
+/***/ 166:
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/uni_modules/uni-badge/components/uni-badge/uni-badge.vue?vue&type=style&index=0&lang=scss& ***!
\*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -321,12 +321,12 @@ __webpack_require__.r(__webpack_exports__);
/***/ })
}]);
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktYmFkZ2UvY29tcG9uZW50cy91bmktYmFkZ2UvdW5pLWJhZGdlLnZ1ZT8zMWYxIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1iYWRnZS9jb21wb25lbnRzL3VuaS1iYWRnZS91bmktYmFkZ2UudnVlP2FkZjIiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svdW5pX21vZHVsZXMvdW5pLWJhZGdlL2NvbXBvbmVudHMvdW5pLWJhZGdlL3VuaS1iYWRnZS52dWU/MGMxYSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktYmFkZ2UvY29tcG9uZW50cy91bmktYmFkZ2UvdW5pLWJhZGdlLnZ1ZT80OGU0IiwidW5pLWFwcDovLy91bmlfbW9kdWxlcy91bmktYmFkZ2UvY29tcG9uZW50cy91bmktYmFkZ2UvdW5pLWJhZGdlLnZ1ZSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktYmFkZ2UvY29tcG9uZW50cy91bmktYmFkZ2UvdW5pLWJhZGdlLnZ1ZT8xMTkwIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1iYWRnZS9jb21wb25lbnRzL3VuaS1iYWRnZS91bmktYmFkZ2UudnVlPzk3OWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFzSDtBQUN0SDtBQUM2RDtBQUNMO0FBQ2M7OztBQUd0RTtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSwrRUFBTTtBQUNSLEVBQUUsb0ZBQU07QUFDUixFQUFFLDZGQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHdGQUFVO0FBQ1o7QUFDQTs7QUFFQTtBQUNlLGdGOzs7Ozs7Ozs7Ozs7QUN2QmY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUN4QkE7QUFBQTtBQUFBO0FBQUE7QUFBbW1CLENBQWdCLDZuQkFBRyxFQUFDLEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1N2bkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkE7QUFDQSxrQkFEQTtBQUVBLGtCQUZBO0FBR0E7QUFDQTtBQUNBLGtCQURBO0FBRUEsc0JBRkEsRUFEQTs7QUFLQTtBQUNBLG1CQURBO0FBRUEsb0JBRkEsRUFMQTs7QUFTQTtBQUNBLG1CQURBO0FBRUEsb0JBRkEsRUFUQTs7QUFhQTtBQUNBLGtCQURBO0FBRUEsaUJBRkEsRUFiQTs7QUFpQkE7QUFDQSxrQkFEQTtBQUVBLGlCQUZBLEVBakJBOztBQXFCQTtBQUNBLGlCQURBO0FBRUEsYUFGQSxzQkFFQTtBQUNBO0FBQ0EsT0FKQSxFQXJCQTs7QUEyQkE7QUFDQSw0QkFEQTtBQUVBLGlCQUZBLEVBM0JBOztBQStCQTtBQUNBLGtCQURBO0FBRUEsc0JBRkEsRUEvQkE7O0FBbUNBO0FBQ0Esa0JBREE7QUFFQSxhQUZBLHNCQUVBO0FBQ0E7QUFDQSxPQUpBLEVBbkNBLEVBSEE7OztBQTZDQSxNQTdDQSxrQkE2Q0E7QUFDQTtBQUNBLEdBL0NBO0FBZ0RBO0FBQ0EsU0FEQSxtQkFDQTtBQUNBO0FBQ0EsS0FIQTtBQUlBLGNBSkEsd0JBSUE7O0FBRUEsY0FGQTs7OztBQU1BLFVBTkEsQ0FFQSxRQUZBLENBR0EsSUFIQSxHQU1BLElBTkEsQ0FHQSxJQUhBLENBSUEsSUFKQSxHQU1BLElBTkEsQ0FJQSxJQUpBLENBS0EsUUFMQSxHQU1BLElBTkEsQ0FLQSxRQUxBO0FBT0E7QUFDQSx3REFEQTtBQUVBLDBCQUZBO0FBR0EsMEJBSEE7QUFJQSwyQ0FKQTtBQUtBLFVBTEEsQ0FLQSxHQUxBO0FBTUEsS0FqQkE7QUFrQkEsaUJBbEJBLDJCQWtCQTtBQUNBO0FBQ0E7QUFDQSxZQURBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQkFEQTtBQUVBLGdCQUZBLEVBREE7O0FBS0E7QUFDQSxrQkFEQTtBQUVBLG1CQUZBLEVBTEE7O0FBU0E7QUFDQSxpQkFEQTtBQUVBLG1CQUZBLEVBVEE7O0FBYUE7QUFDQSxpQkFEQTtBQUVBLGdCQUZBLEVBYkE7OztBQWtCQTtBQUNBO0FBQ0EsS0FqREE7QUFrREEsY0FsREEsd0JBa0RBO0FBQ0E7QUFDQSwwQ0FEQTs7QUFHQSxLQXREQTtBQXVEQSxZQXZEQSxzQkF1REE7QUFDQTtBQUNBO0FBQ0EscUJBREE7QUFFQSxzQkFGQTtBQUdBLDRCQUhBOztBQUtBLEtBOURBO0FBK0RBLGdCQS9EQSwwQkErREE7O0FBRUEsV0FGQTs7O0FBS0EsVUFMQSxDQUVBLEtBRkEsQ0FHQSxJQUhBLEdBS0EsSUFMQSxDQUdBLElBSEEsQ0FJQSxNQUpBLEdBS0EsSUFMQSxDQUlBLE1BSkE7QUFNQTtBQUNBLEtBdEVBLEVBaERBOztBQXdIQTtBQUNBLFdBREEscUJBQ0E7QUFDQTtBQUNBLEtBSEEsRUF4SEEsRTs7Ozs7Ozs7Ozs7O0FDbENBO0FBQUE7QUFBQTtBQUFBO0FBQThvQyxDQUFnQixvbkNBQUcsRUFBQyxDOzs7Ozs7Ozs7OztBQ0FscUM7QUFDQSxPQUFPLEtBQVUsRUFBRSxrQkFLZCIsImZpbGUiOiJ1bmlfbW9kdWxlcy91bmktYmFkZ2UvY29tcG9uZW50cy91bmktYmFkZ2UvdW5pLWJhZGdlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSBmcm9tIFwiLi91bmktYmFkZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdjNjY1ODFjJlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vdW5pLWJhZGdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vdW5pLWJhZGdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi91bmktYmFkZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXHJ1bnRpbWVcXFxcY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInVuaV9tb2R1bGVzL3VuaS1iYWRnZS9jb21wb25lbnRzL3VuaS1iYWRnZS91bmktYmFkZ2UudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHRlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTE2LTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcdGVtcGxhdGUuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXVuaS1hcHAtbG9hZGVyXFxcXHBhZ2UtbWV0YS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktYmFkZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdjNjY1ODFjJlwiIiwidmFyIGNvbXBvbmVudHNcbnZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICB2YXIgczAgPSBfdm0udGV4dFxuICAgID8gX3ZtLl9fZ2V0X3N0eWxlKFtcbiAgICAgICAgX3ZtLmJhZGdlV2lkdGgsXG4gICAgICAgIF92bS5wb3NpdGlvblN0eWxlLFxuICAgICAgICBfdm0uY3VzdG9tU3R5bGUsXG4gICAgICAgIF92bS5kb3RTdHlsZVxuICAgICAgXSlcbiAgICA6IG51bGxcbiAgX3ZtLiRtcC5kYXRhID0gT2JqZWN0LmFzc2lnbihcbiAgICB7fSxcbiAgICB7XG4gICAgICAkcm9vdDoge1xuICAgICAgICBzMDogczBcbiAgICAgIH1cbiAgICB9XG4gIClcbn1cbnZhciByZWN5Y2xhYmxlUmVuZGVyID0gZmFsc2VcbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1iYWRnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcYmFiZWwtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTItMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzY3JpcHQuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vdW5pLWJhZGdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiIsIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyBjbGFzcz1cInVuaS1iYWRnZS0teFwiPlxyXG5cdFx0PHNsb3QgLz5cclxuXHRcdDx0ZXh0IHYtaWY9XCJ0ZXh0XCIgOmNsYXNzPVwiY2xhc3NOYW1lc1wiIDpzdHlsZT1cIltiYWRnZVdpZHRoLCBwb3NpdGlvblN0eWxlLCBjdXN0b21TdHlsZSwgZG90U3R5bGVdXCJcclxuXHRcdFx0Y2xhc3M9XCJ1bmktYmFkZ2VcIiBAY2xpY2s9XCJvbkNsaWNrKClcIj57e2Rpc3BsYXlWYWx1ZX19PC90ZXh0PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0LyoqXHJcblx0ICogQmFkZ2Ug5pWw5a2X6KeS5qCHXHJcblx0ICogQGRlc2NyaXB0aW9uIOaVsOWtl+inkuagh+S4gOiIrOWSjOWFtuWug+aOp+S7tu+8iOWIl+ihqOOAgTnlrqvmoLznrYnvvInphY3lkIjkvb/nlKjvvIznlKjkuo7ov5vooYzmlbDph4/mj5DnpLrvvIzpu5jorqTkuLrlrp7lv4PngbDoibLog4zmma9cclxuXHQgKiBAdHV0b3JpYWwgaHR0cHM6Ly9leHQuZGNsb3VkLm5ldC5jbi9wbHVnaW4/aWQ9MjFcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gdGV4dCDop5LmoIflhoXlrrlcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gc2l6ZSA9IFtub3JtYWx8c21hbGxdIOinkuagh+WGheWuuVxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB0eXBlID0gW2luZm98cHJpbWFyeXxzdWNjZXNzfHdhcm5pbmd8ZXJyb3JdIOminOiJsuexu+Wei1xyXG5cdCAqIFx0QHZhbHVlIGluZm8g54Gw6ImyXHJcblx0ICogXHRAdmFsdWUgcHJpbWFyeSDok53oibJcclxuXHQgKiBcdEB2YWx1ZSBzdWNjZXNzIOe7v+iJslxyXG5cdCAqIFx0QHZhbHVlIHdhcm5pbmcg6buE6ImyXHJcblx0ICogXHRAdmFsdWUgZXJyb3Ig57qi6ImyXHJcblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IGludmVydGVkID0gW3RydWV8ZmFsc2VdIOaYr+WQpuaXoOmcgOiDjOaZr+minOiJslxyXG5cdCAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBtYXhOdW0g5bGV56S65bCB6aG255qE5pWw5a2X5YC877yM6LaF6L+HIDk5IOaYvuekuiA5OStcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gYWJzb2x1dGUgPSBbcmlnaHRUb3B8cmlnaHRCb3R0b218bGVmdEJvdHRvbXxsZWZ0VG9wXSDlvIDlkK/nu53lr7nlrprkvY0sIOinkuagh+WwhuWumuS9jeWIsOWFtuWMheijueeahOagh+etvueahOWbm+inkuS4ilx0XHRcclxuXHQgKiBcdEB2YWx1ZSByaWdodFRvcCDlj7PkuIpcclxuXHQgKiBcdEB2YWx1ZSByaWdodEJvdHRvbSDlj7PkuItcclxuXHQgKiBcdEB2YWx1ZSBsZWZ0VG9wIOW3puS4ilxyXG5cdCAqIFx0QHZhbHVlIGxlZnRCb3R0b20g5bem5LiLXHJcblx0ICogQHByb3BlcnR5IHtBcnJheVtudW1iZXJdfSBvZmZzZXRcdOi3neWumuS9jeinkuS4reW/g+eCueeahOWBj+enu+mHj++8jOWPquacieWtmOWcqCBhYnNvbHV0ZSDlsZ7mgKfml7bmnInmlYjvvIzkvovlpoLvvJpbLTEwLCAtMTBdIOihqOekuuWQkeWkluWBj+enuyAxMHB477yMWzEwLCAxMF0g6KGo56S65ZCRIGFic29sdXRlIOaMh+WumueahOWGheWBj+enuyAxMHB4XHJcblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IGlzRG90ID0gW3RydWV8ZmFsc2VdIOaYr+WQpuaYvuekuuS4uuS4gOS4quWwj+eCuVxyXG5cdCAqIEBldmVudCB7RnVuY3Rpb259IGNsaWNrIOeCueWHuyBCYWRnZSDop6blj5Hkuovku7ZcclxuXHQgKiBAZXhhbXBsZSA8dW5pLWJhZGdlIHRleHQ9XCIxXCI+PC91bmktYmFkZ2U+XHJcblx0ICovXHJcblxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdG5hbWU6ICdVbmlCYWRnZScsXHJcblx0XHRlbWl0czogWydjbGljayddLFxyXG5cdFx0cHJvcHM6IHtcclxuXHRcdFx0dHlwZToge1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiAnZXJyb3InXHJcblx0XHRcdH0sXHJcblx0XHRcdGludmVydGVkOiB7XHJcblx0XHRcdFx0dHlwZTogQm9vbGVhbixcclxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRpc0RvdDoge1xyXG5cdFx0XHRcdHR5cGU6IEJvb2xlYW4sXHJcblx0XHRcdFx0ZGVmYXVsdDogZmFsc2VcclxuXHRcdFx0fSxcclxuXHRcdFx0bWF4TnVtOiB7XHJcblx0XHRcdFx0dHlwZTogTnVtYmVyLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IDk5XHJcblx0XHRcdH0sXHJcblx0XHRcdGFic29sdXRlOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICcnXHJcblx0XHRcdH0sXHJcblx0XHRcdG9mZnNldDoge1xyXG5cdFx0XHRcdHR5cGU6IEFycmF5LFxyXG5cdFx0XHRcdGRlZmF1bHQgKCkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIFswLCAwXVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0dGV4dDoge1xyXG5cdFx0XHRcdHR5cGU6IFtTdHJpbmcsIE51bWJlcl0sXHJcblx0XHRcdFx0ZGVmYXVsdDogJydcclxuXHRcdFx0fSxcclxuXHRcdFx0c2l6ZToge1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiAnc21hbGwnXHJcblx0XHRcdH0sXHJcblx0XHRcdGN1c3RvbVN0eWxlOiB7XHJcblx0XHRcdFx0dHlwZTogT2JqZWN0LFxyXG5cdFx0XHRcdGRlZmF1bHQgKCkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIHt9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHt9O1xyXG5cdFx0fSxcclxuXHRcdGNvbXB1dGVkOiB7XHJcblx0XHRcdHdpZHRoKCkge1xyXG5cdFx0XHRcdHJldHVybiBTdHJpbmcodGhpcy50ZXh0KS5sZW5ndGggKiA4ICsgMTJcclxuXHRcdFx0fSxcclxuXHRcdFx0Y2xhc3NOYW1lcygpIHtcclxuXHRcdFx0XHRjb25zdCB7XHJcblx0XHRcdFx0XHRpbnZlcnRlZCxcclxuXHRcdFx0XHRcdHR5cGUsXHJcblx0XHRcdFx0XHRzaXplLFxyXG5cdFx0XHRcdFx0YWJzb2x1dGVcclxuXHRcdFx0XHR9ID0gdGhpc1xyXG5cdFx0XHRcdHJldHVybiBbXHJcblx0XHRcdFx0XHRpbnZlcnRlZCA/ICd1bmktYmFkZ2UtLScgKyB0eXBlICsgJy1pbnZlcnRlZCcgOiAnJyxcclxuXHRcdFx0XHRcdCd1bmktYmFkZ2UtLScgKyB0eXBlLFxyXG5cdFx0XHRcdFx0J3VuaS1iYWRnZS0tJyArIHNpemUsXHJcblx0XHRcdFx0XHRhYnNvbHV0ZSA/ICd1bmktYmFkZ2UtLWFic29sdXRlJyA6ICcnXHJcblx0XHRcdFx0XS5qb2luKCcgJylcclxuXHRcdFx0fSxcclxuXHRcdFx0cG9zaXRpb25TdHlsZSgpIHtcclxuXHRcdFx0XHRpZiAoIXRoaXMuYWJzb2x1dGUpIHJldHVybiB7fVxyXG5cdFx0XHRcdGxldCB3ID0gdGhpcy53aWR0aCAvIDIsXHJcblx0XHRcdFx0XHRoID0gMTBcclxuXHRcdFx0XHRpZiAodGhpcy5pc0RvdCkge1xyXG5cdFx0XHRcdFx0dyA9IDVcclxuXHRcdFx0XHRcdGggPSA1XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbnN0IHggPSBgJHstIHcgICsgdGhpcy5vZmZzZXRbMF19cHhgXHJcblx0XHRcdFx0Y29uc3QgeSA9IGAkey0gaCArIHRoaXMub2Zmc2V0WzFdfXB4YFxyXG5cclxuXHRcdFx0XHRjb25zdCB3aGl0ZUxpc3QgPSB7XHJcblx0XHRcdFx0XHRyaWdodFRvcDoge1xyXG5cdFx0XHRcdFx0XHRyaWdodDogeCxcclxuXHRcdFx0XHRcdFx0dG9wOiB5XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0cmlnaHRCb3R0b206IHtcclxuXHRcdFx0XHRcdFx0cmlnaHQ6IHgsXHJcblx0XHRcdFx0XHRcdGJvdHRvbTogeVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGxlZnRCb3R0b206IHtcclxuXHRcdFx0XHRcdFx0bGVmdDogeCxcclxuXHRcdFx0XHRcdFx0Ym90dG9tOiB5XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0bGVmdFRvcDoge1xyXG5cdFx0XHRcdFx0XHRsZWZ0OiB4LFxyXG5cdFx0XHRcdFx0XHR0b3A6IHlcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29uc3QgbWF0Y2ggPSB3aGl0ZUxpc3RbdGhpcy5hYnNvbHV0ZV1cclxuXHRcdFx0XHRyZXR1cm4gbWF0Y2ggPyBtYXRjaCA6IHdoaXRlTGlzdFsncmlnaHRUb3AnXVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRiYWRnZVdpZHRoKCkge1xyXG5cdFx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHR3aWR0aDogYCR7dGhpcy53aWR0aH1weGBcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdGRvdFN0eWxlKCkge1xyXG5cdFx0XHRcdGlmICghdGhpcy5pc0RvdCkgcmV0dXJuIHt9XHJcblx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdHdpZHRoOiAnMTBweCcsXHJcblx0XHRcdFx0XHRoZWlnaHQ6ICcxMHB4JyxcclxuXHRcdFx0XHRcdGJvcmRlclJhZGl1czogJzEwcHgnXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRkaXNwbGF5VmFsdWUoKSB7XHJcblx0XHRcdFx0Y29uc3Qge1xyXG5cdFx0XHRcdFx0aXNEb3QsXHJcblx0XHRcdFx0XHR0ZXh0LFxyXG5cdFx0XHRcdFx0bWF4TnVtXHJcblx0XHRcdFx0fSA9IHRoaXNcclxuXHRcdFx0XHRyZXR1cm4gaXNEb3QgPyAnJyA6IChOdW1iZXIodGV4dCkgPiBtYXhOdW0gPyBgJHttYXhOdW19K2AgOiB0ZXh0KVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRvbkNsaWNrKCkge1xyXG5cdFx0XHRcdHRoaXMuJGVtaXQoJ2NsaWNrJyk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9O1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwic2Nzc1wiID5cclxuXHQkdW5pLXByaW1hcnk6ICMyOTc5ZmYgIWRlZmF1bHQ7XHJcblx0JHVuaS1zdWNjZXNzOiAjNGNkOTY0ICFkZWZhdWx0O1xyXG5cdCR1bmktd2FybmluZzogI2YwYWQ0ZSAhZGVmYXVsdDtcclxuXHQkdW5pLWVycm9yOiAjZGQ1MjRkICFkZWZhdWx0O1xyXG5cdCR1bmktaW5mbzogIzkwOTM5OSAhZGVmYXVsdDtcclxuXHJcblxyXG5cdCRiYWdlLXNpemU6IDEycHg7XHJcblx0JGJhZ2Utc21hbGw6IHNjYWxlKDAuOCk7XHJcblxyXG5cdC51bmktYmFkZ2UtLXgge1xyXG5cdFx0LyogI2lmZGVmIEFQUC1OVlVFICovXHJcblx0XHQvLyBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHR9XHJcblxyXG5cdC51bmktYmFkZ2UtLWFic29sdXRlIHtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHR9XHJcblxyXG5cdC51bmktYmFkZ2UtLXNtYWxsIHtcclxuXHRcdHRyYW5zZm9ybTogJGJhZ2Utc21hbGw7XHJcblx0XHR0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyO1xyXG5cdH1cclxuXHJcblx0LnVuaS1iYWRnZSB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcclxuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHRcdGhlaWdodDogMjBweDtcclxuXHRcdGxpbmUtaGVpZ2h0OiAxOHB4O1xyXG5cdFx0Y29sb3I6ICNmZmY7XHJcblx0XHRib3JkZXItcmFkaXVzOiAxMDBweDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICR1bmktaW5mbztcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG5cdFx0Ym9yZGVyOiAxcHggc29saWQgI2ZmZjtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdGZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XHJcblx0XHRmb250LXNpemU6ICRiYWdlLXNpemU7XHJcblx0XHQvKiAjaWZkZWYgSDUgKi9cclxuXHRcdHotaW5kZXg6IDk5OTtcclxuXHRcdGN1cnNvcjogcG9pbnRlcjtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cclxuXHRcdCYtLWluZm8ge1xyXG5cdFx0XHRjb2xvcjogI2ZmZjtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHVuaS1pbmZvO1xyXG5cdFx0fVxyXG5cclxuXHRcdCYtLXByaW1hcnkge1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkdW5pLXByaW1hcnk7XHJcblx0XHR9XHJcblxyXG5cdFx0Ji0tc3VjY2VzcyB7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR1bmktc3VjY2VzcztcclxuXHRcdH1cclxuXHJcblx0XHQmLS13YXJuaW5nIHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHVuaS13YXJuaW5nO1xyXG5cdFx0fVxyXG5cclxuXHRcdCYtLWVycm9yIHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHVuaS1lcnJvcjtcclxuXHRcdH1cclxuXHJcblx0XHQmLS1pbnZlcnRlZCB7XHJcblx0XHRcdHBhZGRpbmc6IDAgNXB4IDAgMDtcclxuXHRcdFx0Y29sb3I6ICR1bmktaW5mbztcclxuXHRcdH1cclxuXHJcblx0XHQmLS1pbmZvLWludmVydGVkIHtcclxuXHRcdFx0Y29sb3I6ICR1bmktaW5mbztcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcblx0XHR9XHJcblxyXG5cdFx0Ji0tcHJpbWFyeS1pbnZlcnRlZCB7XHJcblx0XHRcdGNvbG9yOiAkdW5pLXByaW1hcnk7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG5cdFx0fVxyXG5cclxuXHRcdCYtLXN1Y2Nlc3MtaW52ZXJ0ZWQge1xyXG5cdFx0XHRjb2xvcjogJHVuaS1zdWNjZXNzO1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuXHRcdH1cclxuXHJcblx0XHQmLS13YXJuaW5nLWludmVydGVkIHtcclxuXHRcdFx0Y29sb3I6ICR1bmktd2FybmluZztcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcblx0XHR9XHJcblxyXG5cdFx0Ji0tZXJyb3ItaW52ZXJ0ZWQge1xyXG5cdFx0XHRjb2xvcjogJHVuaS1lcnJvcjtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcblx0XHR9XHJcblxyXG5cdH1cclxuPC9zdHlsZT5cclxuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxcXFxkaXN0XFxcXGxvYWRlci5qcz8/cmVmLS04LW9uZU9mLTEtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxjc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFxzdHlsZVBvc3RMb2FkZXIuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXHBvc3Rjc3MtbG9hZGVyXFxcXHNyY1xcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHNhc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS00IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtNSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktYmFkZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXFxcXGRpc3RcXFxcbG9hZGVyLmpzPz9yZWYtLTgtb25lT2YtMS0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGNzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHN0eWxlUG9zdExvYWRlci5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxccG9zdGNzcy1sb2FkZXJcXFxcc3JjXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcc2Fzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTQhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS01IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1iYWRnZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbiAgICBpZihtb2R1bGUuaG90KSB7XG4gICAgICAvLyAxNjUyNjk2OTgyNzM0XG4gICAgICB2YXIgY3NzUmVsb2FkID0gcmVxdWlyZShcIkQ6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luL2Rpc3QvaG1yL2hvdE1vZHVsZVJlcGxhY2VtZW50LmpzXCIpKG1vZHVsZS5pZCwge1wiaG1yXCI6dHJ1ZSxcInB1YmxpY1BhdGhcIjpcIi4uLy4uL1wiLFwibG9jYWxzXCI6ZmFsc2V9KTtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShjc3NSZWxvYWQpO1xuICAgICAgbW9kdWxlLmhvdC5hY2NlcHQodW5kZWZpbmVkLCBjc3NSZWxvYWQpO1xuICAgIH1cbiAgIl0sInNvdXJjZVJvb3QiOiIifQ==
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktYmFkZ2UvY29tcG9uZW50cy91bmktYmFkZ2UvdW5pLWJhZGdlLnZ1ZT8zMWYxIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1iYWRnZS9jb21wb25lbnRzL3VuaS1iYWRnZS91bmktYmFkZ2UudnVlP2FkZjIiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svdW5pX21vZHVsZXMvdW5pLWJhZGdlL2NvbXBvbmVudHMvdW5pLWJhZGdlL3VuaS1iYWRnZS52dWU/MGMxYSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktYmFkZ2UvY29tcG9uZW50cy91bmktYmFkZ2UvdW5pLWJhZGdlLnZ1ZT80OGU0IiwidW5pLWFwcDovLy91bmlfbW9kdWxlcy91bmktYmFkZ2UvY29tcG9uZW50cy91bmktYmFkZ2UvdW5pLWJhZGdlLnZ1ZSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktYmFkZ2UvY29tcG9uZW50cy91bmktYmFkZ2UvdW5pLWJhZGdlLnZ1ZT8xMTkwIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1iYWRnZS9jb21wb25lbnRzL3VuaS1iYWRnZS91bmktYmFkZ2UudnVlPzk3OWIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFzSDtBQUN0SDtBQUM2RDtBQUNMO0FBQ2M7OztBQUd0RTtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSwrRUFBTTtBQUNSLEVBQUUsb0ZBQU07QUFDUixFQUFFLDZGQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHdGQUFVO0FBQ1o7QUFDQTs7QUFFQTtBQUNlLGdGOzs7Ozs7Ozs7Ozs7QUN2QmY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUN4QkE7QUFBQTtBQUFBO0FBQUE7QUFBbW1CLENBQWdCLDZuQkFBRyxFQUFDLEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1N2bkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkE7QUFDQSxrQkFEQTtBQUVBLGtCQUZBO0FBR0E7QUFDQTtBQUNBLGtCQURBO0FBRUEsc0JBRkEsRUFEQTs7QUFLQTtBQUNBLG1CQURBO0FBRUEsb0JBRkEsRUFMQTs7QUFTQTtBQUNBLG1CQURBO0FBRUEsb0JBRkEsRUFUQTs7QUFhQTtBQUNBLGtCQURBO0FBRUEsaUJBRkEsRUFiQTs7QUFpQkE7QUFDQSxrQkFEQTtBQUVBLGlCQUZBLEVBakJBOztBQXFCQTtBQUNBLGlCQURBO0FBRUEsYUFGQSxzQkFFQTtBQUNBO0FBQ0EsT0FKQSxFQXJCQTs7QUEyQkE7QUFDQSw0QkFEQTtBQUVBLGlCQUZBLEVBM0JBOztBQStCQTtBQUNBLGtCQURBO0FBRUEsc0JBRkEsRUEvQkE7O0FBbUNBO0FBQ0Esa0JBREE7QUFFQSxhQUZBLHNCQUVBO0FBQ0E7QUFDQSxPQUpBLEVBbkNBLEVBSEE7OztBQTZDQSxNQTdDQSxrQkE2Q0E7QUFDQTtBQUNBLEdBL0NBO0FBZ0RBO0FBQ0EsU0FEQSxtQkFDQTtBQUNBO0FBQ0EsS0FIQTtBQUlBLGNBSkEsd0JBSUE7O0FBRUEsY0FGQTs7OztBQU1BLFVBTkEsQ0FFQSxRQUZBLENBR0EsSUFIQSxHQU1BLElBTkEsQ0FHQSxJQUhBLENBSUEsSUFKQSxHQU1BLElBTkEsQ0FJQSxJQUpBLENBS0EsUUFMQSxHQU1BLElBTkEsQ0FLQSxRQUxBO0FBT0E7QUFDQSx3REFEQTtBQUVBLDBCQUZBO0FBR0EsMEJBSEE7QUFJQSwyQ0FKQTtBQUtBLFVBTEEsQ0FLQSxHQUxBO0FBTUEsS0FqQkE7QUFrQkEsaUJBbEJBLDJCQWtCQTtBQUNBO0FBQ0E7QUFDQSxZQURBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQkFEQTtBQUVBLGdCQUZBLEVBREE7O0FBS0E7QUFDQSxrQkFEQTtBQUVBLG1CQUZBLEVBTEE7O0FBU0E7QUFDQSxpQkFEQTtBQUVBLG1CQUZBLEVBVEE7O0FBYUE7QUFDQSxpQkFEQTtBQUVBLGdCQUZBLEVBYkE7OztBQWtCQTtBQUNBO0FBQ0EsS0FqREE7QUFrREEsY0FsREEsd0JBa0RBO0FBQ0E7QUFDQSwwQ0FEQTs7QUFHQSxLQXREQTtBQXVEQSxZQXZEQSxzQkF1REE7QUFDQTtBQUNBO0FBQ0EscUJBREE7QUFFQSxzQkFGQTtBQUdBLDRCQUhBOztBQUtBLEtBOURBO0FBK0RBLGdCQS9EQSwwQkErREE7O0FBRUEsV0FGQTs7O0FBS0EsVUFMQSxDQUVBLEtBRkEsQ0FHQSxJQUhBLEdBS0EsSUFMQSxDQUdBLElBSEEsQ0FJQSxNQUpBLEdBS0EsSUFMQSxDQUlBLE1BSkE7QUFNQTtBQUNBLEtBdEVBLEVBaERBOztBQXdIQTtBQUNBLFdBREEscUJBQ0E7QUFDQTtBQUNBLEtBSEEsRUF4SEEsRTs7Ozs7Ozs7Ozs7O0FDbENBO0FBQUE7QUFBQTtBQUFBO0FBQThvQyxDQUFnQixvbkNBQUcsRUFBQyxDOzs7Ozs7Ozs7OztBQ0FscUM7QUFDQSxPQUFPLEtBQVUsRUFBRSxrQkFLZCIsImZpbGUiOiJ1bmlfbW9kdWxlcy91bmktYmFkZ2UvY29tcG9uZW50cy91bmktYmFkZ2UvdW5pLWJhZGdlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSBmcm9tIFwiLi91bmktYmFkZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdjNjY1ODFjJlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vdW5pLWJhZGdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vdW5pLWJhZGdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi91bmktYmFkZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXHJ1bnRpbWVcXFxcY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInVuaV9tb2R1bGVzL3VuaS1iYWRnZS9jb21wb25lbnRzL3VuaS1iYWRnZS91bmktYmFkZ2UudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHRlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTE2LTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcdGVtcGxhdGUuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXVuaS1hcHAtbG9hZGVyXFxcXHBhZ2UtbWV0YS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktYmFkZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTdjNjY1ODFjJlwiIiwidmFyIGNvbXBvbmVudHNcbnZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICB2YXIgczAgPSBfdm0udGV4dFxuICAgID8gX3ZtLl9fZ2V0X3N0eWxlKFtcbiAgICAgICAgX3ZtLmJhZGdlV2lkdGgsXG4gICAgICAgIF92bS5wb3NpdGlvblN0eWxlLFxuICAgICAgICBfdm0uY3VzdG9tU3R5bGUsXG4gICAgICAgIF92bS5kb3RTdHlsZVxuICAgICAgXSlcbiAgICA6IG51bGxcbiAgX3ZtLiRtcC5kYXRhID0gT2JqZWN0LmFzc2lnbihcbiAgICB7fSxcbiAgICB7XG4gICAgICAkcm9vdDoge1xuICAgICAgICBzMDogczBcbiAgICAgIH1cbiAgICB9XG4gIClcbn1cbnZhciByZWN5Y2xhYmxlUmVuZGVyID0gZmFsc2VcbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1iYWRnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcYmFiZWwtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTItMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzY3JpcHQuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vdW5pLWJhZGdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiIsIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyBjbGFzcz1cInVuaS1iYWRnZS0teFwiPlxyXG5cdFx0PHNsb3QgLz5cclxuXHRcdDx0ZXh0IHYtaWY9XCJ0ZXh0XCIgOmNsYXNzPVwiY2xhc3NOYW1lc1wiIDpzdHlsZT1cIltiYWRnZVdpZHRoLCBwb3NpdGlvblN0eWxlLCBjdXN0b21TdHlsZSwgZG90U3R5bGVdXCJcclxuXHRcdFx0Y2xhc3M9XCJ1bmktYmFkZ2VcIiBAY2xpY2s9XCJvbkNsaWNrKClcIj57e2Rpc3BsYXlWYWx1ZX19PC90ZXh0PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0LyoqXHJcblx0ICogQmFkZ2Ug5pWw5a2X6KeS5qCHXHJcblx0ICogQGRlc2NyaXB0aW9uIOaVsOWtl+inkuagh+S4gOiIrOWSjOWFtuWug+aOp+S7tu+8iOWIl+ihqOOAgTnlrqvmoLznrYnvvInphY3lkIjkvb/nlKjvvIznlKjkuo7ov5vooYzmlbDph4/mj5DnpLrvvIzpu5jorqTkuLrlrp7lv4PngbDoibLog4zmma9cclxuXHQgKiBAdHV0b3JpYWwgaHR0cHM6Ly9leHQuZGNsb3VkLm5ldC5jbi9wbHVnaW4/aWQ9MjFcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gdGV4dCDop5LmoIflhoXlrrlcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gc2l6ZSA9IFtub3JtYWx8c21hbGxdIOinkuagh+WGheWuuVxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB0eXBlID0gW2luZm98cHJpbWFyeXxzdWNjZXNzfHdhcm5pbmd8ZXJyb3JdIOminOiJsuexu+Wei1xyXG5cdCAqIFx0QHZhbHVlIGluZm8g54Gw6ImyXHJcblx0ICogXHRAdmFsdWUgcHJpbWFyeSDok53oibJcclxuXHQgKiBcdEB2YWx1ZSBzdWNjZXNzIOe7v+iJslxyXG5cdCAqIFx0QHZhbHVlIHdhcm5pbmcg6buE6ImyXHJcblx0ICogXHRAdmFsdWUgZXJyb3Ig57qi6ImyXHJcblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IGludmVydGVkID0gW3RydWV8ZmFsc2VdIOaYr+WQpuaXoOmcgOiDjOaZr+minOiJslxyXG5cdCAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBtYXhOdW0g5bGV56S65bCB6aG255qE5pWw5a2X5YC877yM6LaF6L+HIDk5IOaYvuekuiA5OStcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gYWJzb2x1dGUgPSBbcmlnaHRUb3B8cmlnaHRCb3R0b218bGVmdEJvdHRvbXxsZWZ0VG9wXSDlvIDlkK/nu53lr7nlrprkvY0sIOinkuagh+WwhuWumuS9jeWIsOWFtuWMheijueeahOagh+etvueahOWbm+inkuS4ilx0XHRcclxuXHQgKiBcdEB2YWx1ZSByaWdodFRvcCDlj7PkuIpcclxuXHQgKiBcdEB2YWx1ZSByaWdodEJvdHRvbSDlj7PkuItcclxuXHQgKiBcdEB2YWx1ZSBsZWZ0VG9wIOW3puS4ilxyXG5cdCAqIFx0QHZhbHVlIGxlZnRCb3R0b20g5bem5LiLXHJcblx0ICogQHByb3BlcnR5IHtBcnJheVtudW1iZXJdfSBvZmZzZXRcdOi3neWumuS9jeinkuS4reW/g+eCueeahOWBj+enu+mHj++8jOWPquacieWtmOWcqCBhYnNvbHV0ZSDlsZ7mgKfml7bmnInmlYjvvIzkvovlpoLvvJpbLTEwLCAtMTBdIOihqOekuuWQkeWkluWBj+enuyAxMHB477yMWzEwLCAxMF0g6KGo56S65ZCRIGFic29sdXRlIOaMh+WumueahOWGheWBj+enuyAxMHB4XHJcblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IGlzRG90ID0gW3RydWV8ZmFsc2VdIOaYr+WQpuaYvuekuuS4uuS4gOS4quWwj+eCuVxyXG5cdCAqIEBldmVudCB7RnVuY3Rpb259IGNsaWNrIOeCueWHuyBCYWRnZSDop6blj5Hkuovku7ZcclxuXHQgKiBAZXhhbXBsZSA8dW5pLWJhZGdlIHRleHQ9XCIxXCI+PC91bmktYmFkZ2U+XHJcblx0ICovXHJcblxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdG5hbWU6ICdVbmlCYWRnZScsXHJcblx0XHRlbWl0czogWydjbGljayddLFxyXG5cdFx0cHJvcHM6IHtcclxuXHRcdFx0dHlwZToge1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiAnZXJyb3InXHJcblx0XHRcdH0sXHJcblx0XHRcdGludmVydGVkOiB7XHJcblx0XHRcdFx0dHlwZTogQm9vbGVhbixcclxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRpc0RvdDoge1xyXG5cdFx0XHRcdHR5cGU6IEJvb2xlYW4sXHJcblx0XHRcdFx0ZGVmYXVsdDogZmFsc2VcclxuXHRcdFx0fSxcclxuXHRcdFx0bWF4TnVtOiB7XHJcblx0XHRcdFx0dHlwZTogTnVtYmVyLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IDk5XHJcblx0XHRcdH0sXHJcblx0XHRcdGFic29sdXRlOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICcnXHJcblx0XHRcdH0sXHJcblx0XHRcdG9mZnNldDoge1xyXG5cdFx0XHRcdHR5cGU6IEFycmF5LFxyXG5cdFx0XHRcdGRlZmF1bHQgKCkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIFswLCAwXVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0dGV4dDoge1xyXG5cdFx0XHRcdHR5cGU6IFtTdHJpbmcsIE51bWJlcl0sXHJcblx0XHRcdFx0ZGVmYXVsdDogJydcclxuXHRcdFx0fSxcclxuXHRcdFx0c2l6ZToge1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiAnc21hbGwnXHJcblx0XHRcdH0sXHJcblx0XHRcdGN1c3RvbVN0eWxlOiB7XHJcblx0XHRcdFx0dHlwZTogT2JqZWN0LFxyXG5cdFx0XHRcdGRlZmF1bHQgKCkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIHt9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHt9O1xyXG5cdFx0fSxcclxuXHRcdGNvbXB1dGVkOiB7XHJcblx0XHRcdHdpZHRoKCkge1xyXG5cdFx0XHRcdHJldHVybiBTdHJpbmcodGhpcy50ZXh0KS5sZW5ndGggKiA4ICsgMTJcclxuXHRcdFx0fSxcclxuXHRcdFx0Y2xhc3NOYW1lcygpIHtcclxuXHRcdFx0XHRjb25zdCB7XHJcblx0XHRcdFx0XHRpbnZlcnRlZCxcclxuXHRcdFx0XHRcdHR5cGUsXHJcblx0XHRcdFx0XHRzaXplLFxyXG5cdFx0XHRcdFx0YWJzb2x1dGVcclxuXHRcdFx0XHR9ID0gdGhpc1xyXG5cdFx0XHRcdHJldHVybiBbXHJcblx0XHRcdFx0XHRpbnZlcnRlZCA/ICd1bmktYmFkZ2UtLScgKyB0eXBlICsgJy1pbnZlcnRlZCcgOiAnJyxcclxuXHRcdFx0XHRcdCd1bmktYmFkZ2UtLScgKyB0eXBlLFxyXG5cdFx0XHRcdFx0J3VuaS1iYWRnZS0tJyArIHNpemUsXHJcblx0XHRcdFx0XHRhYnNvbHV0ZSA/ICd1bmktYmFkZ2UtLWFic29sdXRlJyA6ICcnXHJcblx0XHRcdFx0XS5qb2luKCcgJylcclxuXHRcdFx0fSxcclxuXHRcdFx0cG9zaXRpb25TdHlsZSgpIHtcclxuXHRcdFx0XHRpZiAoIXRoaXMuYWJzb2x1dGUpIHJldHVybiB7fVxyXG5cdFx0XHRcdGxldCB3ID0gdGhpcy53aWR0aCAvIDIsXHJcblx0XHRcdFx0XHRoID0gMTBcclxuXHRcdFx0XHRpZiAodGhpcy5pc0RvdCkge1xyXG5cdFx0XHRcdFx0dyA9IDVcclxuXHRcdFx0XHRcdGggPSA1XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbnN0IHggPSBgJHstIHcgICsgdGhpcy5vZmZzZXRbMF19cHhgXHJcblx0XHRcdFx0Y29uc3QgeSA9IGAkey0gaCArIHRoaXMub2Zmc2V0WzFdfXB4YFxyXG5cclxuXHRcdFx0XHRjb25zdCB3aGl0ZUxpc3QgPSB7XHJcblx0XHRcdFx0XHRyaWdodFRvcDoge1xyXG5cdFx0XHRcdFx0XHRyaWdodDogeCxcclxuXHRcdFx0XHRcdFx0dG9wOiB5XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0cmlnaHRCb3R0b206IHtcclxuXHRcdFx0XHRcdFx0cmlnaHQ6IHgsXHJcblx0XHRcdFx0XHRcdGJvdHRvbTogeVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGxlZnRCb3R0b206IHtcclxuXHRcdFx0XHRcdFx0bGVmdDogeCxcclxuXHRcdFx0XHRcdFx0Ym90dG9tOiB5XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0bGVmdFRvcDoge1xyXG5cdFx0XHRcdFx0XHRsZWZ0OiB4LFxyXG5cdFx0XHRcdFx0XHR0b3A6IHlcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29uc3QgbWF0Y2ggPSB3aGl0ZUxpc3RbdGhpcy5hYnNvbHV0ZV1cclxuXHRcdFx0XHRyZXR1cm4gbWF0Y2ggPyBtYXRjaCA6IHdoaXRlTGlzdFsncmlnaHRUb3AnXVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRiYWRnZVdpZHRoKCkge1xyXG5cdFx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHR3aWR0aDogYCR7dGhpcy53aWR0aH1weGBcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdGRvdFN0eWxlKCkge1xyXG5cdFx0XHRcdGlmICghdGhpcy5pc0RvdCkgcmV0dXJuIHt9XHJcblx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdHdpZHRoOiAnMTBweCcsXHJcblx0XHRcdFx0XHRoZWlnaHQ6ICcxMHB4JyxcclxuXHRcdFx0XHRcdGJvcmRlclJhZGl1czogJzEwcHgnXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRkaXNwbGF5VmFsdWUoKSB7XHJcblx0XHRcdFx0Y29uc3Qge1xyXG5cdFx0XHRcdFx0aXNEb3QsXHJcblx0XHRcdFx0XHR0ZXh0LFxyXG5cdFx0XHRcdFx0bWF4TnVtXHJcblx0XHRcdFx0fSA9IHRoaXNcclxuXHRcdFx0XHRyZXR1cm4gaXNEb3QgPyAnJyA6IChOdW1iZXIodGV4dCkgPiBtYXhOdW0gPyBgJHttYXhOdW19K2AgOiB0ZXh0KVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRvbkNsaWNrKCkge1xyXG5cdFx0XHRcdHRoaXMuJGVtaXQoJ2NsaWNrJyk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9O1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwic2Nzc1wiID5cclxuXHQkdW5pLXByaW1hcnk6ICMyOTc5ZmYgIWRlZmF1bHQ7XHJcblx0JHVuaS1zdWNjZXNzOiAjNGNkOTY0ICFkZWZhdWx0O1xyXG5cdCR1bmktd2FybmluZzogI2YwYWQ0ZSAhZGVmYXVsdDtcclxuXHQkdW5pLWVycm9yOiAjZGQ1MjRkICFkZWZhdWx0O1xyXG5cdCR1bmktaW5mbzogIzkwOTM5OSAhZGVmYXVsdDtcclxuXHJcblxyXG5cdCRiYWdlLXNpemU6IDEycHg7XHJcblx0JGJhZ2Utc21hbGw6IHNjYWxlKDAuOCk7XHJcblxyXG5cdC51bmktYmFkZ2UtLXgge1xyXG5cdFx0LyogI2lmZGVmIEFQUC1OVlVFICovXHJcblx0XHQvLyBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHR9XHJcblxyXG5cdC51bmktYmFkZ2UtLWFic29sdXRlIHtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHR9XHJcblxyXG5cdC51bmktYmFkZ2UtLXNtYWxsIHtcclxuXHRcdHRyYW5zZm9ybTogJGJhZ2Utc21hbGw7XHJcblx0XHR0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyO1xyXG5cdH1cclxuXHJcblx0LnVuaS1iYWRnZSB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcclxuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHRcdGhlaWdodDogMjBweDtcclxuXHRcdGxpbmUtaGVpZ2h0OiAxOHB4O1xyXG5cdFx0Y29sb3I6ICNmZmY7XHJcblx0XHRib3JkZXItcmFkaXVzOiAxMDBweDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICR1bmktaW5mbztcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG5cdFx0Ym9yZGVyOiAxcHggc29saWQgI2ZmZjtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdGZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XHJcblx0XHRmb250LXNpemU6ICRiYWdlLXNpemU7XHJcblx0XHQvKiAjaWZkZWYgSDUgKi9cclxuXHRcdHotaW5kZXg6IDk5OTtcclxuXHRcdGN1cnNvcjogcG9pbnRlcjtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cclxuXHRcdCYtLWluZm8ge1xyXG5cdFx0XHRjb2xvcjogI2ZmZjtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHVuaS1pbmZvO1xyXG5cdFx0fVxyXG5cclxuXHRcdCYtLXByaW1hcnkge1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkdW5pLXByaW1hcnk7XHJcblx0XHR9XHJcblxyXG5cdFx0Ji0tc3VjY2VzcyB7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICR1bmktc3VjY2VzcztcclxuXHRcdH1cclxuXHJcblx0XHQmLS13YXJuaW5nIHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHVuaS13YXJuaW5nO1xyXG5cdFx0fVxyXG5cclxuXHRcdCYtLWVycm9yIHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJHVuaS1lcnJvcjtcclxuXHRcdH1cclxuXHJcblx0XHQmLS1pbnZlcnRlZCB7XHJcblx0XHRcdHBhZGRpbmc6IDAgNXB4IDAgMDtcclxuXHRcdFx0Y29sb3I6ICR1bmktaW5mbztcclxuXHRcdH1cclxuXHJcblx0XHQmLS1pbmZvLWludmVydGVkIHtcclxuXHRcdFx0Y29sb3I6ICR1bmktaW5mbztcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcblx0XHR9XHJcblxyXG5cdFx0Ji0tcHJpbWFyeS1pbnZlcnRlZCB7XHJcblx0XHRcdGNvbG9yOiAkdW5pLXByaW1hcnk7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG5cdFx0fVxyXG5cclxuXHRcdCYtLXN1Y2Nlc3MtaW52ZXJ0ZWQge1xyXG5cdFx0XHRjb2xvcjogJHVuaS1zdWNjZXNzO1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuXHRcdH1cclxuXHJcblx0XHQmLS13YXJuaW5nLWludmVydGVkIHtcclxuXHRcdFx0Y29sb3I6ICR1bmktd2FybmluZztcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcblx0XHR9XHJcblxyXG5cdFx0Ji0tZXJyb3ItaW52ZXJ0ZWQge1xyXG5cdFx0XHRjb2xvcjogJHVuaS1lcnJvcjtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcblx0XHR9XHJcblxyXG5cdH1cclxuPC9zdHlsZT5cclxuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxcXFxkaXN0XFxcXGxvYWRlci5qcz8/cmVmLS04LW9uZU9mLTEtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxjc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFxzdHlsZVBvc3RMb2FkZXIuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXHBvc3Rjc3MtbG9hZGVyXFxcXHNyY1xcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHNhc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS00IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtNSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktYmFkZ2UudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXFxcXGRpc3RcXFxcbG9hZGVyLmpzPz9yZWYtLTgtb25lT2YtMS0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGNzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHN0eWxlUG9zdExvYWRlci5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxccG9zdGNzcy1sb2FkZXJcXFxcc3JjXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcc2Fzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTQhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS01IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1iYWRnZS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbiAgICBpZihtb2R1bGUuaG90KSB7XG4gICAgICAvLyAxNjUzMzEyMjU0NDU2XG4gICAgICB2YXIgY3NzUmVsb2FkID0gcmVxdWlyZShcIkQ6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luL2Rpc3QvaG1yL2hvdE1vZHVsZVJlcGxhY2VtZW50LmpzXCIpKG1vZHVsZS5pZCwge1wiaG1yXCI6dHJ1ZSxcInB1YmxpY1BhdGhcIjpcIi4uLy4uL1wiLFwibG9jYWxzXCI6ZmFsc2V9KTtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShjc3NSZWxvYWQpO1xuICAgICAgbW9kdWxlLmhvdC5hY2NlcHQodW5kZWZpbmVkLCBjc3NSZWxvYWQpO1xuICAgIH1cbiAgIl0sInNvdXJjZVJvb3QiOiIifQ==
;(global["webpackJsonp"] = global["webpackJsonp"] || []).push([
'uni_modules/uni-badge/components/uni-badge/uni-badge-create-component',
{
'uni_modules/uni-badge/components/uni-badge/uni-badge-create-component':(function(module, exports, __webpack_require__){
- __webpack_require__('1')['createComponent'](__webpack_require__(145))
+ __webpack_require__('1')['createComponent'](__webpack_require__(160))
})
},
[['uni_modules/uni-badge/components/uni-badge/uni-badge-create-component']]
diff --git a/unpackage/dist/dev/mp-toutiao/uni_modules/uni-icons/components/uni-icons/uni-icons.js b/unpackage/dist/dev/mp-toutiao/uni_modules/uni-icons/components/uni-icons/uni-icons.js
index b0c3da6..e8f55c5 100644
--- a/unpackage/dist/dev/mp-toutiao/uni_modules/uni-icons/components/uni-icons/uni-icons.js
+++ b/unpackage/dist/dev/mp-toutiao/uni_modules/uni-icons/components/uni-icons/uni-icons.js
@@ -1,6 +1,6 @@
(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["uni_modules/uni-icons/components/uni-icons/uni-icons"],{
-/***/ 137:
+/***/ 152:
/*!*****************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-icons/components/uni-icons/uni-icons.vue ***!
\*****************************************************************************************/
@@ -9,10 +9,10 @@
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _uni_icons_vue_vue_type_template_id_a2e81f6e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-icons.vue?vue&type=template&id=a2e81f6e& */ 138);
-/* harmony import */ var _uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-icons.vue?vue&type=script&lang=js& */ 140);
+/* harmony import */ var _uni_icons_vue_vue_type_template_id_a2e81f6e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-icons.vue?vue&type=template&id=a2e81f6e& */ 153);
+/* harmony import */ var _uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-icons.vue?vue&type=script&lang=js& */ 155);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
-/* harmony import */ var _uni_icons_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uni-icons.vue?vue&type=style&index=0&lang=scss& */ 143);
+/* harmony import */ var _uni_icons_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uni-icons.vue?vue&type=style&index=0&lang=scss& */ 158);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 11);
var renderjs
@@ -41,7 +41,7 @@ component.options.__file = "uni_modules/uni-icons/components/uni-icons/uni-icons
/***/ }),
-/***/ 138:
+/***/ 153:
/*!************************************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?vue&type=template&id=a2e81f6e& ***!
\************************************************************************************************************************/
@@ -50,7 +50,7 @@ component.options.__file = "uni_modules/uni-icons/components/uni-icons/uni-icons
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_icons_vue_vue_type_template_id_a2e81f6e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-icons.vue?vue&type=template&id=a2e81f6e& */ 139);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_icons_vue_vue_type_template_id_a2e81f6e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-icons.vue?vue&type=template&id=a2e81f6e& */ 154);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_icons_vue_vue_type_template_id_a2e81f6e___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_icons_vue_vue_type_template_id_a2e81f6e___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
@@ -63,7 +63,7 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
-/***/ 139:
+/***/ 154:
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?vue&type=template&id=a2e81f6e& ***!
\************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -90,7 +90,7 @@ render._withStripped = true
/***/ }),
-/***/ 140:
+/***/ 155:
/*!******************************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?vue&type=script&lang=js& ***!
\******************************************************************************************************************/
@@ -99,14 +99,14 @@ render._withStripped = true
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-icons.vue?vue&type=script&lang=js& */ 141);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-icons.vue?vue&type=script&lang=js& */ 156);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_icons_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
-/***/ 141:
+/***/ 156:
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?vue&type=script&lang=js& ***!
\*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -124,7 +124,7 @@ Object.defineProperty(exports, "__esModule", { value: true });exports.default =
-var _icons = _interopRequireDefault(__webpack_require__(/*! ./icons.js */ 142));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} //
+var _icons = _interopRequireDefault(__webpack_require__(/*! ./icons.js */ 157));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} //
//
//
//
@@ -193,7 +193,7 @@ var getVal = function getVal(val) {var reg = /^[0-9]*$/g;return typeof val === '
/***/ }),
-/***/ 143:
+/***/ 158:
/*!***************************************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?vue&type=style&index=0&lang=scss& ***!
\***************************************************************************************************************************/
@@ -202,14 +202,14 @@ var getVal = function getVal(val) {var reg = /^[0-9]*$/g;return typeof val === '
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_icons_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-icons.vue?vue&type=style&index=0&lang=scss& */ 144);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_icons_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-icons.vue?vue&type=style&index=0&lang=scss& */ 159);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_icons_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_icons_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_icons_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_icons_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_icons_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
-/***/ 144:
+/***/ 159:
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/uni_modules/uni-icons/components/uni-icons/uni-icons.vue?vue&type=style&index=0&lang=scss& ***!
\*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -223,12 +223,12 @@ __webpack_require__.r(__webpack_exports__);
/***/ })
}]);
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktaWNvbnMvY29tcG9uZW50cy91bmktaWNvbnMvdW5pLWljb25zLnZ1ZT8zZmZhIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1pY29ucy9jb21wb25lbnRzL3VuaS1pY29ucy91bmktaWNvbnMudnVlPzA5NTMiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svdW5pX21vZHVsZXMvdW5pLWljb25zL2NvbXBvbmVudHMvdW5pLWljb25zL3VuaS1pY29ucy52dWU/MzRkZSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktaWNvbnMvY29tcG9uZW50cy91bmktaWNvbnMvdW5pLWljb25zLnZ1ZT80ZTAwIiwidW5pLWFwcDovLy91bmlfbW9kdWxlcy91bmktaWNvbnMvY29tcG9uZW50cy91bmktaWNvbnMvdW5pLWljb25zLnZ1ZSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktaWNvbnMvY29tcG9uZW50cy91bmktaWNvbnMvdW5pLWljb25zLnZ1ZT85NDU0Iiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1pY29ucy9jb21wb25lbnRzL3VuaS1pY29ucy91bmktaWNvbnMudnVlP2Q1NmYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFzSDtBQUN0SDtBQUM2RDtBQUNMO0FBQ2M7OztBQUd0RTtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSwrRUFBTTtBQUNSLEVBQUUsb0ZBQU07QUFDUixFQUFFLDZGQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHdGQUFVO0FBQ1o7QUFDQTs7QUFFQTtBQUNlLGdGOzs7Ozs7Ozs7Ozs7QUN2QmY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQ1JBO0FBQUE7QUFBQTtBQUFBO0FBQW1tQixDQUFnQiw2bkJBQUcsRUFBQyxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDVXZuQixnRjs7Ozs7Ozs7O0FBQ0EsbUNBQ0Esc0JBQ0EsbUVBQ0EsQ0FIQTs7Ozs7QUFhQTs7Ozs7Ozs7OztBQVVBO0FBQ0Esa0JBREE7QUFFQSxrQkFGQTtBQUdBO0FBQ0E7QUFDQSxrQkFEQTtBQUVBLGlCQUZBLEVBREE7O0FBS0E7QUFDQSxrQkFEQTtBQUVBLHdCQUZBLEVBTEE7O0FBU0E7QUFDQSw0QkFEQTtBQUVBLGlCQUZBLEVBVEE7O0FBYUE7QUFDQSxrQkFEQTtBQUVBLGlCQUZBLEVBYkEsRUFIQTs7O0FBcUJBLE1BckJBLGtCQXFCQTtBQUNBO0FBQ0Esa0NBREE7O0FBR0EsR0F6QkE7QUEwQkE7QUFDQSxXQURBLHFCQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBUEE7QUFRQSxZQVJBLHNCQVFBO0FBQ0E7QUFDQSxLQVZBLEVBMUJBOztBQXNDQTtBQUNBLFlBREEsc0JBQ0E7QUFDQTtBQUNBLEtBSEEsRUF0Q0EsRTs7Ozs7Ozs7Ozs7O0FDbENBO0FBQUE7QUFBQTtBQUFBO0FBQThvQyxDQUFnQixvbkNBQUcsRUFBQyxDOzs7Ozs7Ozs7OztBQ0FscUM7QUFDQSxPQUFPLEtBQVUsRUFBRSxrQkFLZCIsImZpbGUiOiJ1bmlfbW9kdWxlcy91bmktaWNvbnMvY29tcG9uZW50cy91bmktaWNvbnMvdW5pLWljb25zLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSBmcm9tIFwiLi91bmktaWNvbnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWEyZTgxZjZlJlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vdW5pLWljb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vdW5pLWljb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi91bmktaWNvbnMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXHJ1bnRpbWVcXFxcY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInVuaV9tb2R1bGVzL3VuaS1pY29ucy9jb21wb25lbnRzL3VuaS1pY29ucy91bmktaWNvbnMudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHRlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTE2LTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcdGVtcGxhdGUuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXVuaS1hcHAtbG9hZGVyXFxcXHBhZ2UtbWV0YS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktaWNvbnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWEyZTgxZjZlJlwiIiwidmFyIGNvbXBvbmVudHNcbnZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxufVxudmFyIHJlY3ljbGFibGVSZW5kZXIgPSBmYWxzZVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSIsImltcG9ydCBtb2QgZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcYmFiZWwtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTItMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzY3JpcHQuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vdW5pLWljb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMi0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHNjcmlwdC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktaWNvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiPHRlbXBsYXRlPlxyXG5cdDwhLS0gI2lmZGVmIEFQUC1OVlVFIC0tPlxyXG5cdDx0ZXh0IDpzdHlsZT1cInsgY29sb3I6IGNvbG9yLCAnZm9udC1zaXplJzogaWNvblNpemUgfVwiIGNsYXNzPVwidW5pLWljb25zXCIgQGNsaWNrPVwiX29uQ2xpY2tcIj57e3VuaWNvZGV9fTwvdGV4dD5cclxuXHQ8IS0tICNlbmRpZiAtLT5cclxuXHQ8IS0tICNpZm5kZWYgQVBQLU5WVUUgLS0+XHJcblx0PHRleHQgOnN0eWxlPVwieyBjb2xvcjogY29sb3IsICdmb250LXNpemUnOiBpY29uU2l6ZSB9XCIgY2xhc3M9XCJ1bmktaWNvbnNcIiA6Y2xhc3M9XCJbJ3VuaXVpLScrdHlwZSxjdXN0b21QcmVmaXgsY3VzdG9tUHJlZml4P3R5cGU6JyddXCIgQGNsaWNrPVwiX29uQ2xpY2tcIj48L3RleHQ+XHJcblx0PCEtLSAjZW5kaWYgLS0+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGltcG9ydCBpY29ucyBmcm9tICcuL2ljb25zLmpzJztcclxuXHRjb25zdCBnZXRWYWwgPSAodmFsKSA9PiB7XHJcblx0XHRjb25zdCByZWcgPSAvXlswLTldKiQvZ1xyXG5cdFx0cmV0dXJuICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJyB8fOOAgHJlZy50ZXN0KHZhbCkgKT8gdmFsICsgJ3B4JyA6IHZhbDtcclxuXHR9IFxyXG5cdC8vICNpZmRlZiBBUFAtTlZVRVxyXG5cdHZhciBkb21Nb2R1bGUgPSB3ZWV4LnJlcXVpcmVNb2R1bGUoJ2RvbScpO1xyXG5cdGltcG9ydCBpY29uVXJsIGZyb20gJy4vdW5paWNvbnMudHRmJ1xyXG5cdGRvbU1vZHVsZS5hZGRSdWxlKCdmb250RmFjZScsIHtcclxuXHRcdCdmb250RmFtaWx5JzogXCJ1bmlpY29uc1wiLFxyXG5cdFx0J3NyYyc6IFwidXJsKCdcIitpY29uVXJsK1wiJylcIlxyXG5cdH0pO1xyXG5cdC8vICNlbmRpZlxyXG5cclxuXHQvKipcclxuXHQgKiBJY29ucyDlm77moIdcclxuXHQgKiBAZGVzY3JpcHRpb24g55So5LqO5bGV56S6IGljb25zIOWbvuagh1xyXG5cdCAqIEB0dXRvcmlhbCBodHRwczovL2V4dC5kY2xvdWQubmV0LmNuL3BsdWdpbj9pZD0yOFxyXG5cdCAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBzaXplIOWbvuagh+Wkp+Wwj1xyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB0eXBlIOWbvuagh+WbvuahiO+8jOWPguiAg+ekuuS+i1xyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBjb2xvciDlm77moIfpopzoibJcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gY3VzdG9tUHJlZml4IOiHquWumuS5ieWbvuagh1xyXG5cdCAqIEBldmVudCB7RnVuY3Rpb259IGNsaWNrIOeCueWHuyBJY29uIOinpuWPkeS6i+S7tlxyXG5cdCAqL1xyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdG5hbWU6ICdVbmlJY29ucycsXHJcblx0XHRlbWl0czpbJ2NsaWNrJ10sXHJcblx0XHRwcm9wczoge1xyXG5cdFx0XHR0eXBlOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICcnXHJcblx0XHRcdH0sXHJcblx0XHRcdGNvbG9yOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICcjMzMzMzMzJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRzaXplOiB7XHJcblx0XHRcdFx0dHlwZTogW051bWJlciwgU3RyaW5nXSxcclxuXHRcdFx0XHRkZWZhdWx0OiAxNlxyXG5cdFx0XHR9LFxyXG5cdFx0XHRjdXN0b21QcmVmaXg6e1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiAnJ1xyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRpY29uczogaWNvbnMuZ2x5cGhzXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRjb21wdXRlZDp7XHJcblx0XHRcdHVuaWNvZGUoKXtcclxuXHRcdFx0XHRsZXQgY29kZSA9IHRoaXMuaWNvbnMuZmluZCh2PT52LmZvbnRfY2xhc3MgPT09IHRoaXMudHlwZSlcclxuXHRcdFx0XHRpZihjb2RlKXtcclxuXHRcdFx0XHRcdHJldHVybiB1bmVzY2FwZShgJXUke2NvZGUudW5pY29kZX1gKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gJydcclxuXHRcdFx0fSxcclxuXHRcdFx0aWNvblNpemUoKXtcclxuXHRcdFx0XHRyZXR1cm4gZ2V0VmFsKHRoaXMuc2l6ZSlcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdG1ldGhvZHM6IHtcclxuXHRcdFx0X29uQ2xpY2soKSB7XHJcblx0XHRcdFx0dGhpcy4kZW1pdCgnY2xpY2snKVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxyXG5cdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRAaW1wb3J0ICcuL3VuaWljb25zLmNzcyc7XHJcblx0QGZvbnQtZmFjZSB7XHJcblx0XHRmb250LWZhbWlseTogdW5paWNvbnM7XHJcblx0XHRzcmM6IHVybCgnLi91bmlpY29ucy50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XHJcblx0fVxyXG5cclxuXHQvKiAjZW5kaWYgKi9cclxuXHQudW5pLWljb25zIHtcclxuXHRcdGZvbnQtZmFtaWx5OiB1bmlpY29ucztcclxuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHR9XHJcblxyXG48L3N0eWxlPlxyXG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXFxcXGRpc3RcXFxcbG9hZGVyLmpzPz9yZWYtLTgtb25lT2YtMS0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGNzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHN0eWxlUG9zdExvYWRlci5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxccG9zdGNzcy1sb2FkZXJcXFxcc3JjXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcc2Fzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTQhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS01IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1pY29ucy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cXFxcZGlzdFxcXFxsb2FkZXIuanM/P3JlZi0tOC1vbmVPZi0xLTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcY3NzLWxvYWRlclxcXFxkaXN0XFxcXGNqcy5qcz8/cmVmLS04LW9uZU9mLTEtMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGxvYWRlcnNcXFxcc3R5bGVQb3N0TG9hZGVyLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxwb3N0Y3NzLWxvYWRlclxcXFxzcmNcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFxzYXNzLWxvYWRlclxcXFxkaXN0XFxcXGNqcy5qcz8/cmVmLS04LW9uZU9mLTEtNCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTUhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vdW5pLWljb25zLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuICAgIGlmKG1vZHVsZS5ob3QpIHtcbiAgICAgIC8vIDE2NTI2OTY5ODI5NDVcbiAgICAgIHZhciBjc3NSZWxvYWQgPSByZXF1aXJlKFwiRDovSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9obXIvaG90TW9kdWxlUmVwbGFjZW1lbnQuanNcIikobW9kdWxlLmlkLCB7XCJobXJcIjp0cnVlLFwicHVibGljUGF0aFwiOlwiLi4vLi4vXCIsXCJsb2NhbHNcIjpmYWxzZX0pO1xuICAgICAgbW9kdWxlLmhvdC5kaXNwb3NlKGNzc1JlbG9hZCk7XG4gICAgICBtb2R1bGUuaG90LmFjY2VwdCh1bmRlZmluZWQsIGNzc1JlbG9hZCk7XG4gICAgfVxuICAiXSwic291cmNlUm9vdCI6IiJ9
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktaWNvbnMvY29tcG9uZW50cy91bmktaWNvbnMvdW5pLWljb25zLnZ1ZT8zZmZhIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1pY29ucy9jb21wb25lbnRzL3VuaS1pY29ucy91bmktaWNvbnMudnVlPzA5NTMiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svdW5pX21vZHVsZXMvdW5pLWljb25zL2NvbXBvbmVudHMvdW5pLWljb25zL3VuaS1pY29ucy52dWU/MzRkZSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktaWNvbnMvY29tcG9uZW50cy91bmktaWNvbnMvdW5pLWljb25zLnZ1ZT80ZTAwIiwidW5pLWFwcDovLy91bmlfbW9kdWxlcy91bmktaWNvbnMvY29tcG9uZW50cy91bmktaWNvbnMvdW5pLWljb25zLnZ1ZSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktaWNvbnMvY29tcG9uZW50cy91bmktaWNvbnMvdW5pLWljb25zLnZ1ZT85NDU0Iiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1pY29ucy9jb21wb25lbnRzL3VuaS1pY29ucy91bmktaWNvbnMudnVlP2Q1NmYiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFzSDtBQUN0SDtBQUM2RDtBQUNMO0FBQ2M7OztBQUd0RTtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSwrRUFBTTtBQUNSLEVBQUUsb0ZBQU07QUFDUixFQUFFLDZGQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHdGQUFVO0FBQ1o7QUFDQTs7QUFFQTtBQUNlLGdGOzs7Ozs7Ozs7Ozs7QUN2QmY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQ1JBO0FBQUE7QUFBQTtBQUFBO0FBQW1tQixDQUFnQiw2bkJBQUcsRUFBQyxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDVXZuQixnRjs7Ozs7Ozs7O0FBQ0EsbUNBQ0Esc0JBQ0EsbUVBQ0EsQ0FIQTs7Ozs7QUFhQTs7Ozs7Ozs7OztBQVVBO0FBQ0Esa0JBREE7QUFFQSxrQkFGQTtBQUdBO0FBQ0E7QUFDQSxrQkFEQTtBQUVBLGlCQUZBLEVBREE7O0FBS0E7QUFDQSxrQkFEQTtBQUVBLHdCQUZBLEVBTEE7O0FBU0E7QUFDQSw0QkFEQTtBQUVBLGlCQUZBLEVBVEE7O0FBYUE7QUFDQSxrQkFEQTtBQUVBLGlCQUZBLEVBYkEsRUFIQTs7O0FBcUJBLE1BckJBLGtCQXFCQTtBQUNBO0FBQ0Esa0NBREE7O0FBR0EsR0F6QkE7QUEwQkE7QUFDQSxXQURBLHFCQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBUEE7QUFRQSxZQVJBLHNCQVFBO0FBQ0E7QUFDQSxLQVZBLEVBMUJBOztBQXNDQTtBQUNBLFlBREEsc0JBQ0E7QUFDQTtBQUNBLEtBSEEsRUF0Q0EsRTs7Ozs7Ozs7Ozs7O0FDbENBO0FBQUE7QUFBQTtBQUFBO0FBQThvQyxDQUFnQixvbkNBQUcsRUFBQyxDOzs7Ozs7Ozs7OztBQ0FscUM7QUFDQSxPQUFPLEtBQVUsRUFBRSxrQkFLZCIsImZpbGUiOiJ1bmlfbW9kdWxlcy91bmktaWNvbnMvY29tcG9uZW50cy91bmktaWNvbnMvdW5pLWljb25zLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSBmcm9tIFwiLi91bmktaWNvbnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWEyZTgxZjZlJlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vdW5pLWljb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vdW5pLWljb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuaW1wb3J0IHN0eWxlMCBmcm9tIFwiLi91bmktaWNvbnMudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXHJ1bnRpbWVcXFxcY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInVuaV9tb2R1bGVzL3VuaS1pY29ucy9jb21wb25lbnRzL3VuaS1pY29ucy91bmktaWNvbnMudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHRlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTE2LTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcdGVtcGxhdGUuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXVuaS1hcHAtbG9hZGVyXFxcXHBhZ2UtbWV0YS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktaWNvbnMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWEyZTgxZjZlJlwiIiwidmFyIGNvbXBvbmVudHNcbnZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxufVxudmFyIHJlY3ljbGFibGVSZW5kZXIgPSBmYWxzZVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSIsImltcG9ydCBtb2QgZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcYmFiZWwtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTItMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzY3JpcHQuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vdW5pLWljb25zLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMi0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHNjcmlwdC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktaWNvbnMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiPHRlbXBsYXRlPlxyXG5cdDwhLS0gI2lmZGVmIEFQUC1OVlVFIC0tPlxyXG5cdDx0ZXh0IDpzdHlsZT1cInsgY29sb3I6IGNvbG9yLCAnZm9udC1zaXplJzogaWNvblNpemUgfVwiIGNsYXNzPVwidW5pLWljb25zXCIgQGNsaWNrPVwiX29uQ2xpY2tcIj57e3VuaWNvZGV9fTwvdGV4dD5cclxuXHQ8IS0tICNlbmRpZiAtLT5cclxuXHQ8IS0tICNpZm5kZWYgQVBQLU5WVUUgLS0+XHJcblx0PHRleHQgOnN0eWxlPVwieyBjb2xvcjogY29sb3IsICdmb250LXNpemUnOiBpY29uU2l6ZSB9XCIgY2xhc3M9XCJ1bmktaWNvbnNcIiA6Y2xhc3M9XCJbJ3VuaXVpLScrdHlwZSxjdXN0b21QcmVmaXgsY3VzdG9tUHJlZml4P3R5cGU6JyddXCIgQGNsaWNrPVwiX29uQ2xpY2tcIj48L3RleHQ+XHJcblx0PCEtLSAjZW5kaWYgLS0+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGltcG9ydCBpY29ucyBmcm9tICcuL2ljb25zLmpzJztcclxuXHRjb25zdCBnZXRWYWwgPSAodmFsKSA9PiB7XHJcblx0XHRjb25zdCByZWcgPSAvXlswLTldKiQvZ1xyXG5cdFx0cmV0dXJuICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJyB8fOOAgHJlZy50ZXN0KHZhbCkgKT8gdmFsICsgJ3B4JyA6IHZhbDtcclxuXHR9IFxyXG5cdC8vICNpZmRlZiBBUFAtTlZVRVxyXG5cdHZhciBkb21Nb2R1bGUgPSB3ZWV4LnJlcXVpcmVNb2R1bGUoJ2RvbScpO1xyXG5cdGltcG9ydCBpY29uVXJsIGZyb20gJy4vdW5paWNvbnMudHRmJ1xyXG5cdGRvbU1vZHVsZS5hZGRSdWxlKCdmb250RmFjZScsIHtcclxuXHRcdCdmb250RmFtaWx5JzogXCJ1bmlpY29uc1wiLFxyXG5cdFx0J3NyYyc6IFwidXJsKCdcIitpY29uVXJsK1wiJylcIlxyXG5cdH0pO1xyXG5cdC8vICNlbmRpZlxyXG5cclxuXHQvKipcclxuXHQgKiBJY29ucyDlm77moIdcclxuXHQgKiBAZGVzY3JpcHRpb24g55So5LqO5bGV56S6IGljb25zIOWbvuagh1xyXG5cdCAqIEB0dXRvcmlhbCBodHRwczovL2V4dC5kY2xvdWQubmV0LmNuL3BsdWdpbj9pZD0yOFxyXG5cdCAqIEBwcm9wZXJ0eSB7TnVtYmVyfSBzaXplIOWbvuagh+Wkp+Wwj1xyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSB0eXBlIOWbvuagh+WbvuahiO+8jOWPguiAg+ekuuS+i1xyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBjb2xvciDlm77moIfpopzoibJcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gY3VzdG9tUHJlZml4IOiHquWumuS5ieWbvuagh1xyXG5cdCAqIEBldmVudCB7RnVuY3Rpb259IGNsaWNrIOeCueWHuyBJY29uIOinpuWPkeS6i+S7tlxyXG5cdCAqL1xyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdG5hbWU6ICdVbmlJY29ucycsXHJcblx0XHRlbWl0czpbJ2NsaWNrJ10sXHJcblx0XHRwcm9wczoge1xyXG5cdFx0XHR0eXBlOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICcnXHJcblx0XHRcdH0sXHJcblx0XHRcdGNvbG9yOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICcjMzMzMzMzJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRzaXplOiB7XHJcblx0XHRcdFx0dHlwZTogW051bWJlciwgU3RyaW5nXSxcclxuXHRcdFx0XHRkZWZhdWx0OiAxNlxyXG5cdFx0XHR9LFxyXG5cdFx0XHRjdXN0b21QcmVmaXg6e1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiAnJ1xyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRpY29uczogaWNvbnMuZ2x5cGhzXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRjb21wdXRlZDp7XHJcblx0XHRcdHVuaWNvZGUoKXtcclxuXHRcdFx0XHRsZXQgY29kZSA9IHRoaXMuaWNvbnMuZmluZCh2PT52LmZvbnRfY2xhc3MgPT09IHRoaXMudHlwZSlcclxuXHRcdFx0XHRpZihjb2RlKXtcclxuXHRcdFx0XHRcdHJldHVybiB1bmVzY2FwZShgJXUke2NvZGUudW5pY29kZX1gKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gJydcclxuXHRcdFx0fSxcclxuXHRcdFx0aWNvblNpemUoKXtcclxuXHRcdFx0XHRyZXR1cm4gZ2V0VmFsKHRoaXMuc2l6ZSlcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdG1ldGhvZHM6IHtcclxuXHRcdFx0X29uQ2xpY2soKSB7XHJcblx0XHRcdFx0dGhpcy4kZW1pdCgnY2xpY2snKVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxyXG5cdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRAaW1wb3J0ICcuL3VuaWljb25zLmNzcyc7XHJcblx0QGZvbnQtZmFjZSB7XHJcblx0XHRmb250LWZhbWlseTogdW5paWNvbnM7XHJcblx0XHRzcmM6IHVybCgnLi91bmlpY29ucy50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XHJcblx0fVxyXG5cclxuXHQvKiAjZW5kaWYgKi9cclxuXHQudW5pLWljb25zIHtcclxuXHRcdGZvbnQtZmFtaWx5OiB1bmlpY29ucztcclxuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHR9XHJcblxyXG48L3N0eWxlPlxyXG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXFxcXGRpc3RcXFxcbG9hZGVyLmpzPz9yZWYtLTgtb25lT2YtMS0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGNzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHN0eWxlUG9zdExvYWRlci5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxccG9zdGNzcy1sb2FkZXJcXFxcc3JjXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcc2Fzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTQhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS01IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1pY29ucy52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cXFxcZGlzdFxcXFxsb2FkZXIuanM/P3JlZi0tOC1vbmVPZi0xLTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcY3NzLWxvYWRlclxcXFxkaXN0XFxcXGNqcy5qcz8/cmVmLS04LW9uZU9mLTEtMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGxvYWRlcnNcXFxcc3R5bGVQb3N0TG9hZGVyLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxwb3N0Y3NzLWxvYWRlclxcXFxzcmNcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFxzYXNzLWxvYWRlclxcXFxkaXN0XFxcXGNqcy5qcz8/cmVmLS04LW9uZU9mLTEtNCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTUhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vdW5pLWljb25zLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxuICAgIGlmKG1vZHVsZS5ob3QpIHtcbiAgICAgIC8vIDE2NTMzMTIyNTQ1ODJcbiAgICAgIHZhciBjc3NSZWxvYWQgPSByZXF1aXJlKFwiRDovSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9obXIvaG90TW9kdWxlUmVwbGFjZW1lbnQuanNcIikobW9kdWxlLmlkLCB7XCJobXJcIjp0cnVlLFwicHVibGljUGF0aFwiOlwiLi4vLi4vXCIsXCJsb2NhbHNcIjpmYWxzZX0pO1xuICAgICAgbW9kdWxlLmhvdC5kaXNwb3NlKGNzc1JlbG9hZCk7XG4gICAgICBtb2R1bGUuaG90LmFjY2VwdCh1bmRlZmluZWQsIGNzc1JlbG9hZCk7XG4gICAgfVxuICAiXSwic291cmNlUm9vdCI6IiJ9
;(global["webpackJsonp"] = global["webpackJsonp"] || []).push([
'uni_modules/uni-icons/components/uni-icons/uni-icons-create-component',
{
'uni_modules/uni-icons/components/uni-icons/uni-icons-create-component':(function(module, exports, __webpack_require__){
- __webpack_require__('1')['createComponent'](__webpack_require__(137))
+ __webpack_require__('1')['createComponent'](__webpack_require__(152))
})
},
[['uni_modules/uni-icons/components/uni-icons/uni-icons-create-component']]
diff --git a/unpackage/dist/dev/mp-toutiao/uni_modules/uni-list/components/uni-list-item/uni-list-item.js b/unpackage/dist/dev/mp-toutiao/uni_modules/uni-list/components/uni-list-item/uni-list-item.js
index ef79e03..4d9345b 100644
--- a/unpackage/dist/dev/mp-toutiao/uni_modules/uni-list/components/uni-list-item/uni-list-item.js
+++ b/unpackage/dist/dev/mp-toutiao/uni_modules/uni-list/components/uni-list-item/uni-list-item.js
@@ -1,6 +1,6 @@
(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["uni_modules/uni-list/components/uni-list-item/uni-list-item"],{
-/***/ 130:
+/***/ 145:
/*!************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue ***!
\************************************************************************************************/
@@ -9,10 +9,10 @@
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _uni_list_item_vue_vue_type_template_id_296a3d7e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-list-item.vue?vue&type=template&id=296a3d7e& */ 131);
-/* harmony import */ var _uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-list-item.vue?vue&type=script&lang=js& */ 133);
+/* harmony import */ var _uni_list_item_vue_vue_type_template_id_296a3d7e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-list-item.vue?vue&type=template&id=296a3d7e& */ 146);
+/* harmony import */ var _uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-list-item.vue?vue&type=script&lang=js& */ 148);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
-/* harmony import */ var _uni_list_item_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uni-list-item.vue?vue&type=style&index=0&lang=scss& */ 135);
+/* harmony import */ var _uni_list_item_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uni-list-item.vue?vue&type=style&index=0&lang=scss& */ 150);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 11);
var renderjs
@@ -41,7 +41,7 @@ component.options.__file = "uni_modules/uni-list/components/uni-list-item/uni-li
/***/ }),
-/***/ 131:
+/***/ 146:
/*!*******************************************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue?vue&type=template&id=296a3d7e& ***!
\*******************************************************************************************************************************/
@@ -50,7 +50,7 @@ component.options.__file = "uni_modules/uni-list/components/uni-list-item/uni-li
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_item_vue_vue_type_template_id_296a3d7e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-list-item.vue?vue&type=template&id=296a3d7e& */ 132);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_item_vue_vue_type_template_id_296a3d7e___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-list-item.vue?vue&type=template&id=296a3d7e& */ 147);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_item_vue_vue_type_template_id_296a3d7e___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_item_vue_vue_type_template_id_296a3d7e___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
@@ -63,7 +63,7 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
-/***/ 132:
+/***/ 147:
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue?vue&type=template&id=296a3d7e& ***!
\*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -80,10 +80,10 @@ var components
try {
components = {
uniIcons: function() {
- return Promise.all(/*! import() | uni_modules/uni-icons/components/uni-icons/uni-icons */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uni-icons/components/uni-icons/uni-icons")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uni-icons/components/uni-icons/uni-icons.vue */ 137))
+ return Promise.all(/*! import() | uni_modules/uni-icons/components/uni-icons/uni-icons */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uni-icons/components/uni-icons/uni-icons")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uni-icons/components/uni-icons/uni-icons.vue */ 152))
},
uniBadge: function() {
- return __webpack_require__.e(/*! import() | uni_modules/uni-badge/components/uni-badge/uni-badge */ "uni_modules/uni-badge/components/uni-badge/uni-badge").then(__webpack_require__.bind(null, /*! @/uni_modules/uni-badge/components/uni-badge/uni-badge.vue */ 145))
+ return __webpack_require__.e(/*! import() | uni_modules/uni-badge/components/uni-badge/uni-badge */ "uni_modules/uni-badge/components/uni-badge/uni-badge").then(__webpack_require__.bind(null, /*! @/uni_modules/uni-badge/components/uni-badge/uni-badge.vue */ 160))
}
}
} catch (e) {
@@ -116,7 +116,7 @@ render._withStripped = true
/***/ }),
-/***/ 133:
+/***/ 148:
/*!*************************************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue?vue&type=script&lang=js& ***!
\*************************************************************************************************************************/
@@ -125,14 +125,14 @@ render._withStripped = true
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-list-item.vue?vue&type=script&lang=js& */ 134);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-list-item.vue?vue&type=script&lang=js& */ 149);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_item_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
-/***/ 134:
+/***/ 149:
/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue?vue&type=script&lang=js& ***!
\********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -404,7 +404,7 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
-/***/ 135:
+/***/ 150:
/*!**********************************************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue?vue&type=style&index=0&lang=scss& ***!
\**********************************************************************************************************************************/
@@ -413,14 +413,14 @@ __webpack_require__.r(__webpack_exports__);
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_item_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-list-item.vue?vue&type=style&index=0&lang=scss& */ 136);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_item_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-list-item.vue?vue&type=style&index=0&lang=scss& */ 151);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_item_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_item_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_item_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_item_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_item_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
-/***/ 136:
+/***/ 151:
/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue?vue&type=style&index=0&lang=scss& ***!
\**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -434,12 +434,12 @@ __webpack_require__.r(__webpack_exports__);
/***/ })
}]);
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktbGlzdC9jb21wb25lbnRzL3VuaS1saXN0LWl0ZW0vdW5pLWxpc3QtaXRlbS52dWU/MWFhYSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktbGlzdC9jb21wb25lbnRzL3VuaS1saXN0LWl0ZW0vdW5pLWxpc3QtaXRlbS52dWU/ZTRhZiIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktbGlzdC9jb21wb25lbnRzL3VuaS1saXN0LWl0ZW0vdW5pLWxpc3QtaXRlbS52dWU/YzljYSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktbGlzdC9jb21wb25lbnRzL3VuaS1saXN0LWl0ZW0vdW5pLWxpc3QtaXRlbS52dWU/MDgzYyIsInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLWxpc3QvY29tcG9uZW50cy91bmktbGlzdC1pdGVtL3VuaS1saXN0LWl0ZW0udnVlIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1saXN0L2NvbXBvbmVudHMvdW5pLWxpc3QtaXRlbS91bmktbGlzdC1pdGVtLnZ1ZT9hNjcxIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1saXN0L2NvbXBvbmVudHMvdW5pLWxpc3QtaXRlbS91bmktbGlzdC1pdGVtLnZ1ZT9jYzM3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEg7QUFDMUg7QUFDaUU7QUFDTDtBQUNjOzs7QUFHMUU7QUFDcUs7QUFDckssZ0JBQWdCLCtLQUFVO0FBQzFCLEVB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S0FsQ0E7QUFtQ0EsV0FuQ0EsbUJBbUNBLEdBbkNBLEVBbUNBO0FBQ0E7QUFDQSxvQkFEQTtBQUVBO0FBQ0E7QUFDQSxxQkFEQTs7QUFHQSxTQU5BO0FBT0E7QUFDQTtBQUNBLHFCQURBOztBQUdBLFNBWEE7O0FBYUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQWRBOztBQWdCQSxLQWpFQSxFQWpIQSxFOzs7Ozs7Ozs7Ozs7O0FDakZBO0FBQUE7QUFBQTtBQUFBO0FBQWtwQyxDQUFnQix3bkNBQUcsRUFBQyxDOzs7Ozs7Ozs7OztBQ0F0cUM7QUFDQSxPQUFPLEtBQVUsRUFBRSxrQkFLZCIsImZpbGUiOiJ1bmlfbW9kdWxlcy91bmktbGlzdC9jb21wb25lbnRzL3VuaS1saXN0LWl0ZW0vdW5pLWxpc3QtaXRlbS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vdW5pLWxpc3QtaXRlbS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Mjk2YTNkN2UmXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi91bmktbGlzdC1pdGVtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vdW5pLWxpc3QtaXRlbS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vdW5pLWxpc3QtaXRlbS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxccnVudGltZVxcXFxjb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvdW5pLWxpc3QvY29tcG9uZW50cy91bmktbGlzdC1pdGVtL3VuaS1saXN0LWl0ZW0udnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHRlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTE2LTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcdGVtcGxhdGUuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXVuaS1hcHAtbG9hZGVyXFxcXHBhZ2UtbWV0YS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktbGlzdC1pdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yOTZhM2Q3ZSZcIiIsInZhciBjb21wb25lbnRzXG50cnkge1xuICBjb21wb25lbnRzID0ge1xuICAgIHVuaUljb25zOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBpbXBvcnQoXG4gICAgICAgIC8qIHdlYnBhY2tDaHVua05hbWU6IFwidW5pX21vZHVsZXMvdW5pLWljb25zL2NvbXBvbmVudHMvdW5pLWljb25zL3VuaS1pY29uc1wiICovIFwiQC91bmlfbW9kdWxlcy91bmktaWNvbnMvY29tcG9uZW50cy91bmktaWNvbnMvdW5pLWljb25zLnZ1ZVwiXG4gICAgICApXG4gICAgfSxcbiAgICB1bmlCYWRnZTogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gaW1wb3J0KFxuICAgICAgICAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInVuaV9tb2R1bGVzL3VuaS1iYWRnZS9jb21wb25lbnRzL3VuaS1iYWRnZS91bmktYmFkZ2VcIiAqLyBcIkAvdW5pX21vZHVsZXMvdW5pLWJhZGdlL2NvbXBvbmVudHMvdW5pLWJhZGdlL3VuaS1iYWRnZS52dWVcIlxuICAgICAgKVxuICAgIH1cbiAgfVxufSBjYXRjaCAoZSkge1xuICBpZiAoXG4gICAgZS5tZXNzYWdlLmluZGV4T2YoXCJDYW5ub3QgZmluZCBtb2R1bGVcIikgIT09IC0xICYmXG4gICAgZS5tZXNzYWdlLmluZGV4T2YoXCIudnVlXCIpICE9PSAtMVxuICApIHtcbiAgICBjb25zb2xlLmVycm9yKGUubWVzc2FnZSlcbiAgICBjb25zb2xlLmVycm9yKFwiMS4g5o6S5p+l57uE5Lu25ZCN56ew5ou85YaZ5piv5ZCm5q2j56GuXCIpXG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiMi4g5o6S5p+l57uE5Lu25piv5ZCm56ym5ZCIIGVhc3ljb20g6KeE6IyD77yM5paH5qGj77yaaHR0cHM6Ly91bmlhcHAuZGNsb3VkLm5ldC5jbi9jb2xsb2NhdGlvbi9wYWdlcz9pZD1lYXN5Y29tXCJcbiAgICApXG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiMy4g6Iul57uE5Lu25LiN56ym5ZCIIGVhc3ljb20g6KeE6IyD77yM6ZyA5omL5Yqo5byV5YWl77yM5bm25ZyoIGNvbXBvbmVudHMg5Lit5rOo5YaM6K+l57uE5Lu2XCJcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgZVxuICB9XG59XG52YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbn1cbnZhciByZWN5Y2xhYmxlUmVuZGVyID0gZmFsc2VcbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1saXN0LWl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1saXN0LWl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiPHRlbXBsYXRlPlxyXG5cdDwhLS0gI2lmZGVmIEFQUC1OVlVFIC0tPlxyXG5cdDxjZWxsPlxyXG5cdFx0PCEtLSAjZW5kaWYgLS0+XHJcblxyXG5cdFx0PHZpZXcgOmNsYXNzPVwieyAndW5pLWxpc3QtaXRlbS0tZGlzYWJsZWQnOiBkaXNhYmxlZCB9XCJcclxuXHRcdFx0OmhvdmVyLWNsYXNzPVwiKCFjbGlja2FibGUgJiYgIWxpbmspIHx8IGRpc2FibGVkIHx8IHNob3dTd2l0Y2ggPyAnJyA6ICd1bmktbGlzdC1pdGVtLS1ob3ZlcidcIlxyXG5cdFx0XHRjbGFzcz1cInVuaS1saXN0LWl0ZW1cIiBAY2xpY2s9XCJvbkNsaWNrXCI+XHJcblx0XHRcdDx2aWV3IHYtaWY9XCIhaXNGaXJzdENoaWxkXCIgY2xhc3M9XCJib3JkZXItLWxlZnRcIiA6Y2xhc3M9XCJ7ICd1bmktbGlzdC0tYm9yZGVyJzogYm9yZGVyIH1cIj48L3ZpZXc+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwidW5pLWxpc3QtaXRlbV9fY29udGFpbmVyXCJcclxuXHRcdFx0XHQ6Y2xhc3M9XCJ7ICdjb250YWluZXItLXJpZ2h0Jzogc2hvd0Fycm93IHx8IGxpbmssICdmbGV4LS1kaXJlY3Rpb24nOiBkaXJlY3Rpb24gPT09ICdjb2x1bW4nIH1cIj5cclxuXHRcdFx0XHQ8c2xvdCBuYW1lPVwiaGVhZGVyXCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInVuaS1saXN0LWl0ZW1fX2hlYWRlclwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwidGh1bWJcIiBjbGFzcz1cInVuaS1saXN0LWl0ZW1fX2ljb25cIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW1hZ2UgOnNyYz1cInRodW1iXCIgY2xhc3M9XCJ1bmktbGlzdC1pdGVtX19pY29uLWltZ1wiIDpjbGFzcz1cIlsndW5pLWxpc3QtLScgKyB0aHVtYlNpemVdXCIgLz5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWVsc2UtaWY9XCJzaG93RXh0cmFJY29uXCIgY2xhc3M9XCJ1bmktbGlzdC1pdGVtX19pY29uXCI+XHJcblx0XHRcdFx0XHRcdFx0PHVuaS1pY29ucyA6Y29sb3I9XCJleHRyYUljb24uY29sb3JcIiA6c2l6ZT1cImV4dHJhSWNvbi5zaXplXCIgOnR5cGU9XCJleHRyYUljb24udHlwZVwiIC8+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8L3Nsb3Q+XHJcblx0XHRcdFx0PHNsb3QgbmFtZT1cImJvZHlcIj5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwidW5pLWxpc3QtaXRlbV9fY29udGVudFwiXHJcblx0XHRcdFx0XHRcdDpjbGFzcz1cInsgJ3VuaS1saXN0LWl0ZW1fX2NvbnRlbnQtLWNlbnRlcic6IHRodW1iIHx8IHNob3dFeHRyYUljb24gfHwgc2hvd0JhZGdlIHx8IHNob3dTd2l0Y2ggfVwiPlxyXG5cdFx0XHRcdFx0XHQ8dGV4dCB2LWlmPVwidGl0bGVcIiBjbGFzcz1cInVuaS1saXN0LWl0ZW1fX2NvbnRlbnQtdGl0bGVcIlxyXG5cdFx0XHRcdFx0XHRcdDpjbGFzcz1cIltlbGxpcHNpcyAhPT0gMCAmJiBlbGxpcHNpcyA8PSAyID8gJ3VuaS1lbGxpcHNpcy0nICsgZWxsaXBzaXMgOiAnJ11cIj57eyB0aXRsZSB9fTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0PHRleHQgdi1pZj1cIm5vdGVcIiBjbGFzcz1cInVuaS1saXN0LWl0ZW1fX2NvbnRlbnQtbm90ZVwiPnt7IG5vdGUgfX08L3RleHQ+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC9zbG90PlxyXG5cdFx0XHRcdDxzbG90IG5hbWU9XCJmb290ZXJcIj5cclxuXHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJyaWdodFRleHQgfHwgc2hvd0JhZGdlIHx8IHNob3dTd2l0Y2hcIiBjbGFzcz1cInVuaS1saXN0LWl0ZW1fX2V4dHJhXCJcclxuXHRcdFx0XHRcdFx0OmNsYXNzPVwieyAnZmxleC0tanVzdGlmeSc6IGRpcmVjdGlvbiA9PT0gJ2NvbHVtbicgfVwiPlxyXG5cdFx0XHRcdFx0XHQ8dGV4dCB2LWlmPVwicmlnaHRUZXh0XCIgY2xhc3M9XCJ1bmktbGlzdC1pdGVtX19leHRyYS10ZXh0XCI+e3sgcmlnaHRUZXh0IH19PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHQ8dW5pLWJhZGdlIHYtaWY9XCJzaG93QmFkZ2VcIiA6dHlwZT1cImJhZGdlVHlwZVwiIDp0ZXh0PVwiYmFkZ2VUZXh0XCIgOmN1c3RvbS1zdHlsZT1cImJhZGdlU3R5bGVcIiAvPlxyXG5cdFx0XHRcdFx0XHQ8c3dpdGNoIHYtaWY9XCJzaG93U3dpdGNoXCIgOmRpc2FibGVkPVwiZGlzYWJsZWRcIiA6Y2hlY2tlZD1cInN3aXRjaENoZWNrZWRcIlxyXG5cdFx0XHRcdFx0XHRcdEBjaGFuZ2U9XCJvblN3aXRjaENoYW5nZVwiIC8+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC9zbG90PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx1bmktaWNvbnMgdi1pZj1cInNob3dBcnJvdyB8fCBsaW5rXCIgOnNpemU9XCIxNlwiIGNsYXNzPVwidW5pLWljb24td3JhcHBlclwiIGNvbG9yPVwiI2JiYlwiIHR5cGU9XCJhcnJvd3JpZ2h0XCIgLz5cclxuXHRcdDwvdmlldz5cclxuXHRcdDwhLS0gI2lmZGVmIEFQUC1OVlVFIC0tPlxyXG5cdDwvY2VsbD5cclxuXHQ8IS0tICNlbmRpZiAtLT5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0LyoqXHJcblx0ICogTGlzdEl0ZW0g5YiX6KGo5a2Q57uE5Lu2XHJcblx0ICogQGRlc2NyaXB0aW9uIOWIl+ihqOWtkOe7hOS7tlxyXG5cdCAqIEB0dXRvcmlhbCBodHRwczovL2V4dC5kY2xvdWQubmV0LmNuL3BsdWdpbj9pZD0yNFxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBcdHRpdGxlIFx0XHRcdFx0XHRcdFx05qCH6aKYXHJcblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IFx0bm90ZSBcdFx0XHRcdFx0XHRcdOaPj+i/sFxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBcdHRodW1iIFx0XHRcdFx0XHRcdFx05bem5L6n57yp55Wl5Zu+77yM6IuldGh1bWLmnInlgLzvvIzliJnkuI3kvJrmmL7npLrmianlsZXlm77moIdcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gIFx0dGh1bWJTaXplID0gW2xnfGJhc2V8c21dXHRcdOeVpee8qeWbvuWkp+Wwj1xyXG5cdCAqIFx0QHZhbHVlIFx0IGxnXHRcdFx05aSn5Zu+XHJcblx0ICogXHRAdmFsdWUgXHQgYmFzZVx0XHTkuIDoiKxcclxuXHQgKiBcdEB2YWx1ZSBcdCBzbVx0XHRcdOWwj+WbvlxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBcdGJhZGdlVGV4dFx0XHRcdFx0XHRcdOaVsOWtl+inkuagh+WGheWuuVxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBcdGJhZGdlVHlwZSBcdFx0XHRcdFx0XHTmlbDlrZfop5LmoIfnsbvlnovvvIzlj4LogINbdW5pLWljb25zXShodHRwczovL2V4dC5kY2xvdWQubmV0LmNuL3BsdWdpbj9pZD0yMSlcclxuXHQgKiBAcHJvcGVydHkge09iamVjdH0gICBiYWRnZVN0eWxlICAgICAgICAgICDmlbDlrZfop5LmoIfmoLflvI9cclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gXHRyaWdodFRleHQgXHRcdFx0XHRcdFx05Y+z5L6n5paH5a2X5YaF5a65XHJcblx0ICogQHByb3BlcnR5IHtCb29sZWFufSBcdGRpc2FibGVkID0gW3RydWV8ZmFsc2VdXHRcdFx05piv5ZCm56aB55SoXHJcblx0ICogQHByb3BlcnR5IHtCb29sZWFufSBcdGNsaWNrYWJsZSA9IFt0cnVlfGZhbHNlXSBcdFx05piv5ZCm5byA5ZCv54K55Ye75Y+N6aaIXHJcblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IFx0bGluayA9IFtuYXZpZ2F0ZVRvfHJlZGlyZWN0VG98cmVMYXVuY2h8c3dpdGNoVGFiXSDmmK/lkKblsZXnpLrlj7Pkvqfnrq3lpLTlubblvIDlkK/ngrnlh7vlj43ppohcclxuXHQgKiAgQHZhbHVlIFx0bmF2aWdhdGVUbyBcdOWQjCB1bmkubmF2aWdhdGVUbygpXHJcblx0ICogXHRAdmFsdWUgcmVkaXJlY3RUbyBcdOWQjCB1bmkucmVkaXJlY3RUbygpXHJcblx0ICogXHRAdmFsdWUgcmVMYXVuY2ggICBcdOWQjCB1bmkucmVMYXVuY2goKVxyXG5cdCAqIFx0QHZhbHVlIHN3aXRjaFRhYiAgXHTlkIwgdW5pLnN3aXRjaFRhYigpXHJcblx0ICogQHByb3BlcnR5IHtTdHJpbmcgfCBQYWdlVVJJU3RyaW5nfSBcdHRvICBcdFx0XHTot7Povaznm67moIfpobXpnaJcclxuXHQgKiBAcHJvcGVydHkge0Jvb2xlYW59IFx0c2hvd0JhZGdlID0gW3RydWV8ZmFsc2VdIFx0XHTmmK/lkKbmmL7npLrmlbDlrZfop5LmoIdcclxuXHQgKiBAcHJvcGVydHkge0Jvb2xlYW59IFx0c2hvd1N3aXRjaCA9IFt0cnVlfGZhbHNlXSBcdFx05piv5ZCm5pi+56S6U3dpdGNoXHJcblx0ICogQHByb3BlcnR5IHtCb29sZWFufSBcdHN3aXRjaENoZWNrZWQgPSBbdHJ1ZXxmYWxzZV0gXHRTd2l0Y2jmmK/lkKbooqvpgInkuK1cclxuXHQgKiBAcHJvcGVydHkge0Jvb2xlYW59IFx0c2hvd0V4dHJhSWNvbiA9IFt0cnVlfGZhbHNlXSBcdOW3puS+p+aYr+WQpuaYvuekuuaJqeWxleWbvuagh1xyXG5cdCAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBcdGV4dHJhSWNvbiBcdFx0XHRcdFx0XHTmianlsZXlm77moIflj4LmlbDvvIzmoLzlvI/kuLoge2NvbG9yOiAnIzRjZDk2NCcsc2l6ZTogJzIyJyx0eXBlOiAnc3Bpbm5lcid9XHJcblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IFx0ZGlyZWN0aW9uID0gW3Jvd3xjb2x1bW5dXHRcdOaOkueJiOaWueWQkVxyXG5cdCAqIEB2YWx1ZSByb3cgXHRcdFx05rC05bmz5o6S5YiXXHJcblx0ICogQHZhbHVlIGNvbHVtbiBcdFx05Z6C55u05o6S5YiXXHJcblx0ICogQGV2ZW50IHtGdW5jdGlvbn0gXHRjbGljayBcdFx0XHRcdFx0XHRcdOeCueWHuyB1bmlMaXN0SXRlbSDop6blj5Hkuovku7ZcclxuXHQgKiBAZXZlbnQge0Z1bmN0aW9ufSBcdHN3aXRjaENoYW5nZSBcdFx0XHRcdFx054K55Ye75YiH5o2iIFN3aXRjaCDml7bop6blj5FcclxuXHQgKi9cclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRuYW1lOiAnVW5pTGlzdEl0ZW0nLFxyXG5cdFx0ZW1pdHM6IFsnY2xpY2snLCAnc3dpdGNoQ2hhbmdlJ10sXHJcblx0XHRwcm9wczoge1xyXG5cdFx0XHRkaXJlY3Rpb246IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJ3JvdydcclxuXHRcdFx0fSxcclxuXHRcdFx0dGl0bGU6IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJydcclxuXHRcdFx0fSxcclxuXHRcdFx0bm90ZToge1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiAnJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlbGxpcHNpczoge1xyXG5cdFx0XHRcdHR5cGU6IFtOdW1iZXIsU3RyaW5nXSxcclxuXHRcdFx0XHRkZWZhdWx0OiAwXHJcblx0XHRcdH0sXHJcblx0XHRcdGRpc2FibGVkOiB7XHJcblx0XHRcdFx0dHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXHJcblx0XHRcdFx0ZGVmYXVsdDogZmFsc2VcclxuXHRcdFx0fSxcclxuXHRcdFx0Y2xpY2thYmxlOiB7XHJcblx0XHRcdFx0dHlwZTogQm9vbGVhbixcclxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRzaG93QXJyb3c6IHtcclxuXHRcdFx0XHR0eXBlOiBbQm9vbGVhbiwgU3RyaW5nXSxcclxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRsaW5rOiB7XHJcblx0XHRcdFx0dHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXHJcblx0XHRcdFx0ZGVmYXVsdDogZmFsc2VcclxuXHRcdFx0fSxcclxuXHRcdFx0dG86IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJydcclxuXHRcdFx0fSxcclxuXHRcdFx0c2hvd0JhZGdlOiB7XHJcblx0XHRcdFx0dHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXHJcblx0XHRcdFx0ZGVmYXVsdDogZmFsc2VcclxuXHRcdFx0fSxcclxuXHRcdFx0c2hvd1N3aXRjaDoge1xyXG5cdFx0XHRcdHR5cGU6IFtCb29sZWFuLCBTdHJpbmddLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IGZhbHNlXHJcblx0XHRcdH0sXHJcblx0XHRcdHN3aXRjaENoZWNrZWQ6IHtcclxuXHRcdFx0XHR0eXBlOiBbQm9vbGVhbiwgU3RyaW5nXSxcclxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRiYWRnZVRleHQ6IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJydcclxuXHRcdFx0fSxcclxuXHRcdFx0YmFkZ2VUeXBlOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICdzdWNjZXNzJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRiYWRnZVN0eWxlOntcclxuXHRcdFx0XHR0eXBlOiBPYmplY3QsXHJcblx0XHRcdFx0ZGVmYXVsdCAoKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4ge31cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHJpZ2h0VGV4dDoge1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiAnJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHR0aHVtYjoge1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiAnJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHR0aHVtYlNpemU6IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJ2Jhc2UnXHJcblx0XHRcdH0sXHJcblx0XHRcdHNob3dFeHRyYUljb246IHtcclxuXHRcdFx0XHR0eXBlOiBbQm9vbGVhbiwgU3RyaW5nXSxcclxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRleHRyYUljb246IHtcclxuXHRcdFx0XHR0eXBlOiBPYmplY3QsXHJcblx0XHRcdFx0ZGVmYXVsdCAoKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdFx0XHR0eXBlOiAnJyxcclxuXHRcdFx0XHRcdFx0Y29sb3I6ICcjMDAwMDAwJyxcclxuXHRcdFx0XHRcdFx0c2l6ZTogMjBcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRib3JkZXI6IHtcclxuXHRcdFx0XHR0eXBlOiBCb29sZWFuLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IHRydWVcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdC8vIGluamVjdDogWydsaXN0J10sXHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdGlzRmlyc3RDaGlsZDogZmFsc2VcclxuXHRcdFx0fTtcclxuXHRcdH0sXHJcblx0XHRtb3VudGVkKCkge1xyXG5cdFx0XHR0aGlzLmxpc3QgPSB0aGlzLmdldEZvcm0oKVxyXG5cdFx0XHQvLyDliKTmlq3mmK/lkKblrZjlnKggdW5pLWxpc3Qg57uE5Lu2XHJcblx0XHRcdGlmICh0aGlzLmxpc3QpIHtcclxuXHRcdFx0XHRpZiAoIXRoaXMubGlzdC5maXJzdENoaWxkQXBwZW5kKSB7XHJcblx0XHRcdFx0XHR0aGlzLmxpc3QuZmlyc3RDaGlsZEFwcGVuZCA9IHRydWU7XHJcblx0XHRcdFx0XHR0aGlzLmlzRmlyc3RDaGlsZCA9IHRydWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHQvKipcclxuXHRcdFx0ICog6I635Y+W54i25YWD57Sg5a6e5L6LXHJcblx0XHRcdCAqL1xyXG5cdFx0XHRnZXRGb3JtKG5hbWUgPSAndW5pTGlzdCcpIHtcclxuXHRcdFx0XHRsZXQgcGFyZW50ID0gdGhpcy4kcGFyZW50O1xyXG5cdFx0XHRcdGxldCBwYXJlbnROYW1lID0gcGFyZW50LiRvcHRpb25zLm5hbWU7XHJcblx0XHRcdFx0d2hpbGUgKHBhcmVudE5hbWUgIT09IG5hbWUpIHtcclxuXHRcdFx0XHRcdHBhcmVudCA9IHBhcmVudC4kcGFyZW50O1xyXG5cdFx0XHRcdFx0aWYgKCFwYXJlbnQpIHJldHVybiBmYWxzZVxyXG5cdFx0XHRcdFx0cGFyZW50TmFtZSA9IHBhcmVudC4kb3B0aW9ucy5uYW1lO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gcGFyZW50O1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRvbkNsaWNrKCkge1xyXG5cdFx0XHRcdGlmICh0aGlzLnRvICE9PSAnJykge1xyXG5cdFx0XHRcdFx0dGhpcy5vcGVuUGFnZSgpO1xyXG5cdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAodGhpcy5jbGlja2FibGUgfHwgdGhpcy5saW5rKSB7XHJcblx0XHRcdFx0XHR0aGlzLiRlbWl0KCdjbGljaycsIHtcclxuXHRcdFx0XHRcdFx0ZGF0YToge31cclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0b25Td2l0Y2hDaGFuZ2UoZSkge1xyXG5cdFx0XHRcdHRoaXMuJGVtaXQoJ3N3aXRjaENoYW5nZScsIGUuZGV0YWlsKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0b3BlblBhZ2UoKSB7XHJcblx0XHRcdFx0aWYgKFsnbmF2aWdhdGVUbycsICdyZWRpcmVjdFRvJywgJ3JlTGF1bmNoJywgJ3N3aXRjaFRhYiddLmluZGV4T2YodGhpcy5saW5rKSAhPT0gLTEpIHtcclxuXHRcdFx0XHRcdHRoaXMucGFnZUFwaSh0aGlzLmxpbmspO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR0aGlzLnBhZ2VBcGkoJ25hdmlnYXRlVG8nKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHBhZ2VBcGkoYXBpKSB7XHJcblx0XHRcdFx0bGV0IGNhbGxiYWNrID0ge1xyXG5cdFx0XHRcdFx0dXJsOiB0aGlzLnRvLFxyXG5cdFx0XHRcdFx0c3VjY2VzczogcmVzID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy4kZW1pdCgnY2xpY2snLCB7XHJcblx0XHRcdFx0XHRcdFx0ZGF0YTogcmVzXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IGVyciA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMuJGVtaXQoJ2NsaWNrJywge1xyXG5cdFx0XHRcdFx0XHRcdGRhdGE6IGVyclxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0c3dpdGNoIChhcGkpIHtcclxuXHRcdFx0XHRcdGNhc2UgJ25hdmlnYXRlVG8nOlxyXG5cdFx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyhjYWxsYmFjaylcclxuXHRcdFx0XHRcdFx0YnJlYWtcclxuXHRcdFx0XHRcdGNhc2UgJ3JlZGlyZWN0VG8nOlxyXG5cdFx0XHRcdFx0XHR1bmkucmVkaXJlY3RUbyhjYWxsYmFjaylcclxuXHRcdFx0XHRcdFx0YnJlYWtcclxuXHRcdFx0XHRcdGNhc2UgJ3JlTGF1bmNoJzpcclxuXHRcdFx0XHRcdFx0dW5pLnJlTGF1bmNoKGNhbGxiYWNrKVxyXG5cdFx0XHRcdFx0XHRicmVha1xyXG5cdFx0XHRcdFx0Y2FzZSAnc3dpdGNoVGFiJzpcclxuXHRcdFx0XHRcdFx0dW5pLnN3aXRjaFRhYihjYWxsYmFjaylcclxuXHRcdFx0XHRcdFx0YnJlYWtcclxuXHRcdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyhjYWxsYmFjaylcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9O1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxyXG5cdCR1bmktZm9udC1zaXplLXNtOjEycHg7XHJcblx0JHVuaS1mb250LXNpemUtYmFzZToxNHB4O1xyXG5cdCR1bmktZm9udC1zaXplLWxnOjE2cHg7XHJcblx0JHVuaS1zcGFjaW5nLWNvbC1sZzogMTJweDtcclxuXHQkdW5pLXNwYWNpbmctcm93LWxnOiAxNXB4O1xyXG5cdCR1bmktaW1nLXNpemUtc206MjBweDtcclxuXHQkdW5pLWltZy1zaXplLWJhc2U6MjZweDtcclxuXHQkdW5pLWltZy1zaXplLWxnOjQwcHg7XHJcblx0JHVuaS1ib3JkZXItY29sb3I6I2U1ZTVlNTtcclxuXHQkdW5pLWJnLWNvbG9yLWhvdmVyOiNmMWYxZjE7XHJcblx0JHVuaS10ZXh0LWNvbG9yLWdyZXk6Izk5OTtcclxuXHQkbGlzdC1pdGVtLXBkOiAkdW5pLXNwYWNpbmctY29sLWxnICR1bmktc3BhY2luZy1yb3ctbGc7XHJcblx0LnVuaS1saXN0LWl0ZW0ge1xyXG5cdFx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0Zm9udC1zaXplOiAkdW5pLWZvbnQtc2l6ZS1sZztcclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHRcdC8qICNpZmRlZiBINSAqL1xyXG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0fVxyXG5cdC51bmktbGlzdC1pdGVtLS1kaXNhYmxlZCB7XHJcblx0XHRvcGFjaXR5OiAwLjM7XHJcblx0fVxyXG5cdC51bmktbGlzdC1pdGVtLS1ob3ZlciB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkdW5pLWJnLWNvbG9yLWhvdmVyO1xyXG5cdH1cclxuXHQudW5pLWxpc3QtaXRlbV9fY29udGFpbmVyIHtcclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcblx0XHRwYWRkaW5nOiAkbGlzdC1pdGVtLXBkO1xyXG5cdFx0cGFkZGluZy1sZWZ0OiAkdW5pLXNwYWNpbmctcm93LWxnO1xyXG5cdFx0ZmxleDogMTtcclxuXHRcdG92ZXJmbG93OiBoaWRkZW47XHJcblx0XHQvLyBhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdH1cclxuXHQuY29udGFpbmVyLS1yaWdodCB7XHJcblx0XHRwYWRkaW5nLXJpZ2h0OiAwO1xyXG5cdH1cclxuXHQvLyAuYm9yZGVyLS1sZWZ0IHtcclxuXHQvLyBcdG1hcmdpbi1sZWZ0OiAkdW5pLXNwYWNpbmctcm93LWxnO1xyXG5cdC8vIH1cclxuXHQudW5pLWxpc3QtLWJvcmRlciB7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHR0b3A6IDA7XHJcblx0XHRyaWdodDogMDtcclxuXHRcdGxlZnQ6IDA7XHJcblx0XHQvKiAjaWZkZWYgQVBQLU5WVUUgKi9cclxuXHRcdGJvcmRlci10b3AtY29sb3I6ICR1bmktYm9yZGVyLWNvbG9yO1xyXG5cdFx0Ym9yZGVyLXRvcC1zdHlsZTogc29saWQ7XHJcblx0XHRib3JkZXItdG9wLXdpZHRoOiAwLjVweDtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdH1cclxuXHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0LnVuaS1saXN0LS1ib3JkZXI6YWZ0ZXIge1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0dG9wOiAwO1xyXG5cdFx0cmlnaHQ6IDA7XHJcblx0XHRsZWZ0OiAwO1xyXG5cdFx0aGVpZ2h0OiAxcHg7XHJcblx0XHRjb250ZW50OiAnJztcclxuXHRcdC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVkoMC41KTtcclxuXHRcdHRyYW5zZm9ybTogc2NhbGVZKDAuNSk7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkdW5pLWJvcmRlci1jb2xvcjtcclxuXHR9XHJcblx0LyogI2VuZGlmICovXHJcblx0LnVuaS1saXN0LWl0ZW1fX2NvbnRlbnQge1xyXG5cdFx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0cGFkZGluZy1yaWdodDogOHB4O1xyXG5cdFx0ZmxleDogMTtcclxuXHRcdGNvbG9yOiAjM2I0MTQ0O1xyXG5cdFx0Ly8gb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cdH1cclxuXHQudW5pLWxpc3QtaXRlbV9fY29udGVudC0tY2VudGVyIHtcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdH1cclxuXHQudW5pLWxpc3QtaXRlbV9fY29udGVudC10aXRsZSB7XHJcblx0XHRmb250LXNpemU6ICR1bmktZm9udC1zaXplLWJhc2U7XHJcblx0XHRjb2xvcjogIzNiNDE0NDtcclxuXHRcdG92ZXJmbG93OiBoaWRkZW47XHJcblx0fVxyXG5cdC51bmktbGlzdC1pdGVtX19jb250ZW50LW5vdGUge1xyXG5cdFx0bWFyZ2luLXRvcDogNnJweDtcclxuXHRcdGNvbG9yOiAkdW5pLXRleHQtY29sb3ItZ3JleTtcclxuXHRcdGZvbnQtc2l6ZTogJHVuaS1mb250LXNpemUtc207XHJcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cdH1cclxuXHQudW5pLWxpc3QtaXRlbV9fZXh0cmEge1xyXG5cdFx0Ly8gd2lkdGg6IDI1JTtcclxuXHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHR9XHJcblx0LnVuaS1saXN0LWl0ZW1fX2hlYWRlciB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHR9XHJcblx0LnVuaS1saXN0LWl0ZW1fX2ljb24ge1xyXG5cdFx0bWFyZ2luLXJpZ2h0OiAxOHJweDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0fVxyXG5cdC51bmktbGlzdC1pdGVtX19pY29uLWltZyB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBibG9jaztcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0aGVpZ2h0OiAkdW5pLWltZy1zaXplLWJhc2U7XHJcblx0XHR3aWR0aDogJHVuaS1pbWctc2l6ZS1iYXNlO1xyXG5cdFx0bWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG5cdH1cclxuXHQudW5pLWljb24td3JhcHBlciB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0cGFkZGluZzogMCAxMHB4O1xyXG5cdH1cclxuXHQuZmxleC0tZGlyZWN0aW9uIHtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRhbGlnbi1pdGVtczogaW5pdGlhbDtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdH1cclxuXHQuZmxleC0tanVzdGlmeSB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGluaXRpYWw7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHR9XHJcblx0LnVuaS1saXN0LS1sZyB7XHJcblx0XHRoZWlnaHQ6ICR1bmktaW1nLXNpemUtbGc7XHJcblx0XHR3aWR0aDogJHVuaS1pbWctc2l6ZS1sZztcclxuXHR9XHJcblx0LnVuaS1saXN0LS1iYXNlIHtcclxuXHRcdGhlaWdodDogJHVuaS1pbWctc2l6ZS1iYXNlO1xyXG5cdFx0d2lkdGg6ICR1bmktaW1nLXNpemUtYmFzZTtcclxuXHR9XHJcblx0LnVuaS1saXN0LS1zbSB7XHJcblx0XHRoZWlnaHQ6ICR1bmktaW1nLXNpemUtc207XHJcblx0XHR3aWR0aDogJHVuaS1pbWctc2l6ZS1zbTtcclxuXHR9XHJcblx0LnVuaS1saXN0LWl0ZW1fX2V4dHJhLXRleHQge1xyXG5cdFx0Y29sb3I6ICR1bmktdGV4dC1jb2xvci1ncmV5O1xyXG5cdFx0Zm9udC1zaXplOiAkdW5pLWZvbnQtc2l6ZS1zbTtcclxuXHR9XHJcblx0LnVuaS1lbGxpcHNpcy0xIHtcclxuXHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdG92ZXJmbG93OiBoaWRkZW47XHJcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG5cdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdC8qICNpZmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0bGluZXM6IDE7XHJcblx0XHR0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0fVxyXG5cdC51bmktZWxsaXBzaXMtMiB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcblx0XHRkaXNwbGF5OiAtd2Via2l0LWJveDtcclxuXHRcdC13ZWJraXQtbGluZS1jbGFtcDogMjtcclxuXHRcdC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdC8qICNpZmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0bGluZXM6IDI7XHJcblx0XHR0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0fVxyXG48L3N0eWxlPlxyXG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXFxcXGRpc3RcXFxcbG9hZGVyLmpzPz9yZWYtLTgtb25lT2YtMS0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGNzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHN0eWxlUG9zdExvYWRlci5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxccG9zdGNzcy1sb2FkZXJcXFxcc3JjXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcc2Fzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTQhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS01IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1saXN0LWl0ZW0udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXFxcXGRpc3RcXFxcbG9hZGVyLmpzPz9yZWYtLTgtb25lT2YtMS0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGNzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHN0eWxlUG9zdExvYWRlci5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxccG9zdGNzcy1sb2FkZXJcXFxcc3JjXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcc2Fzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTQhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS01IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1saXN0LWl0ZW0udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG4gICAgaWYobW9kdWxlLmhvdCkge1xuICAgICAgLy8gMTY1MjY5Njk4MjcyMlxuICAgICAgdmFyIGNzc1JlbG9hZCA9IHJlcXVpcmUoXCJEOi9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9taW5pLWNzcy1leHRyYWN0LXBsdWdpbi9kaXN0L2htci9ob3RNb2R1bGVSZXBsYWNlbWVudC5qc1wiKShtb2R1bGUuaWQsIHtcImhtclwiOnRydWUsXCJwdWJsaWNQYXRoXCI6XCIuLi8uLi9cIixcImxvY2Fsc1wiOmZhbHNlfSk7XG4gICAgICBtb2R1bGUuaG90LmRpc3Bvc2UoY3NzUmVsb2FkKTtcbiAgICAgIG1vZHVsZS5ob3QuYWNjZXB0KHVuZGVmaW5lZCwgY3NzUmVsb2FkKTtcbiAgICB9XG4gICJdLCJzb3VyY2VSb290IjoiIn0=
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktbGlzdC9jb21wb25lbnRzL3VuaS1saXN0LWl0ZW0vdW5pLWxpc3QtaXRlbS52dWU/MWFhYSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktbGlzdC9jb21wb25lbnRzL3VuaS1saXN0LWl0ZW0vdW5pLWxpc3QtaXRlbS52dWU/ZTRhZiIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktbGlzdC9jb21wb25lbnRzL3VuaS1saXN0LWl0ZW0vdW5pLWxpc3QtaXRlbS52dWU/YzljYSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktbGlzdC9jb21wb25lbnRzL3VuaS1saXN0LWl0ZW0vdW5pLWxpc3QtaXRlbS52dWU/MDgzYyIsInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLWxpc3QvY29tcG9uZW50cy91bmktbGlzdC1pdGVtL3VuaS1saXN0LWl0ZW0udnVlIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1saXN0L2NvbXBvbmVudHMvdW5pLWxpc3QtaXRlbS91bmktbGlzdC1pdGVtLnZ1ZT9hNjcxIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1saXN0L2NvbXBvbmVudHMvdW5pLWxpc3QtaXRlbS91bmktbGlzdC1pdGVtLnZ1ZT9jYzM3Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBMEg7QUFDMUg7QUFDaUU7QUFDTDtBQUNjOzs7QUFHMUU7QUFDcUs7QUFDckssZ0JBQWdCLCtLQUFVO0FBQzFCLEVB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S0FsQ0E7QUFtQ0EsV0FuQ0EsbUJBbUNBLEdBbkNBLEVBbUNBO0FBQ0E7QUFDQSxvQkFEQTtBQUVBO0FBQ0E7QUFDQSxxQkFEQTs7QUFHQSxTQU5BO0FBT0E7QUFDQTtBQUNBLHFCQURBOztBQUdBLFNBWEE7O0FBYUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQWRBOztBQWdCQSxLQWpFQSxFQWpIQSxFOzs7Ozs7Ozs7Ozs7O0FDakZBO0FBQUE7QUFBQTtBQUFBO0FBQWtwQyxDQUFnQix3bkNBQUcsRUFBQyxDOzs7Ozs7Ozs7OztBQ0F0cUM7QUFDQSxPQUFPLEtBQVUsRUFBRSxrQkFLZCIsImZpbGUiOiJ1bmlfbW9kdWxlcy91bmktbGlzdC9jb21wb25lbnRzL3VuaS1saXN0LWl0ZW0vdW5pLWxpc3QtaXRlbS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vdW5pLWxpc3QtaXRlbS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9Mjk2YTNkN2UmXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi91bmktbGlzdC1pdGVtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vdW5pLWxpc3QtaXRlbS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vdW5pLWxpc3QtaXRlbS52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxccnVudGltZVxcXFxjb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvdW5pLWxpc3QvY29tcG9uZW50cy91bmktbGlzdC1pdGVtL3VuaS1saXN0LWl0ZW0udnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHRlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTE2LTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcdGVtcGxhdGUuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXVuaS1hcHAtbG9hZGVyXFxcXHBhZ2UtbWV0YS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktbGlzdC1pdGVtLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yOTZhM2Q3ZSZcIiIsInZhciBjb21wb25lbnRzXG50cnkge1xuICBjb21wb25lbnRzID0ge1xuICAgIHVuaUljb25zOiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBpbXBvcnQoXG4gICAgICAgIC8qIHdlYnBhY2tDaHVua05hbWU6IFwidW5pX21vZHVsZXMvdW5pLWljb25zL2NvbXBvbmVudHMvdW5pLWljb25zL3VuaS1pY29uc1wiICovIFwiQC91bmlfbW9kdWxlcy91bmktaWNvbnMvY29tcG9uZW50cy91bmktaWNvbnMvdW5pLWljb25zLnZ1ZVwiXG4gICAgICApXG4gICAgfSxcbiAgICB1bmlCYWRnZTogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gaW1wb3J0KFxuICAgICAgICAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInVuaV9tb2R1bGVzL3VuaS1iYWRnZS9jb21wb25lbnRzL3VuaS1iYWRnZS91bmktYmFkZ2VcIiAqLyBcIkAvdW5pX21vZHVsZXMvdW5pLWJhZGdlL2NvbXBvbmVudHMvdW5pLWJhZGdlL3VuaS1iYWRnZS52dWVcIlxuICAgICAgKVxuICAgIH1cbiAgfVxufSBjYXRjaCAoZSkge1xuICBpZiAoXG4gICAgZS5tZXNzYWdlLmluZGV4T2YoXCJDYW5ub3QgZmluZCBtb2R1bGVcIikgIT09IC0xICYmXG4gICAgZS5tZXNzYWdlLmluZGV4T2YoXCIudnVlXCIpICE9PSAtMVxuICApIHtcbiAgICBjb25zb2xlLmVycm9yKGUubWVzc2FnZSlcbiAgICBjb25zb2xlLmVycm9yKFwiMS4g5o6S5p+l57uE5Lu25ZCN56ew5ou85YaZ5piv5ZCm5q2j56GuXCIpXG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiMi4g5o6S5p+l57uE5Lu25piv5ZCm56ym5ZCIIGVhc3ljb20g6KeE6IyD77yM5paH5qGj77yaaHR0cHM6Ly91bmlhcHAuZGNsb3VkLm5ldC5jbi9jb2xsb2NhdGlvbi9wYWdlcz9pZD1lYXN5Y29tXCJcbiAgICApXG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiMy4g6Iul57uE5Lu25LiN56ym5ZCIIGVhc3ljb20g6KeE6IyD77yM6ZyA5omL5Yqo5byV5YWl77yM5bm25ZyoIGNvbXBvbmVudHMg5Lit5rOo5YaM6K+l57uE5Lu2XCJcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgZVxuICB9XG59XG52YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbn1cbnZhciByZWN5Y2xhYmxlUmVuZGVyID0gZmFsc2VcbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1saXN0LWl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1saXN0LWl0ZW0udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiPHRlbXBsYXRlPlxyXG5cdDwhLS0gI2lmZGVmIEFQUC1OVlVFIC0tPlxyXG5cdDxjZWxsPlxyXG5cdFx0PCEtLSAjZW5kaWYgLS0+XHJcblxyXG5cdFx0PHZpZXcgOmNsYXNzPVwieyAndW5pLWxpc3QtaXRlbS0tZGlzYWJsZWQnOiBkaXNhYmxlZCB9XCJcclxuXHRcdFx0OmhvdmVyLWNsYXNzPVwiKCFjbGlja2FibGUgJiYgIWxpbmspIHx8IGRpc2FibGVkIHx8IHNob3dTd2l0Y2ggPyAnJyA6ICd1bmktbGlzdC1pdGVtLS1ob3ZlcidcIlxyXG5cdFx0XHRjbGFzcz1cInVuaS1saXN0LWl0ZW1cIiBAY2xpY2s9XCJvbkNsaWNrXCI+XHJcblx0XHRcdDx2aWV3IHYtaWY9XCIhaXNGaXJzdENoaWxkXCIgY2xhc3M9XCJib3JkZXItLWxlZnRcIiA6Y2xhc3M9XCJ7ICd1bmktbGlzdC0tYm9yZGVyJzogYm9yZGVyIH1cIj48L3ZpZXc+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwidW5pLWxpc3QtaXRlbV9fY29udGFpbmVyXCJcclxuXHRcdFx0XHQ6Y2xhc3M9XCJ7ICdjb250YWluZXItLXJpZ2h0Jzogc2hvd0Fycm93IHx8IGxpbmssICdmbGV4LS1kaXJlY3Rpb24nOiBkaXJlY3Rpb24gPT09ICdjb2x1bW4nIH1cIj5cclxuXHRcdFx0XHQ8c2xvdCBuYW1lPVwiaGVhZGVyXCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInVuaS1saXN0LWl0ZW1fX2hlYWRlclwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwidGh1bWJcIiBjbGFzcz1cInVuaS1saXN0LWl0ZW1fX2ljb25cIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW1hZ2UgOnNyYz1cInRodW1iXCIgY2xhc3M9XCJ1bmktbGlzdC1pdGVtX19pY29uLWltZ1wiIDpjbGFzcz1cIlsndW5pLWxpc3QtLScgKyB0aHVtYlNpemVdXCIgLz5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dmlldyB2LWVsc2UtaWY9XCJzaG93RXh0cmFJY29uXCIgY2xhc3M9XCJ1bmktbGlzdC1pdGVtX19pY29uXCI+XHJcblx0XHRcdFx0XHRcdFx0PHVuaS1pY29ucyA6Y29sb3I9XCJleHRyYUljb24uY29sb3JcIiA6c2l6ZT1cImV4dHJhSWNvbi5zaXplXCIgOnR5cGU9XCJleHRyYUljb24udHlwZVwiIC8+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8L3Nsb3Q+XHJcblx0XHRcdFx0PHNsb3QgbmFtZT1cImJvZHlcIj5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwidW5pLWxpc3QtaXRlbV9fY29udGVudFwiXHJcblx0XHRcdFx0XHRcdDpjbGFzcz1cInsgJ3VuaS1saXN0LWl0ZW1fX2NvbnRlbnQtLWNlbnRlcic6IHRodW1iIHx8IHNob3dFeHRyYUljb24gfHwgc2hvd0JhZGdlIHx8IHNob3dTd2l0Y2ggfVwiPlxyXG5cdFx0XHRcdFx0XHQ8dGV4dCB2LWlmPVwidGl0bGVcIiBjbGFzcz1cInVuaS1saXN0LWl0ZW1fX2NvbnRlbnQtdGl0bGVcIlxyXG5cdFx0XHRcdFx0XHRcdDpjbGFzcz1cIltlbGxpcHNpcyAhPT0gMCAmJiBlbGxpcHNpcyA8PSAyID8gJ3VuaS1lbGxpcHNpcy0nICsgZWxsaXBzaXMgOiAnJ11cIj57eyB0aXRsZSB9fTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0PHRleHQgdi1pZj1cIm5vdGVcIiBjbGFzcz1cInVuaS1saXN0LWl0ZW1fX2NvbnRlbnQtbm90ZVwiPnt7IG5vdGUgfX08L3RleHQ+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC9zbG90PlxyXG5cdFx0XHRcdDxzbG90IG5hbWU9XCJmb290ZXJcIj5cclxuXHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJyaWdodFRleHQgfHwgc2hvd0JhZGdlIHx8IHNob3dTd2l0Y2hcIiBjbGFzcz1cInVuaS1saXN0LWl0ZW1fX2V4dHJhXCJcclxuXHRcdFx0XHRcdFx0OmNsYXNzPVwieyAnZmxleC0tanVzdGlmeSc6IGRpcmVjdGlvbiA9PT0gJ2NvbHVtbicgfVwiPlxyXG5cdFx0XHRcdFx0XHQ8dGV4dCB2LWlmPVwicmlnaHRUZXh0XCIgY2xhc3M9XCJ1bmktbGlzdC1pdGVtX19leHRyYS10ZXh0XCI+e3sgcmlnaHRUZXh0IH19PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHQ8dW5pLWJhZGdlIHYtaWY9XCJzaG93QmFkZ2VcIiA6dHlwZT1cImJhZGdlVHlwZVwiIDp0ZXh0PVwiYmFkZ2VUZXh0XCIgOmN1c3RvbS1zdHlsZT1cImJhZGdlU3R5bGVcIiAvPlxyXG5cdFx0XHRcdFx0XHQ8c3dpdGNoIHYtaWY9XCJzaG93U3dpdGNoXCIgOmRpc2FibGVkPVwiZGlzYWJsZWRcIiA6Y2hlY2tlZD1cInN3aXRjaENoZWNrZWRcIlxyXG5cdFx0XHRcdFx0XHRcdEBjaGFuZ2U9XCJvblN3aXRjaENoYW5nZVwiIC8+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC9zbG90PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx1bmktaWNvbnMgdi1pZj1cInNob3dBcnJvdyB8fCBsaW5rXCIgOnNpemU9XCIxNlwiIGNsYXNzPVwidW5pLWljb24td3JhcHBlclwiIGNvbG9yPVwiI2JiYlwiIHR5cGU9XCJhcnJvd3JpZ2h0XCIgLz5cclxuXHRcdDwvdmlldz5cclxuXHRcdDwhLS0gI2lmZGVmIEFQUC1OVlVFIC0tPlxyXG5cdDwvY2VsbD5cclxuXHQ8IS0tICNlbmRpZiAtLT5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0LyoqXHJcblx0ICogTGlzdEl0ZW0g5YiX6KGo5a2Q57uE5Lu2XHJcblx0ICogQGRlc2NyaXB0aW9uIOWIl+ihqOWtkOe7hOS7tlxyXG5cdCAqIEB0dXRvcmlhbCBodHRwczovL2V4dC5kY2xvdWQubmV0LmNuL3BsdWdpbj9pZD0yNFxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBcdHRpdGxlIFx0XHRcdFx0XHRcdFx05qCH6aKYXHJcblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IFx0bm90ZSBcdFx0XHRcdFx0XHRcdOaPj+i/sFxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBcdHRodW1iIFx0XHRcdFx0XHRcdFx05bem5L6n57yp55Wl5Zu+77yM6IuldGh1bWLmnInlgLzvvIzliJnkuI3kvJrmmL7npLrmianlsZXlm77moIdcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gIFx0dGh1bWJTaXplID0gW2xnfGJhc2V8c21dXHRcdOeVpee8qeWbvuWkp+Wwj1xyXG5cdCAqIFx0QHZhbHVlIFx0IGxnXHRcdFx05aSn5Zu+XHJcblx0ICogXHRAdmFsdWUgXHQgYmFzZVx0XHTkuIDoiKxcclxuXHQgKiBcdEB2YWx1ZSBcdCBzbVx0XHRcdOWwj+WbvlxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBcdGJhZGdlVGV4dFx0XHRcdFx0XHRcdOaVsOWtl+inkuagh+WGheWuuVxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBcdGJhZGdlVHlwZSBcdFx0XHRcdFx0XHTmlbDlrZfop5LmoIfnsbvlnovvvIzlj4LogINbdW5pLWljb25zXShodHRwczovL2V4dC5kY2xvdWQubmV0LmNuL3BsdWdpbj9pZD0yMSlcclxuXHQgKiBAcHJvcGVydHkge09iamVjdH0gICBiYWRnZVN0eWxlICAgICAgICAgICDmlbDlrZfop5LmoIfmoLflvI9cclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gXHRyaWdodFRleHQgXHRcdFx0XHRcdFx05Y+z5L6n5paH5a2X5YaF5a65XHJcblx0ICogQHByb3BlcnR5IHtCb29sZWFufSBcdGRpc2FibGVkID0gW3RydWV8ZmFsc2VdXHRcdFx05piv5ZCm56aB55SoXHJcblx0ICogQHByb3BlcnR5IHtCb29sZWFufSBcdGNsaWNrYWJsZSA9IFt0cnVlfGZhbHNlXSBcdFx05piv5ZCm5byA5ZCv54K55Ye75Y+N6aaIXHJcblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IFx0bGluayA9IFtuYXZpZ2F0ZVRvfHJlZGlyZWN0VG98cmVMYXVuY2h8c3dpdGNoVGFiXSDmmK/lkKblsZXnpLrlj7Pkvqfnrq3lpLTlubblvIDlkK/ngrnlh7vlj43ppohcclxuXHQgKiAgQHZhbHVlIFx0bmF2aWdhdGVUbyBcdOWQjCB1bmkubmF2aWdhdGVUbygpXHJcblx0ICogXHRAdmFsdWUgcmVkaXJlY3RUbyBcdOWQjCB1bmkucmVkaXJlY3RUbygpXHJcblx0ICogXHRAdmFsdWUgcmVMYXVuY2ggICBcdOWQjCB1bmkucmVMYXVuY2goKVxyXG5cdCAqIFx0QHZhbHVlIHN3aXRjaFRhYiAgXHTlkIwgdW5pLnN3aXRjaFRhYigpXHJcblx0ICogQHByb3BlcnR5IHtTdHJpbmcgfCBQYWdlVVJJU3RyaW5nfSBcdHRvICBcdFx0XHTot7Povaznm67moIfpobXpnaJcclxuXHQgKiBAcHJvcGVydHkge0Jvb2xlYW59IFx0c2hvd0JhZGdlID0gW3RydWV8ZmFsc2VdIFx0XHTmmK/lkKbmmL7npLrmlbDlrZfop5LmoIdcclxuXHQgKiBAcHJvcGVydHkge0Jvb2xlYW59IFx0c2hvd1N3aXRjaCA9IFt0cnVlfGZhbHNlXSBcdFx05piv5ZCm5pi+56S6U3dpdGNoXHJcblx0ICogQHByb3BlcnR5IHtCb29sZWFufSBcdHN3aXRjaENoZWNrZWQgPSBbdHJ1ZXxmYWxzZV0gXHRTd2l0Y2jmmK/lkKbooqvpgInkuK1cclxuXHQgKiBAcHJvcGVydHkge0Jvb2xlYW59IFx0c2hvd0V4dHJhSWNvbiA9IFt0cnVlfGZhbHNlXSBcdOW3puS+p+aYr+WQpuaYvuekuuaJqeWxleWbvuagh1xyXG5cdCAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBcdGV4dHJhSWNvbiBcdFx0XHRcdFx0XHTmianlsZXlm77moIflj4LmlbDvvIzmoLzlvI/kuLoge2NvbG9yOiAnIzRjZDk2NCcsc2l6ZTogJzIyJyx0eXBlOiAnc3Bpbm5lcid9XHJcblx0ICogQHByb3BlcnR5IHtTdHJpbmd9IFx0ZGlyZWN0aW9uID0gW3Jvd3xjb2x1bW5dXHRcdOaOkueJiOaWueWQkVxyXG5cdCAqIEB2YWx1ZSByb3cgXHRcdFx05rC05bmz5o6S5YiXXHJcblx0ICogQHZhbHVlIGNvbHVtbiBcdFx05Z6C55u05o6S5YiXXHJcblx0ICogQGV2ZW50IHtGdW5jdGlvbn0gXHRjbGljayBcdFx0XHRcdFx0XHRcdOeCueWHuyB1bmlMaXN0SXRlbSDop6blj5Hkuovku7ZcclxuXHQgKiBAZXZlbnQge0Z1bmN0aW9ufSBcdHN3aXRjaENoYW5nZSBcdFx0XHRcdFx054K55Ye75YiH5o2iIFN3aXRjaCDml7bop6blj5FcclxuXHQgKi9cclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRuYW1lOiAnVW5pTGlzdEl0ZW0nLFxyXG5cdFx0ZW1pdHM6IFsnY2xpY2snLCAnc3dpdGNoQ2hhbmdlJ10sXHJcblx0XHRwcm9wczoge1xyXG5cdFx0XHRkaXJlY3Rpb246IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJ3JvdydcclxuXHRcdFx0fSxcclxuXHRcdFx0dGl0bGU6IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJydcclxuXHRcdFx0fSxcclxuXHRcdFx0bm90ZToge1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiAnJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlbGxpcHNpczoge1xyXG5cdFx0XHRcdHR5cGU6IFtOdW1iZXIsU3RyaW5nXSxcclxuXHRcdFx0XHRkZWZhdWx0OiAwXHJcblx0XHRcdH0sXHJcblx0XHRcdGRpc2FibGVkOiB7XHJcblx0XHRcdFx0dHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXHJcblx0XHRcdFx0ZGVmYXVsdDogZmFsc2VcclxuXHRcdFx0fSxcclxuXHRcdFx0Y2xpY2thYmxlOiB7XHJcblx0XHRcdFx0dHlwZTogQm9vbGVhbixcclxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRzaG93QXJyb3c6IHtcclxuXHRcdFx0XHR0eXBlOiBbQm9vbGVhbiwgU3RyaW5nXSxcclxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRsaW5rOiB7XHJcblx0XHRcdFx0dHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXHJcblx0XHRcdFx0ZGVmYXVsdDogZmFsc2VcclxuXHRcdFx0fSxcclxuXHRcdFx0dG86IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJydcclxuXHRcdFx0fSxcclxuXHRcdFx0c2hvd0JhZGdlOiB7XHJcblx0XHRcdFx0dHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXHJcblx0XHRcdFx0ZGVmYXVsdDogZmFsc2VcclxuXHRcdFx0fSxcclxuXHRcdFx0c2hvd1N3aXRjaDoge1xyXG5cdFx0XHRcdHR5cGU6IFtCb29sZWFuLCBTdHJpbmddLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IGZhbHNlXHJcblx0XHRcdH0sXHJcblx0XHRcdHN3aXRjaENoZWNrZWQ6IHtcclxuXHRcdFx0XHR0eXBlOiBbQm9vbGVhbiwgU3RyaW5nXSxcclxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRiYWRnZVRleHQ6IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJydcclxuXHRcdFx0fSxcclxuXHRcdFx0YmFkZ2VUeXBlOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICdzdWNjZXNzJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRiYWRnZVN0eWxlOntcclxuXHRcdFx0XHR0eXBlOiBPYmplY3QsXHJcblx0XHRcdFx0ZGVmYXVsdCAoKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4ge31cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHJpZ2h0VGV4dDoge1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiAnJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHR0aHVtYjoge1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiAnJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHR0aHVtYlNpemU6IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJ2Jhc2UnXHJcblx0XHRcdH0sXHJcblx0XHRcdHNob3dFeHRyYUljb246IHtcclxuXHRcdFx0XHR0eXBlOiBbQm9vbGVhbiwgU3RyaW5nXSxcclxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRleHRyYUljb246IHtcclxuXHRcdFx0XHR0eXBlOiBPYmplY3QsXHJcblx0XHRcdFx0ZGVmYXVsdCAoKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdFx0XHR0eXBlOiAnJyxcclxuXHRcdFx0XHRcdFx0Y29sb3I6ICcjMDAwMDAwJyxcclxuXHRcdFx0XHRcdFx0c2l6ZTogMjBcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRib3JkZXI6IHtcclxuXHRcdFx0XHR0eXBlOiBCb29sZWFuLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IHRydWVcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdC8vIGluamVjdDogWydsaXN0J10sXHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdGlzRmlyc3RDaGlsZDogZmFsc2VcclxuXHRcdFx0fTtcclxuXHRcdH0sXHJcblx0XHRtb3VudGVkKCkge1xyXG5cdFx0XHR0aGlzLmxpc3QgPSB0aGlzLmdldEZvcm0oKVxyXG5cdFx0XHQvLyDliKTmlq3mmK/lkKblrZjlnKggdW5pLWxpc3Qg57uE5Lu2XHJcblx0XHRcdGlmICh0aGlzLmxpc3QpIHtcclxuXHRcdFx0XHRpZiAoIXRoaXMubGlzdC5maXJzdENoaWxkQXBwZW5kKSB7XHJcblx0XHRcdFx0XHR0aGlzLmxpc3QuZmlyc3RDaGlsZEFwcGVuZCA9IHRydWU7XHJcblx0XHRcdFx0XHR0aGlzLmlzRmlyc3RDaGlsZCA9IHRydWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHQvKipcclxuXHRcdFx0ICog6I635Y+W54i25YWD57Sg5a6e5L6LXHJcblx0XHRcdCAqL1xyXG5cdFx0XHRnZXRGb3JtKG5hbWUgPSAndW5pTGlzdCcpIHtcclxuXHRcdFx0XHRsZXQgcGFyZW50ID0gdGhpcy4kcGFyZW50O1xyXG5cdFx0XHRcdGxldCBwYXJlbnROYW1lID0gcGFyZW50LiRvcHRpb25zLm5hbWU7XHJcblx0XHRcdFx0d2hpbGUgKHBhcmVudE5hbWUgIT09IG5hbWUpIHtcclxuXHRcdFx0XHRcdHBhcmVudCA9IHBhcmVudC4kcGFyZW50O1xyXG5cdFx0XHRcdFx0aWYgKCFwYXJlbnQpIHJldHVybiBmYWxzZVxyXG5cdFx0XHRcdFx0cGFyZW50TmFtZSA9IHBhcmVudC4kb3B0aW9ucy5uYW1lO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gcGFyZW50O1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRvbkNsaWNrKCkge1xyXG5cdFx0XHRcdGlmICh0aGlzLnRvICE9PSAnJykge1xyXG5cdFx0XHRcdFx0dGhpcy5vcGVuUGFnZSgpO1xyXG5cdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAodGhpcy5jbGlja2FibGUgfHwgdGhpcy5saW5rKSB7XHJcblx0XHRcdFx0XHR0aGlzLiRlbWl0KCdjbGljaycsIHtcclxuXHRcdFx0XHRcdFx0ZGF0YToge31cclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0b25Td2l0Y2hDaGFuZ2UoZSkge1xyXG5cdFx0XHRcdHRoaXMuJGVtaXQoJ3N3aXRjaENoYW5nZScsIGUuZGV0YWlsKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0b3BlblBhZ2UoKSB7XHJcblx0XHRcdFx0aWYgKFsnbmF2aWdhdGVUbycsICdyZWRpcmVjdFRvJywgJ3JlTGF1bmNoJywgJ3N3aXRjaFRhYiddLmluZGV4T2YodGhpcy5saW5rKSAhPT0gLTEpIHtcclxuXHRcdFx0XHRcdHRoaXMucGFnZUFwaSh0aGlzLmxpbmspO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHR0aGlzLnBhZ2VBcGkoJ25hdmlnYXRlVG8nKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHBhZ2VBcGkoYXBpKSB7XHJcblx0XHRcdFx0bGV0IGNhbGxiYWNrID0ge1xyXG5cdFx0XHRcdFx0dXJsOiB0aGlzLnRvLFxyXG5cdFx0XHRcdFx0c3VjY2VzczogcmVzID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy4kZW1pdCgnY2xpY2snLCB7XHJcblx0XHRcdFx0XHRcdFx0ZGF0YTogcmVzXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IGVyciA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMuJGVtaXQoJ2NsaWNrJywge1xyXG5cdFx0XHRcdFx0XHRcdGRhdGE6IGVyclxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0c3dpdGNoIChhcGkpIHtcclxuXHRcdFx0XHRcdGNhc2UgJ25hdmlnYXRlVG8nOlxyXG5cdFx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyhjYWxsYmFjaylcclxuXHRcdFx0XHRcdFx0YnJlYWtcclxuXHRcdFx0XHRcdGNhc2UgJ3JlZGlyZWN0VG8nOlxyXG5cdFx0XHRcdFx0XHR1bmkucmVkaXJlY3RUbyhjYWxsYmFjaylcclxuXHRcdFx0XHRcdFx0YnJlYWtcclxuXHRcdFx0XHRcdGNhc2UgJ3JlTGF1bmNoJzpcclxuXHRcdFx0XHRcdFx0dW5pLnJlTGF1bmNoKGNhbGxiYWNrKVxyXG5cdFx0XHRcdFx0XHRicmVha1xyXG5cdFx0XHRcdFx0Y2FzZSAnc3dpdGNoVGFiJzpcclxuXHRcdFx0XHRcdFx0dW5pLnN3aXRjaFRhYihjYWxsYmFjaylcclxuXHRcdFx0XHRcdFx0YnJlYWtcclxuXHRcdFx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyhjYWxsYmFjaylcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9O1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxyXG5cdCR1bmktZm9udC1zaXplLXNtOjEycHg7XHJcblx0JHVuaS1mb250LXNpemUtYmFzZToxNHB4O1xyXG5cdCR1bmktZm9udC1zaXplLWxnOjE2cHg7XHJcblx0JHVuaS1zcGFjaW5nLWNvbC1sZzogMTJweDtcclxuXHQkdW5pLXNwYWNpbmctcm93LWxnOiAxNXB4O1xyXG5cdCR1bmktaW1nLXNpemUtc206MjBweDtcclxuXHQkdW5pLWltZy1zaXplLWJhc2U6MjZweDtcclxuXHQkdW5pLWltZy1zaXplLWxnOjQwcHg7XHJcblx0JHVuaS1ib3JkZXItY29sb3I6I2U1ZTVlNTtcclxuXHQkdW5pLWJnLWNvbG9yLWhvdmVyOiNmMWYxZjE7XHJcblx0JHVuaS10ZXh0LWNvbG9yLWdyZXk6Izk5OTtcclxuXHQkbGlzdC1pdGVtLXBkOiAkdW5pLXNwYWNpbmctY29sLWxnICR1bmktc3BhY2luZy1yb3ctbGc7XHJcblx0LnVuaS1saXN0LWl0ZW0ge1xyXG5cdFx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0Zm9udC1zaXplOiAkdW5pLWZvbnQtc2l6ZS1sZztcclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHRcdC8qICNpZmRlZiBINSAqL1xyXG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0fVxyXG5cdC51bmktbGlzdC1pdGVtLS1kaXNhYmxlZCB7XHJcblx0XHRvcGFjaXR5OiAwLjM7XHJcblx0fVxyXG5cdC51bmktbGlzdC1pdGVtLS1ob3ZlciB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkdW5pLWJnLWNvbG9yLWhvdmVyO1xyXG5cdH1cclxuXHQudW5pLWxpc3QtaXRlbV9fY29udGFpbmVyIHtcclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcblx0XHRwYWRkaW5nOiAkbGlzdC1pdGVtLXBkO1xyXG5cdFx0cGFkZGluZy1sZWZ0OiAkdW5pLXNwYWNpbmctcm93LWxnO1xyXG5cdFx0ZmxleDogMTtcclxuXHRcdG92ZXJmbG93OiBoaWRkZW47XHJcblx0XHQvLyBhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdH1cclxuXHQuY29udGFpbmVyLS1yaWdodCB7XHJcblx0XHRwYWRkaW5nLXJpZ2h0OiAwO1xyXG5cdH1cclxuXHQvLyAuYm9yZGVyLS1sZWZ0IHtcclxuXHQvLyBcdG1hcmdpbi1sZWZ0OiAkdW5pLXNwYWNpbmctcm93LWxnO1xyXG5cdC8vIH1cclxuXHQudW5pLWxpc3QtLWJvcmRlciB7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHR0b3A6IDA7XHJcblx0XHRyaWdodDogMDtcclxuXHRcdGxlZnQ6IDA7XHJcblx0XHQvKiAjaWZkZWYgQVBQLU5WVUUgKi9cclxuXHRcdGJvcmRlci10b3AtY29sb3I6ICR1bmktYm9yZGVyLWNvbG9yO1xyXG5cdFx0Ym9yZGVyLXRvcC1zdHlsZTogc29saWQ7XHJcblx0XHRib3JkZXItdG9wLXdpZHRoOiAwLjVweDtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdH1cclxuXHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0LnVuaS1saXN0LS1ib3JkZXI6YWZ0ZXIge1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0dG9wOiAwO1xyXG5cdFx0cmlnaHQ6IDA7XHJcblx0XHRsZWZ0OiAwO1xyXG5cdFx0aGVpZ2h0OiAxcHg7XHJcblx0XHRjb250ZW50OiAnJztcclxuXHRcdC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZVkoMC41KTtcclxuXHRcdHRyYW5zZm9ybTogc2NhbGVZKDAuNSk7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkdW5pLWJvcmRlci1jb2xvcjtcclxuXHR9XHJcblx0LyogI2VuZGlmICovXHJcblx0LnVuaS1saXN0LWl0ZW1fX2NvbnRlbnQge1xyXG5cdFx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0cGFkZGluZy1yaWdodDogOHB4O1xyXG5cdFx0ZmxleDogMTtcclxuXHRcdGNvbG9yOiAjM2I0MTQ0O1xyXG5cdFx0Ly8gb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cdH1cclxuXHQudW5pLWxpc3QtaXRlbV9fY29udGVudC0tY2VudGVyIHtcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdH1cclxuXHQudW5pLWxpc3QtaXRlbV9fY29udGVudC10aXRsZSB7XHJcblx0XHRmb250LXNpemU6ICR1bmktZm9udC1zaXplLWJhc2U7XHJcblx0XHRjb2xvcjogIzNiNDE0NDtcclxuXHRcdG92ZXJmbG93OiBoaWRkZW47XHJcblx0fVxyXG5cdC51bmktbGlzdC1pdGVtX19jb250ZW50LW5vdGUge1xyXG5cdFx0bWFyZ2luLXRvcDogNnJweDtcclxuXHRcdGNvbG9yOiAkdW5pLXRleHQtY29sb3ItZ3JleTtcclxuXHRcdGZvbnQtc2l6ZTogJHVuaS1mb250LXNpemUtc207XHJcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cdH1cclxuXHQudW5pLWxpc3QtaXRlbV9fZXh0cmEge1xyXG5cdFx0Ly8gd2lkdGg6IDI1JTtcclxuXHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHR9XHJcblx0LnVuaS1saXN0LWl0ZW1fX2hlYWRlciB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHR9XHJcblx0LnVuaS1saXN0LWl0ZW1fX2ljb24ge1xyXG5cdFx0bWFyZ2luLXJpZ2h0OiAxOHJweDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0fVxyXG5cdC51bmktbGlzdC1pdGVtX19pY29uLWltZyB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBibG9jaztcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0aGVpZ2h0OiAkdW5pLWltZy1zaXplLWJhc2U7XHJcblx0XHR3aWR0aDogJHVuaS1pbWctc2l6ZS1iYXNlO1xyXG5cdFx0bWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG5cdH1cclxuXHQudW5pLWljb24td3JhcHBlciB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0cGFkZGluZzogMCAxMHB4O1xyXG5cdH1cclxuXHQuZmxleC0tZGlyZWN0aW9uIHtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRhbGlnbi1pdGVtczogaW5pdGlhbDtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdH1cclxuXHQuZmxleC0tanVzdGlmeSB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGluaXRpYWw7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHR9XHJcblx0LnVuaS1saXN0LS1sZyB7XHJcblx0XHRoZWlnaHQ6ICR1bmktaW1nLXNpemUtbGc7XHJcblx0XHR3aWR0aDogJHVuaS1pbWctc2l6ZS1sZztcclxuXHR9XHJcblx0LnVuaS1saXN0LS1iYXNlIHtcclxuXHRcdGhlaWdodDogJHVuaS1pbWctc2l6ZS1iYXNlO1xyXG5cdFx0d2lkdGg6ICR1bmktaW1nLXNpemUtYmFzZTtcclxuXHR9XHJcblx0LnVuaS1saXN0LS1zbSB7XHJcblx0XHRoZWlnaHQ6ICR1bmktaW1nLXNpemUtc207XHJcblx0XHR3aWR0aDogJHVuaS1pbWctc2l6ZS1zbTtcclxuXHR9XHJcblx0LnVuaS1saXN0LWl0ZW1fX2V4dHJhLXRleHQge1xyXG5cdFx0Y29sb3I6ICR1bmktdGV4dC1jb2xvci1ncmV5O1xyXG5cdFx0Zm9udC1zaXplOiAkdW5pLWZvbnQtc2l6ZS1zbTtcclxuXHR9XHJcblx0LnVuaS1lbGxpcHNpcy0xIHtcclxuXHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdG92ZXJmbG93OiBoaWRkZW47XHJcblx0XHR3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG5cdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdC8qICNpZmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0bGluZXM6IDE7XHJcblx0XHR0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0fVxyXG5cdC51bmktZWxsaXBzaXMtMiB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cdFx0dGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcblx0XHRkaXNwbGF5OiAtd2Via2l0LWJveDtcclxuXHRcdC13ZWJraXQtbGluZS1jbGFtcDogMjtcclxuXHRcdC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdC8qICNpZmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0bGluZXM6IDI7XHJcblx0XHR0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0fVxyXG48L3N0eWxlPlxyXG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXFxcXGRpc3RcXFxcbG9hZGVyLmpzPz9yZWYtLTgtb25lT2YtMS0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGNzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHN0eWxlUG9zdExvYWRlci5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxccG9zdGNzcy1sb2FkZXJcXFxcc3JjXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcc2Fzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTQhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS01IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1saXN0LWl0ZW0udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXFxcXGRpc3RcXFxcbG9hZGVyLmpzPz9yZWYtLTgtb25lT2YtMS0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGNzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHN0eWxlUG9zdExvYWRlci5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxccG9zdGNzcy1sb2FkZXJcXFxcc3JjXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcc2Fzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTQhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS01IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1saXN0LWl0ZW0udnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG4gICAgaWYobW9kdWxlLmhvdCkge1xuICAgICAgLy8gMTY1MzMxMjI1NDM4MFxuICAgICAgdmFyIGNzc1JlbG9hZCA9IHJlcXVpcmUoXCJEOi9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9taW5pLWNzcy1leHRyYWN0LXBsdWdpbi9kaXN0L2htci9ob3RNb2R1bGVSZXBsYWNlbWVudC5qc1wiKShtb2R1bGUuaWQsIHtcImhtclwiOnRydWUsXCJwdWJsaWNQYXRoXCI6XCIuLi8uLi9cIixcImxvY2Fsc1wiOmZhbHNlfSk7XG4gICAgICBtb2R1bGUuaG90LmRpc3Bvc2UoY3NzUmVsb2FkKTtcbiAgICAgIG1vZHVsZS5ob3QuYWNjZXB0KHVuZGVmaW5lZCwgY3NzUmVsb2FkKTtcbiAgICB9XG4gICJdLCJzb3VyY2VSb290IjoiIn0=
;(global["webpackJsonp"] = global["webpackJsonp"] || []).push([
'uni_modules/uni-list/components/uni-list-item/uni-list-item-create-component',
{
'uni_modules/uni-list/components/uni-list-item/uni-list-item-create-component':(function(module, exports, __webpack_require__){
- __webpack_require__('1')['createComponent'](__webpack_require__(130))
+ __webpack_require__('1')['createComponent'](__webpack_require__(145))
})
},
[['uni_modules/uni-list/components/uni-list-item/uni-list-item-create-component']]
diff --git a/unpackage/dist/dev/mp-toutiao/uni_modules/uni-list/components/uni-list/uni-list.js b/unpackage/dist/dev/mp-toutiao/uni_modules/uni-list/components/uni-list/uni-list.js
index d6c7fc6..9c06a14 100644
--- a/unpackage/dist/dev/mp-toutiao/uni_modules/uni-list/components/uni-list/uni-list.js
+++ b/unpackage/dist/dev/mp-toutiao/uni_modules/uni-list/components/uni-list/uni-list.js
@@ -1,6 +1,6 @@
(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["uni_modules/uni-list/components/uni-list/uni-list"],{
-/***/ 123:
+/***/ 138:
/*!**************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-list/components/uni-list/uni-list.vue ***!
\**************************************************************************************/
@@ -9,10 +9,10 @@
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _uni_list_vue_vue_type_template_id_5009d455___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-list.vue?vue&type=template&id=5009d455& */ 124);
-/* harmony import */ var _uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-list.vue?vue&type=script&lang=js& */ 126);
+/* harmony import */ var _uni_list_vue_vue_type_template_id_5009d455___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-list.vue?vue&type=template&id=5009d455& */ 139);
+/* harmony import */ var _uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-list.vue?vue&type=script&lang=js& */ 141);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
-/* harmony import */ var _uni_list_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uni-list.vue?vue&type=style&index=0&lang=scss& */ 128);
+/* harmony import */ var _uni_list_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uni-list.vue?vue&type=style&index=0&lang=scss& */ 143);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 11);
var renderjs
@@ -41,7 +41,7 @@ component.options.__file = "uni_modules/uni-list/components/uni-list/uni-list.vu
/***/ }),
-/***/ 124:
+/***/ 139:
/*!*********************************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-list/components/uni-list/uni-list.vue?vue&type=template&id=5009d455& ***!
\*********************************************************************************************************************/
@@ -50,7 +50,7 @@ component.options.__file = "uni_modules/uni-list/components/uni-list/uni-list.vu
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_vue_vue_type_template_id_5009d455___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-list.vue?vue&type=template&id=5009d455& */ 125);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_vue_vue_type_template_id_5009d455___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-list.vue?vue&type=template&id=5009d455& */ 140);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_vue_vue_type_template_id_5009d455___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_vue_vue_type_template_id_5009d455___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
@@ -63,7 +63,7 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
-/***/ 125:
+/***/ 140:
/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/uni_modules/uni-list/components/uni-list/uni-list.vue?vue&type=template&id=5009d455& ***!
\*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -90,7 +90,7 @@ render._withStripped = true
/***/ }),
-/***/ 126:
+/***/ 141:
/*!***************************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-list/components/uni-list/uni-list.vue?vue&type=script&lang=js& ***!
\***************************************************************************************************************/
@@ -99,14 +99,14 @@ render._withStripped = true
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-list.vue?vue&type=script&lang=js& */ 127);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-list.vue?vue&type=script&lang=js& */ 142);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
-/***/ 127:
+/***/ 142:
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/uni_modules/uni-list/components/uni-list/uni-list.vue?vue&type=script&lang=js& ***!
\**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -170,7 +170,7 @@ Object.defineProperty(exports, "__esModule", { value: true });exports.default =
/***/ }),
-/***/ 128:
+/***/ 143:
/*!************************************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-list/components/uni-list/uni-list.vue?vue&type=style&index=0&lang=scss& ***!
\************************************************************************************************************************/
@@ -179,14 +179,14 @@ Object.defineProperty(exports, "__esModule", { value: true });exports.default =
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-list.vue?vue&type=style&index=0&lang=scss& */ 129);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-list.vue?vue&type=style&index=0&lang=scss& */ 144);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_list_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
-/***/ 129:
+/***/ 144:
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/uni_modules/uni-list/components/uni-list/uni-list.vue?vue&type=style&index=0&lang=scss& ***!
\****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -200,12 +200,12 @@ __webpack_require__.r(__webpack_exports__);
/***/ })
}]);
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktbGlzdC9jb21wb25lbnRzL3VuaS1saXN0L3VuaS1saXN0LnZ1ZT8yYTEyIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1saXN0L2NvbXBvbmVudHMvdW5pLWxpc3QvdW5pLWxpc3QudnVlPzUyOGIiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svdW5pX21vZHVsZXMvdW5pLWxpc3QvY29tcG9uZW50cy91bmktbGlzdC91bmktbGlzdC52dWU/MjQ5OCIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktbGlzdC9jb21wb25lbnRzL3VuaS1saXN0L3VuaS1saXN0LnZ1ZT85Y2JiIiwidW5pLWFwcDovLy91bmlfbW9kdWxlcy91bmktbGlzdC9jb21wb25lbnRzL3VuaS1saXN0L3VuaS1saXN0LnZ1ZSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktbGlzdC9jb21wb25lbnRzL3VuaS1saXN0L3VuaS1saXN0LnZ1ZT8wNmRmIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1saXN0L2NvbXBvbmVudHMvdW5pLWxpc3QvdW5pLWxpc3QudnVlP2EwN2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFxSDtBQUNySDtBQUM0RDtBQUNMO0FBQ2M7OztBQUdyRTtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSw4RUFBTTtBQUNSLEVBQUUsbUZBQU07QUFDUixFQUFFLDRGQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHVGQUFVO0FBQ1o7QUFDQTs7QUFFQTtBQUNlLGdGOzs7Ozs7Ozs7Ozs7QUN2QmY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQ1JBO0FBQUE7QUFBQTtBQUFBO0FBQWttQixDQUFnQiw0bkJBQUcsRUFBQyxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2N0bkI7Ozs7OztBQU1BO0FBQ0EsaUJBREE7QUFFQTtBQUNBO0FBQ0EsMEJBREEsRUFEQSxFQUZBOzs7QUFPQTtBQUNBO0FBQ0EsNkJBREE7QUFFQSxvQkFGQSxFQURBOztBQUtBO0FBQ0EsNkJBREE7QUFFQSxvQkFGQSxFQUxBOztBQVNBO0FBQ0EsbUJBREE7QUFFQSxtQkFGQSxFQVRBLEVBUEE7OztBQXFCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0ExQkEscUJBMEJBO0FBQ0E7QUFDQSxHQTVCQTtBQTZCQTtBQUNBLFlBREEsb0JBQ0EsQ0FEQSxFQUNBO0FBQ0E7QUFDQSxLQUhBLEVBN0JBLEU7Ozs7Ozs7Ozs7OztBQ3BCQTtBQUFBO0FBQUE7QUFBQTtBQUE2b0MsQ0FBZ0IsbW5DQUFHLEVBQUMsQzs7Ozs7Ozs7Ozs7QUNBanFDO0FBQ0EsT0FBTyxLQUFVLEVBQUUsa0JBS2QiLCJmaWxlIjoidW5pX21vZHVsZXMvdW5pLWxpc3QvY29tcG9uZW50cy91bmktbGlzdC91bmktbGlzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vdW5pLWxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTUwMDlkNDU1JlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vdW5pLWxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi91bmktbGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vdW5pLWxpc3QudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXHJ1bnRpbWVcXFxcY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInVuaV9tb2R1bGVzL3VuaS1saXN0L2NvbXBvbmVudHMvdW5pLWxpc3QvdW5pLWxpc3QudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHRlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTE2LTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcdGVtcGxhdGUuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXVuaS1hcHAtbG9hZGVyXFxcXHBhZ2UtbWV0YS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktbGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTAwOWQ0NTUmXCIiLCJ2YXIgY29tcG9uZW50c1xudmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG59XG52YXIgcmVjeWNsYWJsZVJlbmRlciA9IGZhbHNlXG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IiwiaW1wb3J0IG1vZCBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMi0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHNjcmlwdC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktbGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcYmFiZWwtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTItMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzY3JpcHQuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vdW5pLWxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiPHRlbXBsYXRlPlxyXG5cdDwhLS0gI2lmbmRlZiBBUFAtTlZVRSAtLT5cclxuXHQ8dmlldyBjbGFzcz1cInVuaS1saXN0IHVuaS1ib3JkZXItdG9wLWJvdHRvbVwiPlxyXG5cdFx0PHZpZXcgdi1pZj1cImJvcmRlclwiIGNsYXNzPVwidW5pLWxpc3QtLWJvcmRlci10b3BcIj48L3ZpZXc+XHJcblx0XHQ8c2xvdCAvPlxyXG5cdFx0PHZpZXcgdi1pZj1cImJvcmRlclwiIGNsYXNzPVwidW5pLWxpc3QtLWJvcmRlci1ib3R0b21cIj48L3ZpZXc+XHJcblx0PC92aWV3PlxyXG5cdDwhLS0gI2VuZGlmIC0tPlxyXG5cdDwhLS0gI2lmZGVmIEFQUC1OVlVFIC0tPlxyXG5cdDxsaXN0IGNsYXNzPVwidW5pLWxpc3RcIiA6Y2xhc3M9XCJ7ICd1bmktbGlzdC0tYm9yZGVyJzogYm9yZGVyIH1cIiA6ZW5hYmxlQmFja1RvVG9wPVwiZW5hYmxlQmFja1RvVG9wXCIgbG9hZG1vcmVvZmZzZXQ9XCIxNVwiPjxzbG90IC8+PC9saXN0PlxyXG5cdDwhLS0gI2VuZGlmIC0tPlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuLyoqXHJcbiAqIExpc3Qg5YiX6KGoXHJcbiAqIEBkZXNjcmlwdGlvbiDliJfooajnu4Tku7ZcclxuICogQHR1dG9yaWFsIGh0dHBzOi8vZXh0LmRjbG91ZC5uZXQuY24vcGx1Z2luP2lkPTI0XHJcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBcdGJvcmRlciA9IFt0cnVlfGZhbHNlXSBcdFx05qCH6aKYXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCB7XHJcblx0bmFtZTogJ3VuaUxpc3QnLFxyXG5cdCdtcC13ZWl4aW4nOiB7XHJcblx0XHRvcHRpb25zOiB7XHJcblx0XHRcdG11bHRpcGxlU2xvdHM6IGZhbHNlXHJcblx0XHR9XHJcblx0fSxcclxuXHRwcm9wczoge1xyXG5cdFx0ZW5hYmxlQmFja1RvVG9wOiB7XHJcblx0XHRcdHR5cGU6IFtCb29sZWFuLCBTdHJpbmddLFxyXG5cdFx0XHRkZWZhdWx0OiBmYWxzZVxyXG5cdFx0fSxcclxuXHRcdHNjcm9sbFk6IHtcclxuXHRcdFx0dHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXHJcblx0XHRcdGRlZmF1bHQ6IGZhbHNlXHJcblx0XHR9LFxyXG5cdFx0Ym9yZGVyOiB7XHJcblx0XHRcdHR5cGU6IEJvb2xlYW4sXHJcblx0XHRcdGRlZmF1bHQ6IHRydWVcclxuXHRcdH1cclxuXHR9LFxyXG5cdC8vIHByb3ZpZGUoKSB7XHJcblx0Ly8gXHRyZXR1cm4ge1xyXG5cdC8vIFx0XHRsaXN0OiB0aGlzXHJcblx0Ly8gXHR9O1xyXG5cdC8vIH0sXHJcblx0Y3JlYXRlZCgpIHtcclxuXHRcdHRoaXMuZmlyc3RDaGlsZEFwcGVuZCA9IGZhbHNlO1xyXG5cdH0sXHJcblx0bWV0aG9kczoge1xyXG5cdFx0bG9hZE1vcmUoZSkge1xyXG5cdFx0XHR0aGlzLiRlbWl0KCdzY3JvbGx0b2xvd2VyJyk7XHJcblx0XHR9XHJcblx0fVxyXG59O1xyXG48L3NjcmlwdD5cclxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgPlxyXG4kdW5pLWJnLWNvbG9yOiNmZmZmZmY7XHJcbiR1bmktYm9yZGVyLWNvbG9yOiNlNWU1ZTU7XHJcbi51bmktbGlzdCB7XHJcblx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdGRpc3BsYXk6IGZsZXg7XHJcblx0LyogI2VuZGlmICovXHJcblx0YmFja2dyb3VuZC1jb2xvcjogJHVuaS1iZy1jb2xvcjtcclxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5cclxuLnVuaS1saXN0LS1ib3JkZXIge1xyXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHQvKiAjaWZkZWYgQVBQLU5WVUUgKi9cclxuXHRib3JkZXItdG9wLWNvbG9yOiAkdW5pLWJvcmRlci1jb2xvcjtcclxuXHRib3JkZXItdG9wLXN0eWxlOiBzb2xpZDtcclxuXHRib3JkZXItdG9wLXdpZHRoOiAwLjVweDtcclxuXHRib3JkZXItYm90dG9tLWNvbG9yOiAkdW5pLWJvcmRlci1jb2xvcjtcclxuXHRib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcclxuXHRib3JkZXItYm90dG9tLXdpZHRoOiAwLjVweDtcclxuXHQvKiAjZW5kaWYgKi9cclxuXHR6LWluZGV4OiAtMTtcclxufVxyXG5cclxuLyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cclxuLnVuaS1saXN0LS1ib3JkZXItdG9wIHtcclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0dG9wOiAwO1xyXG5cdHJpZ2h0OiAwO1xyXG5cdGxlZnQ6IDA7XHJcblx0aGVpZ2h0OiAxcHg7XHJcblx0LXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWSgwLjUpO1xyXG5cdHRyYW5zZm9ybTogc2NhbGVZKDAuNSk7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogJHVuaS1ib3JkZXItY29sb3I7XHJcblx0ei1pbmRleDogMTtcclxufVxyXG5cclxuLnVuaS1saXN0LS1ib3JkZXItYm90dG9tIHtcclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0Ym90dG9tOiAwO1xyXG5cdHJpZ2h0OiAwO1xyXG5cdGxlZnQ6IDA7XHJcblx0aGVpZ2h0OiAxcHg7XHJcblx0LXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWSgwLjUpO1xyXG5cdHRyYW5zZm9ybTogc2NhbGVZKDAuNSk7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogJHVuaS1ib3JkZXItY29sb3I7XHJcbn1cclxuXHJcbi8qICNlbmRpZiAqL1xyXG48L3N0eWxlPlxyXG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXFxcXGRpc3RcXFxcbG9hZGVyLmpzPz9yZWYtLTgtb25lT2YtMS0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGNzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHN0eWxlUG9zdExvYWRlci5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxccG9zdGNzcy1sb2FkZXJcXFxcc3JjXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcc2Fzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTQhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS01IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1saXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxcXFxkaXN0XFxcXGxvYWRlci5qcz8/cmVmLS04LW9uZU9mLTEtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxjc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFxzdHlsZVBvc3RMb2FkZXIuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXHBvc3Rjc3MtbG9hZGVyXFxcXHNyY1xcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHNhc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS00IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtNSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktbGlzdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbiAgICBpZihtb2R1bGUuaG90KSB7XG4gICAgICAvLyAxNjUyNjk2OTgyNzA1XG4gICAgICB2YXIgY3NzUmVsb2FkID0gcmVxdWlyZShcIkQ6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luL2Rpc3QvaG1yL2hvdE1vZHVsZVJlcGxhY2VtZW50LmpzXCIpKG1vZHVsZS5pZCwge1wiaG1yXCI6dHJ1ZSxcInB1YmxpY1BhdGhcIjpcIi4uLy4uL1wiLFwibG9jYWxzXCI6ZmFsc2V9KTtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShjc3NSZWxvYWQpO1xuICAgICAgbW9kdWxlLmhvdC5hY2NlcHQodW5kZWZpbmVkLCBjc3NSZWxvYWQpO1xuICAgIH1cbiAgIl0sInNvdXJjZVJvb3QiOiIifQ==
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktbGlzdC9jb21wb25lbnRzL3VuaS1saXN0L3VuaS1saXN0LnZ1ZT8yYTEyIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1saXN0L2NvbXBvbmVudHMvdW5pLWxpc3QvdW5pLWxpc3QudnVlPzUyOGIiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svdW5pX21vZHVsZXMvdW5pLWxpc3QvY29tcG9uZW50cy91bmktbGlzdC91bmktbGlzdC52dWU/MjQ5OCIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktbGlzdC9jb21wb25lbnRzL3VuaS1saXN0L3VuaS1saXN0LnZ1ZT85Y2JiIiwidW5pLWFwcDovLy91bmlfbW9kdWxlcy91bmktbGlzdC9jb21wb25lbnRzL3VuaS1saXN0L3VuaS1saXN0LnZ1ZSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktbGlzdC9jb21wb25lbnRzL3VuaS1saXN0L3VuaS1saXN0LnZ1ZT8wNmRmIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1saXN0L2NvbXBvbmVudHMvdW5pLWxpc3QvdW5pLWxpc3QudnVlP2EwN2UiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFxSDtBQUNySDtBQUM0RDtBQUNMO0FBQ2M7OztBQUdyRTtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSw4RUFBTTtBQUNSLEVBQUUsbUZBQU07QUFDUixFQUFFLDRGQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLHVGQUFVO0FBQ1o7QUFDQTs7QUFFQTtBQUNlLGdGOzs7Ozs7Ozs7Ozs7QUN2QmY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQ1JBO0FBQUE7QUFBQTtBQUFBO0FBQWttQixDQUFnQiw0bkJBQUcsRUFBQyxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2N0bkI7Ozs7OztBQU1BO0FBQ0EsaUJBREE7QUFFQTtBQUNBO0FBQ0EsMEJBREEsRUFEQSxFQUZBOzs7QUFPQTtBQUNBO0FBQ0EsNkJBREE7QUFFQSxvQkFGQSxFQURBOztBQUtBO0FBQ0EsNkJBREE7QUFFQSxvQkFGQSxFQUxBOztBQVNBO0FBQ0EsbUJBREE7QUFFQSxtQkFGQSxFQVRBLEVBUEE7OztBQXFCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0ExQkEscUJBMEJBO0FBQ0E7QUFDQSxHQTVCQTtBQTZCQTtBQUNBLFlBREEsb0JBQ0EsQ0FEQSxFQUNBO0FBQ0E7QUFDQSxLQUhBLEVBN0JBLEU7Ozs7Ozs7Ozs7OztBQ3BCQTtBQUFBO0FBQUE7QUFBQTtBQUE2b0MsQ0FBZ0IsbW5DQUFHLEVBQUMsQzs7Ozs7Ozs7Ozs7QUNBanFDO0FBQ0EsT0FBTyxLQUFVLEVBQUUsa0JBS2QiLCJmaWxlIjoidW5pX21vZHVsZXMvdW5pLWxpc3QvY29tcG9uZW50cy91bmktbGlzdC91bmktbGlzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vdW5pLWxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTUwMDlkNDU1JlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vdW5pLWxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi91bmktbGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vdW5pLWxpc3QudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXHJ1bnRpbWVcXFxcY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInVuaV9tb2R1bGVzL3VuaS1saXN0L2NvbXBvbmVudHMvdW5pLWxpc3QvdW5pLWxpc3QudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHRlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTE2LTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcdGVtcGxhdGUuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXVuaS1hcHAtbG9hZGVyXFxcXHBhZ2UtbWV0YS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktbGlzdC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NTAwOWQ0NTUmXCIiLCJ2YXIgY29tcG9uZW50c1xudmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG59XG52YXIgcmVjeWNsYWJsZVJlbmRlciA9IGZhbHNlXG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IiwiaW1wb3J0IG1vZCBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMi0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHNjcmlwdC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktbGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcYmFiZWwtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTItMSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzY3JpcHQuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxpbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHN0eWxlLmpzIS4vdW5pLWxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiPHRlbXBsYXRlPlxyXG5cdDwhLS0gI2lmbmRlZiBBUFAtTlZVRSAtLT5cclxuXHQ8dmlldyBjbGFzcz1cInVuaS1saXN0IHVuaS1ib3JkZXItdG9wLWJvdHRvbVwiPlxyXG5cdFx0PHZpZXcgdi1pZj1cImJvcmRlclwiIGNsYXNzPVwidW5pLWxpc3QtLWJvcmRlci10b3BcIj48L3ZpZXc+XHJcblx0XHQ8c2xvdCAvPlxyXG5cdFx0PHZpZXcgdi1pZj1cImJvcmRlclwiIGNsYXNzPVwidW5pLWxpc3QtLWJvcmRlci1ib3R0b21cIj48L3ZpZXc+XHJcblx0PC92aWV3PlxyXG5cdDwhLS0gI2VuZGlmIC0tPlxyXG5cdDwhLS0gI2lmZGVmIEFQUC1OVlVFIC0tPlxyXG5cdDxsaXN0IGNsYXNzPVwidW5pLWxpc3RcIiA6Y2xhc3M9XCJ7ICd1bmktbGlzdC0tYm9yZGVyJzogYm9yZGVyIH1cIiA6ZW5hYmxlQmFja1RvVG9wPVwiZW5hYmxlQmFja1RvVG9wXCIgbG9hZG1vcmVvZmZzZXQ9XCIxNVwiPjxzbG90IC8+PC9saXN0PlxyXG5cdDwhLS0gI2VuZGlmIC0tPlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuLyoqXHJcbiAqIExpc3Qg5YiX6KGoXHJcbiAqIEBkZXNjcmlwdGlvbiDliJfooajnu4Tku7ZcclxuICogQHR1dG9yaWFsIGh0dHBzOi8vZXh0LmRjbG91ZC5uZXQuY24vcGx1Z2luP2lkPTI0XHJcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBcdGJvcmRlciA9IFt0cnVlfGZhbHNlXSBcdFx05qCH6aKYXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCB7XHJcblx0bmFtZTogJ3VuaUxpc3QnLFxyXG5cdCdtcC13ZWl4aW4nOiB7XHJcblx0XHRvcHRpb25zOiB7XHJcblx0XHRcdG11bHRpcGxlU2xvdHM6IGZhbHNlXHJcblx0XHR9XHJcblx0fSxcclxuXHRwcm9wczoge1xyXG5cdFx0ZW5hYmxlQmFja1RvVG9wOiB7XHJcblx0XHRcdHR5cGU6IFtCb29sZWFuLCBTdHJpbmddLFxyXG5cdFx0XHRkZWZhdWx0OiBmYWxzZVxyXG5cdFx0fSxcclxuXHRcdHNjcm9sbFk6IHtcclxuXHRcdFx0dHlwZTogW0Jvb2xlYW4sIFN0cmluZ10sXHJcblx0XHRcdGRlZmF1bHQ6IGZhbHNlXHJcblx0XHR9LFxyXG5cdFx0Ym9yZGVyOiB7XHJcblx0XHRcdHR5cGU6IEJvb2xlYW4sXHJcblx0XHRcdGRlZmF1bHQ6IHRydWVcclxuXHRcdH1cclxuXHR9LFxyXG5cdC8vIHByb3ZpZGUoKSB7XHJcblx0Ly8gXHRyZXR1cm4ge1xyXG5cdC8vIFx0XHRsaXN0OiB0aGlzXHJcblx0Ly8gXHR9O1xyXG5cdC8vIH0sXHJcblx0Y3JlYXRlZCgpIHtcclxuXHRcdHRoaXMuZmlyc3RDaGlsZEFwcGVuZCA9IGZhbHNlO1xyXG5cdH0sXHJcblx0bWV0aG9kczoge1xyXG5cdFx0bG9hZE1vcmUoZSkge1xyXG5cdFx0XHR0aGlzLiRlbWl0KCdzY3JvbGx0b2xvd2VyJyk7XHJcblx0XHR9XHJcblx0fVxyXG59O1xyXG48L3NjcmlwdD5cclxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgPlxyXG4kdW5pLWJnLWNvbG9yOiNmZmZmZmY7XHJcbiR1bmktYm9yZGVyLWNvbG9yOiNlNWU1ZTU7XHJcbi51bmktbGlzdCB7XHJcblx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdGRpc3BsYXk6IGZsZXg7XHJcblx0LyogI2VuZGlmICovXHJcblx0YmFja2dyb3VuZC1jb2xvcjogJHVuaS1iZy1jb2xvcjtcclxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxufVxyXG5cclxuLnVuaS1saXN0LS1ib3JkZXIge1xyXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHQvKiAjaWZkZWYgQVBQLU5WVUUgKi9cclxuXHRib3JkZXItdG9wLWNvbG9yOiAkdW5pLWJvcmRlci1jb2xvcjtcclxuXHRib3JkZXItdG9wLXN0eWxlOiBzb2xpZDtcclxuXHRib3JkZXItdG9wLXdpZHRoOiAwLjVweDtcclxuXHRib3JkZXItYm90dG9tLWNvbG9yOiAkdW5pLWJvcmRlci1jb2xvcjtcclxuXHRib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcclxuXHRib3JkZXItYm90dG9tLXdpZHRoOiAwLjVweDtcclxuXHQvKiAjZW5kaWYgKi9cclxuXHR6LWluZGV4OiAtMTtcclxufVxyXG5cclxuLyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cclxuLnVuaS1saXN0LS1ib3JkZXItdG9wIHtcclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0dG9wOiAwO1xyXG5cdHJpZ2h0OiAwO1xyXG5cdGxlZnQ6IDA7XHJcblx0aGVpZ2h0OiAxcHg7XHJcblx0LXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWSgwLjUpO1xyXG5cdHRyYW5zZm9ybTogc2NhbGVZKDAuNSk7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogJHVuaS1ib3JkZXItY29sb3I7XHJcblx0ei1pbmRleDogMTtcclxufVxyXG5cclxuLnVuaS1saXN0LS1ib3JkZXItYm90dG9tIHtcclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0Ym90dG9tOiAwO1xyXG5cdHJpZ2h0OiAwO1xyXG5cdGxlZnQ6IDA7XHJcblx0aGVpZ2h0OiAxcHg7XHJcblx0LXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWSgwLjUpO1xyXG5cdHRyYW5zZm9ybTogc2NhbGVZKDAuNSk7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogJHVuaS1ib3JkZXItY29sb3I7XHJcbn1cclxuXHJcbi8qICNlbmRpZiAqL1xyXG48L3N0eWxlPlxyXG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXFxcXGRpc3RcXFxcbG9hZGVyLmpzPz9yZWYtLTgtb25lT2YtMS0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGNzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHN0eWxlUG9zdExvYWRlci5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxccG9zdGNzcy1sb2FkZXJcXFxcc3JjXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcc2Fzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTQhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS01IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1saXN0LnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxcXFxkaXN0XFxcXGxvYWRlci5qcz8/cmVmLS04LW9uZU9mLTEtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxjc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFxzdHlsZVBvc3RMb2FkZXIuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXHBvc3Rjc3MtbG9hZGVyXFxcXHNyY1xcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHNhc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS00IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtNSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktbGlzdC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbiAgICBpZihtb2R1bGUuaG90KSB7XG4gICAgICAvLyAxNjUzMzEyMjU0NDEyXG4gICAgICB2YXIgY3NzUmVsb2FkID0gcmVxdWlyZShcIkQ6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luL2Rpc3QvaG1yL2hvdE1vZHVsZVJlcGxhY2VtZW50LmpzXCIpKG1vZHVsZS5pZCwge1wiaG1yXCI6dHJ1ZSxcInB1YmxpY1BhdGhcIjpcIi4uLy4uL1wiLFwibG9jYWxzXCI6ZmFsc2V9KTtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShjc3NSZWxvYWQpO1xuICAgICAgbW9kdWxlLmhvdC5hY2NlcHQodW5kZWZpbmVkLCBjc3NSZWxvYWQpO1xuICAgIH1cbiAgIl0sInNvdXJjZVJvb3QiOiIifQ==
;(global["webpackJsonp"] = global["webpackJsonp"] || []).push([
'uni_modules/uni-list/components/uni-list/uni-list-create-component',
{
'uni_modules/uni-list/components/uni-list/uni-list-create-component':(function(module, exports, __webpack_require__){
- __webpack_require__('1')['createComponent'](__webpack_require__(123))
+ __webpack_require__('1')['createComponent'](__webpack_require__(138))
})
},
[['uni_modules/uni-list/components/uni-list/uni-list-create-component']]
diff --git a/unpackage/dist/dev/mp-toutiao/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.js b/unpackage/dist/dev/mp-toutiao/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.js
index 2b42a39..18484b8 100644
--- a/unpackage/dist/dev/mp-toutiao/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.js
+++ b/unpackage/dist/dev/mp-toutiao/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.js
@@ -1,6 +1,6 @@
(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar"],{
-/***/ 112:
+/***/ 120:
/*!********************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue ***!
\********************************************************************************************************/
@@ -9,10 +9,10 @@
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _uni_search_bar_vue_vue_type_template_id_180dbe05___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-search-bar.vue?vue&type=template&id=180dbe05& */ 113);
-/* harmony import */ var _uni_search_bar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-search-bar.vue?vue&type=script&lang=js& */ 115);
+/* harmony import */ var _uni_search_bar_vue_vue_type_template_id_180dbe05___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-search-bar.vue?vue&type=template&id=180dbe05& */ 121);
+/* harmony import */ var _uni_search_bar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-search-bar.vue?vue&type=script&lang=js& */ 123);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_search_bar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_search_bar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
-/* harmony import */ var _uni_search_bar_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uni-search-bar.vue?vue&type=style&index=0&lang=scss& */ 121);
+/* harmony import */ var _uni_search_bar_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uni-search-bar.vue?vue&type=style&index=0&lang=scss& */ 129);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 11);
var renderjs
@@ -41,7 +41,7 @@ component.options.__file = "uni_modules/uni-search-bar/components/uni-search-bar
/***/ }),
-/***/ 113:
+/***/ 121:
/*!***************************************************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue?vue&type=template&id=180dbe05& ***!
\***************************************************************************************************************************************/
@@ -50,7 +50,7 @@ component.options.__file = "uni_modules/uni-search-bar/components/uni-search-bar
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_search_bar_vue_vue_type_template_id_180dbe05___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-search-bar.vue?vue&type=template&id=180dbe05& */ 114);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_search_bar_vue_vue_type_template_id_180dbe05___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-search-bar.vue?vue&type=template&id=180dbe05& */ 122);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_search_bar_vue_vue_type_template_id_180dbe05___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_search_bar_vue_vue_type_template_id_180dbe05___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
@@ -63,7 +63,7 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
-/***/ 114:
+/***/ 122:
/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue?vue&type=template&id=180dbe05& ***!
\***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -80,7 +80,7 @@ var components
try {
components = {
uniIcons: function() {
- return Promise.all(/*! import() | uni_modules/uni-icons/components/uni-icons/uni-icons */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uni-icons/components/uni-icons/uni-icons")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uni-icons/components/uni-icons/uni-icons.vue */ 137))
+ return Promise.all(/*! import() | uni_modules/uni-icons/components/uni-icons/uni-icons */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uni-icons/components/uni-icons/uni-icons")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uni-icons/components/uni-icons/uni-icons.vue */ 152))
}
}
} catch (e) {
@@ -113,7 +113,7 @@ render._withStripped = true
/***/ }),
-/***/ 115:
+/***/ 123:
/*!*********************************************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue?vue&type=script&lang=js& ***!
\*********************************************************************************************************************************/
@@ -122,14 +122,14 @@ render._withStripped = true
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_search_bar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-search-bar.vue?vue&type=script&lang=js& */ 116);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_search_bar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-search-bar.vue?vue&type=script&lang=js& */ 124);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_search_bar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_search_bar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_search_bar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_search_bar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_search_bar_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
-/***/ 116:
+/***/ 124:
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue?vue&type=script&lang=js& ***!
\****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -163,7 +163,7 @@ __webpack_require__.r(__webpack_exports__);
var _uniI18n = __webpack_require__(/*! @dcloudio/uni-i18n */ 4);
-var _index = _interopRequireDefault(__webpack_require__(/*! ./i18n/index.js */ 117));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} //
+var _index = _interopRequireDefault(__webpack_require__(/*! ./i18n/index.js */ 125));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} //
//
//
//
@@ -353,7 +353,7 @@ var _initVueI18n = (0, _uniI18n.initVueI18n)(_index.default),t = _initVueI18n.t;
/***/ }),
-/***/ 121:
+/***/ 129:
/*!******************************************************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue?vue&type=style&index=0&lang=scss& ***!
\******************************************************************************************************************************************/
@@ -362,14 +362,14 @@ var _initVueI18n = (0, _uniI18n.initVueI18n)(_index.default),t = _initVueI18n.t;
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_search_bar_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-search-bar.vue?vue&type=style&index=0&lang=scss& */ 122);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_search_bar_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-search-bar.vue?vue&type=style&index=0&lang=scss& */ 130);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_search_bar_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_search_bar_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_search_bar_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_search_bar_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_search_bar_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
-/***/ 122:
+/***/ 130:
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue?vue&type=style&index=0&lang=scss& ***!
\**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -383,12 +383,12 @@ __webpack_require__.r(__webpack_exports__);
/***/ })
}]);
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktc2VhcmNoLWJhci9jb21wb25lbnRzL3VuaS1zZWFyY2gtYmFyL3VuaS1zZWFyY2gtYmFyLnZ1ZT9mMmI3Iiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1zZWFyY2gtYmFyL2NvbXBvbmVudHMvdW5pLXNlYXJjaC1iYXIvdW5pLXNlYXJjaC1iYXIudnVlP2Q2ODEiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svdW5pX21vZHVsZXMvdW5pLXNlYXJjaC1iYXIvY29tcG9uZW50cy91bmktc2VhcmNoLWJhci91bmktc2VhcmNoLWJhci52dWU/M2JmOSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktc2VhcmNoLWJhci9jb21wb25lbnRzL3VuaS1zZWFyY2gtYmFyL3VuaS1zZWFyY2gtYmFyLnZ1ZT9hMTE2IiwidW5pLWFwcDovLy91bmlfbW9kdWxlcy91bmktc2VhcmNoLWJhci9jb21wb25lbnRzL3VuaS1zZWFyY2gtYmFyL3VuaS1zZWFyY2gtYmFyLnZ1ZSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktc2VhcmNoLWJhci9jb21wb25lbnRzL3VuaS1zZWFyY2gtYmFyL3VuaS1zZWFyY2gtYmFyLnZ1ZT84N2I5Iiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1zZWFyY2gtYmFyL2NvbXBvbmVudHMvdW5pLXNlYXJjaC1iYXIvdW5pLXNlYXJjaC1iYXIudnVlP2JhNzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEySDtBQUMzSDtBQUNrRTtBQUNMO0FBQ2M7OztBQUczRTtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSxvRkFBTTtBQUNSLEVBQUUseUZBQU07QUFDUixFQUFFLGtHQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLDZGQUFVO0FBQ1o7QUFDQTs7QUFFQTtBQUNlLGdGOzs7Ozs7Ozs7Ozs7QUN2QmY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLHNUQUVOO0FBQ1A7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNqQ0E7QUFBQTtBQUFBO0FBQUE7QUFBd21CLENBQWdCLGtvQkFBRyxFQUFDLEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdUI1bkI7OztBQUdBLHFGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CQUNBLHlDLENBQUEsQyxnQkFBQSxDLEVBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21HQXlCQSxFQUNBLG9CQURBLEVBRUEsb0ZBRkEsRUFHQSxTQUNBLGVBQ0EsWUFEQSxFQUVBLFdBRkEsRUFEQSxFQUtBLFVBQ0Esc0JBREEsRUFFQSxVQUZBLEVBTEEsRUFTQSxlQUNBLFlBREEsRUFFQSxlQUZBLEVBVEEsRUFhQSxnQkFDQSxZQURBO0FBRUEscUJBRkEsRUFiQTs7QUFpQkE7QUFDQSxrQkFEQTtBQUVBLG1CQUZBLEVBakJBOztBQXFCQTtBQUNBLGtCQURBO0FBRUEsd0JBRkEsRUFyQkE7O0FBeUJBO0FBQ0EsNEJBREE7QUFFQSxrQkFGQSxFQXpCQTs7QUE2QkE7QUFDQSw0QkFEQTtBQUVBLGlCQUZBLEVBN0JBOztBQWlDQTtBQUNBLDRCQURBO0FBRUEsaUJBRkEsRUFqQ0E7O0FBcUNBO0FBQ0EsbUJBREE7QUFFQSxvQkFGQSxFQXJDQSxFQUhBOzs7QUE2Q0EsTUE3Q0Esa0JBNkNBO0FBQ0E7QUFDQSxpQkFEQTtBQUVBLHFCQUZBO0FBR0EsbUJBSEE7O0FBS0EsR0FuREE7QUFvREE7QUFDQSxrQkFEQSw0QkFDQTtBQUNBO0FBQ0EsS0FIQTtBQUlBLG1CQUpBLDZCQUlBO0FBQ0E7QUFDQSxLQU5BLEVBcERBOztBQTREQTs7QUFFQTtBQUNBLHFCQURBO0FBRUEsYUFGQSxtQkFFQSxNQUZBLEVBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BUEEsRUFGQTs7Ozs7Ozs7Ozs7Ozs7QUF1QkE7QUFDQSxxQkFEQTtBQUVBLGFBRkEsbUJBRUEsTUFGQSxFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUZBO0FBR0E7QUFDQSxPQVRBLEVBdkJBOztBQWtDQSxhQWxDQSxxQkFrQ0EsTUFsQ0EsRUFrQ0EsTUFsQ0EsRUFrQ0E7O0FBRUE7Ozs7O0FBS0EsS0F6Q0EsRUE1REE7O0FBdUdBO0FBQ0EsZUFEQSx5QkFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BRkE7QUFHQSxLQVRBO0FBVUEsU0FWQSxtQkFVQTtBQUNBO0FBQ0EsNkJBREE7O0FBR0E7QUFDQSxLQWZBO0FBZ0JBLFVBaEJBLG9CQWdCQTtBQUNBO0FBQ0EsNkJBREE7O0FBR0E7QUFDQTtBQUNBOztBQUVBOzs7OztBQUtBLEtBN0JBO0FBOEJBLFdBOUJBLHFCQThCQTs7QUFFQTs7Ozs7QUFLQTtBQUNBLDZCQURBOztBQUdBLEtBeENBO0FBeUNBLFFBekNBLGtCQXlDQTs7QUFFQTs7Ozs7QUFLQTtBQUNBLDZCQURBOztBQUdBLEtBbkRBO0FBb0RBLGFBcERBLHFCQW9EQSxDQXBEQSxFQW9EQTtBQUNBO0FBQ0EsS0F0REEsRUF2R0EsRTs7Ozs7Ozs7Ozs7OztBQ3REQTtBQUFBO0FBQUE7QUFBQTtBQUFtcEMsQ0FBZ0IseW5DQUFHLEVBQUMsQzs7Ozs7Ozs7Ozs7QUNBdnFDO0FBQ0EsT0FBTyxLQUFVLEVBQUUsa0JBS2QiLCJmaWxlIjoidW5pX21vZHVsZXMvdW5pLXNlYXJjaC1iYXIvY29tcG9uZW50cy91bmktc2VhcmNoLWJhci91bmktc2VhcmNoLWJhci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vdW5pLXNlYXJjaC1iYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE4MGRiZTA1JlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vdW5pLXNlYXJjaC1iYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi91bmktc2VhcmNoLWJhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vdW5pLXNlYXJjaC1iYXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXHJ1bnRpbWVcXFxcY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInVuaV9tb2R1bGVzL3VuaS1zZWFyY2gtYmFyL2NvbXBvbmVudHMvdW5pLXNlYXJjaC1iYXIvdW5pLXNlYXJjaC1iYXIudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHRlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTE2LTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcdGVtcGxhdGUuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXVuaS1hcHAtbG9hZGVyXFxcXHBhZ2UtbWV0YS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktc2VhcmNoLWJhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTgwZGJlMDUmXCIiLCJ2YXIgY29tcG9uZW50c1xudHJ5IHtcbiAgY29tcG9uZW50cyA9IHtcbiAgICB1bmlJY29uczogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gaW1wb3J0KFxuICAgICAgICAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInVuaV9tb2R1bGVzL3VuaS1pY29ucy9jb21wb25lbnRzL3VuaS1pY29ucy91bmktaWNvbnNcIiAqLyBcIkAvdW5pX21vZHVsZXMvdW5pLWljb25zL2NvbXBvbmVudHMvdW5pLWljb25zL3VuaS1pY29ucy52dWVcIlxuICAgICAgKVxuICAgIH1cbiAgfVxufSBjYXRjaCAoZSkge1xuICBpZiAoXG4gICAgZS5tZXNzYWdlLmluZGV4T2YoXCJDYW5ub3QgZmluZCBtb2R1bGVcIikgIT09IC0xICYmXG4gICAgZS5tZXNzYWdlLmluZGV4T2YoXCIudnVlXCIpICE9PSAtMVxuICApIHtcbiAgICBjb25zb2xlLmVycm9yKGUubWVzc2FnZSlcbiAgICBjb25zb2xlLmVycm9yKFwiMS4g5o6S5p+l57uE5Lu25ZCN56ew5ou85YaZ5piv5ZCm5q2j56GuXCIpXG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiMi4g5o6S5p+l57uE5Lu25piv5ZCm56ym5ZCIIGVhc3ljb20g6KeE6IyD77yM5paH5qGj77yaaHR0cHM6Ly91bmlhcHAuZGNsb3VkLm5ldC5jbi9jb2xsb2NhdGlvbi9wYWdlcz9pZD1lYXN5Y29tXCJcbiAgICApXG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiMy4g6Iul57uE5Lu25LiN56ym5ZCIIGVhc3ljb20g6KeE6IyD77yM6ZyA5omL5Yqo5byV5YWl77yM5bm25ZyoIGNvbXBvbmVudHMg5Lit5rOo5YaM6K+l57uE5Lu2XCJcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgZVxuICB9XG59XG52YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbn1cbnZhciByZWN5Y2xhYmxlUmVuZGVyID0gZmFsc2VcbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1zZWFyY2gtYmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMi0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHNjcmlwdC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktc2VhcmNoLWJhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJzPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwidW5pLXNlYXJjaGJhclwiPlxyXG5cdFx0PHZpZXcgOnN0eWxlPVwie2JvcmRlclJhZGl1czpyYWRpdXMrJ3B4JyxiYWNrZ3JvdW5kQ29sb3I6IGJnQ29sb3J9XCIgY2xhc3M9XCJ1bmktc2VhcmNoYmFyX19ib3hcIiBAY2xpY2s9XCJzZWFyY2hDbGlja1wiPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInVuaS1zZWFyY2hiYXJfX2JveC1pY29uLXNlYXJjaFwiPlxyXG5cdFx0XHRcdDxzbG90IG5hbWU9XCJzZWFyY2hJY29uXCI+XHJcblx0XHRcdFx0XHQ8dW5pLWljb25zIGNvbG9yPVwiI2MwYzRjY1wiIHNpemU9XCIxOFwiIHR5cGU9XCJzZWFyY2hcIiAvPlxyXG5cdFx0XHRcdDwvc2xvdD5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8aW5wdXQgdi1pZj1cInNob3cgfHwgc2VhcmNoVmFsXCIgOmZvY3VzPVwic2hvd1N5bmNcIiA6cGxhY2Vob2xkZXI9XCJwbGFjZWhvbGRlclRleHRcIiA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCIgY2xhc3M9XCJ1bmktc2VhcmNoYmFyX19ib3gtc2VhcmNoLWlucHV0XCJcclxuXHRcdFx0IGNvbmZpcm0tdHlwZT1cInNlYXJjaFwiIHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cInNlYXJjaFZhbFwiIEBjb25maXJtPVwiY29uZmlybVwiIEBibHVyPVwiYmx1clwiIEBmb2N1cz1cImVtaXRGb2N1c1wiIC8+XHJcblx0XHRcdDx0ZXh0IHYtZWxzZSBjbGFzcz1cInVuaS1zZWFyY2hiYXJfX3RleHQtcGxhY2Vob2xkZXJcIj57eyBwbGFjZWhvbGRlciB9fTwvdGV4dD5cclxuXHRcdFx0PHZpZXcgdi1pZj1cInNob3cgJiYgKGNsZWFyQnV0dG9uPT09J2Fsd2F5cyd8fGNsZWFyQnV0dG9uPT09J2F1dG8nJiZzZWFyY2hWYWwhPT0nJylcIiBjbGFzcz1cInVuaS1zZWFyY2hiYXJfX2JveC1pY29uLWNsZWFyXCJcclxuXHRcdFx0IEBjbGljaz1cImNsZWFyXCI+XHJcblx0XHRcdFx0PHNsb3QgbmFtZT1cImNsZWFySWNvblwiPlxyXG5cdFx0XHRcdFx0PHVuaS1pY29ucyBjb2xvcj1cIiNjMGM0Y2NcIiBzaXplPVwiMjBcIiB0eXBlPVwiY2xlYXJcIiAvPlxyXG5cdFx0XHRcdDwvc2xvdD5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC92aWV3PlxyXG5cdFx0PHRleHQgQGNsaWNrPVwiY2FuY2VsXCIgY2xhc3M9XCJ1bmktc2VhcmNoYmFyX19jYW5jZWxcIiB2LWlmPVwiY2FuY2VsQnV0dG9uID09PSdhbHdheXMnIHx8IHNob3cgJiYgY2FuY2VsQnV0dG9uID09PSdhdXRvJ1wiPnt7Y2FuY2VsVGV4dEkxOG59fTwvdGV4dD5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGltcG9ydCB7XHJcblx0aW5pdFZ1ZUkxOG5cclxuXHR9IGZyb20gJ0BkY2xvdWRpby91bmktaTE4bidcclxuXHRpbXBvcnQgbWVzc2FnZXMgZnJvbSAnLi9pMThuL2luZGV4LmpzJ1xyXG5cdGNvbnN0IHtcdHRcdH0gPSBpbml0VnVlSTE4bihtZXNzYWdlcylcclxuXHJcblx0LyoqXHJcblx0ICogU2VhcmNoQmFyIOaQnOe0ouagj1xyXG5cdCAqIEBkZXNjcmlwdGlvbiDmkJzntKLmoI/nu4Tku7bvvIzpgJrluLjnlKjkuo7mkJzntKLllYblk4HjgIHmlofnq6DnrYlcclxuXHQgKiBAdHV0b3JpYWwgaHR0cHM6Ly9leHQuZGNsb3VkLm5ldC5jbi9wbHVnaW4/aWQ9ODY2XHJcblx0ICogQHByb3BlcnR5IHtOdW1iZXJ9IHJhZGl1cyDmkJzntKLmoI/lnIbop5JcclxuXHQgKiBAcHJvcGVydHkge051bWJlcn0gbWF4bGVuZ3RoIOi+k+WFpeacgOWkp+mVv+W6plxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBwbGFjZWhvbGRlciDmkJzntKLmoI9QbGFjZWhvbGRlclxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBjbGVhckJ1dHRvbiA9IFthbHdheXN8YXV0b3xub25lXSDmmK/lkKbmmL7npLrmuIXpmaTmjInpkq5cclxuXHQgKiBcdEB2YWx1ZSBhbHdheXMg5LiA55u05pi+56S6XHJcblx0ICogXHRAdmFsdWUgYXV0byDovpPlhaXmoYbkuI3kuLrnqbrml7bmmL7npLpcclxuXHQgKiBcdEB2YWx1ZSBub25lIOS4gOebtOS4jeaYvuekulxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBjYW5jZWxCdXR0b24gPSBbYWx3YXlzfGF1dG98bm9uZV0g5piv5ZCm5pi+56S65Y+W5raI5oyJ6ZKuXHJcblx0ICogXHRAdmFsdWUgYWx3YXlzIOS4gOebtOaYvuekulxyXG5cdCAqIFx0QHZhbHVlIGF1dG8g6L6T5YWl5qGG5LiN5Li656m65pe25pi+56S6XHJcblx0ICogXHRAdmFsdWUgbm9uZSDkuIDnm7TkuI3mmL7npLpcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gY2FuY2VsVGV4dCDlj5bmtojmjInpkq7nmoTmloflrZdcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gYmdDb2xvciDovpPlhaXmoYbog4zmma/popzoibJcclxuXHQgKiBAcHJvcGVydHkge0Jvb2xlYW59IGZvY3VzIOaYr+WQpuiHquWKqOiBmueEplxyXG5cdCAqIEBldmVudCB7RnVuY3Rpb259IGNvbmZpcm0gdW5pU2VhcmNoQmFyIOeahOi+k+WFpeahhiBjb25maXJtIOS6i+S7tu+8jOi/lOWbnuWPguaVsOS4unVuaVNlYXJjaEJhcueahHZhbHVl77yMZT17dmFsdWU6TnVtYmVyfVxyXG5cdCAqIEBldmVudCB7RnVuY3Rpb259IGlucHV0IHVuaVNlYXJjaEJhciDnmoQgdmFsdWUg5pS55Y+Y5pe26Kem5Y+R5LqL5Lu277yM6L+U5Zue5Y+C5pWw5Li6dW5pU2VhcmNoQmFy55qEdmFsdWXvvIxlPXZhbHVlXHJcblx0ICogQGV2ZW50IHtGdW5jdGlvbn0gY2FuY2VsIOeCueWHu+WPlua2iOaMiemSruaXtuinpuWPkeS6i+S7tu+8jOi/lOWbnuWPguaVsOS4unVuaVNlYXJjaEJhcueahHZhbHVl77yMZT17dmFsdWU6TnVtYmVyfVxyXG5cdCAqIEBldmVudCB7RnVuY3Rpb259IGNsZWFyIOeCueWHu+a4hemZpOaMiemSruaXtuinpuWPkeS6i+S7tu+8jOi/lOWbnuWPguaVsOS4unVuaVNlYXJjaEJhcueahHZhbHVl77yMZT17dmFsdWU6TnVtYmVyfVxyXG5cdCAqIEBldmVudCB7RnVuY3Rpb259IGJsdXIgaW5wdXTlpLHljrvnhKbngrnml7bop6blj5Hkuovku7bvvIzov5Tlm57lj4LmlbDkuLp1bmlTZWFyY2hCYXLnmoR2YWx1Ze+8jGU9e3ZhbHVlOk51bWJlcn1cclxuXHQgKi9cclxuXHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogXCJVbmlTZWFyY2hCYXJcIixcclxuXHRcdGVtaXRzOlsnaW5wdXQnLCd1cGRhdGU6bW9kZWxWYWx1ZScsJ2NsZWFyJywnY2FuY2VsJywnY29uZmlybScsJ2JsdXInLCdmb2N1cyddLFxyXG5cdFx0cHJvcHM6IHtcclxuXHRcdFx0cGxhY2Vob2xkZXI6IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogXCJcIlxyXG5cdFx0XHR9LFxyXG5cdFx0XHRyYWRpdXM6IHtcclxuXHRcdFx0XHR0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IDVcclxuXHRcdFx0fSxcclxuXHRcdFx0Y2xlYXJCdXR0b246IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogXCJhdXRvXCJcclxuXHRcdFx0fSxcclxuXHRcdFx0Y2FuY2VsQnV0dG9uOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IFwiYXV0b1wiXHJcblx0XHRcdH0sXHJcblx0XHRcdGNhbmNlbFRleHQ6IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJ+WPlua2iCdcclxuXHRcdFx0fSxcclxuXHRcdFx0YmdDb2xvcjoge1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiBcIiNGOEY4RjhcIlxyXG5cdFx0XHR9LFxyXG5cdFx0XHRtYXhsZW5ndGg6IHtcclxuXHRcdFx0XHR0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IDEwMFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR2YWx1ZToge1xyXG5cdFx0XHRcdHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXHJcblx0XHRcdFx0ZGVmYXVsdDogXCJcIlxyXG5cdFx0XHR9LFxyXG5cdFx0XHRtb2RlbFZhbHVlOiB7XHJcblx0XHRcdFx0dHlwZTogW051bWJlciwgU3RyaW5nXSxcclxuXHRcdFx0XHRkZWZhdWx0OiBcIlwiXHJcblx0XHRcdH0sXHJcblx0XHRcdGZvY3VzOiB7XHJcblx0XHRcdFx0dHlwZTogQm9vbGVhbixcclxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRzaG93OiBmYWxzZSxcclxuXHRcdFx0XHRzaG93U3luYzogZmFsc2UsXHJcblx0XHRcdFx0c2VhcmNoVmFsOiAnJ1xyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0Y29tcHV0ZWQ6e1xyXG5cdFx0XHRjYW5jZWxUZXh0STE4bigpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5jYW5jZWxUZXh0IHx8IHQoXCJ1bmktc2VhcmNoLWJhci5jYW5jZWxcIilcclxuXHRcdFx0fSxcclxuXHRcdFx0cGxhY2Vob2xkZXJUZXh0KCkge1xyXG5cdFx0XHRcdHJldHVybiB0aGlzLnBsYWNlaG9sZGVyIHx8IHQoXCJ1bmktc2VhcmNoLWJhci5wbGFjZWhvbGRlclwiKVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0d2F0Y2g6IHtcclxuXHRcdFx0Ly8gI2lmbmRlZiBWVUUzXHJcblx0XHRcdHZhbHVlOiB7XHJcblx0XHRcdFx0aW1tZWRpYXRlOiB0cnVlLFxyXG5cdFx0XHRcdGhhbmRsZXIobmV3VmFsKSB7XHJcblx0XHRcdFx0XHR0aGlzLnNlYXJjaFZhbCA9IG5ld1ZhbFxyXG5cdFx0XHRcdFx0aWYgKG5ld1ZhbCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNob3cgPSB0cnVlXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyAjZW5kaWZcclxuXHRcdFx0Ly8gI2lmZGVmIFZVRTNcclxuXHRcdFx0bW9kZWxWYWx1ZToge1xyXG5cdFx0XHRcdGltbWVkaWF0ZTogdHJ1ZSxcclxuXHRcdFx0XHRoYW5kbGVyKG5ld1ZhbCkge1xyXG5cdFx0XHRcdFx0dGhpcy5zZWFyY2hWYWwgPSBuZXdWYWxcclxuXHRcdFx0XHRcdGlmIChuZXdWYWwpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5zaG93ID0gdHJ1ZVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8gI2VuZGlmXHJcblx0XHRcdGZvY3VzOiB7XHJcblx0XHRcdFx0aW1tZWRpYXRlOiB0cnVlLFxyXG5cdFx0XHRcdGhhbmRsZXIobmV3VmFsKSB7XHJcblx0XHRcdFx0XHRpZiAobmV3VmFsKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2hvdyA9IHRydWU7XHJcblx0XHRcdFx0XHRcdHRoaXMuJG5leHRUaWNrKCgpID0+IHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnNob3dTeW5jID0gdHJ1ZVxyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0c2VhcmNoVmFsKG5ld1ZhbCwgb2xkVmFsKSB7XHJcblx0XHRcdFx0Ly8gI2lmbmRlZiBWVUUzXHJcblx0XHRcdFx0dGhpcy4kZW1pdChcImlucHV0XCIsIG5ld1ZhbClcclxuXHRcdFx0XHQvLyAjZW5kaWZcclxuXHRcdFx0XHQvLyAjaWZkZWYgVlVFM1xyXG5cdFx0XHRcdHRoaXMuJGVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCBuZXdWYWwpXHJcblx0XHRcdFx0Ly8gI2VuZGlmXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdHNlYXJjaENsaWNrKCkge1xyXG5cdFx0XHRcdGlmICh0aGlzLnNob3cpIHtcclxuXHRcdFx0XHRcdHJldHVyblxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLnNob3cgPSB0cnVlO1xyXG5cdFx0XHRcdHRoaXMuJG5leHRUaWNrKCgpID0+IHtcclxuXHRcdFx0XHRcdHRoaXMuc2hvd1N5bmMgPSB0cnVlXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSxcclxuXHRcdFx0Y2xlYXIoKSB7XHJcblx0XHRcdFx0dGhpcy4kZW1pdChcImNsZWFyXCIsIHtcclxuXHRcdFx0XHRcdHZhbHVlOiB0aGlzLnNlYXJjaFZhbFxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdFx0dGhpcy5zZWFyY2hWYWwgPSBcIlwiXHJcblx0XHRcdH0sXHJcblx0XHRcdGNhbmNlbCgpIHtcclxuXHRcdFx0XHR0aGlzLiRlbWl0KFwiY2FuY2VsXCIsIHtcclxuXHRcdFx0XHRcdHZhbHVlOiB0aGlzLnNlYXJjaFZhbFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMuc2VhcmNoVmFsID0gXCJcIlxyXG5cdFx0XHRcdHRoaXMuc2hvdyA9IGZhbHNlXHJcblx0XHRcdFx0dGhpcy5zaG93U3luYyA9IGZhbHNlXHJcblx0XHRcdFx0Ly8gI2lmbmRlZiBBUFAtUExVU1xyXG5cdFx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKVxyXG5cdFx0XHRcdC8vICNlbmRpZlxyXG5cdFx0XHRcdC8vICNpZmRlZiBBUFAtUExVU1xyXG5cdFx0XHRcdHBsdXMua2V5LmhpZGVTb2Z0S2V5Ym9yZCgpXHJcblx0XHRcdFx0Ly8gI2VuZGlmXHJcblx0XHRcdH0sXHJcblx0XHRcdGNvbmZpcm0oKSB7XHJcblx0XHRcdFx0Ly8gI2lmbmRlZiBBUFAtUExVU1xyXG5cdFx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcclxuXHRcdFx0XHQvLyAjZW5kaWZcclxuXHRcdFx0XHQvLyAjaWZkZWYgQVBQLVBMVVNcclxuXHRcdFx0XHRwbHVzLmtleS5oaWRlU29mdEtleWJvcmQoKVxyXG5cdFx0XHRcdC8vICNlbmRpZlxyXG5cdFx0XHRcdHRoaXMuJGVtaXQoXCJjb25maXJtXCIsIHtcclxuXHRcdFx0XHRcdHZhbHVlOiB0aGlzLnNlYXJjaFZhbFxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcblx0XHRcdGJsdXIoKSB7XHJcblx0XHRcdFx0Ly8gI2lmbmRlZiBBUFAtUExVU1xyXG5cdFx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcclxuXHRcdFx0XHQvLyAjZW5kaWZcclxuXHRcdFx0XHQvLyAjaWZkZWYgQVBQLVBMVVNcclxuXHRcdFx0XHRwbHVzLmtleS5oaWRlU29mdEtleWJvcmQoKVxyXG5cdFx0XHRcdC8vICNlbmRpZlxyXG5cdFx0XHRcdHRoaXMuJGVtaXQoXCJibHVyXCIsIHtcclxuXHRcdFx0XHRcdHZhbHVlOiB0aGlzLnNlYXJjaFZhbFxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcblx0XHRcdGVtaXRGb2N1cyhlKSB7XHJcblx0XHRcdFx0dGhpcy4kZW1pdChcImZvY3VzXCIsIGUuZGV0YWlsKVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fTtcclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgbGFuZz1cInNjc3NcIiA+XHJcblx0JHVuaS1zZWFyY2hiYXItaGVpZ2h0OiAzNnB4O1xyXG5cclxuXHQudW5pLXNlYXJjaGJhciB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0cGFkZGluZzogMTBweDtcclxuXHRcdC8vIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcblx0fVxyXG5cclxuXHQudW5pLXNlYXJjaGJhcl9fYm94IHtcclxuXHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0ZmxleDogMTtcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRoZWlnaHQ6ICR1bmktc2VhcmNoYmFyLWhlaWdodDtcclxuXHRcdHBhZGRpbmc6IDVweCA4cHggNXB4IDBweDtcclxuXHR9XHJcblxyXG5cdC51bmktc2VhcmNoYmFyX19ib3gtaWNvbi1zZWFyY2gge1xyXG5cdFx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHRcdC8vIHdpZHRoOiAzMnB4O1xyXG5cdFx0cGFkZGluZzogMCA4cHg7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRjb2xvcjogI0IzQjNCMztcclxuXHR9XHJcblxyXG5cdC51bmktc2VhcmNoYmFyX19ib3gtc2VhcmNoLWlucHV0IHtcclxuXHRcdGZsZXg6IDE7XHJcblx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0XHRjb2xvcjogIzMzMztcclxuXHR9XHJcblxyXG5cdC51bmktc2VhcmNoYmFyX19ib3gtaWNvbi1jbGVhciB7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0bGluZS1oZWlnaHQ6IDI0cHg7XHJcblx0XHRwYWRkaW5nLWxlZnQ6IDhweDtcclxuXHRcdC8qICNpZmRlZiBINSAqL1xyXG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0fVxyXG5cclxuXHQudW5pLXNlYXJjaGJhcl9fdGV4dC1wbGFjZWhvbGRlciB7XHJcblx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0XHRjb2xvcjogI0IzQjNCMztcclxuXHRcdG1hcmdpbi1sZWZ0OiA1cHg7XHJcblx0fVxyXG5cclxuXHQudW5pLXNlYXJjaGJhcl9fY2FuY2VsIHtcclxuXHRcdHBhZGRpbmctbGVmdDogMTBweDtcclxuXHRcdGxpbmUtaGVpZ2h0OiAkdW5pLXNlYXJjaGJhci1oZWlnaHQ7XHJcblx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0XHRjb2xvcjogIzMzMzMzMztcclxuXHRcdC8qICNpZmRlZiBINSAqL1xyXG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0fVxyXG48L3N0eWxlPlxyXG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXFxcXGRpc3RcXFxcbG9hZGVyLmpzPz9yZWYtLTgtb25lT2YtMS0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGNzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHN0eWxlUG9zdExvYWRlci5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxccG9zdGNzcy1sb2FkZXJcXFxcc3JjXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcc2Fzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTQhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS01IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1zZWFyY2gtYmFyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxcXFxkaXN0XFxcXGxvYWRlci5qcz8/cmVmLS04LW9uZU9mLTEtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxjc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFxzdHlsZVBvc3RMb2FkZXIuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXHBvc3Rjc3MtbG9hZGVyXFxcXHNyY1xcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHNhc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS00IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtNSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktc2VhcmNoLWJhci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbiAgICBpZihtb2R1bGUuaG90KSB7XG4gICAgICAvLyAxNjUyNjk2OTgyNjEzXG4gICAgICB2YXIgY3NzUmVsb2FkID0gcmVxdWlyZShcIkQ6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luL2Rpc3QvaG1yL2hvdE1vZHVsZVJlcGxhY2VtZW50LmpzXCIpKG1vZHVsZS5pZCwge1wiaG1yXCI6dHJ1ZSxcInB1YmxpY1BhdGhcIjpcIi4uLy4uL1wiLFwibG9jYWxzXCI6ZmFsc2V9KTtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShjc3NSZWxvYWQpO1xuICAgICAgbW9kdWxlLmhvdC5hY2NlcHQodW5kZWZpbmVkLCBjc3NSZWxvYWQpO1xuICAgIH1cbiAgIl0sInNvdXJjZVJvb3QiOiIifQ==
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktc2VhcmNoLWJhci9jb21wb25lbnRzL3VuaS1zZWFyY2gtYmFyL3VuaS1zZWFyY2gtYmFyLnZ1ZT9mMmI3Iiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1zZWFyY2gtYmFyL2NvbXBvbmVudHMvdW5pLXNlYXJjaC1iYXIvdW5pLXNlYXJjaC1iYXIudnVlP2Q2ODEiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svdW5pX21vZHVsZXMvdW5pLXNlYXJjaC1iYXIvY29tcG9uZW50cy91bmktc2VhcmNoLWJhci91bmktc2VhcmNoLWJhci52dWU/M2JmOSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktc2VhcmNoLWJhci9jb21wb25lbnRzL3VuaS1zZWFyY2gtYmFyL3VuaS1zZWFyY2gtYmFyLnZ1ZT9hMTE2IiwidW5pLWFwcDovLy91bmlfbW9kdWxlcy91bmktc2VhcmNoLWJhci9jb21wb25lbnRzL3VuaS1zZWFyY2gtYmFyL3VuaS1zZWFyY2gtYmFyLnZ1ZSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktc2VhcmNoLWJhci9jb21wb25lbnRzL3VuaS1zZWFyY2gtYmFyL3VuaS1zZWFyY2gtYmFyLnZ1ZT84N2I5Iiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1zZWFyY2gtYmFyL2NvbXBvbmVudHMvdW5pLXNlYXJjaC1iYXIvdW5pLXNlYXJjaC1iYXIudnVlP2JhNzAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUEySDtBQUMzSDtB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QUFBQTtBQUFtcEMsQ0FBZ0IseW5DQUFHLEVBQUMsQzs7Ozs7Ozs7Ozs7QUNBdnFDO0FBQ0EsT0FBTyxLQUFVLEVBQUUsa0JBS2QiLCJmaWxlIjoidW5pX21vZHVsZXMvdW5pLXNlYXJjaC1iYXIvY29tcG9uZW50cy91bmktc2VhcmNoLWJhci91bmktc2VhcmNoLWJhci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vdW5pLXNlYXJjaC1iYXIudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE4MGRiZTA1JlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vdW5pLXNlYXJjaC1iYXIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi91bmktc2VhcmNoLWJhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vdW5pLXNlYXJjaC1iYXIudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXHJ1bnRpbWVcXFxcY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInVuaV9tb2R1bGVzL3VuaS1zZWFyY2gtYmFyL2NvbXBvbmVudHMvdW5pLXNlYXJjaC1iYXIvdW5pLXNlYXJjaC1iYXIudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiZXhwb3J0ICogZnJvbSBcIi0hRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHRlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTE2LTAhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcdGVtcGxhdGUuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXVuaS1hcHAtbG9hZGVyXFxcXHBhZ2UtbWV0YS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktc2VhcmNoLWJhci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTgwZGJlMDUmXCIiLCJ2YXIgY29tcG9uZW50c1xudHJ5IHtcbiAgY29tcG9uZW50cyA9IHtcbiAgICB1bmlJY29uczogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gaW1wb3J0KFxuICAgICAgICAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcInVuaV9tb2R1bGVzL3VuaS1pY29ucy9jb21wb25lbnRzL3VuaS1pY29ucy91bmktaWNvbnNcIiAqLyBcIkAvdW5pX21vZHVsZXMvdW5pLWljb25zL2NvbXBvbmVudHMvdW5pLWljb25zL3VuaS1pY29ucy52dWVcIlxuICAgICAgKVxuICAgIH1cbiAgfVxufSBjYXRjaCAoZSkge1xuICBpZiAoXG4gICAgZS5tZXNzYWdlLmluZGV4T2YoXCJDYW5ub3QgZmluZCBtb2R1bGVcIikgIT09IC0xICYmXG4gICAgZS5tZXNzYWdlLmluZGV4T2YoXCIudnVlXCIpICE9PSAtMVxuICApIHtcbiAgICBjb25zb2xlLmVycm9yKGUubWVzc2FnZSlcbiAgICBjb25zb2xlLmVycm9yKFwiMS4g5o6S5p+l57uE5Lu25ZCN56ew5ou85YaZ5piv5ZCm5q2j56GuXCIpXG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiMi4g5o6S5p+l57uE5Lu25piv5ZCm56ym5ZCIIGVhc3ljb20g6KeE6IyD77yM5paH5qGj77yaaHR0cHM6Ly91bmlhcHAuZGNsb3VkLm5ldC5jbi9jb2xsb2NhdGlvbi9wYWdlcz9pZD1lYXN5Y29tXCJcbiAgICApXG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiMy4g6Iul57uE5Lu25LiN56ym5ZCIIGVhc3ljb20g6KeE6IyD77yM6ZyA5omL5Yqo5byV5YWl77yM5bm25ZyoIGNvbXBvbmVudHMg5Lit5rOo5YaM6K+l57uE5Lu2XCJcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgZVxuICB9XG59XG52YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbn1cbnZhciByZWN5Y2xhYmxlUmVuZGVyID0gZmFsc2VcbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1zZWFyY2gtYmFyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMi0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHNjcmlwdC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktc2VhcmNoLWJhci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJzPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwidW5pLXNlYXJjaGJhclwiPlxyXG5cdFx0PHZpZXcgOnN0eWxlPVwie2JvcmRlclJhZGl1czpyYWRpdXMrJ3B4JyxiYWNrZ3JvdW5kQ29sb3I6IGJnQ29sb3J9XCIgY2xhc3M9XCJ1bmktc2VhcmNoYmFyX19ib3hcIiBAY2xpY2s9XCJzZWFyY2hDbGlja1wiPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInVuaS1zZWFyY2hiYXJfX2JveC1pY29uLXNlYXJjaFwiPlxyXG5cdFx0XHRcdDxzbG90IG5hbWU9XCJzZWFyY2hJY29uXCI+XHJcblx0XHRcdFx0XHQ8dW5pLWljb25zIGNvbG9yPVwiI2MwYzRjY1wiIHNpemU9XCIxOFwiIHR5cGU9XCJzZWFyY2hcIiAvPlxyXG5cdFx0XHRcdDwvc2xvdD5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8aW5wdXQgdi1pZj1cInNob3cgfHwgc2VhcmNoVmFsXCIgOmZvY3VzPVwic2hvd1N5bmNcIiA6cGxhY2Vob2xkZXI9XCJwbGFjZWhvbGRlclRleHRcIiA6bWF4bGVuZ3RoPVwibWF4bGVuZ3RoXCIgY2xhc3M9XCJ1bmktc2VhcmNoYmFyX19ib3gtc2VhcmNoLWlucHV0XCJcclxuXHRcdFx0IGNvbmZpcm0tdHlwZT1cInNlYXJjaFwiIHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cInNlYXJjaFZhbFwiIEBjb25maXJtPVwiY29uZmlybVwiIEBibHVyPVwiYmx1clwiIEBmb2N1cz1cImVtaXRGb2N1c1wiIC8+XHJcblx0XHRcdDx0ZXh0IHYtZWxzZSBjbGFzcz1cInVuaS1zZWFyY2hiYXJfX3RleHQtcGxhY2Vob2xkZXJcIj57eyBwbGFjZWhvbGRlciB9fTwvdGV4dD5cclxuXHRcdFx0PHZpZXcgdi1pZj1cInNob3cgJiYgKGNsZWFyQnV0dG9uPT09J2Fsd2F5cyd8fGNsZWFyQnV0dG9uPT09J2F1dG8nJiZzZWFyY2hWYWwhPT0nJylcIiBjbGFzcz1cInVuaS1zZWFyY2hiYXJfX2JveC1pY29uLWNsZWFyXCJcclxuXHRcdFx0IEBjbGljaz1cImNsZWFyXCI+XHJcblx0XHRcdFx0PHNsb3QgbmFtZT1cImNsZWFySWNvblwiPlxyXG5cdFx0XHRcdFx0PHVuaS1pY29ucyBjb2xvcj1cIiNjMGM0Y2NcIiBzaXplPVwiMjBcIiB0eXBlPVwiY2xlYXJcIiAvPlxyXG5cdFx0XHRcdDwvc2xvdD5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC92aWV3PlxyXG5cdFx0PHRleHQgQGNsaWNrPVwiY2FuY2VsXCIgY2xhc3M9XCJ1bmktc2VhcmNoYmFyX19jYW5jZWxcIiB2LWlmPVwiY2FuY2VsQnV0dG9uID09PSdhbHdheXMnIHx8IHNob3cgJiYgY2FuY2VsQnV0dG9uID09PSdhdXRvJ1wiPnt7Y2FuY2VsVGV4dEkxOG59fTwvdGV4dD5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGltcG9ydCB7XHJcblx0aW5pdFZ1ZUkxOG5cclxuXHR9IGZyb20gJ0BkY2xvdWRpby91bmktaTE4bidcclxuXHRpbXBvcnQgbWVzc2FnZXMgZnJvbSAnLi9pMThuL2luZGV4LmpzJ1xyXG5cdGNvbnN0IHtcdHRcdH0gPSBpbml0VnVlSTE4bihtZXNzYWdlcylcclxuXHJcblx0LyoqXHJcblx0ICogU2VhcmNoQmFyIOaQnOe0ouagj1xyXG5cdCAqIEBkZXNjcmlwdGlvbiDmkJzntKLmoI/nu4Tku7bvvIzpgJrluLjnlKjkuo7mkJzntKLllYblk4HjgIHmlofnq6DnrYlcclxuXHQgKiBAdHV0b3JpYWwgaHR0cHM6Ly9leHQuZGNsb3VkLm5ldC5jbi9wbHVnaW4/aWQ9ODY2XHJcblx0ICogQHByb3BlcnR5IHtOdW1iZXJ9IHJhZGl1cyDmkJzntKLmoI/lnIbop5JcclxuXHQgKiBAcHJvcGVydHkge051bWJlcn0gbWF4bGVuZ3RoIOi+k+WFpeacgOWkp+mVv+W6plxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBwbGFjZWhvbGRlciDmkJzntKLmoI9QbGFjZWhvbGRlclxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBjbGVhckJ1dHRvbiA9IFthbHdheXN8YXV0b3xub25lXSDmmK/lkKbmmL7npLrmuIXpmaTmjInpkq5cclxuXHQgKiBcdEB2YWx1ZSBhbHdheXMg5LiA55u05pi+56S6XHJcblx0ICogXHRAdmFsdWUgYXV0byDovpPlhaXmoYbkuI3kuLrnqbrml7bmmL7npLpcclxuXHQgKiBcdEB2YWx1ZSBub25lIOS4gOebtOS4jeaYvuekulxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBjYW5jZWxCdXR0b24gPSBbYWx3YXlzfGF1dG98bm9uZV0g5piv5ZCm5pi+56S65Y+W5raI5oyJ6ZKuXHJcblx0ICogXHRAdmFsdWUgYWx3YXlzIOS4gOebtOaYvuekulxyXG5cdCAqIFx0QHZhbHVlIGF1dG8g6L6T5YWl5qGG5LiN5Li656m65pe25pi+56S6XHJcblx0ICogXHRAdmFsdWUgbm9uZSDkuIDnm7TkuI3mmL7npLpcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gY2FuY2VsVGV4dCDlj5bmtojmjInpkq7nmoTmloflrZdcclxuXHQgKiBAcHJvcGVydHkge1N0cmluZ30gYmdDb2xvciDovpPlhaXmoYbog4zmma/popzoibJcclxuXHQgKiBAcHJvcGVydHkge0Jvb2xlYW59IGZvY3VzIOaYr+WQpuiHquWKqOiBmueEplxyXG5cdCAqIEBldmVudCB7RnVuY3Rpb259IGNvbmZpcm0gdW5pU2VhcmNoQmFyIOeahOi+k+WFpeahhiBjb25maXJtIOS6i+S7tu+8jOi/lOWbnuWPguaVsOS4unVuaVNlYXJjaEJhcueahHZhbHVl77yMZT17dmFsdWU6TnVtYmVyfVxyXG5cdCAqIEBldmVudCB7RnVuY3Rpb259IGlucHV0IHVuaVNlYXJjaEJhciDnmoQgdmFsdWUg5pS55Y+Y5pe26Kem5Y+R5LqL5Lu277yM6L+U5Zue5Y+C5pWw5Li6dW5pU2VhcmNoQmFy55qEdmFsdWXvvIxlPXZhbHVlXHJcblx0ICogQGV2ZW50IHtGdW5jdGlvbn0gY2FuY2VsIOeCueWHu+WPlua2iOaMiemSruaXtuinpuWPkeS6i+S7tu+8jOi/lOWbnuWPguaVsOS4unVuaVNlYXJjaEJhcueahHZhbHVl77yMZT17dmFsdWU6TnVtYmVyfVxyXG5cdCAqIEBldmVudCB7RnVuY3Rpb259IGNsZWFyIOeCueWHu+a4hemZpOaMiemSruaXtuinpuWPkeS6i+S7tu+8jOi/lOWbnuWPguaVsOS4unVuaVNlYXJjaEJhcueahHZhbHVl77yMZT17dmFsdWU6TnVtYmVyfVxyXG5cdCAqIEBldmVudCB7RnVuY3Rpb259IGJsdXIgaW5wdXTlpLHljrvnhKbngrnml7bop6blj5Hkuovku7bvvIzov5Tlm57lj4LmlbDkuLp1bmlTZWFyY2hCYXLnmoR2YWx1Ze+8jGU9e3ZhbHVlOk51bWJlcn1cclxuXHQgKi9cclxuXHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogXCJVbmlTZWFyY2hCYXJcIixcclxuXHRcdGVtaXRzOlsnaW5wdXQnLCd1cGRhdGU6bW9kZWxWYWx1ZScsJ2NsZWFyJywnY2FuY2VsJywnY29uZmlybScsJ2JsdXInLCdmb2N1cyddLFxyXG5cdFx0cHJvcHM6IHtcclxuXHRcdFx0cGxhY2Vob2xkZXI6IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogXCJcIlxyXG5cdFx0XHR9LFxyXG5cdFx0XHRyYWRpdXM6IHtcclxuXHRcdFx0XHR0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IDVcclxuXHRcdFx0fSxcclxuXHRcdFx0Y2xlYXJCdXR0b246IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogXCJhdXRvXCJcclxuXHRcdFx0fSxcclxuXHRcdFx0Y2FuY2VsQnV0dG9uOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IFwiYXV0b1wiXHJcblx0XHRcdH0sXHJcblx0XHRcdGNhbmNlbFRleHQ6IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJ+WPlua2iCdcclxuXHRcdFx0fSxcclxuXHRcdFx0YmdDb2xvcjoge1xyXG5cdFx0XHRcdHR5cGU6IFN0cmluZyxcclxuXHRcdFx0XHRkZWZhdWx0OiBcIiNGOEY4RjhcIlxyXG5cdFx0XHR9LFxyXG5cdFx0XHRtYXhsZW5ndGg6IHtcclxuXHRcdFx0XHR0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IDEwMFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR2YWx1ZToge1xyXG5cdFx0XHRcdHR5cGU6IFtOdW1iZXIsIFN0cmluZ10sXHJcblx0XHRcdFx0ZGVmYXVsdDogXCJcIlxyXG5cdFx0XHR9LFxyXG5cdFx0XHRtb2RlbFZhbHVlOiB7XHJcblx0XHRcdFx0dHlwZTogW051bWJlciwgU3RyaW5nXSxcclxuXHRcdFx0XHRkZWZhdWx0OiBcIlwiXHJcblx0XHRcdH0sXHJcblx0XHRcdGZvY3VzOiB7XHJcblx0XHRcdFx0dHlwZTogQm9vbGVhbixcclxuXHRcdFx0XHRkZWZhdWx0OiBmYWxzZVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRzaG93OiBmYWxzZSxcclxuXHRcdFx0XHRzaG93U3luYzogZmFsc2UsXHJcblx0XHRcdFx0c2VhcmNoVmFsOiAnJ1xyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0Y29tcHV0ZWQ6e1xyXG5cdFx0XHRjYW5jZWxUZXh0STE4bigpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5jYW5jZWxUZXh0IHx8IHQoXCJ1bmktc2VhcmNoLWJhci5jYW5jZWxcIilcclxuXHRcdFx0fSxcclxuXHRcdFx0cGxhY2Vob2xkZXJUZXh0KCkge1xyXG5cdFx0XHRcdHJldHVybiB0aGlzLnBsYWNlaG9sZGVyIHx8IHQoXCJ1bmktc2VhcmNoLWJhci5wbGFjZWhvbGRlclwiKVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0d2F0Y2g6IHtcclxuXHRcdFx0Ly8gI2lmbmRlZiBWVUUzXHJcblx0XHRcdHZhbHVlOiB7XHJcblx0XHRcdFx0aW1tZWRpYXRlOiB0cnVlLFxyXG5cdFx0XHRcdGhhbmRsZXIobmV3VmFsKSB7XHJcblx0XHRcdFx0XHR0aGlzLnNlYXJjaFZhbCA9IG5ld1ZhbFxyXG5cdFx0XHRcdFx0aWYgKG5ld1ZhbCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNob3cgPSB0cnVlXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyAjZW5kaWZcclxuXHRcdFx0Ly8gI2lmZGVmIFZVRTNcclxuXHRcdFx0bW9kZWxWYWx1ZToge1xyXG5cdFx0XHRcdGltbWVkaWF0ZTogdHJ1ZSxcclxuXHRcdFx0XHRoYW5kbGVyKG5ld1ZhbCkge1xyXG5cdFx0XHRcdFx0dGhpcy5zZWFyY2hWYWwgPSBuZXdWYWxcclxuXHRcdFx0XHRcdGlmIChuZXdWYWwpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5zaG93ID0gdHJ1ZVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8gI2VuZGlmXHJcblx0XHRcdGZvY3VzOiB7XHJcblx0XHRcdFx0aW1tZWRpYXRlOiB0cnVlLFxyXG5cdFx0XHRcdGhhbmRsZXIobmV3VmFsKSB7XHJcblx0XHRcdFx0XHRpZiAobmV3VmFsKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2hvdyA9IHRydWU7XHJcblx0XHRcdFx0XHRcdHRoaXMuJG5leHRUaWNrKCgpID0+IHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnNob3dTeW5jID0gdHJ1ZVxyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0c2VhcmNoVmFsKG5ld1ZhbCwgb2xkVmFsKSB7XHJcblx0XHRcdFx0Ly8gI2lmbmRlZiBWVUUzXHJcblx0XHRcdFx0dGhpcy4kZW1pdChcImlucHV0XCIsIG5ld1ZhbClcclxuXHRcdFx0XHQvLyAjZW5kaWZcclxuXHRcdFx0XHQvLyAjaWZkZWYgVlVFM1xyXG5cdFx0XHRcdHRoaXMuJGVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCBuZXdWYWwpXHJcblx0XHRcdFx0Ly8gI2VuZGlmXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdHNlYXJjaENsaWNrKCkge1xyXG5cdFx0XHRcdGlmICh0aGlzLnNob3cpIHtcclxuXHRcdFx0XHRcdHJldHVyblxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR0aGlzLnNob3cgPSB0cnVlO1xyXG5cdFx0XHRcdHRoaXMuJG5leHRUaWNrKCgpID0+IHtcclxuXHRcdFx0XHRcdHRoaXMuc2hvd1N5bmMgPSB0cnVlXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSxcclxuXHRcdFx0Y2xlYXIoKSB7XHJcblx0XHRcdFx0dGhpcy4kZW1pdChcImNsZWFyXCIsIHtcclxuXHRcdFx0XHRcdHZhbHVlOiB0aGlzLnNlYXJjaFZhbFxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdFx0dGhpcy5zZWFyY2hWYWwgPSBcIlwiXHJcblx0XHRcdH0sXHJcblx0XHRcdGNhbmNlbCgpIHtcclxuXHRcdFx0XHR0aGlzLiRlbWl0KFwiY2FuY2VsXCIsIHtcclxuXHRcdFx0XHRcdHZhbHVlOiB0aGlzLnNlYXJjaFZhbFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMuc2VhcmNoVmFsID0gXCJcIlxyXG5cdFx0XHRcdHRoaXMuc2hvdyA9IGZhbHNlXHJcblx0XHRcdFx0dGhpcy5zaG93U3luYyA9IGZhbHNlXHJcblx0XHRcdFx0Ly8gI2lmbmRlZiBBUFAtUExVU1xyXG5cdFx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKVxyXG5cdFx0XHRcdC8vICNlbmRpZlxyXG5cdFx0XHRcdC8vICNpZmRlZiBBUFAtUExVU1xyXG5cdFx0XHRcdHBsdXMua2V5LmhpZGVTb2Z0S2V5Ym9yZCgpXHJcblx0XHRcdFx0Ly8gI2VuZGlmXHJcblx0XHRcdH0sXHJcblx0XHRcdGNvbmZpcm0oKSB7XHJcblx0XHRcdFx0Ly8gI2lmbmRlZiBBUFAtUExVU1xyXG5cdFx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcclxuXHRcdFx0XHQvLyAjZW5kaWZcclxuXHRcdFx0XHQvLyAjaWZkZWYgQVBQLVBMVVNcclxuXHRcdFx0XHRwbHVzLmtleS5oaWRlU29mdEtleWJvcmQoKVxyXG5cdFx0XHRcdC8vICNlbmRpZlxyXG5cdFx0XHRcdHRoaXMuJGVtaXQoXCJjb25maXJtXCIsIHtcclxuXHRcdFx0XHRcdHZhbHVlOiB0aGlzLnNlYXJjaFZhbFxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcblx0XHRcdGJsdXIoKSB7XHJcblx0XHRcdFx0Ly8gI2lmbmRlZiBBUFAtUExVU1xyXG5cdFx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcclxuXHRcdFx0XHQvLyAjZW5kaWZcclxuXHRcdFx0XHQvLyAjaWZkZWYgQVBQLVBMVVNcclxuXHRcdFx0XHRwbHVzLmtleS5oaWRlU29mdEtleWJvcmQoKVxyXG5cdFx0XHRcdC8vICNlbmRpZlxyXG5cdFx0XHRcdHRoaXMuJGVtaXQoXCJibHVyXCIsIHtcclxuXHRcdFx0XHRcdHZhbHVlOiB0aGlzLnNlYXJjaFZhbFxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcblx0XHRcdGVtaXRGb2N1cyhlKSB7XHJcblx0XHRcdFx0dGhpcy4kZW1pdChcImZvY3VzXCIsIGUuZGV0YWlsKVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fTtcclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgbGFuZz1cInNjc3NcIiA+XHJcblx0JHVuaS1zZWFyY2hiYXItaGVpZ2h0OiAzNnB4O1xyXG5cclxuXHQudW5pLXNlYXJjaGJhciB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0cGFkZGluZzogMTBweDtcclxuXHRcdC8vIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcblx0fVxyXG5cclxuXHQudW5pLXNlYXJjaGJhcl9fYm94IHtcclxuXHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0ZmxleDogMTtcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRoZWlnaHQ6ICR1bmktc2VhcmNoYmFyLWhlaWdodDtcclxuXHRcdHBhZGRpbmc6IDVweCA4cHggNXB4IDBweDtcclxuXHR9XHJcblxyXG5cdC51bmktc2VhcmNoYmFyX19ib3gtaWNvbi1zZWFyY2gge1xyXG5cdFx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHRcdC8vIHdpZHRoOiAzMnB4O1xyXG5cdFx0cGFkZGluZzogMCA4cHg7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRjb2xvcjogI0IzQjNCMztcclxuXHR9XHJcblxyXG5cdC51bmktc2VhcmNoYmFyX19ib3gtc2VhcmNoLWlucHV0IHtcclxuXHRcdGZsZXg6IDE7XHJcblx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0XHRjb2xvcjogIzMzMztcclxuXHR9XHJcblxyXG5cdC51bmktc2VhcmNoYmFyX19ib3gtaWNvbi1jbGVhciB7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0bGluZS1oZWlnaHQ6IDI0cHg7XHJcblx0XHRwYWRkaW5nLWxlZnQ6IDhweDtcclxuXHRcdC8qICNpZmRlZiBINSAqL1xyXG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0fVxyXG5cclxuXHQudW5pLXNlYXJjaGJhcl9fdGV4dC1wbGFjZWhvbGRlciB7XHJcblx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0XHRjb2xvcjogI0IzQjNCMztcclxuXHRcdG1hcmdpbi1sZWZ0OiA1cHg7XHJcblx0fVxyXG5cclxuXHQudW5pLXNlYXJjaGJhcl9fY2FuY2VsIHtcclxuXHRcdHBhZGRpbmctbGVmdDogMTBweDtcclxuXHRcdGxpbmUtaGVpZ2h0OiAkdW5pLXNlYXJjaGJhci1oZWlnaHQ7XHJcblx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0XHRjb2xvcjogIzMzMzMzMztcclxuXHRcdC8qICNpZmRlZiBINSAqL1xyXG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0fVxyXG48L3N0eWxlPlxyXG4iLCJpbXBvcnQgbW9kIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXFxcXGRpc3RcXFxcbG9hZGVyLmpzPz9yZWYtLTgtb25lT2YtMS0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGNzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHN0eWxlUG9zdExvYWRlci5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxccG9zdGNzcy1sb2FkZXJcXFxcc3JjXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcc2Fzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTQhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS01IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1zZWFyY2gtYmFyLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmxhbmc9c2NzcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxcXFxkaXN0XFxcXGxvYWRlci5qcz8/cmVmLS04LW9uZU9mLTEtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxjc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFxzdHlsZVBvc3RMb2FkZXIuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXHBvc3Rjc3MtbG9hZGVyXFxcXHNyY1xcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHNhc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS00IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtNSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktc2VhcmNoLWJhci52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbiAgICBpZihtb2R1bGUuaG90KSB7XG4gICAgICAvLyAxNjUzMzEyMjU0Mzg5XG4gICAgICB2YXIgY3NzUmVsb2FkID0gcmVxdWlyZShcIkQ6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luL2Rpc3QvaG1yL2hvdE1vZHVsZVJlcGxhY2VtZW50LmpzXCIpKG1vZHVsZS5pZCwge1wiaG1yXCI6dHJ1ZSxcInB1YmxpY1BhdGhcIjpcIi4uLy4uL1wiLFwibG9jYWxzXCI6ZmFsc2V9KTtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShjc3NSZWxvYWQpO1xuICAgICAgbW9kdWxlLmhvdC5hY2NlcHQodW5kZWZpbmVkLCBjc3NSZWxvYWQpO1xuICAgIH1cbiAgIl0sInNvdXJjZVJvb3QiOiIifQ==
;(global["webpackJsonp"] = global["webpackJsonp"] || []).push([
'uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar-create-component',
{
'uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar-create-component':(function(module, exports, __webpack_require__){
- __webpack_require__('1')['createComponent'](__webpack_require__(112))
+ __webpack_require__('1')['createComponent'](__webpack_require__(120))
})
},
[['uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar-create-component']]
diff --git a/unpackage/dist/dev/mp-toutiao/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.js b/unpackage/dist/dev/mp-toutiao/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.js
index a3f2fcf..b168226 100644
--- a/unpackage/dist/dev/mp-toutiao/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.js
+++ b/unpackage/dist/dev/mp-toutiao/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.js
@@ -1,6 +1,6 @@
(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control"],{
-/***/ 170:
+/***/ 131:
/*!*****************************************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue ***!
\*****************************************************************************************************************************/
@@ -9,10 +9,10 @@
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _uni_segmented_control_vue_vue_type_template_id_064e9cd1___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-segmented-control.vue?vue&type=template&id=064e9cd1& */ 171);
-/* harmony import */ var _uni_segmented_control_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-segmented-control.vue?vue&type=script&lang=js& */ 173);
+/* harmony import */ var _uni_segmented_control_vue_vue_type_template_id_064e9cd1___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-segmented-control.vue?vue&type=template&id=064e9cd1& */ 132);
+/* harmony import */ var _uni_segmented_control_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-segmented-control.vue?vue&type=script&lang=js& */ 134);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_segmented_control_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_segmented_control_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
-/* harmony import */ var _uni_segmented_control_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uni-segmented-control.vue?vue&type=style&index=0&lang=scss& */ 175);
+/* harmony import */ var _uni_segmented_control_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uni-segmented-control.vue?vue&type=style&index=0&lang=scss& */ 136);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 11);
var renderjs
@@ -41,7 +41,7 @@ component.options.__file = "uni_modules/uni-segmented-control/components/uni-seg
/***/ }),
-/***/ 171:
+/***/ 132:
/*!************************************************************************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue?vue&type=template&id=064e9cd1& ***!
\************************************************************************************************************************************************************/
@@ -50,7 +50,7 @@ component.options.__file = "uni_modules/uni-segmented-control/components/uni-seg
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_segmented_control_vue_vue_type_template_id_064e9cd1___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-segmented-control.vue?vue&type=template&id=064e9cd1& */ 172);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_segmented_control_vue_vue_type_template_id_064e9cd1___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-segmented-control.vue?vue&type=template&id=064e9cd1& */ 133);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_segmented_control_vue_vue_type_template_id_064e9cd1___WEBPACK_IMPORTED_MODULE_0__["render"]; });
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_16_0_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_segmented_control_vue_vue_type_template_id_064e9cd1___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
@@ -63,7 +63,7 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
-/***/ 172:
+/***/ 133:
/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--16-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue?vue&type=template&id=064e9cd1& ***!
\************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -90,7 +90,7 @@ render._withStripped = true
/***/ }),
-/***/ 173:
+/***/ 134:
/*!******************************************************************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue?vue&type=script&lang=js& ***!
\******************************************************************************************************************************************************/
@@ -99,14 +99,14 @@ render._withStripped = true
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_segmented_control_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-segmented-control.vue?vue&type=script&lang=js& */ 174);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_segmented_control_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-segmented-control.vue?vue&type=script&lang=js& */ 135);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_segmented_control_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_segmented_control_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_segmented_control_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_segmented_control_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_12_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_segmented_control_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
-/***/ 174:
+/***/ 135:
/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--12-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue?vue&type=script&lang=js& ***!
\*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -202,7 +202,7 @@ Object.defineProperty(exports, "__esModule", { value: true });exports.default =
/***/ }),
-/***/ 175:
+/***/ 136:
/*!***************************************************************************************************************************************************************!*\
!*** E:/开发/bnyer-cloud-tiktok/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue?vue&type=style&index=0&lang=scss& ***!
\***************************************************************************************************************************************************************/
@@ -211,14 +211,14 @@ Object.defineProperty(exports, "__esModule", { value: true });exports.default =
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_segmented_control_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-segmented-control.vue?vue&type=style&index=0&lang=scss& */ 176);
+/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_segmented_control_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./uni-segmented-control.vue?vue&type=style&index=0&lang=scss& */ 137);
/* harmony import */ var _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_segmented_control_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_segmented_control_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_segmented_control_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_segmented_control_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
/* harmony default export */ __webpack_exports__["default"] = (_D_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_D_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_2_D_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_3_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_sass_loader_dist_cjs_js_ref_8_oneOf_1_4_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_8_oneOf_1_5_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_D_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_uni_segmented_control_vue_vue_type_style_index_0_lang_scss___WEBPACK_IMPORTED_MODULE_0___default.a);
/***/ }),
-/***/ 176:
+/***/ 137:
/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!E:/开发/bnyer-cloud-tiktok/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue?vue&type=style&index=0&lang=scss& ***!
\*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
@@ -232,12 +232,12 @@ __webpack_require__.r(__webpack_exports__);
/***/ })
}]);
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktc2VnbWVudGVkLWNvbnRyb2wvY29tcG9uZW50cy91bmktc2VnbWVudGVkLWNvbnRyb2wvdW5pLXNlZ21lbnRlZC1jb250cm9sLnZ1ZT83NjhlIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1zZWdtZW50ZWQtY29udHJvbC9jb21wb25lbnRzL3VuaS1zZWdtZW50ZWQtY29udHJvbC91bmktc2VnbWVudGVkLWNvbnRyb2wudnVlP2E5ZTYiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svdW5pX21vZHVsZXMvdW5pLXNlZ21lbnRlZC1jb250cm9sL2NvbXBvbmVudHMvdW5pLXNlZ21lbnRlZC1jb250cm9sL3VuaS1zZWdtZW50ZWQtY29udHJvbC52dWU/MDdkZiIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktc2VnbWVudGVkLWNvbnRyb2wvY29tcG9uZW50cy91bmktc2VnbWVudGVkLWNvbnRyb2wvdW5pLXNlZ21lbnRlZC1jb250cm9sLnZ1ZT80M2M5IiwidW5pLWFwcDovLy91bmlfbW9kdWxlcy91bmktc2VnbWVudGVkLWNvbnRyb2wvY29tcG9uZW50cy91bmktc2VnbWVudGVkLWNvbnRyb2wvdW5pLXNlZ21lbnRlZC1jb250cm9sLnZ1ZSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktc2VnbWVudGVkLWNvbnRyb2wvY29tcG9uZW50cy91bmktc2VnbWVudGVkLWNvbnRyb2wvdW5pLXNlZ21lbnRlZC1jb250cm9sLnZ1ZT9hZjQ5Iiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1zZWdtZW50ZWQtY29udHJvbC9jb21wb25lbnRzL3VuaS1zZWdtZW50ZWQtY29udHJvbC91bmktc2VnbWVudGVkLWNvbnRyb2wudnVlPzI3ODAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrSTtBQUNsSTtBQUN5RTtBQUNMO0FBQ2M7OztBQUdsRjtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSwyRkFBTTtBQUNSLEVBQUUsZ0dBQU07QUFDUixFQUFFLHlHQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLG9HQUFVO0FBQ1o7QUFDQTs7QUFFQTtBQUNlLGdGOzs7Ozs7Ozs7Ozs7QUN2QmY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQ1JBO0FBQUE7QUFBQTtBQUFBO0FBQSttQixDQUFnQix5b0JBQUcsRUFBQyxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeUJub0I7Ozs7Ozs7Ozs7Ozs7QUFhQTtBQUNBLDZCQURBO0FBRUEsc0JBRkE7QUFHQTtBQUNBO0FBQ0Esa0JBREE7QUFFQSxnQkFGQSxFQURBOztBQUtBO0FBQ0EsaUJBREE7QUFFQSxhQUZBLHNCQUVBO0FBQ0E7QUFDQSxPQUpBLEVBTEE7O0FBV0E7QUFDQSxrQkFEQTtBQUVBLHdCQUZBLEVBWEE7O0FBZUE7QUFDQSxrQkFEQTtBQUVBLHVCQUZBLEVBZkEsRUFIQTs7O0FBdUJBLE1BdkJBLGtCQXVCQTtBQUNBO0FBQ0EscUJBREE7O0FBR0EsR0EzQkE7QUE0QkE7QUFDQSxXQURBLG1CQUNBLEdBREEsRUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBTEEsRUE1QkE7O0FBbUNBLFNBbkNBLHFCQW1DQTtBQUNBO0FBQ0EsR0FyQ0E7QUFzQ0E7QUFDQSxZQURBLG9CQUNBLEtBREEsRUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQURBOztBQUdBO0FBQ0EsS0FSQSxFQXRDQSxFOzs7Ozs7Ozs7Ozs7QUN0Q0E7QUFBQTtBQUFBO0FBQUE7QUFBMHBDLENBQWdCLGdvQ0FBRyxFQUFDLEM7Ozs7Ozs7Ozs7O0FDQTlxQztBQUNBLE9BQU8sS0FBVSxFQUFFLGtCQUtkIiwiZmlsZSI6InVuaV9tb2R1bGVzL3VuaS1zZWdtZW50ZWQtY29udHJvbC9jb21wb25lbnRzL3VuaS1zZWdtZW50ZWQtY29udHJvbC91bmktc2VnbWVudGVkLWNvbnRyb2wuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VuaS1zZWdtZW50ZWQtY29udHJvbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDY0ZTljZDEmXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi91bmktc2VnbWVudGVkLWNvbnRyb2wudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi91bmktc2VnbWVudGVkLWNvbnRyb2wudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL3VuaS1zZWdtZW50ZWQtY29udHJvbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxccnVudGltZVxcXFxjb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvdW5pLXNlZ21lbnRlZC1jb250cm9sL2NvbXBvbmVudHMvdW5pLXNlZ21lbnRlZC1jb250cm9sL3VuaS1zZWdtZW50ZWQtY29udHJvbC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGxvYWRlcnNcXFxcdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTYtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFx0ZW1wbGF0ZS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stdW5pLWFwcC1sb2FkZXJcXFxccGFnZS1tZXRhLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1zZWdtZW50ZWQtY29udHJvbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDY0ZTljZDEmXCIiLCJ2YXIgY29tcG9uZW50c1xudmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG59XG52YXIgcmVjeWNsYWJsZVJlbmRlciA9IGZhbHNlXG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IiwiaW1wb3J0IG1vZCBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMi0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHNjcmlwdC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktc2VnbWVudGVkLWNvbnRyb2wudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1zZWdtZW50ZWQtY29udHJvbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCI8dGVtcGxhdGU+XHJcblx0PHZpZXcgOmNsYXNzPVwiW3N0eWxlVHlwZSA9PT0gJ3RleHQnPydzZWdtZW50ZWQtY29udHJvbC0tdGV4dCcgOiAnc2VnbWVudGVkLWNvbnRyb2wtLWJ1dHRvbicgXVwiXHJcblx0XHQ6c3R5bGU9XCJ7IGJvcmRlckNvbG9yOiBzdHlsZVR5cGUgPT09ICd0ZXh0JyA/ICcnIDogYWN0aXZlQ29sb3IgfVwiIGNsYXNzPVwic2VnbWVudGVkLWNvbnRyb2xcIj5cclxuXHRcdDx2aWV3IHYtZm9yPVwiKGl0ZW0sIGluZGV4KSBpbiB2YWx1ZXNcIiA6Y2xhc3M9XCJbIHN0eWxlVHlwZSA9PT0gJ3RleHQnID8gJyc6ICdzZWdtZW50ZWQtY29udHJvbF9faXRlbS0tYnV0dG9uJyxcclxuXHRcdGluZGV4ID09PSBjdXJyZW50SW5kZXgmJnN0eWxlVHlwZSA9PT0gJ2J1dHRvbicgPyAnc2VnbWVudGVkLWNvbnRyb2xfX2l0ZW0tLWJ1dHRvbi0tYWN0aXZlJzogJycsXHJcblx0XHRpbmRleCA9PT0gMCYmc3R5bGVUeXBlID09PSAnYnV0dG9uJyA/ICdzZWdtZW50ZWQtY29udHJvbF9faXRlbS0tYnV0dG9uLS1maXJzdCc6ICcnLFxyXG5cdFx0XHRpbmRleCA9PT0gdmFsdWVzLmxlbmd0aCAtIDEmJnN0eWxlVHlwZSA9PT0gJ2J1dHRvbicgPyAnc2VnbWVudGVkLWNvbnRyb2xfX2l0ZW0tLWJ1dHRvbi0tbGFzdCc6ICcnIF1cIiA6a2V5PVwiaW5kZXhcIlxyXG5cdFx0XHQ6c3R5bGU9XCJ7IGJhY2tncm91bmRDb2xvcjogaW5kZXggPT09IGN1cnJlbnRJbmRleCAmJiBzdHlsZVR5cGUgPT09ICdidXR0b24nID8gYWN0aXZlQ29sb3IgOiAnJyxib3JkZXJDb2xvcjogaW5kZXggPT09IGN1cnJlbnRJbmRleCYmc3R5bGVUeXBlID09PSAndGV4dCd8fHN0eWxlVHlwZSA9PT0gJ2J1dHRvbic/YWN0aXZlQ29sb3I6J3RyYW5zcGFyZW50JyB9XCJcclxuXHRcdFx0Y2xhc3M9XCJzZWdtZW50ZWQtY29udHJvbF9faXRlbVwiIEBjbGljaz1cIl9vbkNsaWNrKGluZGV4KVwiPlxyXG5cdFx0XHQ8dmlldz5cclxuXHRcdFx0XHQ8dGV4dCA6c3R5bGU9XCJ7Y29sb3I6XHJcblx0XHRcdFx0ICAgIGluZGV4ID09PSBjdXJyZW50SW5kZXhcclxuXHRcdFx0XHQgICAgICA/IHN0eWxlVHlwZSA9PT0gJ3RleHQnXHJcblx0XHRcdFx0ICAgICAgICA/IGFjdGl2ZUNvbG9yXHJcblx0XHRcdFx0ICAgICAgICA6ICcjZmZmJ1xyXG5cdFx0XHRcdCAgICAgIDogc3R5bGVUeXBlID09PSAndGV4dCdcclxuXHRcdFx0XHQgICAgICAgID8gJyMwMDAnXHJcblx0XHRcdFx0ICAgICAgICA6IGFjdGl2ZUNvbG9yfVwiIGNsYXNzPVwic2VnbWVudGVkLWNvbnRyb2xfX3RleHRcIiA6Y2xhc3M9XCJzdHlsZVR5cGUgPT09ICd0ZXh0JyAmJiBpbmRleCA9PT0gY3VycmVudEluZGV4ID8gJ3NlZ21lbnRlZC1jb250cm9sX19pdGVtLS10ZXh0JzogJydcIj57eyBpdGVtIH19PC90ZXh0PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblxyXG5cdFx0PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0LyoqXHJcblx0ICogU2VnbWVudGVkQ29udHJvbCDliIbmrrXlmahcclxuXHQgKiBAZGVzY3JpcHRpb24g55So5L2c5LiN5ZCM6KeG5Zu+55qE5pi+56S6XHJcblx0ICogQHR1dG9yaWFsIGh0dHBzOi8vZXh0LmRjbG91ZC5uZXQuY24vcGx1Z2luP2lkPTU0XHJcblx0ICogQHByb3BlcnR5IHtOdW1iZXJ9IGN1cnJlbnQg5b2T5YmN6YCJ5Lit55qEdGFi57Si5byV5YC877yM5LuOMOiuoeaVsFxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBzdHlsZVR5cGUgPSBbYnV0dG9ufHRleHRdIOWIhuauteWZqOagt+W8j+exu+Wei1xyXG5cdCAqIFx0QHZhbHVlIGJ1dHRvbiDmjInpkq7nsbvlnotcclxuXHQgKiBcdEB2YWx1ZSB0ZXh0IOaWh+Wtl+exu+Wei1xyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBhY3RpdmVDb2xvciDpgInkuK3nmoTmoIfnrb7og4zmma/oibLkuI7ovrnmoYbpopzoibJcclxuXHQgKiBAcHJvcGVydHkge0FycmF5fSB2YWx1ZXMg6YCJ6aG55pWw57uEXHJcblx0ICogQGV2ZW50IHtGdW5jdGlvbn0gY2xpY2tJdGVtIOe7hOS7tuinpuWPkeeCueWHu+S6i+S7tuaXtuinpuWPke+8jGU9e2N1cnJlbnRJbmRleH1cclxuXHQgKi9cclxuXHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ1VuaVNlZ21lbnRlZENvbnRyb2wnLFxyXG5cdFx0ZW1pdHM6IFsnY2xpY2tJdGVtJ10sXHJcblx0XHRwcm9wczoge1xyXG5cdFx0XHRjdXJyZW50OiB7XHJcblx0XHRcdFx0dHlwZTogTnVtYmVyLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IDBcclxuXHRcdFx0fSxcclxuXHRcdFx0dmFsdWVzOiB7XHJcblx0XHRcdFx0dHlwZTogQXJyYXksXHJcblx0XHRcdFx0ZGVmYXVsdCAoKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gW11cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdGFjdGl2ZUNvbG9yOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICcjMjk3OUZGJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRzdHlsZVR5cGU6IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJ2J1dHRvbidcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0Y3VycmVudEluZGV4OiAwXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHR3YXRjaDoge1xyXG5cdFx0XHRjdXJyZW50KHZhbCkge1xyXG5cdFx0XHRcdGlmICh2YWwgIT09IHRoaXMuY3VycmVudEluZGV4KSB7XHJcblx0XHRcdFx0XHR0aGlzLmN1cnJlbnRJbmRleCA9IHZhbFxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdGNyZWF0ZWQoKSB7XHJcblx0XHRcdHRoaXMuY3VycmVudEluZGV4ID0gdGhpcy5jdXJyZW50XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRfb25DbGljayhpbmRleCkge1xyXG5cdFx0XHRcdGlmICh0aGlzLmN1cnJlbnRJbmRleCAhPT0gaW5kZXgpIHtcclxuXHRcdFx0XHRcdHRoaXMuY3VycmVudEluZGV4ID0gaW5kZXhcclxuXHRcdFx0XHRcdHRoaXMuJGVtaXQoJ2NsaWNrSXRlbScsIHtcclxuXHRcdFx0XHRcdFx0Y3VycmVudEluZGV4OiBpbmRleFxyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgPlxyXG5cdC5zZWdtZW50ZWQtY29udHJvbCB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHRcdGhlaWdodDogMzZweDtcclxuXHRcdG92ZXJmbG93OiBoaWRkZW47XHJcblx0XHQvKiAjaWZkZWYgSDUgKi9cclxuXHRcdGN1cnNvcjogcG9pbnRlcjtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdH1cclxuXHJcblx0LnNlZ21lbnRlZC1jb250cm9sX19pdGVtIHtcclxuXHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0ZmxleDogMTtcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHR9XHJcblxyXG5cdC5zZWdtZW50ZWQtY29udHJvbF9faXRlbS0tYnV0dG9uIHtcclxuXHRcdGJvcmRlci1zdHlsZTogc29saWQ7XHJcblx0XHRib3JkZXItdG9wLXdpZHRoOiAxcHg7XHJcblx0XHRib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7XHJcblx0XHRib3JkZXItcmlnaHQtd2lkdGg6IDFweDtcclxuXHRcdGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xyXG5cdH1cclxuXHJcblx0LnNlZ21lbnRlZC1jb250cm9sX19pdGVtLS1idXR0b24tLWZpcnN0IHtcclxuXHRcdGJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7XHJcblx0XHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA1cHg7XHJcblx0XHRib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA1cHg7XHJcblx0fVxyXG5cclxuXHQuc2VnbWVudGVkLWNvbnRyb2xfX2l0ZW0tLWJ1dHRvbi0tbGFzdCB7XHJcblx0XHRib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4O1xyXG5cdFx0Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDVweDtcclxuXHR9XHJcblxyXG5cdC5zZWdtZW50ZWQtY29udHJvbF9faXRlbS0tdGV4dCB7XHJcblx0XHRib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcclxuXHRcdGJvcmRlci1ib3R0b20td2lkdGg6IDJweDtcclxuXHRcdHBhZGRpbmc6IDZweCAwO1xyXG5cdH1cclxuXHJcblx0LnNlZ21lbnRlZC1jb250cm9sX190ZXh0IHtcclxuXHRcdGZvbnQtc2l6ZTogMTRweDtcclxuXHRcdGxpbmUtaGVpZ2h0OiAyMHB4O1xyXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdH1cclxuPC9zdHlsZT5cclxuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxcXFxkaXN0XFxcXGxvYWRlci5qcz8/cmVmLS04LW9uZU9mLTEtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxjc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFxzdHlsZVBvc3RMb2FkZXIuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXHBvc3Rjc3MtbG9hZGVyXFxcXHNyY1xcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHNhc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS00IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtNSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktc2VnbWVudGVkLWNvbnRyb2wudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXFxcXGRpc3RcXFxcbG9hZGVyLmpzPz9yZWYtLTgtb25lT2YtMS0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGNzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHN0eWxlUG9zdExvYWRlci5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxccG9zdGNzcy1sb2FkZXJcXFxcc3JjXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcc2Fzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTQhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS01IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1zZWdtZW50ZWQtY29udHJvbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbiAgICBpZihtb2R1bGUuaG90KSB7XG4gICAgICAvLyAxNjUyNzAxODI2NDMxXG4gICAgICB2YXIgY3NzUmVsb2FkID0gcmVxdWlyZShcIkQ6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luL2Rpc3QvaG1yL2hvdE1vZHVsZVJlcGxhY2VtZW50LmpzXCIpKG1vZHVsZS5pZCwge1wiaG1yXCI6dHJ1ZSxcInB1YmxpY1BhdGhcIjpcIi4uLy4uL1wiLFwibG9jYWxzXCI6ZmFsc2V9KTtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShjc3NSZWxvYWQpO1xuICAgICAgbW9kdWxlLmhvdC5hY2NlcHQodW5kZWZpbmVkLCBjc3NSZWxvYWQpO1xuICAgIH1cbiAgIl0sInNvdXJjZVJvb3QiOiIifQ==
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktc2VnbWVudGVkLWNvbnRyb2wvY29tcG9uZW50cy91bmktc2VnbWVudGVkLWNvbnRyb2wvdW5pLXNlZ21lbnRlZC1jb250cm9sLnZ1ZT83NjhlIiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1zZWdtZW50ZWQtY29udHJvbC9jb21wb25lbnRzL3VuaS1zZWdtZW50ZWQtY29udHJvbC91bmktc2VnbWVudGVkLWNvbnRyb2wudnVlP2E5ZTYiLCJ3ZWJwYWNrOi8vL0U6L+W8gOWPkS9ibnllci1jbG91ZC10aWt0b2svdW5pX21vZHVsZXMvdW5pLXNlZ21lbnRlZC1jb250cm9sL2NvbXBvbmVudHMvdW5pLXNlZ21lbnRlZC1jb250cm9sL3VuaS1zZWdtZW50ZWQtY29udHJvbC52dWU/MDdkZiIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktc2VnbWVudGVkLWNvbnRyb2wvY29tcG9uZW50cy91bmktc2VnbWVudGVkLWNvbnRyb2wvdW5pLXNlZ21lbnRlZC1jb250cm9sLnZ1ZT80M2M5IiwidW5pLWFwcDovLy91bmlfbW9kdWxlcy91bmktc2VnbWVudGVkLWNvbnRyb2wvY29tcG9uZW50cy91bmktc2VnbWVudGVkLWNvbnRyb2wvdW5pLXNlZ21lbnRlZC1jb250cm9sLnZ1ZSIsIndlYnBhY2s6Ly8vRTov5byA5Y+RL2JueWVyLWNsb3VkLXRpa3Rvay91bmlfbW9kdWxlcy91bmktc2VnbWVudGVkLWNvbnRyb2wvY29tcG9uZW50cy91bmktc2VnbWVudGVkLWNvbnRyb2wvdW5pLXNlZ21lbnRlZC1jb250cm9sLnZ1ZT9hZjQ5Iiwid2VicGFjazovLy9FOi/lvIDlj5EvYm55ZXItY2xvdWQtdGlrdG9rL3VuaV9tb2R1bGVzL3VuaS1zZWdtZW50ZWQtY29udHJvbC9jb21wb25lbnRzL3VuaS1zZWdtZW50ZWQtY29udHJvbC91bmktc2VnbWVudGVkLWNvbnRyb2wudnVlPzI3ODAiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrSTtBQUNsSTtBQUN5RTtBQUNMO0FBQ2M7OztBQUdsRjtBQUNxSztBQUNySyxnQkFBZ0IsK0tBQVU7QUFDMUIsRUFBRSwyRkFBTTtBQUNSLEVBQUUsZ0dBQU07QUFDUixFQUFFLHlHQUFlO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLG9HQUFVO0FBQ1o7QUFDQTs7QUFFQTtBQUNlLGdGOzs7Ozs7Ozs7Ozs7QUN2QmY7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQ1JBO0FBQUE7QUFBQTtBQUFBO0FBQSttQixDQUFnQix5b0JBQUcsRUFBQyxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeUJub0I7Ozs7Ozs7Ozs7Ozs7QUFhQTtBQUNBLDZCQURBO0FBRUEsc0JBRkE7QUFHQTtBQUNBO0FBQ0Esa0JBREE7QUFFQSxnQkFGQSxFQURBOztBQUtBO0FBQ0EsaUJBREE7QUFFQSxhQUZBLHNCQUVBO0FBQ0E7QUFDQSxPQUpBLEVBTEE7O0FBV0E7QUFDQSxrQkFEQTtBQUVBLHdCQUZBLEVBWEE7O0FBZUE7QUFDQSxrQkFEQTtBQUVBLHVCQUZBLEVBZkEsRUFIQTs7O0FBdUJBLE1BdkJBLGtCQXVCQTtBQUNBO0FBQ0EscUJBREE7O0FBR0EsR0EzQkE7QUE0QkE7QUFDQSxXQURBLG1CQUNBLEdBREEsRUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBTEEsRUE1QkE7O0FBbUNBLFNBbkNBLHFCQW1DQTtBQUNBO0FBQ0EsR0FyQ0E7QUFzQ0E7QUFDQSxZQURBLG9CQUNBLEtBREEsRUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQURBOztBQUdBO0FBQ0EsS0FSQSxFQXRDQSxFOzs7Ozs7Ozs7Ozs7QUN0Q0E7QUFBQTtBQUFBO0FBQUE7QUFBMHBDLENBQWdCLGdvQ0FBRyxFQUFDLEM7Ozs7Ozs7Ozs7O0FDQTlxQztBQUNBLE9BQU8sS0FBVSxFQUFFLGtCQUtkIiwiZmlsZSI6InVuaV9tb2R1bGVzL3VuaS1zZWdtZW50ZWQtY29udHJvbC9jb21wb25lbnRzL3VuaS1zZWdtZW50ZWQtY29udHJvbC91bmktc2VnbWVudGVkLWNvbnRyb2wuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VuaS1zZWdtZW50ZWQtY29udHJvbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDY0ZTljZDEmXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi91bmktc2VnbWVudGVkLWNvbnRyb2wudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi91bmktc2VnbWVudGVkLWNvbnRyb2wudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL3VuaS1zZWdtZW50ZWQtY29udHJvbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxccnVudGltZVxcXFxjb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvdW5pLXNlZ21lbnRlZC1jb250cm9sL2NvbXBvbmVudHMvdW5pLXNlZ21lbnRlZC1jb250cm9sL3VuaS1zZWdtZW50ZWQtY29udHJvbC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJleHBvcnQgKiBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGxvYWRlcnNcXFxcdGVtcGxhdGVMb2FkZXIuanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tMTYtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFx0ZW1wbGF0ZS5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stdW5pLWFwcC1sb2FkZXJcXFxccGFnZS1tZXRhLmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1zZWdtZW50ZWQtY29udHJvbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDY0ZTljZDEmXCIiLCJ2YXIgY29tcG9uZW50c1xudmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG59XG52YXIgcmVjeWNsYWJsZVJlbmRlciA9IGZhbHNlXG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IiwiaW1wb3J0IG1vZCBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxiYWJlbC1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS0xMi0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx3ZWJwYWNrLXVuaS1tcC1sb2FkZXJcXFxcbGliXFxcXHNjcmlwdC5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktc2VnbWVudGVkLWNvbnRyb2wudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGJhYmVsLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTEyLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc2NyaXB0LmpzIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1zZWdtZW50ZWQtY29udHJvbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCI8dGVtcGxhdGU+XHJcblx0PHZpZXcgOmNsYXNzPVwiW3N0eWxlVHlwZSA9PT0gJ3RleHQnPydzZWdtZW50ZWQtY29udHJvbC0tdGV4dCcgOiAnc2VnbWVudGVkLWNvbnRyb2wtLWJ1dHRvbicgXVwiXHJcblx0XHQ6c3R5bGU9XCJ7IGJvcmRlckNvbG9yOiBzdHlsZVR5cGUgPT09ICd0ZXh0JyA/ICcnIDogYWN0aXZlQ29sb3IgfVwiIGNsYXNzPVwic2VnbWVudGVkLWNvbnRyb2xcIj5cclxuXHRcdDx2aWV3IHYtZm9yPVwiKGl0ZW0sIGluZGV4KSBpbiB2YWx1ZXNcIiA6Y2xhc3M9XCJbIHN0eWxlVHlwZSA9PT0gJ3RleHQnID8gJyc6ICdzZWdtZW50ZWQtY29udHJvbF9faXRlbS0tYnV0dG9uJyxcclxuXHRcdGluZGV4ID09PSBjdXJyZW50SW5kZXgmJnN0eWxlVHlwZSA9PT0gJ2J1dHRvbicgPyAnc2VnbWVudGVkLWNvbnRyb2xfX2l0ZW0tLWJ1dHRvbi0tYWN0aXZlJzogJycsXHJcblx0XHRpbmRleCA9PT0gMCYmc3R5bGVUeXBlID09PSAnYnV0dG9uJyA/ICdzZWdtZW50ZWQtY29udHJvbF9faXRlbS0tYnV0dG9uLS1maXJzdCc6ICcnLFxyXG5cdFx0XHRpbmRleCA9PT0gdmFsdWVzLmxlbmd0aCAtIDEmJnN0eWxlVHlwZSA9PT0gJ2J1dHRvbicgPyAnc2VnbWVudGVkLWNvbnRyb2xfX2l0ZW0tLWJ1dHRvbi0tbGFzdCc6ICcnIF1cIiA6a2V5PVwiaW5kZXhcIlxyXG5cdFx0XHQ6c3R5bGU9XCJ7IGJhY2tncm91bmRDb2xvcjogaW5kZXggPT09IGN1cnJlbnRJbmRleCAmJiBzdHlsZVR5cGUgPT09ICdidXR0b24nID8gYWN0aXZlQ29sb3IgOiAnJyxib3JkZXJDb2xvcjogaW5kZXggPT09IGN1cnJlbnRJbmRleCYmc3R5bGVUeXBlID09PSAndGV4dCd8fHN0eWxlVHlwZSA9PT0gJ2J1dHRvbic/YWN0aXZlQ29sb3I6J3RyYW5zcGFyZW50JyB9XCJcclxuXHRcdFx0Y2xhc3M9XCJzZWdtZW50ZWQtY29udHJvbF9faXRlbVwiIEBjbGljaz1cIl9vbkNsaWNrKGluZGV4KVwiPlxyXG5cdFx0XHQ8dmlldz5cclxuXHRcdFx0XHQ8dGV4dCA6c3R5bGU9XCJ7Y29sb3I6XHJcblx0XHRcdFx0ICAgIGluZGV4ID09PSBjdXJyZW50SW5kZXhcclxuXHRcdFx0XHQgICAgICA/IHN0eWxlVHlwZSA9PT0gJ3RleHQnXHJcblx0XHRcdFx0ICAgICAgICA/IGFjdGl2ZUNvbG9yXHJcblx0XHRcdFx0ICAgICAgICA6ICcjZmZmJ1xyXG5cdFx0XHRcdCAgICAgIDogc3R5bGVUeXBlID09PSAndGV4dCdcclxuXHRcdFx0XHQgICAgICAgID8gJyMwMDAnXHJcblx0XHRcdFx0ICAgICAgICA6IGFjdGl2ZUNvbG9yfVwiIGNsYXNzPVwic2VnbWVudGVkLWNvbnRyb2xfX3RleHRcIiA6Y2xhc3M9XCJzdHlsZVR5cGUgPT09ICd0ZXh0JyAmJiBpbmRleCA9PT0gY3VycmVudEluZGV4ID8gJ3NlZ21lbnRlZC1jb250cm9sX19pdGVtLS10ZXh0JzogJydcIj57eyBpdGVtIH19PC90ZXh0PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblxyXG5cdFx0PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0LyoqXHJcblx0ICogU2VnbWVudGVkQ29udHJvbCDliIbmrrXlmahcclxuXHQgKiBAZGVzY3JpcHRpb24g55So5L2c5LiN5ZCM6KeG5Zu+55qE5pi+56S6XHJcblx0ICogQHR1dG9yaWFsIGh0dHBzOi8vZXh0LmRjbG91ZC5uZXQuY24vcGx1Z2luP2lkPTU0XHJcblx0ICogQHByb3BlcnR5IHtOdW1iZXJ9IGN1cnJlbnQg5b2T5YmN6YCJ5Lit55qEdGFi57Si5byV5YC877yM5LuOMOiuoeaVsFxyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBzdHlsZVR5cGUgPSBbYnV0dG9ufHRleHRdIOWIhuauteWZqOagt+W8j+exu+Wei1xyXG5cdCAqIFx0QHZhbHVlIGJ1dHRvbiDmjInpkq7nsbvlnotcclxuXHQgKiBcdEB2YWx1ZSB0ZXh0IOaWh+Wtl+exu+Wei1xyXG5cdCAqIEBwcm9wZXJ0eSB7U3RyaW5nfSBhY3RpdmVDb2xvciDpgInkuK3nmoTmoIfnrb7og4zmma/oibLkuI7ovrnmoYbpopzoibJcclxuXHQgKiBAcHJvcGVydHkge0FycmF5fSB2YWx1ZXMg6YCJ6aG55pWw57uEXHJcblx0ICogQGV2ZW50IHtGdW5jdGlvbn0gY2xpY2tJdGVtIOe7hOS7tuinpuWPkeeCueWHu+S6i+S7tuaXtuinpuWPke+8jGU9e2N1cnJlbnRJbmRleH1cclxuXHQgKi9cclxuXHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ1VuaVNlZ21lbnRlZENvbnRyb2wnLFxyXG5cdFx0ZW1pdHM6IFsnY2xpY2tJdGVtJ10sXHJcblx0XHRwcm9wczoge1xyXG5cdFx0XHRjdXJyZW50OiB7XHJcblx0XHRcdFx0dHlwZTogTnVtYmVyLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IDBcclxuXHRcdFx0fSxcclxuXHRcdFx0dmFsdWVzOiB7XHJcblx0XHRcdFx0dHlwZTogQXJyYXksXHJcblx0XHRcdFx0ZGVmYXVsdCAoKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gW11cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdGFjdGl2ZUNvbG9yOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICcjMjk3OUZGJ1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRzdHlsZVR5cGU6IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJ2J1dHRvbidcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0Y3VycmVudEluZGV4OiAwXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHR3YXRjaDoge1xyXG5cdFx0XHRjdXJyZW50KHZhbCkge1xyXG5cdFx0XHRcdGlmICh2YWwgIT09IHRoaXMuY3VycmVudEluZGV4KSB7XHJcblx0XHRcdFx0XHR0aGlzLmN1cnJlbnRJbmRleCA9IHZhbFxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdGNyZWF0ZWQoKSB7XHJcblx0XHRcdHRoaXMuY3VycmVudEluZGV4ID0gdGhpcy5jdXJyZW50XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRfb25DbGljayhpbmRleCkge1xyXG5cdFx0XHRcdGlmICh0aGlzLmN1cnJlbnRJbmRleCAhPT0gaW5kZXgpIHtcclxuXHRcdFx0XHRcdHRoaXMuY3VycmVudEluZGV4ID0gaW5kZXhcclxuXHRcdFx0XHRcdHRoaXMuJGVtaXQoJ2NsaWNrSXRlbScsIHtcclxuXHRcdFx0XHRcdFx0Y3VycmVudEluZGV4OiBpbmRleFxyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgPlxyXG5cdC5zZWdtZW50ZWQtY29udHJvbCB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHRcdGhlaWdodDogMzZweDtcclxuXHRcdG92ZXJmbG93OiBoaWRkZW47XHJcblx0XHQvKiAjaWZkZWYgSDUgKi9cclxuXHRcdGN1cnNvcjogcG9pbnRlcjtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdH1cclxuXHJcblx0LnNlZ21lbnRlZC1jb250cm9sX19pdGVtIHtcclxuXHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcclxuXHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0ZmxleDogMTtcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHR9XHJcblxyXG5cdC5zZWdtZW50ZWQtY29udHJvbF9faXRlbS0tYnV0dG9uIHtcclxuXHRcdGJvcmRlci1zdHlsZTogc29saWQ7XHJcblx0XHRib3JkZXItdG9wLXdpZHRoOiAxcHg7XHJcblx0XHRib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7XHJcblx0XHRib3JkZXItcmlnaHQtd2lkdGg6IDFweDtcclxuXHRcdGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xyXG5cdH1cclxuXHJcblx0LnNlZ21lbnRlZC1jb250cm9sX19pdGVtLS1idXR0b24tLWZpcnN0IHtcclxuXHRcdGJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7XHJcblx0XHRib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA1cHg7XHJcblx0XHRib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA1cHg7XHJcblx0fVxyXG5cclxuXHQuc2VnbWVudGVkLWNvbnRyb2xfX2l0ZW0tLWJ1dHRvbi0tbGFzdCB7XHJcblx0XHRib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4O1xyXG5cdFx0Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDVweDtcclxuXHR9XHJcblxyXG5cdC5zZWdtZW50ZWQtY29udHJvbF9faXRlbS0tdGV4dCB7XHJcblx0XHRib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcclxuXHRcdGJvcmRlci1ib3R0b20td2lkdGg6IDJweDtcclxuXHRcdHBhZGRpbmc6IDZweCAwO1xyXG5cdH1cclxuXHJcblx0LnNlZ21lbnRlZC1jb250cm9sX190ZXh0IHtcclxuXHRcdGZvbnQtc2l6ZTogMTRweDtcclxuXHRcdGxpbmUtaGVpZ2h0OiAyMHB4O1xyXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdH1cclxuPC9zdHlsZT5cclxuIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxcXFxkaXN0XFxcXGxvYWRlci5qcz8/cmVmLS04LW9uZU9mLTEtMCFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxjc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS0xIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcbG9hZGVyc1xcXFxzdHlsZVBvc3RMb2FkZXIuanMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0yIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXHBvc3Rjc3MtbG9hZGVyXFxcXHNyY1xcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtMyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHNhc3MtbG9hZGVyXFxcXGRpc3RcXFxcY2pzLmpzPz9yZWYtLTgtb25lT2YtMS00IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlclxcXFxpbmRleC5qcz8/cmVmLS04LW9uZU9mLTEtNSFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHZ1ZS1sb2FkZXJcXFxcbGliXFxcXGluZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHdlYnBhY2stdW5pLW1wLWxvYWRlclxcXFxsaWJcXFxcc3R5bGUuanMhLi91bmktc2VnbWVudGVkLWNvbnRyb2wudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmbGFuZz1zY3NzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXFxcXGRpc3RcXFxcbG9hZGVyLmpzPz9yZWYtLTgtb25lT2YtMS0wIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXGNzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTEhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx2dWUtbG9hZGVyXFxcXGxpYlxcXFxsb2FkZXJzXFxcXHN0eWxlUG9zdExvYWRlci5qcyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcdnVlLWNsaS1wbHVnaW4tdW5pXFxcXHBhY2thZ2VzXFxcXHdlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXJcXFxcaW5kZXguanM/P3JlZi0tOC1vbmVPZi0xLTIhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxccG9zdGNzcy1sb2FkZXJcXFxcc3JjXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS0zIUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcc2Fzcy1sb2FkZXJcXFxcZGlzdFxcXFxjanMuanM/P3JlZi0tOC1vbmVPZi0xLTQhRDpcXFxcSEJ1aWxkZXJYXFxcXHBsdWdpbnNcXFxcdW5pYXBwLWNsaVxcXFxub2RlX21vZHVsZXNcXFxcQGRjbG91ZGlvXFxcXHZ1ZS1jbGktcGx1Z2luLXVuaVxcXFxwYWNrYWdlc1xcXFx3ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyXFxcXGluZGV4LmpzPz9yZWYtLTgtb25lT2YtMS01IUQ6XFxcXEhCdWlsZGVyWFxcXFxwbHVnaW5zXFxcXHVuaWFwcC1jbGlcXFxcbm9kZV9tb2R1bGVzXFxcXEBkY2xvdWRpb1xcXFx2dWUtY2xpLXBsdWdpbi11bmlcXFxccGFja2FnZXNcXFxcdnVlLWxvYWRlclxcXFxsaWJcXFxcaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyFEOlxcXFxIQnVpbGRlclhcXFxccGx1Z2luc1xcXFx1bmlhcHAtY2xpXFxcXG5vZGVfbW9kdWxlc1xcXFxAZGNsb3VkaW9cXFxcd2VicGFjay11bmktbXAtbG9hZGVyXFxcXGxpYlxcXFxzdHlsZS5qcyEuL3VuaS1zZWdtZW50ZWQtY29udHJvbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZsYW5nPXNjc3MmXCIiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbiAgICBpZihtb2R1bGUuaG90KSB7XG4gICAgICAvLyAxNjUzMzEyMjU0Mjg4XG4gICAgICB2YXIgY3NzUmVsb2FkID0gcmVxdWlyZShcIkQ6L0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luL2Rpc3QvaG1yL2hvdE1vZHVsZVJlcGxhY2VtZW50LmpzXCIpKG1vZHVsZS5pZCwge1wiaG1yXCI6dHJ1ZSxcInB1YmxpY1BhdGhcIjpcIi4uLy4uL1wiLFwibG9jYWxzXCI6ZmFsc2V9KTtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShjc3NSZWxvYWQpO1xuICAgICAgbW9kdWxlLmhvdC5hY2NlcHQodW5kZWZpbmVkLCBjc3NSZWxvYWQpO1xuICAgIH1cbiAgIl0sInNvdXJjZVJvb3QiOiIifQ==
;(global["webpackJsonp"] = global["webpackJsonp"] || []).push([
'uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control-create-component',
{
'uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control-create-component':(function(module, exports, __webpack_require__){
- __webpack_require__('1')['createComponent'](__webpack_require__(170))
+ __webpack_require__('1')['createComponent'](__webpack_require__(131))
})
},
[['uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control-create-component']]