Commit fd098c52918a35846a073da8983433371de9b776

Authored by yangzhi
1 parent 2a0c6030

一对一视频完成

uniapp-wuduhuajiao/pages/meeting/meeting.nvue
@@ -41,16 +41,15 @@ @@ -41,16 +41,15 @@
41 </view> 41 </view>
42 </view> 42 </view>
43 <view style="flex-direction: row;justify-content: space-around;"> 43 <view style="flex-direction: row;justify-content: space-around;">
44 - <block v-if="myUserInfo&&myUserInfo.type==3">  
45 - <text class="btn" v-if="meetingUsers[0] && meetingUsers[0].starting" @click="handleEndtMeeting"  
46 - style="margin-right: 20px;">  
47 - 挂断  
48 - </text>  
49 - <text class="btn" v-else @click="handleStartMeeting" style="margin-right: 20rpx;"> 44 + <block v-if="myUserInfo&&myUserInfo.type==3 && !meeting">
  45 + <text v-if="" class="btn"@click="handleStartMeeting" style="margin-right: 20rpx;">
50 开始视频 46 开始视频
51 </text> 47 </text>
52 </block> 48 </block>
53 - 49 + <text class="btn" v-if="meeting" @click="handleEndtMeeting"
  50 + style="margin-right: 20px;">
  51 + 挂断
  52 + </text>
54 <text class="btn" @click="handleInviteCustomerUser" v-if="!hasInvite" style="margin-right: 20rpx;"> 53 <text class="btn" @click="handleInviteCustomerUser" v-if="!hasInvite" style="margin-right: 20rpx;">
55 邀请客服 54 邀请客服
56 </text> 55 </text>
@@ -59,8 +58,8 @@ @@ -59,8 +58,8 @@
59 </text> 58 </text>
60 </view> 59 </view>
61 <scroll-view :scroll-y="true" class="message"> 60 <scroll-view :scroll-y="true" class="message">
62 - <view class="" style="width: 320px;">  
63 - <view class="" v-for="item in messageList" 61 + <view style="width: 320px;">
  62 + <view v-for="item in messageList"
64 style="display: flex;flex-direction: row;flex-wrap: wrap;"> 63 style="display: flex;flex-direction: row;flex-wrap: wrap;">
65 <text style="color: #FFDA97 ;">{{item.author || '系统'}}:</text> 64 <text style="color: #FFDA97 ;">{{item.author || '系统'}}:</text>
66 <text style="color: #fff;margin-left: 10rpx;"> 65 <text style="color: #fff;margin-left: 10rpx;">
uniapp-wuduhuajiao/pages/meeting/serviceMeeting.nvue
1 <template> 1 <template>
2 <view class="page"> 2 <view class="page">
3 <image src="../../static/home/banck2.png" style="width: 100%; height: 100%;" mode="widthFix"></image> 3 <image src="../../static/home/banck2.png" style="width: 100%; height: 100%;" mode="widthFix"></image>
4 - <view style="height: 360rpx;width: 300rpx;position:fixed;top:10px;right:10px;z-index: 999;" v-if="meetingUserOther.userId"> 4 + <view style="height: 300rpx;width: 250rpx;position:fixed;top:40px;right:20px;z-index: 999;" v-if="meetingUserOther.userId">
5 <trtc-remote-view :userId="meetingUserOther.userId" :viewId="meetingUserOther.userId" 5 <trtc-remote-view :userId="meetingUserOther.userId" :viewId="meetingUserOther.userId"
6 - style="height: 360rpx;width: 300rpx;"> 6 + style="height: 300rpx;width: 250rpx;">
7 </trtc-remote-view> 7 </trtc-remote-view>
8 </view> 8 </view>
9 <trtc-local-view :viewId="meetingUserMy.userId" style="height: 100%;width:100%;background-color: #000;"> 9 <trtc-local-view :viewId="meetingUserMy.userId" style="height: 100%;width:100%;background-color: #000;">
10 </trtc-local-view> 10 </trtc-local-view>
11 <text style="position: absolute;top: 100px;width: 750rpx;text-align: center;color: #fff;" v-if="!meeting">等待客服进入</text> 11 <text style="position: absolute;top: 100px;width: 750rpx;text-align: center;color: #fff;" v-if="!meeting">等待客服进入</text>
12 - <text style="position: absolute;top: 100px;width: 750rpx;text-align: center;color: #fff;" v-if="meeting">{{ meetingUserOther.userId }}</text>  
13 <view style="flex-direction: row;justify-content: space-around;position: fixed;bottom:80px;width: 750rpx;"> 12 <view style="flex-direction: row;justify-content: space-around;position: fixed;bottom:80px;width: 750rpx;">
14 <block> 13 <block>
15 <text class="btn" @click="handleEndtMeeting" style="margin-right: 20px;"> 14 <text class="btn" @click="handleEndtMeeting" style="margin-right: 20px;">
@@ -28,8 +27,10 @@ @@ -28,8 +27,10 @@
28 import { 27 import {
29 TRTCAppScene, 28 TRTCAppScene,
30 TRTCVideoStreamType, 29 TRTCVideoStreamType,
31 - TRTCCloudDef 30 + TRTCCloudDef,
  31 + TRTCAudioQuality
32 } from '@/TrtcCloud/lib/TrtcDefines'; 32 } from '@/TrtcCloud/lib/TrtcDefines';
  33 +
33 import { 34 import {
34 genTestUserSig 35 genTestUserSig
35 } from '@/debug/GenerateTestUserSig'; 36 } from '@/debug/GenerateTestUserSig';
@@ -271,7 +272,7 @@ @@ -271,7 +272,7 @@
271 try { 272 try {
272 this.starting = false; 273 this.starting = false;
273 this.stopLocalPreview(); 274 this.stopLocalPreview();
274 - this.stopRemoteView(); 275 + this.stopRemoteView(this.userId);
275 this.trtcCloud.exitRoom(); 276 this.trtcCloud.exitRoom();
276 } catch (e) { 277 } catch (e) {
277 // TODO handle the exception 278 // TODO handle the exception
@@ -280,6 +281,7 @@ @@ -280,6 +281,7 @@
280 startLocalPreview() { 281 startLocalPreview() {
281 console.log('startLocalPreview',this.userId); 282 console.log('startLocalPreview',this.userId);
282 this.trtcCloud.startLocalPreview(this.isFrontCamera, this.userId); 283 this.trtcCloud.startLocalPreview(this.isFrontCamera, this.userId);
  284 + this.trtcCloud.startLocalAudio(TRTCAudioQuality.TRTCAudioQualityDefault);
283 this.sdkAppId && uni.$startLocalPreviewUpload(this.sdkAppId); 285 this.sdkAppId && uni.$startLocalPreviewUpload(this.sdkAppId);
284 }, 286 },
285 stopLocalPreview() { 287 stopLocalPreview() {
@@ -293,12 +295,7 @@ @@ -293,12 +295,7 @@
293 }); 295 });
294 }, 296 },
295 stopRemoteView(userId) { 297 stopRemoteView(userId) {
296 - let index = this.meetingUsers.findIndex(t => t.userId == userId);  
297 - if (index > -1) {  
298 - this.meetingUsers[index].starting = false;  
299 - this.meetingUsers.push(this.meetingUsers.pop());  
300 - this.trtcCloud.stopRemoteView(userId, this.streamType);  
301 - } 298 + this.trtcCloud.stopRemoteView(userId, this.streamType);
302 }, 299 },
303 // 听筒、免提 切换 300 // 听筒、免提 切换
304 switchAudioRoute() { 301 switchAudioRoute() {
@@ -321,6 +318,7 @@ @@ -321,6 +318,7 @@
321 console.log(`- onEnterRoom = ${result}`); 318 console.log(`- onEnterRoom = ${result}`);
322 }); 319 });
323 this.trtcCloud.on('onExitRoom', (reason) => { 320 this.trtcCloud.on('onExitRoom', (reason) => {
  321 + console.log('onExitRoom',reason);
324 const reasonList = ['主动调用 exitRoom 退房', '被服务器踢出当前房间', '当前房间整个被解散']; 322 const reasonList = ['主动调用 exitRoom 退房', '被服务器踢出当前房间', '当前房间整个被解散'];
325 this.messageList.unshift({ 323 this.messageList.unshift({
326 content: `退房 ${reasonList[reason]}` 324 content: `退房 ${reasonList[reason]}`
@@ -332,13 +330,23 @@ @@ -332,13 +330,23 @@
332 this.trtcCloud.on('onRemoteUserEnterRoom', (userId) => { 330 this.trtcCloud.on('onRemoteUserEnterRoom', (userId) => {
333 console.log('onRemoteUserEnterRoom',userId); 331 console.log('onRemoteUserEnterRoom',userId);
334 this.meetingUserOther.userId = userId; 332 this.meetingUserOther.userId = userId;
335 - this.startRstartRemoteView(userId); 333 + this.meeting = true;
  334 + this.startRemoteView(userId);
336 335
337 }); 336 });
338 this.trtcCloud.on('onRemoteUserLeaveRoom', (userId) => { 337 this.trtcCloud.on('onRemoteUserLeaveRoom', (userId) => {
339 console.log('onRemoteUserLeaveRoom',userId); 338 console.log('onRemoteUserLeaveRoom',userId);
  339 + this.meetingUserOther.userId = '';
340 this.meeting = false; 340 this.meeting = false;
  341 + uni.showModal({
  342 + content:'对方已退出',
  343 + showCancel:false
  344 + });
  345 +
341 }); 346 });
  347 + this.trtcCloud.on('onUserAudioAvailable',(res)=>{
  348 + console.log('onUserAudioAvailable',res);
  349 + })
342 this.trtcCloud.on('onUserVideoAvailable', (res) => { 350 this.trtcCloud.on('onUserVideoAvailable', (res) => {
343 console.log('onUserVideoAvailable',res); 351 console.log('onUserVideoAvailable',res);
344 const { 352 const {
@@ -348,6 +356,9 @@ @@ -348,6 +356,9 @@
348 this.messageList.unshift({ 356 this.messageList.unshift({
349 content: `onUserVideoAvailable = ${JSON.stringify(res)}` 357 content: `onUserVideoAvailable = ${JSON.stringify(res)}`
350 }) 358 })
  359 + if(available){
  360 + this.startLocalPreview();
  361 + }
351 if (userId && available) { 362 if (userId && available) {
352 this.startRemoteView(userId); 363 this.startRemoteView(userId);
353 } else { 364 } else {
uniapp-wuduhuajiao/uniapp-wuduhuajiao.rar
No preview for this file type
uniapp-wuduhuajiao/unpackage/dist/dev/app-plus/pages/meeting/meeting.js
@@ -2071,33 +2071,34 @@ var render = function() { @@ -2071,33 +2071,34 @@ var render = function() {
2071 } 2071 }
2072 }, 2072 },
2073 [ 2073 [
2074 - _vm.myUserInfo && _vm.myUserInfo.type == 3 2074 + _vm.myUserInfo && _vm.myUserInfo.type == 3 && !_vm.meeting
2075 ? _c("block", [ 2075 ? _c("block", [
2076 - _vm.meetingUsers[0] && _vm.meetingUsers[0].starting  
2077 - ? _c(  
2078 - "u-text",  
2079 - {  
2080 - staticClass: ["btn"],  
2081 - staticStyle: { marginRight: "20px" },  
2082 - appendAsTree: true,  
2083 - attrs: { append: "tree" },  
2084 - on: { click: _vm.handleEndtMeeting }  
2085 - },  
2086 - [_vm._v("挂断")]  
2087 - )  
2088 - : _c(  
2089 - "u-text",  
2090 - {  
2091 - staticClass: ["btn"],  
2092 - staticStyle: { marginRight: "20rpx" },  
2093 - appendAsTree: true,  
2094 - attrs: { append: "tree" },  
2095 - on: { click: _vm.handleStartMeeting }  
2096 - },  
2097 - [_vm._v("开始视频")]  
2098 - ) 2076 + _c(
  2077 + "u-text",
  2078 + {
  2079 + staticClass: ["btn"],
  2080 + staticStyle: { marginRight: "20rpx" },
  2081 + appendAsTree: true,
  2082 + attrs: { append: "tree" },
  2083 + on: { click: _vm.handleStartMeeting }
  2084 + },
  2085 + [_vm._v("开始视频")]
  2086 + )
2099 ]) 2087 ])
2100 : _vm._e(), 2088 : _vm._e(),
  2089 + _vm.meeting
  2090 + ? _c(
  2091 + "u-text",
  2092 + {
  2093 + staticClass: ["btn"],
  2094 + staticStyle: { marginRight: "20px" },
  2095 + appendAsTree: true,
  2096 + attrs: { append: "tree" },
  2097 + on: { click: _vm.handleEndtMeeting }
  2098 + },
  2099 + [_vm._v("挂断")]
  2100 + )
  2101 + : _vm._e(),
2101 !_vm.hasInvite 2102 !_vm.hasInvite
2102 ? _c( 2103 ? _c(
2103 "u-text", 2104 "u-text",
@@ -2239,7 +2240,7 @@ eval(&quot;__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _D_P @@ -2239,7 +2240,7 @@ eval(&quot;__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _D_P
2239 /***/ (function(module, exports, __webpack_require__) { 2240 /***/ (function(module, exports, __webpack_require__) {
2240 2241
2241 "use strict"; 2242 "use strict";
2242 -eval("/* WEBPACK VAR INJECTION */(function(__webpack_provided_uni_dot_requireNativePlugin, __f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _vuex = __webpack_require__(/*! vuex */ 12);\n\n\nvar _permission = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/permission.js */ 13));\nvar _index = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/lib/index */ 14));\nvar _TrtcDefines = __webpack_require__(/*! @/TrtcCloud/lib/TrtcDefines */ 16);\n\n\n\n\nvar _GenerateTestUserSig = __webpack_require__(/*! @/debug/GenerateTestUserSig */ 17);\n\n\nvar _TrtcLocalView = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/view/TrtcLocalView */ 19));\nvar _TrtcRemoteView = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/view/TrtcRemoteView */ 25));\n\n\nvar _index2 = _interopRequireDefault(__webpack_require__(/*! @/apis/index.js */ 30));\nvar _config = _interopRequireDefault(__webpack_require__(/*! @/common/config/config.js */ 38));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(Object(source), true).forEach(function (key) {_defineProperty(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}var TrtcEvent = __webpack_provided_uni_dot_requireNativePlugin('globalEvent');\nvar socketTask = getApp().globalData.socketTask;var _default =\n{\n components: {\n TrtcLocalView: _TrtcLocalView.default,\n TrtcRemoteView: _TrtcRemoteView.default },\n\n data: function data() {\n return {\n hasInvite: false,\n //我\n meetingUserMy: {\n userId: 0 },\n\n //客服\n meetingUserService: {\n userId: 0 },\n\n meetingUsers: [{\n type: '供方',\n userId: '' },\n\n {\n type: '需方',\n userId: '' }],\n\n\n num: 10,\n trtcCloud: null,\n sdkAppId: 0,\n userSig: '',\n roomId: 0,\n userId: '',\n starting: false,\n userType: '等待进入',\n appScene: _TrtcDefines.TRTCAppScene.TRTCAppSceneVideoCall, // TRTCAppSceneVideoCall\n isFrontCamera: true,\n streamType: _TrtcDefines.TRTCVideoStreamType.TRTCVideoStreamTypeBig,\n remoteUserId: '',\n audioRoute: _TrtcDefines.TRTCCloudDef.TRTC_AUDIO_ROUTE_SPEAKER,\n messageList: [],\n messageContent: '',\n myUserInfo: '',\n room: {},\n shopId: 0,\n sellerUserId: 0 };\n\n },\n computed: _objectSpread({},\n (0, _vuex.mapState)(['user', 'statistics', 'common'])),\n\n onLoad: function onLoad(e) {var _this = this;\n __f__(\"log\", 'user', this.user, \" at pages/meeting/meeting.nvue:151\");\n this.roomId = e.roomId;\n this.sellerUserId = e.userid;\n this.userId = 'user_' + this.user.id.toString();\n this.shopId = e.shop_id;\n __f__(\"log\", 'onload e', e, \" at pages/meeting/meeting.nvue:156\");\n if (!e.roomId) {\n this.createRoom({\n \"name\": \"测试房间\",\n \"bodyText\": \"\",\n \"roomNo\": \"\",\n \"description\": \"\",\n \"clientId\": \"\",\n \"productId\": e.goods_id,\n \"shopId\": e.shop_id });\n\n } else {\n this.room = {\n id: e.roomId };\n\n }\n\n //文字聊天\n uni.$on('socketMessage', function (data) {\n if (data.messageType == 'send_to_room') {\n _this.messageList.push({\n author: data.realName,\n content: data.toMessage });\n\n }\n });\n },\n onShow: function onShow() {var _this2 = this;\n _index2.default.message.getUserTypeInfo(this.user.id).then(function (res) {\n _this2.myUserInfo = res.data && res.data.length && res.data[0] || {\n type: 3 };\n\n });\n },\n onHide: function onHide() {\n },\n mounted: function mounted() {\n if (uni.getSystemInfoSync().platform === 'android') {\n _permission.default.requestAndroidPermission('android.permission.RECORD_AUDIO');\n _permission.default.requestAndroidPermission('android.permission.CAMERA');\n }\n this.initUserSign();\n },\n onUnload: function onUnload() {\n this.destroyInstance();\n __f__(\"log\", '- onUnload', \" at pages/meeting/meeting.nvue:201\");\n },\n onBackPress: function onBackPress() {\n this.destroyInstance();\n },\n methods: {\n initUserSign: function initUserSign() {var _this3 = this;\n if (this.userId) {\n __f__(\"log\", 'initUserSign', this.userId, \" at pages/meeting/meeting.nvue:209\");\n // 生成 userSig\n var _genTestUserSig =\n\n\n (0, _GenerateTestUserSig.genTestUserSig)(this.userId),sdkAppId = _genTestUserSig.sdkAppId,userSig = _genTestUserSig.userSig;\n this.sdkAppId = sdkAppId;\n this.userSig = userSig;\n __f__(\"log\", 'sdkAppId,userSig', sdkAppId, userSig, \" at pages/meeting/meeting.nvue:217\");\n if (!sdkAppId || !userSig) {\n uni.showToast({\n title: '请填写 sdkAppId、userSig',\n icon: 'none' });\n\n }\n } else {\n setTimeout(function () {\n _this3.initUserSign();\n }, 200);\n }\n },\n handleToSubmitOrder: function handleToSubmitOrder() {\n uni.navigateBack();\n },\n handleInviteCustomerUser: function handleInviteCustomerUser() {var _this4 = this;\n uni.showLoading();\n _index2.default.message.getInviteCustomerJoin(this.room.ShopId, this.room.RoomNo).then(function (res) {\n uni.showToast({\n title: '邀请成功' });\n\n _this4.hasInvite = true;\n }).finally(function () {\n uni.hideLoading();\n });\n },\n createRoom: function createRoom(data) {var _this5 = this;\n uni.showLoading({\n title: '正在创建房间' });\n\n _index2.default.message.postAddRoom(data).then(function (res) {\n _this5.room = res.data;\n _this5.roomId = res.data.RoomNo;\n _index2.default.message.getInviteUserJoin(_this5.sellerUserId, res.data.RoomNo);\n }).finally(function () {\n uni.hideLoading();\n });\n },\n\n sendMessage: function sendMessage() {\n var that = this;\n that.messageList.push({\n author: '我',\n content: that.messageContent });\n\n that.messageContent = '';\n socketTask.send({\n data: JSON.stringify({\n formUserId: this.userId,\n contentType: \"\",\n content: this.messageContent,\n sendTime: new Date(),\n method: 'send_to_room',\n RoomNo: this.room.RoomNo,\n RoomName: this.room.Name,\n IsRoom: true }),\n\n success: function success(res) {},\n fail: function fail(e) {},\n complete: function complete() {} });\n\n },\n handleStartMeeting: function handleStartMeeting() {var _this6 = this;\n this.starting = true;\n __f__(\"log\", 'meetingUsers', this.meetingUsers, \" at pages/meeting/meeting.nvue:282\");\n this.$nextTick(function () {\n _this6.createTrtcCloud();\n _this6.enterRoom();\n _this6.startLocalPreview();\n });\n },\n handleEndtMeeting: function handleEndtMeeting() {\n this.meetingUsers.splice(0, 2, {\n type: '等待进入',\n userId: '' },\n {\n type: '等待进入',\n userId: '' });\n\n this.startLocalPreview();\n this.exitRoom();\n this.destroyInstance();\n },\n\n bindInputChange: function bindInputChange(event, type) {\n var value = event.detail.value;\n switch (type) {\n case 'roomId':{\n this.roomId = value;\n break;\n }\n case 'userId':{\n this.userId = value;\n break;\n }}\n\n },\n destroyInstance: function destroyInstance() {\n if (this.trtcCloud) {\n _index.default.destroyInstance();\n this.trtcCloud = null;\n }\n },\n createTrtcCloud: function createTrtcCloud() {\n __f__(\"log\", 'createTrtcCloud', this.sdkAppId, \" at pages/meeting/meeting.nvue:322\");\n this.trtcCloud = _index.default.createInstance();\n __f__(\"log\", 'this.trtcCloud', this.trtcCloud, \" at pages/meeting/meeting.nvue:324\");\n this.handleEvents();\n this.sdkAppId && uni.$createTrtcCloudUpload(this.sdkAppId);\n },\n enterRoom: function enterRoom() {\n try {var\n\n sdkAppId =\n\n\n this.sdkAppId,appScene = this.appScene,userSig = this.userSig;\n var param = {\n roomId: this.room.RoomNo,\n userId: this.userId,\n sdkAppId: sdkAppId,\n userSig: userSig };\n\n __f__(\"log\", 'enterRoom', param, \" at pages/meeting/meeting.nvue:341\");\n this.trtcCloud.enterRoom(param, appScene);\n this.sdkAppId && uni.$enterRoomSuccessUpload(this.sdkAppId);\n } catch (error) {\n this.messageList.unshift({\n content: '`enterRoom error = ${JSON.stringify(error)}`' });\n\n this.sdkAppId && uni.$enterRoomFailedUpload(this.sdkAppId, JSON.stringify(error));\n }\n },\n exitRoom: function exitRoom() {\n try {\n this.starting = false;\n this.stopLocalPreview();\n this.stopRemoteView();\n this.trtcCloud.exitRoom();\n } catch (e) {\n // TODO handle the exception\n }\n },\n startLocalPreview: function startLocalPreview() {\n this.trtcCloud.startLocalPreview(this.isFrontCamera, this.userId);\n this.messageList.unshift({\n content: 'startLocalPreview' });\n\n this.sdkAppId && uni.$startLocalPreviewUpload(this.sdkAppId);\n },\n stopLocalPreview: function stopLocalPreview() {\n this.trtcCloud.stopLocalPreview();\n },\n startRemoteView: function startRemoteView(userId) {var _this7 = this;\n this.messageList.unshift({\n content: 'startRemoteView' });\n\n var item = this.meetingUsers.find(function (t) {return t.userId == userId;});\n if (item) {\n this.$nextTick(function () {\n _this7.trtcCloud.startRemoteView(item.userId, _this7.streamType, item.userId);\n _this7.sdkAppId && uni.$startRemoteViewSuccessUpload(_this7.sdkAppId);\n _this7.messageList.unshift({\n content: \"startRemoteView userId = \".concat(item.userId) });\n\n });\n }\n item.starting = true;\n this.meetingUsers.push(this.meetingUsers.pop());\n },\n stopRemoteView: function stopRemoteView(userId) {\n var index = this.meetingUsers.findIndex(function (t) {return t.userId == userId;});\n if (index > -1) {\n this.meetingUsers[index].starting = false;\n this.meetingUsers.push(this.meetingUsers.pop());\n this.trtcCloud.stopRemoteView(userId, this.streamType);\n }\n },\n // 听筒、免提 切换\n switchAudioRoute: function switchAudioRoute() {\n this.audioRoute = this.audioRoute === _TrtcDefines.TRTCCloudDef.TRTC_AUDIO_ROUTE_SPEAKER ? _TrtcDefines.TRTCCloudDef.\n TRTC_AUDIO_ROUTE_EARPIECE : _TrtcDefines.TRTCCloudDef.TRTC_AUDIO_ROUTE_SPEAKER;\n this.trtcCloud.setAudioRoute(this.audioRoute);\n },\n handleEvents: function handleEvents() {var _this8 = this;\n this.trtcCloud.on('onWarning', function (res) {\n uni.showToast({\n title: \"onWarning: \".concat(JSON.stringify(res)),\n icon: 'none' });\n\n });\n this.trtcCloud.on('onError', function (res) {\n __f__(\"log\", 'onError', res, \" at pages/meeting/meeting.nvue:410\");\n _this8.messageList.unshift({\n content: \"error: \".concat(JSON.stringify(res)) });\n\n _this8.sdkAppId && uni.$onErrorUpload(_this8.sdkAppId, JSON.stringify(res));\n });\n this.trtcCloud.on('onEnterRoom', function (result) {\n __f__(\"log\", \"- onEnterRoom = \".concat(result), \" at pages/meeting/meeting.nvue:417\");\n if (result > 0) {\n _this8.messageList.unshift({\n content: \"\\u8FDB\\u623F\\u6210\\u529F\\uFF0C\\u8017\\u65F6: \".concat(result, \"ms\") });\n\n } else {\n __f__(\"log\", \"enter room failed\\uFF0Cerror code = \".concat(result), \" at pages/meeting/meeting.nvue:423\");\n }\n });\n this.trtcCloud.on('onExitRoom', function (reason) {\n var reasonList = ['主动调用 exitRoom 退房', '被服务器踢出当前房间', '当前房间整个被解散'];\n _this8.messageList.unshift({\n content: \"\\u9000\\u623F \".concat(reasonList[reason]) });\n\n });\n this.trtcCloud.on('onFirstVideoFrame', function (res) {\n __f__(\"log\", \"\\u6E32\\u67D3\\u7684\\u9996\\u5E27\\u753B\\u9762\\u54CD\\u5E94 = \".concat(JSON.stringify(res)), \" at pages/meeting/meeting.nvue:433\");\n });\n this.trtcCloud.on('onRemoteUserEnterRoom', function (userId) {\n if (_this8.meetingUsers.length >= 2) {\n _this8.meetingUsers = _this8.meetingUsers.filter(function (t) {return t.starting;});\n }\n if (_this8.meetingUsers.length < 2 && userId != _this8.userId) {\n _this8.meetingUsers.push({\n userId: userId,\n type: '用户类型' });\n\n if (_this8.meetingUsers.length < 2) {\n _this8.meetingUsers.push({\n type: '等待进入' });\n\n }\n _this8.messageList.unshift({\n content: \"\\u7528\\u6237\\u8FDB\\u623F: userId = \".concat(userId) });\n\n } else {\n _this8.messageList.unshift({\n content: \"\\u7528\\u6237\\u8FDB\\u623F\\u5931\\u8D25\\uFF0C\\u623F\\u95F4\\u5DF2\\u6EE1: userId = \".concat(userId) });\n\n }\n });\n this.trtcCloud.on('onRemoteUserLeaveRoom', function (userId) {\n var index = _this8.meetingUsers.findIndex(function (t) {return t.userId == userId;});\n if (index >= 0) {\n _this8.meetingUsers.splice(index, 1);\n }\n if (_this8.meetingUsers.length < 2) {\n _this8.meetingUsers.push({\n type: '等待进入' });\n\n }\n _this8.messageList.unshift({\n content: \"\\u7528\\u6237\\u79BB\\u5F00\\u623F\\u95F4: userId = \".concat(userId) });\n\n\n\n });\n this.trtcCloud.on('onUserVideoAvailable', function (res) {var\n\n userId =\n\n res.userId,available = res.available;\n _this8.messageList.unshift({\n content: \"onUserVideoAvailable = \".concat(JSON.stringify(res)) });\n\n if (userId && available) {\n _this8.startRemoteView(userId);\n } else {\n _this8.stopRemoteView(userId);\n }\n });\n this.trtcCloud.on('onExitRoom', function (res) {\n __f__(\"log\", \"onExitRoom = \".concat(JSON.stringify(res)), \" at pages/meeting/meeting.nvue:489\");\n });\n } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-hbuilderx/packages/uni-app-plus-nvue/dist/require-native-plugin.js */ 10)[\"default\"], __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 11)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbWVldGluZy9tZWV0aW5nLm52dWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnRkE7OztBQUdBO0FBQ0E7QUFDQTs7Ozs7QUFLQTs7O0FBR0E7QUFDQTs7O0FBR0E7QUFDQSwrRix3bkNBSEE7QUFJQSxnRDtBQUNBO0FBQ0E7QUFDQSx5Q0FEQTtBQUVBLDJDQUZBLEVBREE7O0FBS0EsTUFMQSxrQkFLQTtBQUNBO0FBQ0Esc0JBREE7QUFFQTtBQUNBO0FBQ0EsaUJBREEsRUFIQTs7QUFNQTtBQUNBO0FBQ0EsaUJBREEsRUFQQTs7QUFVQTtBQUNBLGtCQURBO0FBRUEsa0JBRkE7O0FBSUE7QUFDQSxrQkFEQTtBQUVBLGtCQUZBLEVBSkEsQ0FWQTs7O0FBbUJBLGFBbkJBO0FBb0JBLHFCQXBCQTtBQXFCQSxpQkFyQkE7QUFzQkEsaUJBdEJBO0FBdUJBLGVBdkJBO0FBd0JBLGdCQXhCQTtBQXlCQSxxQkF6QkE7QUEwQkEsc0JBMUJBO0FBMkJBLCtEQTNCQSxFQTJCQTtBQUNBLHlCQTVCQTtBQTZCQSx5RUE3QkE7QUE4QkEsc0JBOUJBO0FBK0JBLG9FQS9CQTtBQWdDQSxxQkFoQ0E7QUFpQ0Esd0JBakNBO0FBa0NBLG9CQWxDQTtBQW1DQSxjQW5DQTtBQW9DQSxlQXBDQTtBQXFDQSxxQkFyQ0E7O0FBdUNBLEdBN0NBO0FBOENBO0FBQ0EsdURBREEsQ0E5Q0E7O0FBaURBLFFBakRBLGtCQWlEQSxDQWpEQSxFQWlEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFEQTtBQUVBLHNCQUZBO0FBR0Esb0JBSEE7QUFJQSx5QkFKQTtBQUtBLHNCQUxBO0FBTUEsK0JBTkE7QUFPQSwyQkFQQTs7QUFTQSxLQVZBLE1BVUE7QUFDQTtBQUNBLG9CQURBOztB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T0FGQTtBQUdBLEtBN1JBLEVBekdBLEUiLCJmaWxlIjoiNDYuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcblx0PHZpZXc+XHJcblx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vc3RhdGljL2hvbWUvYmFuY2syLnBuZ1wiIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcIiBtb2RlPVwid2lkdGhGaXhcIj48L2ltYWdlPlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJiYWNrXCI+XHJcblx0XHRcdDwhLS0g5bmz5Y+w5a6i5pyNIC0tPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImxpc3QxXCIgc3R5bGU9XCJhbGlnbi1pdGVtczogY2VudGVyO292ZXJmbG93OiBoaWRkZW47XCI+XHJcblx0XHRcdFx0PHRleHQgY2xhc3M9XCJuYW1lXCI+e3sgdXNlclR5cGUgfHwgJ+etieW+hei/m+WFpScgfX08L3RleHQ+XHJcblx0XHRcdFx0PHZpZXcgc3R5bGU9XCJoZWlnaHQ6MzYwcnB4O2ZsZXgtZGlyZWN0aW9uOiByb3c7anVzdGlmeS1jb250ZW50OiBjZW50ZXI7bWFyZ2luOiAwIGF1dG87XCIgaWQ9J3Jvb3QnPlxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHQ8YmxvY2sgdi1pZj1cIm1lZXRpbmdVc2VyU2VydmljZS51c2VySWQgJiYgc3RhcnRpbmdcIj5cclxuXHRcdFx0XHRcdFx0PHRydGMtbG9jYWwtdmlldyAgOnZpZXdJZD1cIm1lZXRpbmdVc2VyU2VydmljZS51c2VySWRcIiB2LWlmPVwidXNlcklkID09IG1lZXRpbmdVc2VyU2VydmljZS51c2VySWRcIlxyXG5cdFx0XHRcdFx0XHRcdHN0eWxlPVwiaGVpZ2h0OiAzODBycHg7d2lkdGg6IDM2MHJweDtcIj5cclxuXHRcdFx0XHRcdFx0PC90cnRjLWxvY2FsLXZpZXc+XHJcblx0XHRcdFx0XHRcdDx0cnRjLXJlbW90ZS12aWV3IHYtZWxzZSA6dXNlcklkPVwiaXRlbS51c2VySWRcIlxyXG5cdFx0XHRcdFx0XHRcdDp2aWV3SWQ9XCJpdGVtLnVzZXJJZFwiIHN0eWxlPVwiaGVpZ2h0OiAzNjBycHg7d2lkdGg6IDMwMHJweDtib3JkZXI6IDFweCBzb2xpZCAjZmZmO1wiPlxyXG5cdFx0XHRcdFx0XHQ8L3RydGMtcmVtb3RlLXZpZXc+XHJcblx0XHRcdFx0XHQ8L2Jsb2NrPlxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHQ8aW1hZ2Ugdi1lbHNlIHNyYz1cIi4uLy4uL3N0YXRpYy9ob21lL3JlbiAoMSkud2VicFwiXHJcblx0XHRcdFx0XHRcdHN0eWxlPVwid2lkdGg6IDM4MHJweDtoZWlnaHQ6IDM2MHJweDtib3JkZXItcmFkaXVzOiA0MHJweDtcIiBtb2RlPVwiYXNwZWN0RmlsbFwiPlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8dmlldyBzdHlsZT1cImZsZXgtZGlyZWN0aW9uOiByb3c7anVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7d2lkdGg6IDEwMHZ3O1wiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwibGlzdDFcIiBzdHlsZT1cIndpZHRoOiAzMDBycHg7bWFyZ2luLXJpZ2h0OiAyMHB4O1wiIHYtZm9yPVwiaXRlbSBpbiBtZWV0aW5nVXNlcnNcIj5cclxuXHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwibmFtZVwiPnt7IGl0ZW0udHlwZSB8fCAn562J5b6F6L+b5YWlJyB9fTwvdGV4dD5cclxuXHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDozNjBycHg7XCI+XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHQ8YmxvY2sgdi1pZj1cIml0ZW0gJiYgaXRlbS51c2VySWQgJiYgaXRlbS5zdGFydGluZ1wiPlxyXG5cdFx0XHRcdFx0XHRcdDx0cnRjLWxvY2FsLXZpZXcgIDp2aWV3SWQ9XCJpdGVtLnVzZXJJZFwiIHYtaWY9XCJpdGVtLnVzZXJJZCA9PSB1c2VySWRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJoZWlnaHQ6IDM4MHJweDt3aWR0aDogMzYwcnB4O1wiPlxyXG5cdFx0XHRcdFx0XHRcdDwvdHJ0Yy1sb2NhbC12aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDx0cnRjLXJlbW90ZS12aWV3IDp1c2VySWQ9XCJpdGVtLnVzZXJJZFwiXHJcblx0XHRcdFx0XHRcdFx0XHQ6dmlld0lkPVwiaXRlbS51c2VySWRcIiBzdHlsZT1cImhlaWdodDogMzYwcnB4O3dpZHRoOiAzMDBycHg7Ym9yZGVyOiAxcHggc29saWQgI2ZmZjtcIj5cclxuXHRcdFx0XHRcdFx0XHQ8L3RydGMtcmVtb3RlLXZpZXc+XHJcblx0XHRcdFx0XHRcdDwvYmxvY2s+XHJcblx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHQ8aW1hZ2Ugdi1lbHNlIHNyYz1cIi4uLy4uL3N0YXRpYy9ob21lL3JlbiAoMikud2VicFwiXHJcblx0XHRcdFx0XHRcdFx0c3R5bGU9XCJ3aWR0aDogMzAwcnB4O2hlaWdodDogMzYwcnB4O2JvcmRlci1yYWRpdXM6IDQwcnB4O1wiIG1vZGU9XCJhc3BlY3RGaWxsXCI+XHJcblx0XHRcdFx0XHRcdDwvaW1hZ2U+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IHN0eWxlPVwiZmxleC1kaXJlY3Rpb246IHJvdztqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcIj5cclxuXHRcdFx0XHQ8YmxvY2sgdi1pZj1cIm15VXNlckluZm8mJm15VXNlckluZm8udHlwZT09M1wiPlxyXG5cdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJidG5cIiB2LWlmPVwibWVldGluZ1VzZXJzWzBdICYmIG1lZXRpbmdVc2Vyc1swXS5zdGFydGluZ1wiIEBjbGljaz1cImhhbmRsZUVuZHRNZWV0aW5nXCJcclxuXHRcdFx0XHRcdFx0c3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDIwcHg7XCI+XHJcblx0XHRcdFx0XHRcdOaMguaWrVxyXG5cdFx0XHRcdFx0PC90ZXh0PlxyXG5cdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJidG5cIiB2LWVsc2UgQGNsaWNrPVwiaGFuZGxlU3RhcnRNZWV0aW5nXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDIwcnB4O1wiPlxyXG5cdFx0XHRcdFx0XHTlvIDlp4vop4bpopFcclxuXHRcdFx0XHRcdDwvdGV4dD5cclxuXHRcdFx0XHQ8L2Jsb2NrPlxyXG5cclxuXHRcdFx0XHQ8dGV4dCBjbGFzcz1cImJ0blwiIEBjbGljaz1cImhhbmRsZUludml0ZUN1c3RvbWVyVXNlclwiIHYtaWY9XCIhaGFzSW52aXRlXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDIwcnB4O1wiPlxyXG5cdFx0XHRcdFx06YKA6K+35a6i5pyNXHJcblx0XHRcdFx0PC90ZXh0PlxyXG5cdFx0XHRcdDx0ZXh0IGNsYXNzPVwiYnRuXCIgdi1pZj1cIm15VXNlckluZm8gJiYgbXlVc2VySW5mby50eXBlIT00XCIgQGNsaWNrPVwiaGFuZGxlVG9TdWJtaXRPcmRlclwiPlxyXG5cdFx0XHRcdFx056uL5Y2z5LiL5Y2VXHJcblx0XHRcdFx0PC90ZXh0PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDxzY3JvbGwtdmlldyA6c2Nyb2xsLXk9XCJ0cnVlXCIgY2xhc3M9XCJtZXNzYWdlXCI+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJcIiBzdHlsZT1cIndpZHRoOiAzMjBweDtcIj5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiXCIgdi1mb3I9XCJpdGVtIGluIG1lc3NhZ2VMaXN0XCJcclxuXHRcdFx0XHRcdFx0c3R5bGU9XCJkaXNwbGF5OiBmbGV4O2ZsZXgtZGlyZWN0aW9uOiByb3c7ZmxleC13cmFwOiB3cmFwO1wiPlxyXG5cdFx0XHRcdFx0XHQ8dGV4dCBzdHlsZT1cImNvbG9yOiAjRkZEQTk3IDtcIj57e2l0ZW0uYXV0aG9yIHx8ICfns7vnu58nfX06PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHQ8dGV4dCBzdHlsZT1cImNvbG9yOiAjZmZmO21hcmdpbi1sZWZ0OiAxMHJweDtcIj5cclxuXHRcdFx0XHRcdFx0XHR7e2l0ZW0uY29udGVudH19XHJcblx0XHRcdFx0XHRcdDwvdGV4dD5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvc2Nyb2xsLXZpZXc+XHJcblx0XHRcdDx2aWV3XHJcblx0XHRcdFx0c3R5bGU9XCJwb3NpdGlvbjogZml4ZWQ7Ym90dG9tOiAwO2xlZnQ6IDA7cmlnaHQ6IDA7anVzdGlmeS1jb250ZW50OiBjZW50ZXI7YWxpZ24taXRlbXM6IGNlbnRlcjtib3R0b206IDIwcHg7XCI+XHJcblx0XHRcdFx0PGlucHV0IGNsYXNzPVwiaW5wdXRcIiBwbGFjZWhvbGRlcj1cIuWbnuWkjVwiIHBsYWNlaG9sZGVyLXN0eWxlPVwiY29sb3I6I2ZmZlwiIHYtbW9kZWw9XCJtZXNzYWdlQ29udGVudFwiXHJcblx0XHRcdFx0XHRAY29uZmlybT1cInNlbmRNZXNzYWdlXCIgY29uZmlybS10eXBlPVwic2VuZFwiIC8+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdmlldz5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQ+XHJcblx0aW1wb3J0IHtcclxuXHRcdG1hcFN0YXRlXHJcblx0fSBmcm9tICd2dWV4JztcclxuXHRpbXBvcnQgcGVybWlzaW9uIGZyb20gXCJAL1RydGNDbG91ZC9wZXJtaXNzaW9uLmpzXCI7XHJcblx0aW1wb3J0IFRydGNDbG91ZCBmcm9tICdAL1RydGNDbG91ZC9saWIvaW5kZXgnO1xyXG5cdGltcG9ydCB7XHJcblx0XHRUUlRDQXBwU2NlbmUsXHJcblx0XHRUUlRDVmlkZW9TdHJlYW1UeXBlLFxyXG5cdFx0VFJUQ0Nsb3VkRGVmXHJcblx0fSBmcm9tICdAL1RydGNDbG91ZC9saWIvVHJ0Y0RlZmluZXMnO1xyXG5cdGltcG9ydCB7XHJcblx0XHRnZW5UZXN0VXNlclNpZ1xyXG5cdH0gZnJvbSAnQC9kZWJ1Zy9HZW5lcmF0ZVRlc3RVc2VyU2lnJztcclxuXHRpbXBvcnQgVHJ0Y0xvY2FsVmlldyBmcm9tICdAL1RydGNDbG91ZC92aWV3L1RydGNMb2NhbFZpZXcnO1xyXG5cdGltcG9ydCBUcnRjUmVtb3RlVmlldyBmcm9tICdAL1RydGNDbG91ZC92aWV3L1RydGNSZW1vdGVWaWV3JztcclxuXHRjb25zdCBUcnRjRXZlbnQgPSB1bmkucmVxdWlyZU5hdGl2ZVBsdWdpbignZ2xvYmFsRXZlbnQnKTtcclxuXHJcblx0aW1wb3J0IEFQSSBmcm9tICdAL2FwaXMvaW5kZXguanMnXHJcblx0aW1wb3J0IGNvbmZpZyBmcm9tICdAL2NvbW1vbi9jb25maWcvY29uZmlnLmpzJ1xyXG5cdGxldCBzb2NrZXRUYXNrID0gZ2V0QXBwKCkuZ2xvYmFsRGF0YS5zb2NrZXRUYXNrO1xyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdGNvbXBvbmVudHM6IHtcclxuXHRcdFx0VHJ0Y0xvY2FsVmlldzogVHJ0Y0xvY2FsVmlldyxcclxuXHRcdFx0VHJ0Y1JlbW90ZVZpZXc6IFRydGNSZW1vdGVWaWV3LFxyXG5cdFx0fSxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0aGFzSW52aXRlOiBmYWxzZSxcclxuXHRcdFx0XHQvL+aIkVxyXG5cdFx0XHRcdG1lZXRpbmdVc2VyTXk6IHtcclxuXHRcdFx0XHRcdHVzZXJJZDogMFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0Ly/lrqLmnI1cclxuXHRcdFx0XHRtZWV0aW5nVXNlclNlcnZpY2U6IHtcclxuXHRcdFx0XHRcdHVzZXJJZDogMFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0bWVldGluZ1VzZXJzOiBbe1xyXG5cdFx0XHRcdFx0XHR0eXBlOiAn5L6b5pa5JyxcclxuXHRcdFx0XHRcdFx0dXNlcklkOiAnJ1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHtcclxuXHRcdFx0XHRcdFx0dHlwZTogJ+mcgOaWuScsXHJcblx0XHRcdFx0XHRcdHVzZXJJZDogJydcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XSxcclxuXHRcdFx0XHRudW06IDEwLFxyXG5cdFx0XHRcdHRydGNDbG91ZDogbnVsbCxcclxuXHRcdFx0XHRzZGtBcHBJZDogMCxcclxuXHRcdFx0XHR1c2VyU2lnOiAnJyxcclxuXHRcdFx0XHRyb29tSWQ6IDAsXHJcblx0XHRcdFx0dXNlcklkOiAnJyxcclxuXHRcdFx0XHRzdGFydGluZzogZmFsc2UsXHJcblx0XHRcdFx0dXNlclR5cGU6ICfnrYnlvoXov5vlhaUnLFxyXG5cdFx0XHRcdGFwcFNjZW5lOiBUUlRDQXBwU2NlbmUuVFJUQ0FwcFNjZW5lVmlkZW9DYWxsLCAvLyBUUlRDQXBwU2NlbmVWaWRlb0NhbGxcclxuXHRcdFx0XHRpc0Zyb250Q2FtZXJhOiB0cnVlLFxyXG5cdFx0XHRcdHN0cmVhbVR5cGU6IFRSVENWaWRlb1N0cmVhbVR5cGUuVFJUQ1ZpZGVvU3RyZWFtVHlwZUJpZyxcclxuXHRcdFx0XHRyZW1vdGVVc2VySWQ6ICcnLFxyXG5cdFx0XHRcdGF1ZGlvUm91dGU6IFRSVENDbG91ZERlZi5UUlRDX0FVRElPX1JPVVRFX1NQRUFLRVIsXHJcblx0XHRcdFx0bWVzc2FnZUxpc3Q6IFtdLFxyXG5cdFx0XHRcdG1lc3NhZ2VDb250ZW50OiAnJyxcclxuXHRcdFx0XHRteVVzZXJJbmZvOiAnJyxcclxuXHRcdFx0XHRyb29tOiB7fSxcclxuXHRcdFx0XHRzaG9wSWQ6IDAsXHJcblx0XHRcdFx0c2VsbGVyVXNlcklkOiAwXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRjb21wdXRlZDoge1xyXG5cdFx0XHQuLi5tYXBTdGF0ZShbJ3VzZXInLCAnc3RhdGlzdGljcycsICdjb21tb24nXSlcclxuXHRcdH0sXHJcblx0XHRvbkxvYWQoZSkge1xyXG5cdFx0XHRjb25zb2xlLmxvZygndXNlcicsdGhpcy51c2VyKTtcclxuXHRcdFx0dGhpcy5yb29tSWQgPSBlLnJvb21JZDtcclxuXHRcdFx0dGhpcy5zZWxsZXJVc2VySWQgPSBlLnVzZXJpZDtcclxuXHRcdFx0dGhpcy51c2VySWQgPSAndXNlcl8nICsgdGhpcy51c2VyLmlkLnRvU3RyaW5nKCk7XHJcblx0XHRcdHRoaXMuc2hvcElkID0gZS5zaG9wX2lkO1xyXG5cdFx0XHRjb25zb2xlLmxvZygnb25sb2FkIGUnLCBlKTtcclxuXHRcdFx0aWYgKCFlLnJvb21JZCkge1xyXG5cdFx0XHRcdHRoaXMuY3JlYXRlUm9vbSh7XHJcblx0XHRcdFx0XHRcIm5hbWVcIjogXCLmtYvor5XmiL/pl7RcIixcclxuXHRcdFx0XHRcdFwiYm9keVRleHRcIjogXCJcIixcclxuXHRcdFx0XHRcdFwicm9vbU5vXCI6IFwiXCIsXHJcblx0XHRcdFx0XHRcImRlc2NyaXB0aW9uXCI6IFwiXCIsXHJcblx0XHRcdFx0XHRcImNsaWVudElkXCI6IFwiXCIsXHJcblx0XHRcdFx0XHRcInByb2R1Y3RJZFwiOiBlLmdvb2RzX2lkLFxyXG5cdFx0XHRcdFx0XCJzaG9wSWRcIjogZS5zaG9wX2lkXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5yb29tID0ge1xyXG5cdFx0XHRcdFx0aWQ6IGUucm9vbUlkXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly/mloflrZfogYrlpKlcclxuXHRcdFx0dW5pLiRvbignc29ja2V0TWVzc2FnZScsIChkYXRhKSA9PiB7XHJcblx0XHRcdFx0aWYgKGRhdGEubWVzc2FnZVR5cGUgPT0gJ3NlbmRfdG9fcm9vbScpIHtcclxuXHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3QucHVzaCh7XHJcblx0XHRcdFx0XHRcdGF1dGhvcjogZGF0YS5yZWFsTmFtZSxcclxuXHRcdFx0XHRcdFx0Y29udGVudDogZGF0YS50b01lc3NhZ2VcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdG9uU2hvdygpIHtcclxuXHRcdFx0QVBJLm1lc3NhZ2UuZ2V0VXNlclR5cGVJbmZvKHRoaXMudXNlci5pZCkudGhlbihyZXMgPT4ge1xyXG5cdFx0XHRcdHRoaXMubXlVc2VySW5mbyA9IHJlcy5kYXRhICYmIHJlcy5kYXRhLmxlbmd0aCAmJiByZXMuZGF0YVswXSB8fCB7XHJcblx0XHRcdFx0XHR0eXBlOiAzXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRvbkhpZGUoKSB7XHJcblx0XHR9LFxyXG5cdFx0bW91bnRlZCgpIHtcclxuXHRcdFx0aWYgKHVuaS5nZXRTeXN0ZW1JbmZvU3luYygpLnBsYXRmb3JtID09PSAnYW5kcm9pZCcpIHtcclxuXHRcdFx0XHRwZXJtaXNpb24ucmVxdWVzdEFuZHJvaWRQZXJtaXNzaW9uKCdhbmRyb2lkLnBlcm1pc3Npb24uUkVDT1JEX0FVRElPJyk7XHJcblx0XHRcdFx0cGVybWlzaW9uLnJlcXVlc3RBbmRyb2lkUGVybWlzc2lvbignYW5kcm9pZC5wZXJtaXNzaW9uLkNBTUVSQScpO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuaW5pdFVzZXJTaWduKCk7XHJcblx0XHR9LFxyXG5cdFx0b25VbmxvYWQoKSB7XHJcblx0XHRcdHRoaXMuZGVzdHJveUluc3RhbmNlKCk7XHJcblx0XHRcdGNvbnNvbGUubG9nKCctIG9uVW5sb2FkJyk7XHJcblx0XHR9LFxyXG5cdFx0b25CYWNrUHJlc3MoKSB7XHJcblx0XHRcdHRoaXMuZGVzdHJveUluc3RhbmNlKCk7XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRpbml0VXNlclNpZ24oKSB7XHJcblx0XHRcdFx0aWYgKHRoaXMudXNlcklkKSB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnaW5pdFVzZXJTaWduJyx0aGlzLnVzZXJJZCk7XHJcblx0XHRcdFx0XHQvLyDnlJ/miJAgdXNlclNpZ1xyXG5cdFx0XHRcdFx0Y29uc3Qge1xyXG5cdFx0XHRcdFx0XHRzZGtBcHBJZCxcclxuXHRcdFx0XHRcdFx0dXNlclNpZ1xyXG5cdFx0XHRcdFx0fSA9IGdlblRlc3RVc2VyU2lnKHRoaXMudXNlcklkKTtcclxuXHRcdFx0XHRcdHRoaXMuc2RrQXBwSWQgPSBzZGtBcHBJZDtcclxuXHRcdFx0XHRcdHRoaXMudXNlclNpZyA9IHVzZXJTaWc7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnc2RrQXBwSWQsdXNlclNpZycsc2RrQXBwSWQsdXNlclNpZyk7XHJcblx0XHRcdFx0XHRpZiAoIXNka0FwcElkIHx8ICF1c2VyU2lnKSB7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHRcdHRpdGxlOiAn6K+35aGr5YaZIHNka0FwcElk44CBdXNlclNpZycsXHJcblx0XHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0c2V0VGltZW91dCgoKT0+e1xyXG5cdFx0XHRcdFx0XHR0aGlzLmluaXRVc2VyU2lnbigpO1xyXG5cdFx0XHRcdFx0fSwyMDApXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRoYW5kbGVUb1N1Ym1pdE9yZGVyKCkge1xyXG5cdFx0XHRcdHVuaS5uYXZpZ2F0ZUJhY2soKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0aGFuZGxlSW52aXRlQ3VzdG9tZXJVc2VyKCkge1xyXG5cdFx0XHRcdHVuaS5zaG93TG9hZGluZygpO1xyXG5cdFx0XHRcdEFQSS5tZXNzYWdlLmdldEludml0ZUN1c3RvbWVySm9pbih0aGlzLnJvb20uU2hvcElkLCB0aGlzLnJvb20uUm9vbU5vKS50aGVuKHJlcyA9PiB7XHJcblx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcclxuXHRcdFx0XHRcdFx0dGl0bGU6ICfpgoDor7fmiJDlip8nXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0dGhpcy5oYXNJbnZpdGUgPSB0cnVlO1xyXG5cdFx0XHRcdH0pLmZpbmFsbHkoKCkgPT4ge1xyXG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGNyZWF0ZVJvb20oZGF0YSkge1xyXG5cdFx0XHRcdHVuaS5zaG93TG9hZGluZyh7XHJcblx0XHRcdFx0XHR0aXRsZTogJ+ato+WcqOWIm+W7uuaIv+mXtCdcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRBUEkubWVzc2FnZS5wb3N0QWRkUm9vbShkYXRhKS50aGVuKHJlcyA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnJvb20gPSByZXMuZGF0YTtcclxuXHRcdFx0XHRcdHRoaXMucm9vbUlkID0gcmVzLmRhdGEuUm9vbU5vO1xyXG5cdFx0XHRcdFx0QVBJLm1lc3NhZ2UuZ2V0SW52aXRlVXNlckpvaW4odGhpcy5zZWxsZXJVc2VySWQsIHJlcy5kYXRhLlJvb21Obyk7XHJcblx0XHRcdFx0fSkuZmluYWxseSgoKSA9PiB7XHJcblx0XHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHJcblx0XHRcdHNlbmRNZXNzYWdlKCkge1xyXG5cdFx0XHRcdGxldCB0aGF0ID0gdGhpcztcclxuXHRcdFx0XHR0aGF0Lm1lc3NhZ2VMaXN0LnB1c2goe1xyXG5cdFx0XHRcdFx0YXV0aG9yOiAn5oiRJyxcclxuXHRcdFx0XHRcdGNvbnRlbnQ6IHRoYXQubWVzc2FnZUNvbnRlbnRcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHRcdHRoYXQubWVzc2FnZUNvbnRlbnQgPSAnJztcclxuXHRcdFx0XHRzb2NrZXRUYXNrLnNlbmQoe1xyXG5cdFx0XHRcdFx0ZGF0YTogSlNPTi5zdHJpbmdpZnkoe1xyXG5cdFx0XHRcdFx0XHRmb3JtVXNlcklkOiB0aGlzLnVzZXJJZCxcclxuXHRcdFx0XHRcdFx0Y29udGVudFR5cGU6IFwiXCIsXHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IHRoaXMubWVzc2FnZUNvbnRlbnQsXHJcblx0XHRcdFx0XHRcdHNlbmRUaW1lOiBuZXcgRGF0ZSgpLFxyXG5cdFx0XHRcdFx0XHRtZXRob2Q6ICdzZW5kX3RvX3Jvb20nLFxyXG5cdFx0XHRcdFx0XHRSb29tTm86IHRoaXMucm9vbS5Sb29tTm8sXHJcblx0XHRcdFx0XHRcdFJvb21OYW1lOiB0aGlzLnJvb20uTmFtZSxcclxuXHRcdFx0XHRcdFx0SXNSb29tOiB0cnVlXHJcblx0XHRcdFx0XHR9KSxcclxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzKSB7fSxcclxuXHRcdFx0XHRcdGZhaWwoZSkge30sXHJcblx0XHRcdFx0XHRjb21wbGV0ZSgpIHt9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGhhbmRsZVN0YXJ0TWVldGluZygpIHtcclxuXHRcdFx0XHR0aGlzLnN0YXJ0aW5nID0gdHJ1ZTtcclxuXHRcdFx0XHRjb25zb2xlLmxvZygnbWVldGluZ1VzZXJzJyx0aGlzLm1lZXRpbmdVc2Vycyk7XHJcblx0XHRcdFx0dGhpcy4kbmV4dFRpY2soKCkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5jcmVhdGVUcnRjQ2xvdWQoKTtcclxuXHRcdFx0XHRcdHRoaXMuZW50ZXJSb29tKCk7XHJcblx0XHRcdFx0XHR0aGlzLnN0YXJ0TG9jYWxQcmV2aWV3KCk7XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSxcclxuXHRcdFx0aGFuZGxlRW5kdE1lZXRpbmcoKSB7XHJcblx0XHRcdFx0dGhpcy5tZWV0aW5nVXNlcnMuc3BsaWNlKDAsIDIsIHtcclxuXHRcdFx0XHRcdHR5cGU6ICfnrYnlvoXov5vlhaUnLFxyXG5cdFx0XHRcdFx0dXNlcklkOiAnJ1xyXG5cdFx0XHRcdH0sIHtcclxuXHRcdFx0XHRcdHR5cGU6ICfnrYnlvoXov5vlhaUnLFxyXG5cdFx0XHRcdFx0dXNlcklkOiAnJ1xyXG5cdFx0XHRcdH0sIClcclxuXHRcdFx0XHR0aGlzLnN0YXJ0TG9jYWxQcmV2aWV3KCk7XHJcblx0XHRcdFx0dGhpcy5leGl0Um9vbSgpO1xyXG5cdFx0XHRcdHRoaXMuZGVzdHJveUluc3RhbmNlKCk7XHJcblx0XHRcdH0sXHJcblxyXG5cdFx0XHRiaW5kSW5wdXRDaGFuZ2UoZXZlbnQsIHR5cGUpIHtcclxuXHRcdFx0XHRjb25zdCB2YWx1ZSA9IGV2ZW50LmRldGFpbC52YWx1ZTtcclxuXHRcdFx0XHRzd2l0Y2ggKHR5cGUpIHtcclxuXHRcdFx0XHRcdGNhc2UgJ3Jvb21JZCc6IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5yb29tSWQgPSB2YWx1ZTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRjYXNlICd1c2VySWQnOiB7XHJcblx0XHRcdFx0XHRcdHRoaXMudXNlcklkID0gdmFsdWU7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0ZGVzdHJveUluc3RhbmNlKCkge1xyXG5cdFx0XHRcdGlmICh0aGlzLnRydGNDbG91ZCkge1xyXG5cdFx0XHRcdFx0VHJ0Y0Nsb3VkLmRlc3Ryb3lJbnN0YW5jZSgpO1xyXG5cdFx0XHRcdFx0dGhpcy50cnRjQ2xvdWQgPSBudWxsO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0Y3JlYXRlVHJ0Y0Nsb3VkKCkge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdjcmVhdGVUcnRjQ2xvdWQnLCB0aGlzLnNka0FwcElkKTtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZCA9IFRydGNDbG91ZC5jcmVhdGVJbnN0YW5jZSgpO1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCd0aGlzLnRydGNDbG91ZCcsIHRoaXMudHJ0Y0Nsb3VkKVxyXG5cdFx0XHRcdHRoaXMuaGFuZGxlRXZlbnRzKCk7XHJcblx0XHRcdFx0dGhpcy5zZGtBcHBJZCAmJiB1bmkuJGNyZWF0ZVRydGNDbG91ZFVwbG9hZCh0aGlzLnNka0FwcElkKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0ZW50ZXJSb29tKCkge1xyXG5cdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRjb25zdCB7XHJcblx0XHRcdFx0XHRcdHNka0FwcElkLFxyXG5cdFx0XHRcdFx0XHRhcHBTY2VuZSxcclxuXHRcdFx0XHRcdFx0dXNlclNpZ1xyXG5cdFx0XHRcdFx0fSA9IHRoaXM7XHJcblx0XHRcdFx0XHRsZXQgcGFyYW0gPSB7XHJcblx0XHRcdFx0XHRcdHJvb21JZDogdGhpcy5yb29tLlJvb21ObyxcclxuXHRcdFx0XHRcdFx0dXNlcklkOiB0aGlzLnVzZXJJZCxcclxuXHRcdFx0XHRcdFx0c2RrQXBwSWQsXHJcblx0XHRcdFx0XHRcdHVzZXJTaWdcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnZW50ZXJSb29tJywgcGFyYW0pO1xyXG5cdFx0XHRcdFx0dGhpcy50cnRjQ2xvdWQuZW50ZXJSb29tKHBhcmFtLCBhcHBTY2VuZSk7XHJcblx0XHRcdFx0XHR0aGlzLnNka0FwcElkICYmIHVuaS4kZW50ZXJSb29tU3VjY2Vzc1VwbG9hZCh0aGlzLnNka0FwcElkKTtcclxuXHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xyXG5cdFx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdC51bnNoaWZ0KHtcclxuXHRcdFx0XHRcdFx0Y29udGVudDogJ2BlbnRlclJvb20gZXJyb3IgPSAke0pTT04uc3RyaW5naWZ5KGVycm9yKX1gJ1xyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdHRoaXMuc2RrQXBwSWQgJiYgdW5pLiRlbnRlclJvb21GYWlsZWRVcGxvYWQodGhpcy5zZGtBcHBJZCwgSlNPTi5zdHJpbmdpZnkoZXJyb3IpKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdGV4aXRSb29tKCkge1xyXG5cdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHR0aGlzLnN0YXJ0aW5nID0gZmFsc2U7XHJcblx0XHRcdFx0XHR0aGlzLnN0b3BMb2NhbFByZXZpZXcoKTtcclxuXHRcdFx0XHRcdHRoaXMuc3RvcFJlbW90ZVZpZXcoKTtcclxuXHRcdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLmV4aXRSb29tKCk7XHJcblx0XHRcdFx0fSBjYXRjaCAoZSkge1xyXG5cdFx0XHRcdFx0Ly8gVE9ETyBoYW5kbGUgdGhlIGV4Y2VwdGlvblxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0c3RhcnRMb2NhbFByZXZpZXcoKSB7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQuc3RhcnRMb2NhbFByZXZpZXcodGhpcy5pc0Zyb250Q2FtZXJhLCB0aGlzLnVzZXJJZCk7XHJcblx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdC51bnNoaWZ0KHtcclxuXHRcdFx0XHRcdGNvbnRlbnQ6ICdzdGFydExvY2FsUHJldmlldydcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnNka0FwcElkICYmIHVuaS4kc3RhcnRMb2NhbFByZXZpZXdVcGxvYWQodGhpcy5zZGtBcHBJZCk7XHJcblx0XHRcdH0sXHJcblx0XHRcdHN0b3BMb2NhbFByZXZpZXcoKSB7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQuc3RvcExvY2FsUHJldmlldygpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRzdGFydFJlbW90ZVZpZXcodXNlcklkKSB7XHJcblx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdC51bnNoaWZ0KHtcclxuXHRcdFx0XHRcdGNvbnRlbnQ6ICdzdGFydFJlbW90ZVZpZXcnXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0bGV0IGl0ZW0gPSB0aGlzLm1lZXRpbmdVc2Vycy5maW5kKHQgPT4gdC51c2VySWQgPT0gdXNlcklkKTtcclxuXHRcdFx0XHRpZiAoaXRlbSkge1xyXG5cdFx0XHRcdFx0dGhpcy4kbmV4dFRpY2soKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnRydGNDbG91ZC5zdGFydFJlbW90ZVZpZXcoaXRlbS51c2VySWQsIHRoaXMuc3RyZWFtVHlwZSwgaXRlbS51c2VySWQpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLnNka0FwcElkICYmIHVuaS4kc3RhcnRSZW1vdGVWaWV3U3VjY2Vzc1VwbG9hZCh0aGlzLnNka0FwcElkKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdC51bnNoaWZ0KHtcclxuXHRcdFx0XHRcdFx0XHRjb250ZW50OiBgc3RhcnRSZW1vdGVWaWV3IHVzZXJJZCA9ICR7aXRlbS51c2VySWR9YFxyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGl0ZW0uc3RhcnRpbmcgPSB0cnVlO1xyXG5cdFx0XHRcdHRoaXMubWVldGluZ1VzZXJzLnB1c2godGhpcy5tZWV0aW5nVXNlcnMucG9wKCkpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRzdG9wUmVtb3RlVmlldyh1c2VySWQpIHtcclxuXHRcdFx0XHRsZXQgaW5kZXggPSB0aGlzLm1lZXRpbmdVc2Vycy5maW5kSW5kZXgodCA9PiB0LnVzZXJJZCA9PSB1c2VySWQpO1xyXG5cdFx0XHRcdGlmIChpbmRleCA+IC0xKSB7XHJcblx0XHRcdFx0XHR0aGlzLm1lZXRpbmdVc2Vyc1tpbmRleF0uc3RhcnRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdHRoaXMubWVldGluZ1VzZXJzLnB1c2godGhpcy5tZWV0aW5nVXNlcnMucG9wKCkpO1xyXG5cdFx0XHRcdFx0dGhpcy50cnRjQ2xvdWQuc3RvcFJlbW90ZVZpZXcodXNlcklkLCB0aGlzLnN0cmVhbVR5cGUpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5ZCs562S44CB5YWN5o+QIOWIh+aNolxyXG5cdFx0XHRzd2l0Y2hBdWRpb1JvdXRlKCkge1xyXG5cdFx0XHRcdHRoaXMuYXVkaW9Sb3V0ZSA9IHRoaXMuYXVkaW9Sb3V0ZSA9PT0gVFJUQ0Nsb3VkRGVmLlRSVENfQVVESU9fUk9VVEVfU1BFQUtFUiA/IFRSVENDbG91ZERlZlxyXG5cdFx0XHRcdFx0LlRSVENfQVVESU9fUk9VVEVfRUFSUElFQ0UgOiBUUlRDQ2xvdWREZWYuVFJUQ19BVURJT19ST1VURV9TUEVBS0VSO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLnNldEF1ZGlvUm91dGUodGhpcy5hdWRpb1JvdXRlKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0aGFuZGxlRXZlbnRzKCkge1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLm9uKCdvbldhcm5pbmcnLCAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcclxuXHRcdFx0XHRcdFx0dGl0bGU6IGBvbldhcm5pbmc6ICR7SlNPTi5zdHJpbmdpZnkocmVzKX1gLFxyXG5cdFx0XHRcdFx0XHRpY29uOiAnbm9uZScsXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5vbignb25FcnJvcicsIChyZXMpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdvbkVycm9yJyxyZXMpXHJcblx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VMaXN0LnVuc2hpZnQoe1xyXG5cdFx0XHRcdFx0XHRjb250ZW50OiBgZXJyb3I6ICR7SlNPTi5zdHJpbmdpZnkocmVzKX1gXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0dGhpcy5zZGtBcHBJZCAmJiB1bmkuJG9uRXJyb3JVcGxvYWQodGhpcy5zZGtBcHBJZCwgSlNPTi5zdHJpbmdpZnkocmVzKSk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uRW50ZXJSb29tJywgKHJlc3VsdCkgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coYC0gb25FbnRlclJvb20gPSAke3Jlc3VsdH1gKTtcclxuXHRcdFx0XHRcdGlmIChyZXN1bHQgPiAwKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3QudW5zaGlmdCh7XHJcblx0XHRcdFx0XHRcdFx0Y29udGVudDogYOi/m+aIv+aIkOWKn++8jOiAl+aXtjogJHtyZXN1bHR9bXNgXHJcblx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhgZW50ZXIgcm9vbSBmYWlsZWTvvIxlcnJvciBjb2RlID0gJHtyZXN1bHR9YCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uRXhpdFJvb20nLCAocmVhc29uKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zdCByZWFzb25MaXN0ID0gWyfkuLvliqjosIPnlKggZXhpdFJvb20g6YCA5oi/JywgJ+iiq+acjeWKoeWZqOi4ouWHuuW9k+WJjeaIv+mXtCcsICflvZPliY3miL/pl7TmlbTkuKrooqvop6PmlaMnXTtcclxuXHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3QudW5zaGlmdCh7XHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IGDpgIDmiL8gJHtyZWFzb25MaXN0W3JlYXNvbl19YFxyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5vbignb25GaXJzdFZpZGVvRnJhbWUnLCAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhg5riy5p+T55qE6aaW5bin55S76Z2i5ZON5bqUID0gJHtKU09OLnN0cmluZ2lmeShyZXMpfWApO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLm9uKCdvblJlbW90ZVVzZXJFbnRlclJvb20nLCAodXNlcklkKSA9PiB7XHJcblx0XHRcdFx0XHRpZiAodGhpcy5tZWV0aW5nVXNlcnMubGVuZ3RoID49IDIpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5tZWV0aW5nVXNlcnMgPSB0aGlzLm1lZXRpbmdVc2Vycy5maWx0ZXIodCA9PiB0LnN0YXJ0aW5nKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmICh0aGlzLm1lZXRpbmdVc2Vycy5sZW5ndGggPCAyICYmIHVzZXJJZCAhPSB0aGlzLnVzZXJJZCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLm1lZXRpbmdVc2Vycy5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHR1c2VySWQ6IHVzZXJJZCxcclxuXHRcdFx0XHRcdFx0XHR0eXBlOiAn55So5oi357G75Z6LJ1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0aWYgKHRoaXMubWVldGluZ1VzZXJzLmxlbmd0aCA8IDIpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLm1lZXRpbmdVc2Vycy5wdXNoKHtcclxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6ICfnrYnlvoXov5vlhaUnXHJcblx0XHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VMaXN0LnVuc2hpZnQoe1xyXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IGDnlKjmiLfov5vmiL86IHVzZXJJZCA9ICR7dXNlcklkfWBcclxuXHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3QudW5zaGlmdCh7XHJcblx0XHRcdFx0XHRcdFx0Y29udGVudDogYOeUqOaIt+i/m+aIv+Wksei0pe+8jOaIv+mXtOW3sua7oTogdXNlcklkID0gJHt1c2VySWR9YFxyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLm9uKCdvblJlbW90ZVVzZXJMZWF2ZVJvb20nLCAodXNlcklkKSA9PiB7XHJcblx0XHRcdFx0XHRsZXQgaW5kZXggPSB0aGlzLm1lZXRpbmdVc2Vycy5maW5kSW5kZXgodCA9PiB0LnVzZXJJZCA9PSB1c2VySWQpO1xyXG5cdFx0XHRcdFx0aWYgKGluZGV4ID49IDApIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5tZWV0aW5nVXNlcnMuc3BsaWNlKGluZGV4LCAxKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGlmICh0aGlzLm1lZXRpbmdVc2Vycy5sZW5ndGggPCAyKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMubWVldGluZ1VzZXJzLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICfnrYnlvoXov5vlhaUnXHJcblx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VMaXN0LnVuc2hpZnQoe1xyXG5cdFx0XHRcdFx0XHRjb250ZW50OiBg55So5oi356a75byA5oi/6Ze0OiB1c2VySWQgPSAke3VzZXJJZH1gXHJcblx0XHRcdFx0XHR9KVxyXG5cclxuXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uVXNlclZpZGVvQXZhaWxhYmxlJywgKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc3Qge1xyXG5cdFx0XHRcdFx0XHR1c2VySWQsXHJcblx0XHRcdFx0XHRcdGF2YWlsYWJsZVxyXG5cdFx0XHRcdFx0fSA9IHJlcztcclxuXHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3QudW5zaGlmdCh7XHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IGBvblVzZXJWaWRlb0F2YWlsYWJsZSA9ICR7SlNPTi5zdHJpbmdpZnkocmVzKX1gXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0aWYgKHVzZXJJZCAmJiBhdmFpbGFibGUpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5zdGFydFJlbW90ZVZpZXcodXNlcklkKTtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc3RvcFJlbW90ZVZpZXcodXNlcklkKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5vbignb25FeGl0Um9vbScsIChyZXMpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGBvbkV4aXRSb29tID0gJHtKU09OLnN0cmluZ2lmeShyZXMpfWApO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0fVxyXG5cdH1cclxuPC9zY3JpcHQ+XHJcbjxzdHlsZSBzcmM9XCJAL3BhZ2VzL21lZXRpbmcvbWVldGluZy5jc3NcIj48L3N0eWxlPlxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///46\n"); 2243 +eval("/* WEBPACK VAR INJECTION */(function(__webpack_provided_uni_dot_requireNativePlugin, __f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _vuex = __webpack_require__(/*! vuex */ 12);\n\n\nvar _permission = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/permission.js */ 13));\nvar _index = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/lib/index */ 14));\nvar _TrtcDefines = __webpack_require__(/*! @/TrtcCloud/lib/TrtcDefines */ 16);\n\n\n\n\nvar _GenerateTestUserSig = __webpack_require__(/*! @/debug/GenerateTestUserSig */ 17);\n\n\nvar _TrtcLocalView = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/view/TrtcLocalView */ 19));\nvar _TrtcRemoteView = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/view/TrtcRemoteView */ 25));\n\n\nvar _index2 = _interopRequireDefault(__webpack_require__(/*! @/apis/index.js */ 30));\nvar _config = _interopRequireDefault(__webpack_require__(/*! @/common/config/config.js */ 38));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(Object(source), true).forEach(function (key) {_defineProperty(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}var TrtcEvent = __webpack_provided_uni_dot_requireNativePlugin('globalEvent');\nvar socketTask = getApp().globalData.socketTask;var _default =\n{\n components: {\n TrtcLocalView: _TrtcLocalView.default,\n TrtcRemoteView: _TrtcRemoteView.default },\n\n data: function data() {\n return {\n hasInvite: false,\n //我\n meetingUserMy: {\n userId: 0 },\n\n //客服\n meetingUserService: {\n userId: 0 },\n\n meetingUsers: [{\n type: '供方',\n userId: '' },\n\n {\n type: '需方',\n userId: '' }],\n\n\n num: 10,\n trtcCloud: null,\n sdkAppId: 0,\n userSig: '',\n roomId: 0,\n userId: '',\n starting: false,\n userType: '等待进入',\n appScene: _TrtcDefines.TRTCAppScene.TRTCAppSceneVideoCall, // TRTCAppSceneVideoCall\n isFrontCamera: true,\n streamType: _TrtcDefines.TRTCVideoStreamType.TRTCVideoStreamTypeBig,\n remoteUserId: '',\n audioRoute: _TrtcDefines.TRTCCloudDef.TRTC_AUDIO_ROUTE_SPEAKER,\n messageList: [],\n messageContent: '',\n myUserInfo: '',\n room: {},\n shopId: 0,\n sellerUserId: 0 };\n\n },\n computed: _objectSpread({},\n (0, _vuex.mapState)(['user', 'statistics', 'common'])),\n\n onLoad: function onLoad(e) {var _this = this;\n __f__(\"log\", 'user', this.user, \" at pages/meeting/meeting.nvue:150\");\n this.roomId = e.roomId;\n this.sellerUserId = e.userid;\n this.userId = 'user_' + this.user.id.toString();\n this.shopId = e.shop_id;\n __f__(\"log\", 'onload e', e, \" at pages/meeting/meeting.nvue:155\");\n if (!e.roomId) {\n this.createRoom({\n \"name\": \"测试房间\",\n \"bodyText\": \"\",\n \"roomNo\": \"\",\n \"description\": \"\",\n \"clientId\": \"\",\n \"productId\": e.goods_id,\n \"shopId\": e.shop_id });\n\n } else {\n this.room = {\n id: e.roomId };\n\n }\n\n //文字聊天\n uni.$on('socketMessage', function (data) {\n if (data.messageType == 'send_to_room') {\n _this.messageList.push({\n author: data.realName,\n content: data.toMessage });\n\n }\n });\n },\n onShow: function onShow() {var _this2 = this;\n _index2.default.message.getUserTypeInfo(this.user.id).then(function (res) {\n _this2.myUserInfo = res.data && res.data.length && res.data[0] || {\n type: 3 };\n\n });\n },\n onHide: function onHide() {\n },\n mounted: function mounted() {\n if (uni.getSystemInfoSync().platform === 'android') {\n _permission.default.requestAndroidPermission('android.permission.RECORD_AUDIO');\n _permission.default.requestAndroidPermission('android.permission.CAMERA');\n }\n this.initUserSign();\n },\n onUnload: function onUnload() {\n this.destroyInstance();\n __f__(\"log\", '- onUnload', \" at pages/meeting/meeting.nvue:200\");\n },\n onBackPress: function onBackPress() {\n this.destroyInstance();\n },\n methods: {\n initUserSign: function initUserSign() {var _this3 = this;\n if (this.userId) {\n __f__(\"log\", 'initUserSign', this.userId, \" at pages/meeting/meeting.nvue:208\");\n // 生成 userSig\n var _genTestUserSig =\n\n\n (0, _GenerateTestUserSig.genTestUserSig)(this.userId),sdkAppId = _genTestUserSig.sdkAppId,userSig = _genTestUserSig.userSig;\n this.sdkAppId = sdkAppId;\n this.userSig = userSig;\n __f__(\"log\", 'sdkAppId,userSig', sdkAppId, userSig, \" at pages/meeting/meeting.nvue:216\");\n if (!sdkAppId || !userSig) {\n uni.showToast({\n title: '请填写 sdkAppId、userSig',\n icon: 'none' });\n\n }\n } else {\n setTimeout(function () {\n _this3.initUserSign();\n }, 200);\n }\n },\n handleToSubmitOrder: function handleToSubmitOrder() {\n uni.navigateBack();\n },\n handleInviteCustomerUser: function handleInviteCustomerUser() {var _this4 = this;\n uni.showLoading();\n _index2.default.message.getInviteCustomerJoin(this.room.ShopId, this.room.RoomNo).then(function (res) {\n uni.showToast({\n title: '邀请成功' });\n\n _this4.hasInvite = true;\n }).finally(function () {\n uni.hideLoading();\n });\n },\n createRoom: function createRoom(data) {var _this5 = this;\n uni.showLoading({\n title: '正在创建房间' });\n\n _index2.default.message.postAddRoom(data).then(function (res) {\n _this5.room = res.data;\n _this5.roomId = res.data.RoomNo;\n _index2.default.message.getInviteUserJoin(_this5.sellerUserId, res.data.RoomNo);\n }).finally(function () {\n uni.hideLoading();\n });\n },\n\n sendMessage: function sendMessage() {\n var that = this;\n that.messageList.push({\n author: '我',\n content: that.messageContent });\n\n that.messageContent = '';\n socketTask.send({\n data: JSON.stringify({\n formUserId: this.userId,\n contentType: \"\",\n content: this.messageContent,\n sendTime: new Date(),\n method: 'send_to_room',\n RoomNo: this.room.RoomNo,\n RoomName: this.room.Name,\n IsRoom: true }),\n\n success: function success(res) {},\n fail: function fail(e) {},\n complete: function complete() {} });\n\n },\n handleStartMeeting: function handleStartMeeting() {var _this6 = this;\n this.starting = true;\n __f__(\"log\", 'meetingUsers', this.meetingUsers, \" at pages/meeting/meeting.nvue:281\");\n this.$nextTick(function () {\n _this6.createTrtcCloud();\n _this6.enterRoom();\n _this6.startLocalPreview();\n });\n },\n handleEndtMeeting: function handleEndtMeeting() {\n this.meetingUsers.splice(0, 2, {\n type: '等待进入',\n userId: '' },\n {\n type: '等待进入',\n userId: '' });\n\n this.startLocalPreview();\n this.exitRoom();\n this.destroyInstance();\n },\n\n bindInputChange: function bindInputChange(event, type) {\n var value = event.detail.value;\n switch (type) {\n case 'roomId':{\n this.roomId = value;\n break;\n }\n case 'userId':{\n this.userId = value;\n break;\n }}\n\n },\n destroyInstance: function destroyInstance() {\n if (this.trtcCloud) {\n _index.default.destroyInstance();\n this.trtcCloud = null;\n }\n },\n createTrtcCloud: function createTrtcCloud() {\n __f__(\"log\", 'createTrtcCloud', this.sdkAppId, \" at pages/meeting/meeting.nvue:321\");\n this.trtcCloud = _index.default.createInstance();\n __f__(\"log\", 'this.trtcCloud', this.trtcCloud, \" at pages/meeting/meeting.nvue:323\");\n this.handleEvents();\n this.sdkAppId && uni.$createTrtcCloudUpload(this.sdkAppId);\n },\n enterRoom: function enterRoom() {\n try {var\n\n sdkAppId =\n\n\n this.sdkAppId,appScene = this.appScene,userSig = this.userSig;\n var param = {\n roomId: this.room.RoomNo,\n userId: this.userId,\n sdkAppId: sdkAppId,\n userSig: userSig };\n\n __f__(\"log\", 'enterRoom', param, \" at pages/meeting/meeting.nvue:340\");\n this.trtcCloud.enterRoom(param, appScene);\n this.sdkAppId && uni.$enterRoomSuccessUpload(this.sdkAppId);\n } catch (error) {\n this.messageList.unshift({\n content: '`enterRoom error = ${JSON.stringify(error)}`' });\n\n this.sdkAppId && uni.$enterRoomFailedUpload(this.sdkAppId, JSON.stringify(error));\n }\n },\n exitRoom: function exitRoom() {\n try {\n this.starting = false;\n this.stopLocalPreview();\n this.stopRemoteView();\n this.trtcCloud.exitRoom();\n } catch (e) {\n // TODO handle the exception\n }\n },\n startLocalPreview: function startLocalPreview() {\n this.trtcCloud.startLocalPreview(this.isFrontCamera, this.userId);\n this.messageList.unshift({\n content: 'startLocalPreview' });\n\n this.sdkAppId && uni.$startLocalPreviewUpload(this.sdkAppId);\n },\n stopLocalPreview: function stopLocalPreview() {\n this.trtcCloud.stopLocalPreview();\n },\n startRemoteView: function startRemoteView(userId) {var _this7 = this;\n this.messageList.unshift({\n content: 'startRemoteView' });\n\n var item = this.meetingUsers.find(function (t) {return t.userId == userId;});\n if (item) {\n this.$nextTick(function () {\n _this7.trtcCloud.startRemoteView(item.userId, _this7.streamType, item.userId);\n _this7.sdkAppId && uni.$startRemoteViewSuccessUpload(_this7.sdkAppId);\n _this7.messageList.unshift({\n content: \"startRemoteView userId = \".concat(item.userId) });\n\n });\n }\n item.starting = true;\n this.meetingUsers.push(this.meetingUsers.pop());\n },\n stopRemoteView: function stopRemoteView(userId) {\n var index = this.meetingUsers.findIndex(function (t) {return t.userId == userId;});\n if (index > -1) {\n this.meetingUsers[index].starting = false;\n this.meetingUsers.push(this.meetingUsers.pop());\n this.trtcCloud.stopRemoteView(userId, this.streamType);\n }\n },\n // 听筒、免提 切换\n switchAudioRoute: function switchAudioRoute() {\n this.audioRoute = this.audioRoute === _TrtcDefines.TRTCCloudDef.TRTC_AUDIO_ROUTE_SPEAKER ? _TrtcDefines.TRTCCloudDef.\n TRTC_AUDIO_ROUTE_EARPIECE : _TrtcDefines.TRTCCloudDef.TRTC_AUDIO_ROUTE_SPEAKER;\n this.trtcCloud.setAudioRoute(this.audioRoute);\n },\n handleEvents: function handleEvents() {var _this8 = this;\n this.trtcCloud.on('onWarning', function (res) {\n uni.showToast({\n title: \"onWarning: \".concat(JSON.stringify(res)),\n icon: 'none' });\n\n });\n this.trtcCloud.on('onError', function (res) {\n __f__(\"log\", 'onError', res, \" at pages/meeting/meeting.nvue:409\");\n _this8.messageList.unshift({\n content: \"error: \".concat(JSON.stringify(res)) });\n\n _this8.sdkAppId && uni.$onErrorUpload(_this8.sdkAppId, JSON.stringify(res));\n });\n this.trtcCloud.on('onEnterRoom', function (result) {\n __f__(\"log\", \"- onEnterRoom = \".concat(result), \" at pages/meeting/meeting.nvue:416\");\n if (result > 0) {\n _this8.messageList.unshift({\n content: \"\\u8FDB\\u623F\\u6210\\u529F\\uFF0C\\u8017\\u65F6: \".concat(result, \"ms\") });\n\n } else {\n __f__(\"log\", \"enter room failed\\uFF0Cerror code = \".concat(result), \" at pages/meeting/meeting.nvue:422\");\n }\n });\n this.trtcCloud.on('onExitRoom', function (reason) {\n var reasonList = ['主动调用 exitRoom 退房', '被服务器踢出当前房间', '当前房间整个被解散'];\n _this8.messageList.unshift({\n content: \"\\u9000\\u623F \".concat(reasonList[reason]) });\n\n });\n this.trtcCloud.on('onFirstVideoFrame', function (res) {\n __f__(\"log\", \"\\u6E32\\u67D3\\u7684\\u9996\\u5E27\\u753B\\u9762\\u54CD\\u5E94 = \".concat(JSON.stringify(res)), \" at pages/meeting/meeting.nvue:432\");\n });\n this.trtcCloud.on('onRemoteUserEnterRoom', function (userId) {\n if (_this8.meetingUsers.length >= 2) {\n _this8.meetingUsers = _this8.meetingUsers.filter(function (t) {return t.starting;});\n }\n if (_this8.meetingUsers.length < 2 && userId != _this8.userId) {\n _this8.meetingUsers.push({\n userId: userId,\n type: '用户类型' });\n\n if (_this8.meetingUsers.length < 2) {\n _this8.meetingUsers.push({\n type: '等待进入' });\n\n }\n _this8.messageList.unshift({\n content: \"\\u7528\\u6237\\u8FDB\\u623F: userId = \".concat(userId) });\n\n } else {\n _this8.messageList.unshift({\n content: \"\\u7528\\u6237\\u8FDB\\u623F\\u5931\\u8D25\\uFF0C\\u623F\\u95F4\\u5DF2\\u6EE1: userId = \".concat(userId) });\n\n }\n });\n this.trtcCloud.on('onRemoteUserLeaveRoom', function (userId) {\n var index = _this8.meetingUsers.findIndex(function (t) {return t.userId == userId;});\n if (index >= 0) {\n _this8.meetingUsers.splice(index, 1);\n }\n if (_this8.meetingUsers.length < 2) {\n _this8.meetingUsers.push({\n type: '等待进入' });\n\n }\n _this8.messageList.unshift({\n content: \"\\u7528\\u6237\\u79BB\\u5F00\\u623F\\u95F4: userId = \".concat(userId) });\n\n\n\n });\n this.trtcCloud.on('onUserVideoAvailable', function (res) {var\n\n userId =\n\n res.userId,available = res.available;\n _this8.messageList.unshift({\n content: \"onUserVideoAvailable = \".concat(JSON.stringify(res)) });\n\n if (userId && available) {\n _this8.startRemoteView(userId);\n } else {\n _this8.stopRemoteView(userId);\n }\n });\n this.trtcCloud.on('onExitRoom', function (res) {\n __f__(\"log\", \"onExitRoom = \".concat(JSON.stringify(res)), \" at pages/meeting/meeting.nvue:488\");\n });\n } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-hbuilderx/packages/uni-app-plus-nvue/dist/require-native-plugin.js */ 10)[\"default\"], __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 11)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbWVldGluZy9tZWV0aW5nLm52dWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQStFQTs7O0FBR0E7QUFDQTtBQUNBOzs7OztBQUtBOzs7QUFHQTtBQUNBOzs7QUFHQTtBQUNBLCtGLHduQ0FIQTtBQUlBLGdEO0FBQ0E7QUFDQTtBQUNBLHlDQURBO0FBRUEsMkNBRkEsRUFEQTs7QUFLQSxNQUxBLGtCQUtBO0FBQ0E7QUFDQSxzQkFEQTtBQUVBO0FBQ0E7QUFDQSxpQkFEQSxFQUhBOztBQU1BO0FBQ0E7QUFDQSxpQkFEQSxFQVBBOztBQVVBO0FBQ0Esa0JBREE7QUFFQSxrQkFGQTs7QUFJQTtBQUNBLGtCQURBO0FBRUEsa0JBRkEsRUFKQSxDQVZBOzs7QUFtQkEsYUFuQkE7QUFvQkEscUJBcEJBO0FBcUJBLGlCQXJCQTtBQXNCQSxpQkF0QkE7QUF1QkEsZUF2QkE7QUF3QkEsZ0JBeEJBO0FBeUJBLHFCQXpCQTtBQTBCQSxzQkExQkE7QUEyQkEsK0RBM0JBLEVBMkJBO0FBQ0EseUJBNUJBO0FBNkJBLHlFQTdCQTtBQThCQSxzQkE5QkE7QUErQkEsb0VBL0JBO0FBZ0NBLHFCQWhDQTtBQWlDQSx3QkFqQ0E7QUFrQ0Esb0JBbENBO0FBbUNBLGNBbkNBO0FBb0NBLGVBcENBO0FBcUNBLHFCQXJDQTs7QUF1Q0EsR0E3Q0E7QUE4Q0E7QUFDQSx1REFEQSxDQTlDQTs7QUFpREEsUUFqREEsa0JBaURBLENBakRBLEVBaURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQURBO0FBRUEsc0JBRkE7QUFHQSxvQkFIQTtBQUlBLHlCQUpBO0FBS0Esc0JBTEE7QUFNQSwrQkFOQTtBQU9BLDJCQVBBOztBQVNBLEtBVkEsTUFVQTtBQUNBO0FBQ0Esb0JBREE7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFEQTtBQUVBLGlDQUZBOztBQUlBO0FBQ0EsS0FQQTtBQVFBLEdBakZBO0FBa0ZBLFFBbEZBLG9CQWtGQTtBQUNBO0FBQ0E7QUFDQSxlQURBOztBQUdBLEtBSkE7QUFLQSxHQXhGQTtBQXlGQSxRQXpGQSxvQkF5RkE7QUFDQSxHQTFGQTtBQTJGQSxTQTNGQSxxQkEyRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FqR0E7QUFrR0EsVUFsR0Esc0JBa0dBO0FBQ0E7QUFDQTtBQUNBLEdBckdBO0FBc0dBLGFBdEdBLHlCQXNHQTtBQUNBO0FBQ0EsR0F4R0E7QUF5R0E7QUFDQSxnQkFEQSwwQkFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBOzs7QUFNQSw2REFOQSxDQUlBLFFBSkEsbUJBSUEsUUFKQSxDQUtBLE9BTEEsbUJBS0EsT0FMQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FEQTtBQUVBLHdCQUZBOztBQUlBO0FBQ0EsT0FoQkEsTUFnQkE7QUFDQTtBQUNBO0FBQ0EsU0FGQSxFQUVBLEdBRkE7QUFHQTtBQUNBLEtBdkJBO0FBd0JBLHVCQXhCQSxpQ0F3QkE7QUFDQTtBQUNBLEtBMUJBO0FBMkJBLDRCQTNCQSxzQ0EyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFEQTs7QUFHQTtBQUNBLE9BTEEsRUFLQSxPQUxBLENBS0E7QUFDQTtBQUNBLE9BUEE7QUFRQSxLQXJDQTtBQXNDQSxjQXRDQSxzQkFzQ0EsSUF0Q0EsRUFzQ0E7QUFDQTtBQUNBLHVCQURBOztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FKQSxFQUlBLE9BSkEsQ0FJQTtBQUNBO0FBQ0EsT0FOQTtBQU9BLEtBakRBOztBQW1EQSxlQW5EQSx5QkFtREE7QUFDQTtBQUNBO0FBQ0EsbUJBREE7QUFFQSxvQ0FGQTs7QUFJQTtBQUNBO0FBQ0E7QUFDQSxpQ0FEQTtBQUVBLHlCQUZBO0FBR0Esc0NBSEE7QUFJQSw4QkFKQTtBQUtBLGdDQUxBO0FBTUEsa0NBTkE7QUFPQSxrQ0FQQTtBQVFBLHNCQVJBLEdBREE7O0FBV0EsZUFYQSxtQkFXQSxHQVhBLEVBV0EsRUFYQTtBQVlBLFlBWkEsZ0JBWUEsQ0FaQSxFQVlBLEVBWkE7QUFhQSxnQkFiQSxzQkFhQSxFQWJBOztBQWVBLEtBekVBO0FBMEVBLHNCQTFFQSxnQ0EwRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUpBO0FBS0EsS0FsRkE7QUFtRkEscUJBbkZBLCtCQW1GQTtBQUNBO0FBQ0Esb0JBREE7QUFFQSxrQkFGQTtBQUdBO0FBQ0Esb0JBREE7QUFFQSxrQkFGQSxFQUhBOztBQU9BO0FBQ0E7QUFDQTtBQUNBLEtBOUZBOztBQWdHQSxtQkFoR0EsMkJBZ0dBLEtBaEdBLEVBZ0dBLElBaEdBLEVBZ0dBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FSQTs7QUFVQSxLQTVHQTtBQTZHQSxtQkE3R0EsNkJBNkdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQWxIQTtBQW1IQSxtQkFuSEEsNkJBbUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBekhBO0FBMEhBLGFBMUhBLHVCQTBIQTtBQUNBOztBQUVBLGdCQUZBOzs7QUFLQSxZQUxBLENBRUEsUUFGQSxDQUdBLFFBSEEsR0FLQSxJQUxBLENBR0EsUUFIQSxDQUlBLE9BSkEsR0FLQSxJQUxBLENBSUEsT0FKQTtBQU1BO0FBQ0Esa0NBREE7QUFFQSw2QkFGQTtBQUdBLDRCQUhBO0FBSUEsMEJBSkE7O0FBTUE7QUFDQTtBQUNBO0FBQ0EsT0FmQSxDQWVBO0FBQ0E7QUFDQSxpRUFEQTs7QUFHQTtBQUNBO0FBQ0EsS0FoSkE7QUFpSkEsWUFqSkEsc0JBaUpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTEEsQ0FLQTtBQUNBO0FBQ0E7QUFDQSxLQTFKQTtBQTJKQSxxQkEzSkEsK0JBMkpBO0FBQ0E7QUFDQTtBQUNBLG9DQURBOztBQUdBO0FBQ0EsS0FqS0E7QUFrS0Esb0JBbEtBLDhCQWtLQTtBQUNBO0FBQ0EsS0FwS0E7QUFxS0EsbUJBcktBLDJCQXFLQSxNQXJLQSxFQXFLQTtBQUNBO0FBQ0Esa0NBREE7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0VBREE7O0FBR0EsU0FOQTtBQU9BO0FBQ0E7QUFDQTtBQUNBLEtBckxBO0FBc0xBLGtCQXRMQSwwQkFzTEEsTUF0TEEsRUFzTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQTdMQTtBQThMQTtBQUNBLG9CQS9MQSw4QkErTEE7QUFDQTtBQUNBLCtCQURBLEdBQ0Esa0RBREE7QUFFQTtBQUNBLEtBbk1BO0FBb01BLGdCQXBNQSwwQkFvTUE7QUFDQTtBQUNBO0FBQ0EsMERBREE7QUFFQSxzQkFGQTs7QUFJQSxPQUxBO0FBTUE7QUFDQTtBQUNBO0FBQ0Esd0RBREE7O0FBR0E7QUFDQSxPQU5BO0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3RkFEQTs7QUFHQSxTQUpBLE1BSUE7QUFDQTtBQUNBO0FBQ0EsT0FUQTtBQVVBO0FBQ0E7QUFDQTtBQUNBLDZEQURBOztBQUdBLE9BTEE7QUFNQTtBQUNBO0FBQ0EsT0FGQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQURBO0FBRUEsd0JBRkE7O0FBSUE7QUFDQTtBQUNBLDBCQURBOztBQUdBO0FBQ0E7QUFDQSx5RUFEQTs7QUFHQSxTQWJBLE1BYUE7QUFDQTtBQUNBLG1IQURBOztBQUdBO0FBQ0EsT0F0QkE7QUF1QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFEQTs7QUFHQTtBQUNBO0FBQ0EsbUZBREE7Ozs7QUFLQSxPQWZBO0FBZ0JBOztBQUVBLGNBRkE7O0FBSUEsV0FKQSxDQUVBLE1BRkEsQ0FHQSxTQUhBLEdBSUEsR0FKQSxDQUdBLFNBSEE7QUFLQTtBQUNBLHdFQURBOztBQUdBO0FBQ0E7QUFDQSxTQUZBLE1BRUE7QUFDQTtBQUNBO0FBQ0EsT0FiQTtBQWNBO0FBQ0E7QUFDQSxPQUZBO0FBR0EsS0E3UkEsRUF6R0EsRSIsImZpbGUiOiI0Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldz5cclxuXHRcdDxpbWFnZSBzcmM9XCIuLi8uLi9zdGF0aWMvaG9tZS9iYW5jazIucG5nXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1wiIG1vZGU9XCJ3aWR0aEZpeFwiPjwvaW1hZ2U+XHJcblx0XHQ8dmlldyBjbGFzcz1cImJhY2tcIj5cclxuXHRcdFx0PCEtLSDlubPlj7DlrqLmnI0gLS0+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwibGlzdDFcIiBzdHlsZT1cImFsaWduLWl0ZW1zOiBjZW50ZXI7b3ZlcmZsb3c6IGhpZGRlbjtcIj5cclxuXHRcdFx0XHQ8dGV4dCBjbGFzcz1cIm5hbWVcIj57eyB1c2VyVHlwZSB8fCAn562J5b6F6L+b5YWlJyB9fTwvdGV4dD5cclxuXHRcdFx0XHQ8dmlldyBzdHlsZT1cImhlaWdodDozNjBycHg7ZmxleC1kaXJlY3Rpb246IHJvdztqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjttYXJnaW46IDAgYXV0bztcIiBpZD0ncm9vdCc+XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdDxibG9jayB2LWlmPVwibWVldGluZ1VzZXJTZXJ2aWNlLnVzZXJJZCAmJiBzdGFydGluZ1wiPlxyXG5cdFx0XHRcdFx0XHQ8dHJ0Yy1sb2NhbC12aWV3ICA6dmlld0lkPVwibWVldGluZ1VzZXJTZXJ2aWNlLnVzZXJJZFwiIHYtaWY9XCJ1c2VySWQgPT0gbWVldGluZ1VzZXJTZXJ2aWNlLnVzZXJJZFwiXHJcblx0XHRcdFx0XHRcdFx0c3R5bGU9XCJoZWlnaHQ6IDM4MHJweDt3aWR0aDogMzYwcnB4O1wiPlxyXG5cdFx0XHRcdFx0XHQ8L3RydGMtbG9jYWwtdmlldz5cclxuXHRcdFx0XHRcdFx0PHRydGMtcmVtb3RlLXZpZXcgdi1lbHNlIDp1c2VySWQ9XCJpdGVtLnVzZXJJZFwiXHJcblx0XHRcdFx0XHRcdFx0OnZpZXdJZD1cIml0ZW0udXNlcklkXCIgc3R5bGU9XCJoZWlnaHQ6IDM2MHJweDt3aWR0aDogMzAwcnB4O2JvcmRlcjogMXB4IHNvbGlkICNmZmY7XCI+XHJcblx0XHRcdFx0XHRcdDwvdHJ0Yy1yZW1vdGUtdmlldz5cclxuXHRcdFx0XHRcdDwvYmxvY2s+XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdDxpbWFnZSB2LWVsc2Ugc3JjPVwiLi4vLi4vc3RhdGljL2hvbWUvcmVuICgxKS53ZWJwXCJcclxuXHRcdFx0XHRcdFx0c3R5bGU9XCJ3aWR0aDogMzgwcnB4O2hlaWdodDogMzYwcnB4O2JvcmRlci1yYWRpdXM6IDQwcnB4O1wiIG1vZGU9XCJhc3BlY3RGaWxsXCI+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IHN0eWxlPVwiZmxleC1kaXJlY3Rpb246IHJvdztqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDt3aWR0aDogMTAwdnc7XCI+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJsaXN0MVwiIHN0eWxlPVwid2lkdGg6IDMwMHJweDttYXJnaW4tcmlnaHQ6IDIwcHg7XCIgdi1mb3I9XCJpdGVtIGluIG1lZXRpbmdVc2Vyc1wiPlxyXG5cdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJuYW1lXCI+e3sgaXRlbS50eXBlIHx8ICfnrYnlvoXov5vlhaUnIH19PC90ZXh0PlxyXG5cdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OjM2MHJweDtcIj5cclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdDxibG9jayB2LWlmPVwiaXRlbSAmJiBpdGVtLnVzZXJJZCAmJiBpdGVtLnN0YXJ0aW5nXCI+XHJcblx0XHRcdFx0XHRcdFx0PHRydGMtbG9jYWwtdmlldyAgOnZpZXdJZD1cIml0ZW0udXNlcklkXCIgdi1pZj1cIml0ZW0udXNlcklkID09IHVzZXJJZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRzdHlsZT1cImhlaWdodDogMzgwcnB4O3dpZHRoOiAzNjBycHg7XCI+XHJcblx0XHRcdFx0XHRcdFx0PC90cnRjLWxvY2FsLXZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PHRydGMtcmVtb3RlLXZpZXcgOnVzZXJJZD1cIml0ZW0udXNlcklkXCJcclxuXHRcdFx0XHRcdFx0XHRcdDp2aWV3SWQ9XCJpdGVtLnVzZXJJZFwiIHN0eWxlPVwiaGVpZ2h0OiAzNjBycHg7d2lkdGg6IDMwMHJweDtib3JkZXI6IDFweCBzb2xpZCAjZmZmO1wiPlxyXG5cdFx0XHRcdFx0XHRcdDwvdHJ0Yy1yZW1vdGUtdmlldz5cclxuXHRcdFx0XHRcdFx0PC9ibG9jaz5cclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdDxpbWFnZSB2LWVsc2Ugc3JjPVwiLi4vLi4vc3RhdGljL2hvbWUvcmVuICgyKS53ZWJwXCJcclxuXHRcdFx0XHRcdFx0XHRzdHlsZT1cIndpZHRoOiAzMDBycHg7aGVpZ2h0OiAzNjBycHg7Ym9yZGVyLXJhZGl1czogNDBycHg7XCIgbW9kZT1cImFzcGVjdEZpbGxcIj5cclxuXHRcdFx0XHRcdFx0PC9pbWFnZT5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgc3R5bGU9XCJmbGV4LWRpcmVjdGlvbjogcm93O2p1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1wiPlxyXG5cdFx0XHRcdDxibG9jayB2LWlmPVwibXlVc2VySW5mbyYmbXlVc2VySW5mby50eXBlPT0zICYmICFtZWV0aW5nXCI+XHJcblx0XHRcdFx0XHQ8dGV4dCAgdi1pZj1cIlwiIGNsYXNzPVwiYnRuXCJAY2xpY2s9XCJoYW5kbGVTdGFydE1lZXRpbmdcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMjBycHg7XCI+XHJcblx0XHRcdFx0XHRcdOW8gOWni+inhumikVxyXG5cdFx0XHRcdFx0PC90ZXh0PlxyXG5cdFx0XHRcdDwvYmxvY2s+XHJcblx0XHRcdFx0PHRleHQgY2xhc3M9XCJidG5cIiB2LWlmPVwibWVldGluZ1wiIEBjbGljaz1cImhhbmRsZUVuZHRNZWV0aW5nXCJcclxuXHRcdFx0XHRcdHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAyMHB4O1wiPlxyXG5cdFx0XHRcdFx05oyC5patXHJcblx0XHRcdFx0PC90ZXh0PlxyXG5cdFx0XHRcdDx0ZXh0IGNsYXNzPVwiYnRuXCIgQGNsaWNrPVwiaGFuZGxlSW52aXRlQ3VzdG9tZXJVc2VyXCIgdi1pZj1cIiFoYXNJbnZpdGVcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMjBycHg7XCI+XHJcblx0XHRcdFx0XHTpgoDor7flrqLmnI1cclxuXHRcdFx0XHQ8L3RleHQ+XHJcblx0XHRcdFx0PHRleHQgY2xhc3M9XCJidG5cIiB2LWlmPVwibXlVc2VySW5mbyAmJiBteVVzZXJJbmZvLnR5cGUhPTRcIiBAY2xpY2s9XCJoYW5kbGVUb1N1Ym1pdE9yZGVyXCI+XHJcblx0XHRcdFx0XHTnq4vljbPkuIvljZVcclxuXHRcdFx0XHQ8L3RleHQ+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHNjcm9sbC12aWV3IDpzY3JvbGwteT1cInRydWVcIiBjbGFzcz1cIm1lc3NhZ2VcIj5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cIlwiIHN0eWxlPVwid2lkdGg6IDMyMHB4O1wiPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJcIiB2LWZvcj1cIml0ZW0gaW4gbWVzc2FnZUxpc3RcIlxyXG5cdFx0XHRcdFx0XHRzdHlsZT1cImRpc3BsYXk6IGZsZXg7ZmxleC1kaXJlY3Rpb246IHJvdztmbGV4LXdyYXA6IHdyYXA7XCI+XHJcblx0XHRcdFx0XHRcdDx0ZXh0IHN0eWxlPVwiY29sb3I6ICNGRkRBOTcgO1wiPnt7aXRlbS5hdXRob3IgfHwgJ+ezu+e7nyd9fTo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdDx0ZXh0IHN0eWxlPVwiY29sb3I6ICNmZmY7bWFyZ2luLWxlZnQ6IDEwcnB4O1wiPlxyXG5cdFx0XHRcdFx0XHRcdHt7aXRlbS5jb250ZW50fX1cclxuXHRcdFx0XHRcdFx0PC90ZXh0PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0PC9zY3JvbGwtdmlldz5cclxuXHRcdFx0PHZpZXdcclxuXHRcdFx0XHRzdHlsZT1cInBvc2l0aW9uOiBmaXhlZDtib3R0b206IDA7bGVmdDogMDtyaWdodDogMDtqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjthbGlnbi1pdGVtczogY2VudGVyO2JvdHRvbTogMjBweDtcIj5cclxuXHRcdFx0XHQ8aW5wdXQgY2xhc3M9XCJpbnB1dFwiIHBsYWNlaG9sZGVyPVwi5Zue5aSNXCIgcGxhY2Vob2xkZXItc3R5bGU9XCJjb2xvcjojZmZmXCIgdi1tb2RlbD1cIm1lc3NhZ2VDb250ZW50XCJcclxuXHRcdFx0XHRcdEBjb25maXJtPVwic2VuZE1lc3NhZ2VcIiBjb25maXJtLXR5cGU9XCJzZW5kXCIgLz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuPHNjcmlwdD5cclxuXHRpbXBvcnQge1xyXG5cdFx0bWFwU3RhdGVcclxuXHR9IGZyb20gJ3Z1ZXgnO1xyXG5cdGltcG9ydCBwZXJtaXNpb24gZnJvbSBcIkAvVHJ0Y0Nsb3VkL3Blcm1pc3Npb24uanNcIjtcclxuXHRpbXBvcnQgVHJ0Y0Nsb3VkIGZyb20gJ0AvVHJ0Y0Nsb3VkL2xpYi9pbmRleCc7XHJcblx0aW1wb3J0IHtcclxuXHRcdFRSVENBcHBTY2VuZSxcclxuXHRcdFRSVENWaWRlb1N0cmVhbVR5cGUsXHJcblx0XHRUUlRDQ2xvdWREZWZcclxuXHR9IGZyb20gJ0AvVHJ0Y0Nsb3VkL2xpYi9UcnRjRGVmaW5lcyc7XHJcblx0aW1wb3J0IHtcclxuXHRcdGdlblRlc3RVc2VyU2lnXHJcblx0fSBmcm9tICdAL2RlYnVnL0dlbmVyYXRlVGVzdFVzZXJTaWcnO1xyXG5cdGltcG9ydCBUcnRjTG9jYWxWaWV3IGZyb20gJ0AvVHJ0Y0Nsb3VkL3ZpZXcvVHJ0Y0xvY2FsVmlldyc7XHJcblx0aW1wb3J0IFRydGNSZW1vdGVWaWV3IGZyb20gJ0AvVHJ0Y0Nsb3VkL3ZpZXcvVHJ0Y1JlbW90ZVZpZXcnO1xyXG5cdGNvbnN0IFRydGNFdmVudCA9IHVuaS5yZXF1aXJlTmF0aXZlUGx1Z2luKCdnbG9iYWxFdmVudCcpO1xyXG5cclxuXHRpbXBvcnQgQVBJIGZyb20gJ0AvYXBpcy9pbmRleC5qcydcclxuXHRpbXBvcnQgY29uZmlnIGZyb20gJ0AvY29tbW9uL2NvbmZpZy9jb25maWcuanMnXHJcblx0bGV0IHNvY2tldFRhc2sgPSBnZXRBcHAoKS5nbG9iYWxEYXRhLnNvY2tldFRhc2s7XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0Y29tcG9uZW50czoge1xyXG5cdFx0XHRUcnRjTG9jYWxWaWV3OiBUcnRjTG9jYWxWaWV3LFxyXG5cdFx0XHRUcnRjUmVtb3RlVmlldzogVHJ0Y1JlbW90ZVZpZXcsXHJcblx0XHR9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRoYXNJbnZpdGU6IGZhbHNlLFxyXG5cdFx0XHRcdC8v5oiRXHJcblx0XHRcdFx0bWVldGluZ1VzZXJNeToge1xyXG5cdFx0XHRcdFx0dXNlcklkOiAwXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHQvL+WuouacjVxyXG5cdFx0XHRcdG1lZXRpbmdVc2VyU2VydmljZToge1xyXG5cdFx0XHRcdFx0dXNlcklkOiAwXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRtZWV0aW5nVXNlcnM6IFt7XHJcblx0XHRcdFx0XHRcdHR5cGU6ICfkvpvmlrknLFxyXG5cdFx0XHRcdFx0XHR1c2VySWQ6ICcnXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0e1xyXG5cdFx0XHRcdFx0XHR0eXBlOiAn6ZyA5pa5JyxcclxuXHRcdFx0XHRcdFx0dXNlcklkOiAnJ1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRdLFxyXG5cdFx0XHRcdG51bTogMTAsXHJcblx0XHRcdFx0dHJ0Y0Nsb3VkOiBudWxsLFxyXG5cdFx0XHRcdHNka0FwcElkOiAwLFxyXG5cdFx0XHRcdHVzZXJTaWc6ICcnLFxyXG5cdFx0XHRcdHJvb21JZDogMCxcclxuXHRcdFx0XHR1c2VySWQ6ICcnLFxyXG5cdFx0XHRcdHN0YXJ0aW5nOiBmYWxzZSxcclxuXHRcdFx0XHR1c2VyVHlwZTogJ+etieW+hei/m+WFpScsXHJcblx0XHRcdFx0YXBwU2NlbmU6IFRSVENBcHBTY2VuZS5UUlRDQXBwU2NlbmVWaWRlb0NhbGwsIC8vIFRSVENBcHBTY2VuZVZpZGVvQ2FsbFxyXG5cdFx0XHRcdGlzRnJvbnRDYW1lcmE6IHRydWUsXHJcblx0XHRcdFx0c3RyZWFtVHlwZTogVFJUQ1ZpZGVvU3RyZWFtVHlwZS5UUlRDVmlkZW9TdHJlYW1UeXBlQmlnLFxyXG5cdFx0XHRcdHJlbW90ZVVzZXJJZDogJycsXHJcblx0XHRcdFx0YXVkaW9Sb3V0ZTogVFJUQ0Nsb3VkRGVmLlRSVENfQVVESU9fUk9VVEVfU1BFQUtFUixcclxuXHRcdFx0XHRtZXNzYWdlTGlzdDogW10sXHJcblx0XHRcdFx0bWVzc2FnZUNvbnRlbnQ6ICcnLFxyXG5cdFx0XHRcdG15VXNlckluZm86ICcnLFxyXG5cdFx0XHRcdHJvb206IHt9LFxyXG5cdFx0XHRcdHNob3BJZDogMCxcclxuXHRcdFx0XHRzZWxsZXJVc2VySWQ6IDBcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdGNvbXB1dGVkOiB7XHJcblx0XHRcdC4uLm1hcFN0YXRlKFsndXNlcicsICdzdGF0aXN0aWNzJywgJ2NvbW1vbiddKVxyXG5cdFx0fSxcclxuXHRcdG9uTG9hZChlKSB7XHJcblx0XHRcdGNvbnNvbGUubG9nKCd1c2VyJyx0aGlzLnVzZXIpO1xyXG5cdFx0XHR0aGlzLnJvb21JZCA9IGUucm9vbUlkO1xyXG5cdFx0XHR0aGlzLnNlbGxlclVzZXJJZCA9IGUudXNlcmlkO1xyXG5cdFx0XHR0aGlzLnVzZXJJZCA9ICd1c2VyXycgKyB0aGlzLnVzZXIuaWQudG9TdHJpbmcoKTtcclxuXHRcdFx0dGhpcy5zaG9wSWQgPSBlLnNob3BfaWQ7XHJcblx0XHRcdGNvbnNvbGUubG9nKCdvbmxvYWQgZScsIGUpO1xyXG5cdFx0XHRpZiAoIWUucm9vbUlkKSB7XHJcblx0XHRcdFx0dGhpcy5jcmVhdGVSb29tKHtcclxuXHRcdFx0XHRcdFwibmFtZVwiOiBcIua1i+ivleaIv+mXtFwiLFxyXG5cdFx0XHRcdFx0XCJib2R5VGV4dFwiOiBcIlwiLFxyXG5cdFx0XHRcdFx0XCJyb29tTm9cIjogXCJcIixcclxuXHRcdFx0XHRcdFwiZGVzY3JpcHRpb25cIjogXCJcIixcclxuXHRcdFx0XHRcdFwiY2xpZW50SWRcIjogXCJcIixcclxuXHRcdFx0XHRcdFwicHJvZHVjdElkXCI6IGUuZ29vZHNfaWQsXHJcblx0XHRcdFx0XHRcInNob3BJZFwiOiBlLnNob3BfaWRcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLnJvb20gPSB7XHJcblx0XHRcdFx0XHRpZDogZS5yb29tSWRcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvL+aWh+Wtl+iBiuWkqVxyXG5cdFx0XHR1bmkuJG9uKCdzb2NrZXRNZXNzYWdlJywgKGRhdGEpID0+IHtcclxuXHRcdFx0XHRpZiAoZGF0YS5tZXNzYWdlVHlwZSA9PSAnc2VuZF90b19yb29tJykge1xyXG5cdFx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdC5wdXNoKHtcclxuXHRcdFx0XHRcdFx0YXV0aG9yOiBkYXRhLnJlYWxOYW1lLFxyXG5cdFx0XHRcdFx0XHRjb250ZW50OiBkYXRhLnRvTWVzc2FnZVxyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0b25TaG93KCkge1xyXG5cdFx0XHRBUEkubWVzc2FnZS5nZXRVc2VyVHlwZUluZm8odGhpcy51c2VyLmlkKS50aGVuKHJlcyA9PiB7XHJcblx0XHRcdFx0dGhpcy5teVVzZXJJbmZvID0gcmVzLmRhdGEgJiYgcmVzLmRhdGEubGVuZ3RoICYmIHJlcy5kYXRhWzBdIHx8IHtcclxuXHRcdFx0XHRcdHR5cGU6IDNcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdG9uSGlkZSgpIHtcclxuXHRcdH0sXHJcblx0XHRtb3VudGVkKCkge1xyXG5cdFx0XHRpZiAodW5pLmdldFN5c3RlbUluZm9TeW5jKCkucGxhdGZvcm0gPT09ICdhbmRyb2lkJykge1xyXG5cdFx0XHRcdHBlcm1pc2lvbi5yZXF1ZXN0QW5kcm9pZFBlcm1pc3Npb24oJ2FuZHJvaWQucGVybWlzc2lvbi5SRUNPUkRfQVVESU8nKTtcclxuXHRcdFx0XHRwZXJtaXNpb24ucmVxdWVzdEFuZHJvaWRQZXJtaXNzaW9uKCdhbmRyb2lkLnBlcm1pc3Npb24uQ0FNRVJBJyk7XHJcblx0XHRcdH1cclxuXHRcdFx0dGhpcy5pbml0VXNlclNpZ24oKTtcclxuXHRcdH0sXHJcblx0XHRvblVubG9hZCgpIHtcclxuXHRcdFx0dGhpcy5kZXN0cm95SW5zdGFuY2UoKTtcclxuXHRcdFx0Y29uc29sZS5sb2coJy0gb25VbmxvYWQnKTtcclxuXHRcdH0sXHJcblx0XHRvbkJhY2tQcmVzcygpIHtcclxuXHRcdFx0dGhpcy5kZXN0cm95SW5zdGFuY2UoKTtcclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdGluaXRVc2VyU2lnbigpIHtcclxuXHRcdFx0XHRpZiAodGhpcy51c2VySWQpIHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdpbml0VXNlclNpZ24nLHRoaXMudXNlcklkKTtcclxuXHRcdFx0XHRcdC8vIOeUn+aIkCB1c2VyU2lnXHJcblx0XHRcdFx0XHRjb25zdCB7XHJcblx0XHRcdFx0XHRcdHNka0FwcElkLFxyXG5cdFx0XHRcdFx0XHR1c2VyU2lnXHJcblx0XHRcdFx0XHR9ID0gZ2VuVGVzdFVzZXJTaWcodGhpcy51c2VySWQpO1xyXG5cdFx0XHRcdFx0dGhpcy5zZGtBcHBJZCA9IHNka0FwcElkO1xyXG5cdFx0XHRcdFx0dGhpcy51c2VyU2lnID0gdXNlclNpZztcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdzZGtBcHBJZCx1c2VyU2lnJyxzZGtBcHBJZCx1c2VyU2lnKTtcclxuXHRcdFx0XHRcdGlmICghc2RrQXBwSWQgfHwgIXVzZXJTaWcpIHtcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XHJcblx0XHRcdFx0XHRcdFx0dGl0bGU6ICfor7floavlhpkgc2RrQXBwSWTjgIF1c2VyU2lnJyxcclxuXHRcdFx0XHRcdFx0XHRpY29uOiAnbm9uZSdcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpPT57XHJcblx0XHRcdFx0XHRcdHRoaXMuaW5pdFVzZXJTaWduKCk7XHJcblx0XHRcdFx0XHR9LDIwMClcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdGhhbmRsZVRvU3VibWl0T3JkZXIoKSB7XHJcblx0XHRcdFx0dW5pLm5hdmlnYXRlQmFjaygpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRoYW5kbGVJbnZpdGVDdXN0b21lclVzZXIoKSB7XHJcblx0XHRcdFx0dW5pLnNob3dMb2FkaW5nKCk7XHJcblx0XHRcdFx0QVBJLm1lc3NhZ2UuZ2V0SW52aXRlQ3VzdG9tZXJKb2luKHRoaXMucm9vbS5TaG9wSWQsIHRoaXMucm9vbS5Sb29tTm8pLnRoZW4ocmVzID0+IHtcclxuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHR0aXRsZTogJ+mCgOivt+aIkOWKnydcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHR0aGlzLmhhc0ludml0ZSA9IHRydWU7XHJcblx0XHRcdFx0fSkuZmluYWxseSgoKSA9PiB7XHJcblx0XHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0Y3JlYXRlUm9vbShkYXRhKSB7XHJcblx0XHRcdFx0dW5pLnNob3dMb2FkaW5nKHtcclxuXHRcdFx0XHRcdHRpdGxlOiAn5q2j5Zyo5Yib5bu65oi/6Ze0J1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdEFQSS5tZXNzYWdlLnBvc3RBZGRSb29tKGRhdGEpLnRoZW4ocmVzID0+IHtcclxuXHRcdFx0XHRcdHRoaXMucm9vbSA9IHJlcy5kYXRhO1xyXG5cdFx0XHRcdFx0dGhpcy5yb29tSWQgPSByZXMuZGF0YS5Sb29tTm87XHJcblx0XHRcdFx0XHRBUEkubWVzc2FnZS5nZXRJbnZpdGVVc2VySm9pbih0aGlzLnNlbGxlclVzZXJJZCwgcmVzLmRhdGEuUm9vbU5vKTtcclxuXHRcdFx0XHR9KS5maW5hbGx5KCgpID0+IHtcclxuXHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cclxuXHRcdFx0c2VuZE1lc3NhZ2UoKSB7XHJcblx0XHRcdFx0bGV0IHRoYXQgPSB0aGlzO1xyXG5cdFx0XHRcdHRoYXQubWVzc2FnZUxpc3QucHVzaCh7XHJcblx0XHRcdFx0XHRhdXRob3I6ICfmiJEnLFxyXG5cdFx0XHRcdFx0Y29udGVudDogdGhhdC5tZXNzYWdlQ29udGVudFxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdFx0dGhhdC5tZXNzYWdlQ29udGVudCA9ICcnO1xyXG5cdFx0XHRcdHNvY2tldFRhc2suc2VuZCh7XHJcblx0XHRcdFx0XHRkYXRhOiBKU09OLnN0cmluZ2lmeSh7XHJcblx0XHRcdFx0XHRcdGZvcm1Vc2VySWQ6IHRoaXMudXNlcklkLFxyXG5cdFx0XHRcdFx0XHRjb250ZW50VHlwZTogXCJcIixcclxuXHRcdFx0XHRcdFx0Y29udGVudDogdGhpcy5tZXNzYWdlQ29udGVudCxcclxuXHRcdFx0XHRcdFx0c2VuZFRpbWU6IG5ldyBEYXRlKCksXHJcblx0XHRcdFx0XHRcdG1ldGhvZDogJ3NlbmRfdG9fcm9vbScsXHJcblx0XHRcdFx0XHRcdFJvb21ObzogdGhpcy5yb29tLlJvb21ObyxcclxuXHRcdFx0XHRcdFx0Um9vbU5hbWU6IHRoaXMucm9vbS5OYW1lLFxyXG5cdFx0XHRcdFx0XHRJc1Jvb206IHRydWVcclxuXHRcdFx0XHRcdH0pLFxyXG5cdFx0XHRcdFx0c3VjY2VzcyhyZXMpIHt9LFxyXG5cdFx0XHRcdFx0ZmFpbChlKSB7fSxcclxuXHRcdFx0XHRcdGNvbXBsZXRlKCkge31cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0aGFuZGxlU3RhcnRNZWV0aW5nKCkge1xyXG5cdFx0XHRcdHRoaXMuc3RhcnRpbmcgPSB0cnVlO1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdtZWV0aW5nVXNlcnMnLHRoaXMubWVldGluZ1VzZXJzKTtcclxuXHRcdFx0XHR0aGlzLiRuZXh0VGljaygoKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLmNyZWF0ZVRydGNDbG91ZCgpO1xyXG5cdFx0XHRcdFx0dGhpcy5lbnRlclJvb20oKTtcclxuXHRcdFx0XHRcdHRoaXMuc3RhcnRMb2NhbFByZXZpZXcoKTtcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRoYW5kbGVFbmR0TWVldGluZygpIHtcclxuXHRcdFx0XHR0aGlzLm1lZXRpbmdVc2Vycy5zcGxpY2UoMCwgMiwge1xyXG5cdFx0XHRcdFx0dHlwZTogJ+etieW+hei/m+WFpScsXHJcblx0XHRcdFx0XHR1c2VySWQ6ICcnXHJcblx0XHRcdFx0fSwge1xyXG5cdFx0XHRcdFx0dHlwZTogJ+etieW+hei/m+WFpScsXHJcblx0XHRcdFx0XHR1c2VySWQ6ICcnXHJcblx0XHRcdFx0fSwgKVxyXG5cdFx0XHRcdHRoaXMuc3RhcnRMb2NhbFByZXZpZXcoKTtcclxuXHRcdFx0XHR0aGlzLmV4aXRSb29tKCk7XHJcblx0XHRcdFx0dGhpcy5kZXN0cm95SW5zdGFuY2UoKTtcclxuXHRcdFx0fSxcclxuXHJcblx0XHRcdGJpbmRJbnB1dENoYW5nZShldmVudCwgdHlwZSkge1xyXG5cdFx0XHRcdGNvbnN0IHZhbHVlID0gZXZlbnQuZGV0YWlsLnZhbHVlO1xyXG5cdFx0XHRcdHN3aXRjaCAodHlwZSkge1xyXG5cdFx0XHRcdFx0Y2FzZSAncm9vbUlkJzoge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnJvb21JZCA9IHZhbHVlO1xyXG5cdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGNhc2UgJ3VzZXJJZCc6IHtcclxuXHRcdFx0XHRcdFx0dGhpcy51c2VySWQgPSB2YWx1ZTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRkZXN0cm95SW5zdGFuY2UoKSB7XHJcblx0XHRcdFx0aWYgKHRoaXMudHJ0Y0Nsb3VkKSB7XHJcblx0XHRcdFx0XHRUcnRjQ2xvdWQuZGVzdHJveUluc3RhbmNlKCk7XHJcblx0XHRcdFx0XHR0aGlzLnRydGNDbG91ZCA9IG51bGw7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRjcmVhdGVUcnRjQ2xvdWQoKSB7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ2NyZWF0ZVRydGNDbG91ZCcsIHRoaXMuc2RrQXBwSWQpO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkID0gVHJ0Y0Nsb3VkLmNyZWF0ZUluc3RhbmNlKCk7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coJ3RoaXMudHJ0Y0Nsb3VkJywgdGhpcy50cnRjQ2xvdWQpXHJcblx0XHRcdFx0dGhpcy5oYW5kbGVFdmVudHMoKTtcclxuXHRcdFx0XHR0aGlzLnNka0FwcElkICYmIHVuaS4kY3JlYXRlVHJ0Y0Nsb3VkVXBsb2FkKHRoaXMuc2RrQXBwSWQpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlbnRlclJvb20oKSB7XHJcblx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdGNvbnN0IHtcclxuXHRcdFx0XHRcdFx0c2RrQXBwSWQsXHJcblx0XHRcdFx0XHRcdGFwcFNjZW5lLFxyXG5cdFx0XHRcdFx0XHR1c2VyU2lnXHJcblx0XHRcdFx0XHR9ID0gdGhpcztcclxuXHRcdFx0XHRcdGxldCBwYXJhbSA9IHtcclxuXHRcdFx0XHRcdFx0cm9vbUlkOiB0aGlzLnJvb20uUm9vbU5vLFxyXG5cdFx0XHRcdFx0XHR1c2VySWQ6IHRoaXMudXNlcklkLFxyXG5cdFx0XHRcdFx0XHRzZGtBcHBJZCxcclxuXHRcdFx0XHRcdFx0dXNlclNpZ1xyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdlbnRlclJvb20nLCBwYXJhbSk7XHJcblx0XHRcdFx0XHR0aGlzLnRydGNDbG91ZC5lbnRlclJvb20ocGFyYW0sIGFwcFNjZW5lKTtcclxuXHRcdFx0XHRcdHRoaXMuc2RrQXBwSWQgJiYgdW5pLiRlbnRlclJvb21TdWNjZXNzVXBsb2FkKHRoaXMuc2RrQXBwSWQpO1xyXG5cdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VMaXN0LnVuc2hpZnQoe1xyXG5cdFx0XHRcdFx0XHRjb250ZW50OiAnYGVudGVyUm9vbSBlcnJvciA9ICR7SlNPTi5zdHJpbmdpZnkoZXJyb3IpfWAnXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0dGhpcy5zZGtBcHBJZCAmJiB1bmkuJGVudGVyUm9vbUZhaWxlZFVwbG9hZCh0aGlzLnNka0FwcElkLCBKU09OLnN0cmluZ2lmeShlcnJvcikpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0ZXhpdFJvb20oKSB7XHJcblx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdHRoaXMuc3RhcnRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdHRoaXMuc3RvcExvY2FsUHJldmlldygpO1xyXG5cdFx0XHRcdFx0dGhpcy5zdG9wUmVtb3RlVmlldygpO1xyXG5cdFx0XHRcdFx0dGhpcy50cnRjQ2xvdWQuZXhpdFJvb20oKTtcclxuXHRcdFx0XHR9IGNhdGNoIChlKSB7XHJcblx0XHRcdFx0XHQvLyBUT0RPIGhhbmRsZSB0aGUgZXhjZXB0aW9uXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRzdGFydExvY2FsUHJldmlldygpIHtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5zdGFydExvY2FsUHJldmlldyh0aGlzLmlzRnJvbnRDYW1lcmEsIHRoaXMudXNlcklkKTtcclxuXHRcdFx0XHR0aGlzLm1lc3NhZ2VMaXN0LnVuc2hpZnQoe1xyXG5cdFx0XHRcdFx0Y29udGVudDogJ3N0YXJ0TG9jYWxQcmV2aWV3J1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMuc2RrQXBwSWQgJiYgdW5pLiRzdGFydExvY2FsUHJldmlld1VwbG9hZCh0aGlzLnNka0FwcElkKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0c3RvcExvY2FsUHJldmlldygpIHtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5zdG9wTG9jYWxQcmV2aWV3KCk7XHJcblx0XHRcdH0sXHJcblx0XHRcdHN0YXJ0UmVtb3RlVmlldyh1c2VySWQpIHtcclxuXHRcdFx0XHR0aGlzLm1lc3NhZ2VMaXN0LnVuc2hpZnQoe1xyXG5cdFx0XHRcdFx0Y29udGVudDogJ3N0YXJ0UmVtb3RlVmlldydcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRsZXQgaXRlbSA9IHRoaXMubWVldGluZ1VzZXJzLmZpbmQodCA9PiB0LnVzZXJJZCA9PSB1c2VySWQpO1xyXG5cdFx0XHRcdGlmIChpdGVtKSB7XHJcblx0XHRcdFx0XHR0aGlzLiRuZXh0VGljaygoKSA9PiB7XHJcblx0XHRcdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLnN0YXJ0UmVtb3RlVmlldyhpdGVtLnVzZXJJZCwgdGhpcy5zdHJlYW1UeXBlLCBpdGVtLnVzZXJJZCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuc2RrQXBwSWQgJiYgdW5pLiRzdGFydFJlbW90ZVZpZXdTdWNjZXNzVXBsb2FkKHRoaXMuc2RrQXBwSWQpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VMaXN0LnVuc2hpZnQoe1xyXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IGBzdGFydFJlbW90ZVZpZXcgdXNlcklkID0gJHtpdGVtLnVzZXJJZH1gXHJcblx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aXRlbS5zdGFydGluZyA9IHRydWU7XHJcblx0XHRcdFx0dGhpcy5tZWV0aW5nVXNlcnMucHVzaCh0aGlzLm1lZXRpbmdVc2Vycy5wb3AoKSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdHN0b3BSZW1vdGVWaWV3KHVzZXJJZCkge1xyXG5cdFx0XHRcdGxldCBpbmRleCA9IHRoaXMubWVldGluZ1VzZXJzLmZpbmRJbmRleCh0ID0+IHQudXNlcklkID09IHVzZXJJZCk7XHJcblx0XHRcdFx0aWYgKGluZGV4ID4gLTEpIHtcclxuXHRcdFx0XHRcdHRoaXMubWVldGluZ1VzZXJzW2luZGV4XS5zdGFydGluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0dGhpcy5tZWV0aW5nVXNlcnMucHVzaCh0aGlzLm1lZXRpbmdVc2Vycy5wb3AoKSk7XHJcblx0XHRcdFx0XHR0aGlzLnRydGNDbG91ZC5zdG9wUmVtb3RlVmlldyh1c2VySWQsIHRoaXMuc3RyZWFtVHlwZSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDlkKznrZLjgIHlhY3mj5Ag5YiH5o2iXHJcblx0XHRcdHN3aXRjaEF1ZGlvUm91dGUoKSB7XHJcblx0XHRcdFx0dGhpcy5hdWRpb1JvdXRlID0gdGhpcy5hdWRpb1JvdXRlID09PSBUUlRDQ2xvdWREZWYuVFJUQ19BVURJT19ST1VURV9TUEVBS0VSID8gVFJUQ0Nsb3VkRGVmXHJcblx0XHRcdFx0XHQuVFJUQ19BVURJT19ST1VURV9FQVJQSUVDRSA6IFRSVENDbG91ZERlZi5UUlRDX0FVRElPX1JPVVRFX1NQRUFLRVI7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQuc2V0QXVkaW9Sb3V0ZSh0aGlzLmF1ZGlvUm91dGUpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRoYW5kbGVFdmVudHMoKSB7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uV2FybmluZycsIChyZXMpID0+IHtcclxuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHR0aXRsZTogYG9uV2FybmluZzogJHtKU09OLnN0cmluZ2lmeShyZXMpfWAsXHJcblx0XHRcdFx0XHRcdGljb246ICdub25lJyxcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLm9uKCdvbkVycm9yJywgKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ29uRXJyb3InLHJlcylcclxuXHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3QudW5zaGlmdCh7XHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IGBlcnJvcjogJHtKU09OLnN0cmluZ2lmeShyZXMpfWBcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHR0aGlzLnNka0FwcElkICYmIHVuaS4kb25FcnJvclVwbG9hZCh0aGlzLnNka0FwcElkLCBKU09OLnN0cmluZ2lmeShyZXMpKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5vbignb25FbnRlclJvb20nLCAocmVzdWx0KSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhgLSBvbkVudGVyUm9vbSA9ICR7cmVzdWx0fWApO1xyXG5cdFx0XHRcdFx0aWYgKHJlc3VsdCA+IDApIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdC51bnNoaWZ0KHtcclxuXHRcdFx0XHRcdFx0XHRjb250ZW50OiBg6L+b5oi/5oiQ5Yqf77yM6ICX5pe2OiAke3Jlc3VsdH1tc2BcclxuXHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGBlbnRlciByb29tIGZhaWxlZO+8jGVycm9yIGNvZGUgPSAke3Jlc3VsdH1gKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5vbignb25FeGl0Um9vbScsIChyZWFzb24pID0+IHtcclxuXHRcdFx0XHRcdGNvbnN0IHJlYXNvbkxpc3QgPSBbJ+S4u+WKqOiwg+eUqCBleGl0Um9vbSDpgIDmiL8nLCAn6KKr5pyN5Yqh5Zmo6Lii5Ye65b2T5YmN5oi/6Ze0JywgJ+W9k+WJjeaIv+mXtOaVtOS4quiiq+ino+aVoyddO1xyXG5cdFx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdC51bnNoaWZ0KHtcclxuXHRcdFx0XHRcdFx0Y29udGVudDogYOmAgOaIvyAke3JlYXNvbkxpc3RbcmVhc29uXX1gXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLm9uKCdvbkZpcnN0VmlkZW9GcmFtZScsIChyZXMpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGDmuLLmn5PnmoTpppbluKfnlLvpnaLlk43lupQgPSAke0pTT04uc3RyaW5naWZ5KHJlcyl9YCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uUmVtb3RlVXNlckVudGVyUm9vbScsICh1c2VySWQpID0+IHtcclxuXHRcdFx0XHRcdGlmICh0aGlzLm1lZXRpbmdVc2Vycy5sZW5ndGggPj0gMikge1xyXG5cdFx0XHRcdFx0XHR0aGlzLm1lZXRpbmdVc2VycyA9IHRoaXMubWVldGluZ1VzZXJzLmZpbHRlcih0ID0+IHQuc3RhcnRpbmcpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKHRoaXMubWVldGluZ1VzZXJzLmxlbmd0aCA8IDIgJiYgdXNlcklkICE9IHRoaXMudXNlcklkKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMubWVldGluZ1VzZXJzLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdHVzZXJJZDogdXNlcklkLFxyXG5cdFx0XHRcdFx0XHRcdHR5cGU6ICfnlKjmiLfnsbvlnosnXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRpZiAodGhpcy5tZWV0aW5nVXNlcnMubGVuZ3RoIDwgMikge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMubWVldGluZ1VzZXJzLnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdFx0dHlwZTogJ+etieW+hei/m+WFpSdcclxuXHRcdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3QudW5zaGlmdCh7XHJcblx0XHRcdFx0XHRcdFx0Y29udGVudDogYOeUqOaIt+i/m+aIvzogdXNlcklkID0gJHt1c2VySWR9YFxyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdC51bnNoaWZ0KHtcclxuXHRcdFx0XHRcdFx0XHRjb250ZW50OiBg55So5oi36L+b5oi/5aSx6LSl77yM5oi/6Ze05bey5ruhOiB1c2VySWQgPSAke3VzZXJJZH1gXHJcblx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uUmVtb3RlVXNlckxlYXZlUm9vbScsICh1c2VySWQpID0+IHtcclxuXHRcdFx0XHRcdGxldCBpbmRleCA9IHRoaXMubWVldGluZ1VzZXJzLmZpbmRJbmRleCh0ID0+IHQudXNlcklkID09IHVzZXJJZCk7XHJcblx0XHRcdFx0XHRpZiAoaW5kZXggPj0gMCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLm1lZXRpbmdVc2Vycy5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKHRoaXMubWVldGluZ1VzZXJzLmxlbmd0aCA8IDIpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5tZWV0aW5nVXNlcnMucHVzaCh7XHJcblx0XHRcdFx0XHRcdFx0dHlwZTogJ+etieW+hei/m+WFpSdcclxuXHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3QudW5zaGlmdCh7XHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IGDnlKjmiLfnprvlvIDmiL/pl7Q6IHVzZXJJZCA9ICR7dXNlcklkfWBcclxuXHRcdFx0XHRcdH0pXHJcblxyXG5cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5vbignb25Vc2VyVmlkZW9BdmFpbGFibGUnLCAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zdCB7XHJcblx0XHRcdFx0XHRcdHVzZXJJZCxcclxuXHRcdFx0XHRcdFx0YXZhaWxhYmxlXHJcblx0XHRcdFx0XHR9ID0gcmVzO1xyXG5cdFx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdC51bnNoaWZ0KHtcclxuXHRcdFx0XHRcdFx0Y29udGVudDogYG9uVXNlclZpZGVvQXZhaWxhYmxlID0gJHtKU09OLnN0cmluZ2lmeShyZXMpfWBcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRpZiAodXNlcklkICYmIGF2YWlsYWJsZSkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnN0YXJ0UmVtb3RlVmlldyh1c2VySWQpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5zdG9wUmVtb3RlVmlldyh1c2VySWQpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLm9uKCdvbkV4aXRSb29tJywgKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coYG9uRXhpdFJvb20gPSAke0pTT04uc3RyaW5naWZ5KHJlcyl9YCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuPHN0eWxlIHNyYz1cIkAvcGFnZXMvbWVldGluZy9tZWV0aW5nLmNzc1wiPjwvc3R5bGU+XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///46\n");
2243 2244
2244 /***/ }), 2245 /***/ }),
2245 /* 47 */ 2246 /* 47 */
uniapp-wuduhuajiao/unpackage/dist/dev/app-plus/pages/meeting/serviceMeeting.js
@@ -247,17 +247,17 @@ var render = function() { @@ -247,17 +247,17 @@ var render = function() {
247 "view", 247 "view",
248 { 248 {
249 staticStyle: { 249 staticStyle: {
250 - height: "360rpx",  
251 - width: "300rpx", 250 + height: "300rpx",
  251 + width: "250rpx",
252 position: "fixed", 252 position: "fixed",
253 - top: "10px",  
254 - right: "10px", 253 + top: "40px",
  254 + right: "20px",
255 zIndex: "999" 255 zIndex: "999"
256 } 256 }
257 }, 257 },
258 [ 258 [
259 _c("trtc-remote-view", { 259 _c("trtc-remote-view", {
260 - staticStyle: { height: "360rpx", width: "300rpx" }, 260 + staticStyle: { height: "300rpx", width: "250rpx" },
261 attrs: { 261 attrs: {
262 userId: _vm.meetingUserOther.userId, 262 userId: _vm.meetingUserOther.userId,
263 viewId: _vm.meetingUserOther.userId 263 viewId: _vm.meetingUserOther.userId
@@ -292,23 +292,6 @@ var render = function() { @@ -292,23 +292,6 @@ var render = function() {
292 [_vm._v("等待客服进入")] 292 [_vm._v("等待客服进入")]
293 ) 293 )
294 : _vm._e(), 294 : _vm._e(),
295 - _vm.meeting  
296 - ? _c(  
297 - "u-text",  
298 - {  
299 - staticStyle: {  
300 - position: "absolute",  
301 - top: "100px",  
302 - width: "750rpx",  
303 - textAlign: "center",  
304 - color: "#fff"  
305 - },  
306 - appendAsTree: true,  
307 - attrs: { append: "tree" }  
308 - },  
309 - [_vm._v(_vm._s(_vm.meetingUserOther.userId))]  
310 - )  
311 - : _vm._e(),  
312 _c( 295 _c(
313 "view", 296 "view",
314 { 297 {
@@ -369,7 +352,7 @@ eval(&quot;__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _D_P @@ -369,7 +352,7 @@ eval(&quot;__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _D_P
369 /***/ (function(module, exports, __webpack_require__) { 352 /***/ (function(module, exports, __webpack_require__) {
370 353
371 "use strict"; 354 "use strict";
372 -eval("/* WEBPACK VAR INJECTION */(function(__webpack_provided_uni_dot_requireNativePlugin, __f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _vuex = __webpack_require__(/*! vuex */ 12);\n\n\nvar _permission = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/permission.js */ 13));\nvar _index = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/lib/index */ 14));\nvar _TrtcDefines = __webpack_require__(/*! @/TrtcCloud/lib/TrtcDefines */ 16);\n\n\n\n\nvar _GenerateTestUserSig = __webpack_require__(/*! @/debug/GenerateTestUserSig */ 17);\n\n\nvar _TrtcLocalView = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/view/TrtcLocalView */ 19));\nvar _TrtcRemoteView = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/view/TrtcRemoteView */ 25));\n\n\nvar _index2 = _interopRequireDefault(__webpack_require__(/*! @/apis/index.js */ 30));\nvar _config = _interopRequireDefault(__webpack_require__(/*! @/common/config/config.js */ 38));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(Object(source), true).forEach(function (key) {_defineProperty(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}var TrtcEvent = __webpack_provided_uni_dot_requireNativePlugin('globalEvent');\nvar socketTask = getApp().globalData.socketTask;var _default =\n{\n components: {\n TrtcLocalView: _TrtcLocalView.default,\n TrtcRemoteView: _TrtcRemoteView.default },\n\n data: function data() {\n return {\n //是否正在视频\n meeting: false,\n hasInvite: false,\n //我\n meetingUserMy: {\n userId: 0 },\n\n //普通用户\n meetingUserOther: {\n userId: 0 },\n\n num: 10,\n trtcCloud: null,\n sdkAppId: 0,\n userSig: '',\n roomId: 0,\n userId: '',\n starting: false,\n userType: '等待进入',\n appScene: _TrtcDefines.TRTCAppScene.TRTCAppSceneVideoCall, // TRTCAppSceneVideoCall\n isFrontCamera: true,\n streamType: _TrtcDefines.TRTCVideoStreamType.TRTCVideoStreamTypeBig,\n remoteUserId: '',\n audioRoute: _TrtcDefines.TRTCCloudDef.TRTC_AUDIO_ROUTE_SPEAKER,\n messageList: [],\n messageContent: '',\n room: {},\n shopId: 0,\n customerUserId: 0 };\n\n },\n computed: _objectSpread({},\n (0, _vuex.mapState)(['user', 'statistics', 'common'])),\n\n onLoad: function onLoad(e) {\n __f__(\"log\", e, \" at pages/meeting/serviceMeeting.nvue:85\");\n __f__(\"log\", 'user', this.user, \" at pages/meeting/serviceMeeting.nvue:86\");\n this.roomId = e.roomId;\n this.customerUserId = e.userid;\n this.userId = 'user_' + this.user.id.toString();\n this.meetingUserMy = {\n userId: this.userId };\n\n\n this.initUserSign();\n\n if (this.roomId && this.customerUserId) {\n //客服点进来的\n this.meetingUserOther = {\n userId: 'user_' + this.customerUserId.toString() };\n\n this.room = {\n RoomNo: e.roomId };\n\n this.meeting = true;\n this.handleStartMeeting(this.userId);\n }\n\n if (!e.roomId) {\n this.createRoom({\n \"name\": \"测试房间\",\n \"bodyText\": \"\",\n \"roomNo\": \"\",\n \"description\": \"\",\n \"clientId\": \"\" });\n\n }\n },\n onShow: function onShow() {\n },\n onHide: function onHide() {},\n mounted: function mounted() {\n if (uni.getSystemInfoSync().platform === 'android') {\n _permission.default.requestAndroidPermission('android.permission.RECORD_AUDIO');\n _permission.default.requestAndroidPermission('android.permission.CAMERA');\n }\n\n },\n onUnload: function onUnload() {\n this.destroyInstance();\n __f__(\"log\", '- onUnload', \" at pages/meeting/serviceMeeting.nvue:130\");\n },\n onBackPress: function onBackPress() {\n this.destroyInstance();\n },\n methods: {\n initUserSign: function initUserSign() {var _this = this;\n if (this.userId) {\n // 生成 userSig\n var _genTestUserSig =\n\n\n (0, _GenerateTestUserSig.genTestUserSig)(this.userId),sdkAppId = _genTestUserSig.sdkAppId,userSig = _genTestUserSig.userSig;\n this.sdkAppId = sdkAppId;\n this.userSig = userSig;\n if (!sdkAppId || !userSig) {\n uni.showToast({\n title: '请填写 sdkAppId、userSig',\n icon: 'none' });\n\n }\n } else {\n setTimeout(function () {\n _this.initUserSign();\n }, 200);\n }\n },\n handleInviteCustomerUser: function handleInviteCustomerUser() {var _this2 = this;\n uni.showLoading();\n _index2.default.message.getInviteServiceUserJoin(this.room.RoomNo).then(function (res) {\n _this2.hasInvite = true;\n }).finally(function () {\n uni.hideLoading();\n });\n },\n createRoom: function createRoom(data) {var _this3 = this;\n uni.showLoading({\n title: '正在创建房间' });\n\n _index2.default.message.postAddRoom(data).then(function (res) {\n _this3.room = res.data;\n __f__(\"log\", 'postAddRoom', res.data, \" at pages/meeting/serviceMeeting.nvue:171\");\n _this3.roomId = res.data.RoomNo;\n _this3.handleInviteCustomerUser();\n _this3.handleStartMeeting(_this3.userId);\n }).finally(function () {\n uni.hideLoading();\n });\n },\n\n sendMessage: function sendMessage() {\n var that = this;\n that.messageList.push({\n author: '我',\n content: that.messageContent });\n\n that.messageContent = '';\n socketTask.send({\n data: JSON.stringify({\n formUserId: this.userId,\n contentType: \"\",\n content: this.messageContent,\n sendTime: new Date(),\n method: 'send_to_room',\n RoomNo: this.room.RoomNo,\n RoomName: this.room.Name,\n IsRoom: true }),\n\n success: function success(res) {},\n fail: function fail(e) {},\n complete: function complete() {} });\n\n },\n handleStartMeeting: function handleStartMeeting(userId) {var _this4 = this;\n this.starting = true;\n this.$nextTick(function () {\n _this4.createTrtcCloud();\n _this4.enterRoom(userId);\n _this4.startLocalPreview();\n if (_this4.meetingUserOther.userId) {\n _this4.startRemoteView();\n }\n });\n },\n handleEndtMeeting: function handleEndtMeeting() {\n this.exitRoom();\n this.destroyInstance();\n uni.navigateBack();\n },\n\n bindInputChange: function bindInputChange(event, type) {\n var value = event.detail.value;\n switch (type) {\n case 'roomId':{\n this.roomId = value;\n break;\n }\n case 'userId':{\n this.userId = value;\n break;\n }}\n\n },\n destroyInstance: function destroyInstance() {\n if (this.trtcCloud) {\n _index.default.destroyInstance();\n this.trtcCloud = null;\n }\n },\n createTrtcCloud: function createTrtcCloud() {\n __f__(\"log\", 'createTrtcCloud', this.sdkAppId, \" at pages/meeting/serviceMeeting.nvue:240\");\n this.trtcCloud = _index.default.createInstance();\n __f__(\"log\", 'this.trtcCloud', this.trtcCloud, \" at pages/meeting/serviceMeeting.nvue:242\");\n this.handleEvents();\n this.sdkAppId && uni.$createTrtcCloudUpload(this.sdkAppId);\n },\n enterRoom: function enterRoom(userId) {\n try {var\n\n sdkAppId =\n\n\n this.sdkAppId,appScene = this.appScene,userSig = this.userSig;\n var param = {\n roomId: 0,\n strRoomId: this.room.RoomNo,\n userId: userId,\n sdkAppId: sdkAppId,\n userSig: userSig };\n\n __f__(\"log\", 'enterRoom', param, \" at pages/meeting/serviceMeeting.nvue:260\");\n this.trtcCloud.enterRoom(param, appScene);\n this.sdkAppId && uni.$enterRoomSuccessUpload(this.sdkAppId);\n } catch (error) {\n this.messageList.unshift({\n content: '`enterRoom error = ${JSON.stringify(error)}`' });\n\n this.sdkAppId && uni.$enterRoomFailedUpload(this.sdkAppId, JSON.stringify(error));\n }\n },\n exitRoom: function exitRoom() {\n try {\n this.starting = false;\n this.stopLocalPreview();\n this.stopRemoteView();\n this.trtcCloud.exitRoom();\n } catch (e) {\n // TODO handle the exception\n }\n },\n startLocalPreview: function startLocalPreview() {\n __f__(\"log\", 'startLocalPreview', this.userId, \" at pages/meeting/serviceMeeting.nvue:281\");\n this.trtcCloud.startLocalPreview(this.isFrontCamera, this.userId);\n this.sdkAppId && uni.$startLocalPreviewUpload(this.sdkAppId);\n },\n stopLocalPreview: function stopLocalPreview() {\n this.trtcCloud.stopLocalPreview();\n },\n startRemoteView: function startRemoteView(userId) {var _this5 = this;\n userId = userId || this.meetingUserOther.userId;\n this.$nextTick(function () {\n _this5.trtcCloud.startRemoteView(userId, _this5.streamType, userId);\n _this5.sdkAppId && uni.$startRemoteViewSuccessUpload(_this5.sdkAppId);\n });\n },\n stopRemoteView: function stopRemoteView(userId) {\n var index = this.meetingUsers.findIndex(function (t) {return t.userId == userId;});\n if (index > -1) {\n this.meetingUsers[index].starting = false;\n this.meetingUsers.push(this.meetingUsers.pop());\n this.trtcCloud.stopRemoteView(userId, this.streamType);\n }\n },\n // 听筒、免提 切换\n switchAudioRoute: function switchAudioRoute() {\n this.audioRoute = this.audioRoute === _TrtcDefines.TRTCCloudDef.TRTC_AUDIO_ROUTE_SPEAKER ? _TrtcDefines.TRTCCloudDef.\n TRTC_AUDIO_ROUTE_EARPIECE : _TrtcDefines.TRTCCloudDef.TRTC_AUDIO_ROUTE_SPEAKER;\n this.trtcCloud.setAudioRoute(this.audioRoute);\n },\n handleEvents: function handleEvents() {var _this6 = this;\n this.trtcCloud.on('onWarning', function (res) {\n __f__(\"log\", \"- onWarning = \".concat(res), \" at pages/meeting/serviceMeeting.nvue:311\");\n });\n this.trtcCloud.on('onError', function (res) {\n __f__(\"log\", 'onError', res, \" at pages/meeting/serviceMeeting.nvue:314\");\n _this6.messageList.unshift({\n content: \"error: \".concat(JSON.stringify(res)) });\n\n _this6.sdkAppId && uni.$onErrorUpload(_this6.sdkAppId, JSON.stringify(res));\n });\n this.trtcCloud.on('onEnterRoom', function (result) {\n __f__(\"log\", \"- onEnterRoom = \".concat(result), \" at pages/meeting/serviceMeeting.nvue:321\");\n });\n this.trtcCloud.on('onExitRoom', function (reason) {\n var reasonList = ['主动调用 exitRoom 退房', '被服务器踢出当前房间', '当前房间整个被解散'];\n _this6.messageList.unshift({\n content: \"\\u9000\\u623F \".concat(reasonList[reason]) });\n\n });\n this.trtcCloud.on('onFirstVideoFrame', function (res) {\n __f__(\"log\", \"\\u6E32\\u67D3\\u7684\\u9996\\u5E27\\u753B\\u9762\\u54CD\\u5E94 = \".concat(JSON.stringify(res)), \" at pages/meeting/serviceMeeting.nvue:330\");\n });\n this.trtcCloud.on('onRemoteUserEnterRoom', function (userId) {\n __f__(\"log\", 'onRemoteUserEnterRoom', userId, \" at pages/meeting/serviceMeeting.nvue:333\");\n _this6.meetingUserOther.userId = userId;\n _this6.startRstartRemoteView(userId);\n\n });\n this.trtcCloud.on('onRemoteUserLeaveRoom', function (userId) {\n __f__(\"log\", 'onRemoteUserLeaveRoom', userId, \" at pages/meeting/serviceMeeting.nvue:339\");\n _this6.meeting = false;\n });\n this.trtcCloud.on('onUserVideoAvailable', function (res) {\n __f__(\"log\", 'onUserVideoAvailable', res, \" at pages/meeting/serviceMeeting.nvue:343\");var\n\n userId =\n\n res.userId,available = res.available;\n _this6.messageList.unshift({\n content: \"onUserVideoAvailable = \".concat(JSON.stringify(res)) });\n\n if (userId && available) {\n _this6.startRemoteView(userId);\n } else {\n _this6.stopRemoteView(userId);\n }\n });\n this.trtcCloud.on('onExitRoom', function (res) {\n __f__(\"log\", \"onExitRoom = \".concat(JSON.stringify(res)), \" at pages/meeting/serviceMeeting.nvue:358\");\n });\n } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-hbuilderx/packages/uni-app-plus-nvue/dist/require-native-plugin.js */ 10)[\"default\"], __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 11)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbWVldGluZy9zZXJ2aWNlTWVldGluZy5udnVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQkE7OztBQUdBO0FBQ0E7QUFDQTs7Ozs7QUFLQTs7O0FBR0E7QUFDQTs7O0FBR0E7QUFDQSwrRix3bkNBSEE7QUFJQSxnRDtBQUNBO0FBQ0E7QUFDQSx5Q0FEQTtBQUVBLDJDQUZBLEVBREE7O0FBS0EsTUFMQSxrQkFLQTtBQUNBO0FBQ0E7QUFDQSxvQkFGQTtBQUdBLHNCQUhBO0FBSUE7QUFDQTtBQUNBLGlCQURBLEVBTEE7O0FBUUE7QUFDQTtBQUNBLGlCQURBLEVBVEE7O0FBWUEsYUFaQTtBQWFBLHFCQWJBO0FBY0EsaUJBZEE7QUFlQSxpQkFmQTtBQWdCQSxlQWhCQTtBQWlCQSxnQkFqQkE7QUFrQkEscUJBbEJBO0FBbUJBLHNCQW5CQTtBQW9CQSwrREFwQkEsRUFvQkE7QUFDQSx5QkFyQkE7QUFzQkEseUVBdEJBO0FBdUJBLHNCQXZCQTtBQXdCQSxvRUF4QkE7QUF5QkEscUJBekJBO0FBMEJBLHdCQTFCQTtBQTJCQSxjQTNCQTtBQTRCQSxlQTVCQTtBQTZCQSx1QkE3QkE7O0FBK0JBLEdBckNBO0FBc0NBO0FBQ0EsdURBREEsQ0F0Q0E7O0FBeUNBLFFBekNBLGtCQXlDQSxDQXpDQSxFQXlDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQURBOzs7QUFJQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx3REFEQTs7QUFHQTtBQUNBLHdCQURBOztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esc0JBREE7QUFFQSxzQkFGQTtBQUdBLG9CQUhBO0FBSUEseUJBSkE7QUFLQSxzQkFMQTs7QUFPQTtBQUNBLEdBMUVBO0FBMkVBLFFBM0VBLG9CQTJFQTtBQUNBLEdBNUVBO0FBNkVBLFFBN0VBLG9CQTZFQSxFQTdFQTtBQThFQSxTQTlFQSxxQkE4RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxHQXBGQTtBQXFGQSxVQXJGQSxzQkFxRkE7QUFDQTtBQUNBO0FBQ0EsR0F4RkE7QUF5RkEsYUF6RkEseUJBeUZBO0FBQ0E7QUFDQSxHQTNGQTtBQTRGQTtBQUNBLGdCQURBLDBCQUNBO0FBQ0E7QUFDQTtBQURBOzs7QUFLQSw2REFMQSxDQUdBLFFBSEEsbUJBR0EsUUFIQSxDQUlBLE9BSkEsbUJBSUEsT0FKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBREE7QUFFQSx3QkFGQTs7QUFJQTtBQUNBLE9BZEEsTUFjQTtBQUNBO0FBQ0E7QUFDQSxTQUZBLEVBRUEsR0FGQTtBQUdBO0FBQ0EsS0FyQkE7QUFzQkEsNEJBdEJBLHNDQXNCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BRkEsRUFFQSxPQUZBLENBRUE7QUFDQTtBQUNBLE9BSkE7QUFLQSxLQTdCQTtBQThCQSxjQTlCQSxzQkE4QkEsSUE5QkEsRUE4QkE7QUFDQTtBQUNBLHVCQURBOztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTkEsRUFNQSxPQU5BLENBTUE7QUFDQTtBQUNBLE9BUkE7QUFTQSxLQTNDQTs7QUE2Q0EsZUE3Q0EseUJBNkNBO0FBQ0E7QUFDQTtBQUNBLG1CQURBO0FBRUEsb0NBRkE7O0FBSUE7QUFDQTtBQUNBO0FBQ0EsaUNBREE7QUFFQSx5QkFGQTtBQUdBLHNDQUhBO0FBSUEsOEJBSkE7QUFLQSxnQ0FMQTtBQU1BLGtDQU5BO0FBT0Esa0NBUEE7QUFRQSxzQkFSQSxHQURBOztBQVdBLGVBWEEsbUJBV0EsR0FYQSxFQVdBLEVBWEE7QUFZQSxZQVpBLGdCQVlBLENBWkEsRUFZQSxFQVpBO0FBYUEsZ0JBYkEsc0JBYUEsRUFiQTs7QUFlQSxLQW5FQTtBQW9FQSxzQkFwRUEsOEJBb0VBLE1BcEVBLEVBb0VBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BUEE7QUFRQSxLQTlFQTtBQStFQSxxQkEvRUEsK0JBK0VBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FuRkE7O0FBcUZBLG1CQXJGQSwyQkFxRkEsS0FyRkEsRUFxRkEsSUFyRkEsRUFxRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQVJBOztBQVVBLEtBakdBO0FBa0dBLG1CQWxHQSw2QkFrR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBdkdBO0FBd0dBLG1CQXhHQSw2QkF3R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0E5R0E7QUErR0EsYUEvR0EscUJBK0dBLE1BL0dBLEVBK0dBO0FBQ0E7O0FBRUEsZ0JBRkE7OztBQUtBLFlBTEEsQ0FFQSxRQUZBLENBR0EsUUFIQSxHQUtBLElBTEEsQ0FHQSxRQUhBLENBSUEsT0FKQSxHQUtBLElBTEEsQ0FJQSxPQUpBO0FBTUE7QUFDQSxtQkFEQTtBQUVBLHFDQUZBO0FBR0Esd0JBSEE7QUFJQSw0QkFKQTtBQUtBLDBCQUxBOztBQU9BO0FBQ0E7QUFDQTtBQUNBLE9BaEJBLENBZ0JBO0FBQ0E7QUFDQSxpRUFEQTs7QUFHQTtBQUNBO0FBQ0EsS0F0SUE7QUF1SUEsWUF2SUEsc0JBdUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTEEsQ0FLQTtBQUNBO0FBQ0E7QUFDQSxLQWhKQTtBQWlKQSxxQkFqSkEsK0JBaUpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FySkE7QUFzSkEsb0JBdEpBLDhCQXNKQTtBQUNBO0FBQ0EsS0F4SkE7QUF5SkEsbUJBekpBLDJCQXlKQSxNQXpKQSxFQXlKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FIQTtBQUlBLEtBL0pBO0FBZ0tBLGtCQWhLQSwwQkFnS0EsTUFoS0EsRUFnS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQXZLQTtBQXdLQTtBQUNBLG9CQXpLQSw4QkF5S0E7QUFDQTtBQUNBLCtCQURBLEdBQ0Esa0RBREE7QUFFQTtBQUNBLEtBN0tBO0FBOEtBLGdCQTlLQSwwQkE4S0E7QUFDQTtBQUNBO0FBQ0EsT0FGQTtBQUdBO0FBQ0E7QUFDQTtBQUNBLHdEQURBOztBQUdBO0FBQ0EsT0FOQTtBQU9BO0FBQ0E7QUFDQSxPQUZBO0FBR0E7QUFDQTtBQUNBO0FBQ0EsNkRBREE7O0FBR0EsT0FMQTtBQU1BO0FBQ0E7QUFDQSxPQUZBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsT0FMQTtBQU1BO0FBQ0E7QUFDQTtBQUNBLE9BSEE7QUFJQTtBQUNBLCtGQURBOztBQUdBLGNBSEE7O0FBS0EsV0FMQSxDQUdBLE1BSEEsQ0FJQSxTQUpBLEdBS0EsR0FMQSxDQUlBLFNBSkE7QUFNQTtBQUNBLHdFQURBOztBQUdBO0FBQ0E7QUFDQSxTQUZBLE1BRUE7QUFDQTtBQUNBO0FBQ0EsT0FkQTtBQWVBO0FBQ0E7QUFDQSxPQUZBO0FBR0EsS0FqT0EsRUE1RkEsRSIsImZpbGUiOiI5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwicGFnZVwiPlxyXG5cdFx0PGltYWdlIHNyYz1cIi4uLy4uL3N0YXRpYy9ob21lL2JhbmNrMi5wbmdcIiBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XCIgbW9kZT1cIndpZHRoRml4XCI+PC9pbWFnZT5cclxuXHRcdDx2aWV3IHN0eWxlPVwiaGVpZ2h0OiAzNjBycHg7d2lkdGg6IDMwMHJweDtwb3NpdGlvbjpmaXhlZDt0b3A6MTBweDtyaWdodDoxMHB4O3otaW5kZXg6IDk5OTtcIiB2LWlmPVwibWVldGluZ1VzZXJPdGhlci51c2VySWRcIj5cclxuXHRcdFx0PHRydGMtcmVtb3RlLXZpZXcgOnVzZXJJZD1cIm1lZXRpbmdVc2VyT3RoZXIudXNlcklkXCIgOnZpZXdJZD1cIm1lZXRpbmdVc2VyT3RoZXIudXNlcklkXCIgXHJcblx0XHRcdFx0c3R5bGU9XCJoZWlnaHQ6IDM2MHJweDt3aWR0aDogMzAwcnB4O1wiPlxyXG5cdFx0XHQ8L3RydGMtcmVtb3RlLXZpZXc+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHQ8dHJ0Yy1sb2NhbC12aWV3IDp2aWV3SWQ9XCJtZWV0aW5nVXNlck15LnVzZXJJZFwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO3dpZHRoOjEwMCU7YmFja2dyb3VuZC1jb2xvcjogIzAwMDtcIj5cclxuXHRcdDwvdHJ0Yy1sb2NhbC12aWV3PlxyXG5cdFx0PHRleHQgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7dG9wOiAxMDBweDt3aWR0aDogNzUwcnB4O3RleHQtYWxpZ246IGNlbnRlcjtjb2xvcjogI2ZmZjtcIiB2LWlmPVwiIW1lZXRpbmdcIj7nrYnlvoXlrqLmnI3ov5vlhaU8L3RleHQ+XHJcblx0XHQ8dGV4dCBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTt0b3A6IDEwMHB4O3dpZHRoOiA3NTBycHg7dGV4dC1hbGlnbjogY2VudGVyO2NvbG9yOiAjZmZmO1wiIHYtaWY9XCJtZWV0aW5nXCI+e3sgbWVldGluZ1VzZXJPdGhlci51c2VySWQgfX08L3RleHQ+XHJcblx0XHQ8dmlldyBzdHlsZT1cImZsZXgtZGlyZWN0aW9uOiByb3c7anVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7cG9zaXRpb246IGZpeGVkO2JvdHRvbTo4MHB4O3dpZHRoOiA3NTBycHg7XCI+XHJcblx0XHRcdDxibG9jaz5cclxuXHRcdFx0XHQ8dGV4dCBjbGFzcz1cImJ0blwiIEBjbGljaz1cImhhbmRsZUVuZHRNZWV0aW5nXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDIwcHg7XCI+XHJcblx0XHRcdFx0XHTmjILmlq1cclxuXHRcdFx0XHQ8L3RleHQ+XHJcblx0XHRcdDwvYmxvY2s+XHJcblx0XHQ8L3ZpZXc+XHJcblx0PC92aWV3PlxyXG48L3RlbXBsYXRlPlxyXG48c2NyaXB0PlxyXG5cdGltcG9ydCB7XHJcblx0XHRtYXBTdGF0ZVxyXG5cdH0gZnJvbSAndnVleCc7XHJcblx0aW1wb3J0IHBlcm1pc2lvbiBmcm9tIFwiQC9UcnRjQ2xvdWQvcGVybWlzc2lvbi5qc1wiO1xyXG5cdGltcG9ydCBUcnRjQ2xvdWQgZnJvbSAnQC9UcnRjQ2xvdWQvbGliL2luZGV4JztcclxuXHRpbXBvcnQge1xyXG5cdFx0VFJUQ0FwcFNjZW5lLFxyXG5cdFx0VFJUQ1ZpZGVvU3RyZWFtVHlwZSxcclxuXHRcdFRSVENDbG91ZERlZlxyXG5cdH0gZnJvbSAnQC9UcnRjQ2xvdWQvbGliL1RydGNEZWZpbmVzJztcclxuXHRpbXBvcnQge1xyXG5cdFx0Z2VuVGVzdFVzZXJTaWdcclxuXHR9IGZyb20gJ0AvZGVidWcvR2VuZXJhdGVUZXN0VXNlclNpZyc7XHJcblx0aW1wb3J0IFRydGNMb2NhbFZpZXcgZnJvbSAnQC9UcnRjQ2xvdWQvdmlldy9UcnRjTG9jYWxWaWV3JztcclxuXHRpbXBvcnQgVHJ0Y1JlbW90ZVZpZXcgZnJvbSAnQC9UcnRjQ2xvdWQvdmlldy9UcnRjUmVtb3RlVmlldyc7XHJcblx0Y29uc3QgVHJ0Y0V2ZW50ID0gdW5pLnJlcXVpcmVOYXRpdmVQbHVnaW4oJ2dsb2JhbEV2ZW50Jyk7XHJcblxyXG5cdGltcG9ydCBBUEkgZnJvbSAnQC9hcGlzL2luZGV4LmpzJ1xyXG5cdGltcG9ydCBjb25maWcgZnJvbSAnQC9jb21tb24vY29uZmlnL2NvbmZpZy5qcydcclxuXHRsZXQgc29ja2V0VGFzayA9IGdldEFwcCgpLmdsb2JhbERhdGEuc29ja2V0VGFzaztcclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRjb21wb25lbnRzOiB7XHJcblx0XHRcdFRydGNMb2NhbFZpZXc6IFRydGNMb2NhbFZpZXcsXHJcblx0XHRcdFRydGNSZW1vdGVWaWV3OiBUcnRjUmVtb3RlVmlldyxcclxuXHRcdH0sXHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdC8v5piv5ZCm5q2j5Zyo6KeG6aKRXHJcblx0XHRcdFx0bWVldGluZzogZmFsc2UsXHJcblx0XHRcdFx0aGFzSW52aXRlOiBmYWxzZSxcclxuXHRcdFx0XHQvL+aIkVxyXG5cdFx0XHRcdG1lZXRpbmdVc2VyTXk6IHtcclxuXHRcdFx0XHRcdHVzZXJJZDogMFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0Ly/mma7pgJrnlKjmiLdcclxuXHRcdFx0XHRtZWV0aW5nVXNlck90aGVyOiB7XHJcblx0XHRcdFx0XHR1c2VySWQ6IDBcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdG51bTogMTAsXHJcblx0XHRcdFx0dHJ0Y0Nsb3VkOiBudWxsLFxyXG5cdFx0XHRcdHNka0FwcElkOiAwLFxyXG5cdFx0XHRcdHVzZXJTaWc6ICcnLFxyXG5cdFx0XHRcdHJvb21JZDogMCxcclxuXHRcdFx0XHR1c2VySWQ6ICcnLFxyXG5cdFx0XHRcdHN0YXJ0aW5nOiBmYWxzZSxcclxuXHRcdFx0XHR1c2VyVHlwZTogJ+etieW+hei/m+WFpScsXHJcblx0XHRcdFx0YXBwU2NlbmU6IFRSVENBcHBTY2VuZS5UUlRDQXBwU2NlbmVWaWRlb0NhbGwsIC8vIFRSVENBcHBTY2VuZVZpZGVvQ2FsbFxyXG5cdFx0XHRcdGlzRnJvbnRDYW1lcmE6IHRydWUsXHJcblx0XHRcdFx0c3RyZWFtVHlwZTogVFJUQ1ZpZGVvU3RyZWFtVHlwZS5UUlRDVmlkZW9TdHJlYW1UeXBlQmlnLFxyXG5cdFx0XHRcdHJlbW90ZVVzZXJJZDogJycsXHJcblx0XHRcdFx0YXVkaW9Sb3V0ZTogVFJUQ0Nsb3VkRGVmLlRSVENfQVVESU9fUk9VVEVfU1BFQUtFUixcclxuXHRcdFx0XHRtZXNzYWdlTGlzdDogW10sXHJcblx0XHRcdFx0bWVzc2FnZUNvbnRlbnQ6ICcnLFxyXG5cdFx0XHRcdHJvb206IHt9LFxyXG5cdFx0XHRcdHNob3BJZDogMCxcclxuXHRcdFx0XHRjdXN0b21lclVzZXJJZDogMFxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0Y29tcHV0ZWQ6IHtcclxuXHRcdFx0Li4ubWFwU3RhdGUoWyd1c2VyJywgJ3N0YXRpc3RpY3MnLCAnY29tbW9uJ10pXHJcblx0XHR9LFxyXG5cdFx0b25Mb2FkKGUpIHtcclxuXHRcdFx0Y29uc29sZS5sb2coZSk7XHJcblx0XHRcdGNvbnNvbGUubG9nKCd1c2VyJyx0aGlzLnVzZXIpO1xyXG5cdFx0XHR0aGlzLnJvb21JZCA9IGUucm9vbUlkO1xyXG5cdFx0XHR0aGlzLmN1c3RvbWVyVXNlcklkID0gZS51c2VyaWQ7XHJcblx0XHRcdHRoaXMudXNlcklkID0gJ3VzZXJfJyArIHRoaXMudXNlci5pZC50b1N0cmluZygpO1xyXG5cdFx0XHR0aGlzLm1lZXRpbmdVc2VyTXkgPSB7XHJcblx0XHRcdFx0dXNlcklkOiB0aGlzLnVzZXJJZFxyXG5cdFx0XHR9O1xyXG5cdFx0XHRcclxuXHRcdFx0dGhpcy5pbml0VXNlclNpZ24oKTtcclxuXHRcdFx0XHJcblx0XHRcdGlmICh0aGlzLnJvb21JZCAmJiB0aGlzLmN1c3RvbWVyVXNlcklkKSB7XHJcblx0XHRcdFx0Ly/lrqLmnI3ngrnov5vmnaXnmoRcclxuXHRcdFx0XHR0aGlzLm1lZXRpbmdVc2VyT3RoZXIgPSB7XHJcblx0XHRcdFx0XHR1c2VySWQ6ICd1c2VyXycgKyB0aGlzLmN1c3RvbWVyVXNlcklkLnRvU3RyaW5nKClcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdHRoaXMucm9vbSA9IHtcclxuXHRcdFx0XHRcdFJvb21ObzogZS5yb29tSWRcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdHRoaXMubWVldGluZyA9IHRydWU7XHJcblx0XHRcdFx0dGhpcy5oYW5kbGVTdGFydE1lZXRpbmcodGhpcy51c2VySWQpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoIWUucm9vbUlkKSB7XHJcblx0XHRcdFx0dGhpcy5jcmVhdGVSb29tKHtcclxuXHRcdFx0XHRcdFwibmFtZVwiOiBcIua1i+ivleaIv+mXtFwiLFxyXG5cdFx0XHRcdFx0XCJib2R5VGV4dFwiOiBcIlwiLFxyXG5cdFx0XHRcdFx0XCJyb29tTm9cIjogXCJcIixcclxuXHRcdFx0XHRcdFwiZGVzY3JpcHRpb25cIjogXCJcIixcclxuXHRcdFx0XHRcdFwiY2xpZW50SWRcIjogXCJcIixcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSBcclxuXHRcdH0sXHJcblx0XHRvblNob3coKSB7XHJcblx0XHR9LFxyXG5cdFx0b25IaWRlKCkge30sXHJcblx0XHRtb3VudGVkKCkge1xyXG5cdFx0XHRpZiAodW5pLmdldFN5c3RlbUluZm9TeW5jKCkucGxhdGZvcm0gPT09ICdhbmRyb2lkJykge1xyXG5cdFx0XHRcdHBlcm1pc2lvbi5yZXF1ZXN0QW5kcm9pZFBlcm1pc3Npb24oJ2FuZHJvaWQucGVybWlzc2lvbi5SRUNPUkRfQVVESU8nKTtcclxuXHRcdFx0XHRwZXJtaXNpb24ucmVxdWVzdEFuZHJvaWRQZXJtaXNzaW9uKCdhbmRyb2lkLnBlcm1pc3Npb24uQ0FNRVJBJyk7XHJcblx0XHRcdH1cclxuXHRcdFx0XHJcblx0XHR9LFxyXG5cdFx0b25VbmxvYWQoKSB7XHJcblx0XHRcdHRoaXMuZGVzdHJveUluc3RhbmNlKCk7XHJcblx0XHRcdGNvbnNvbGUubG9nKCctIG9uVW5sb2FkJyk7XHJcblx0XHR9LFxyXG5cdFx0b25CYWNrUHJlc3MoKSB7XHJcblx0XHRcdHRoaXMuZGVzdHJveUluc3RhbmNlKCk7XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRpbml0VXNlclNpZ24oKSB7XHJcblx0XHRcdFx0aWYgKHRoaXMudXNlcklkKSB7XHJcblx0XHRcdFx0XHQvLyDnlJ/miJAgdXNlclNpZ1xyXG5cdFx0XHRcdFx0Y29uc3Qge1xyXG5cdFx0XHRcdFx0XHRzZGtBcHBJZCxcclxuXHRcdFx0XHRcdFx0dXNlclNpZ1xyXG5cdFx0XHRcdFx0fSA9IGdlblRlc3RVc2VyU2lnKHRoaXMudXNlcklkKTtcclxuXHRcdFx0XHRcdHRoaXMuc2RrQXBwSWQgPSBzZGtBcHBJZDtcclxuXHRcdFx0XHRcdHRoaXMudXNlclNpZyA9IHVzZXJTaWc7XHJcblx0XHRcdFx0XHRpZiAoIXNka0FwcElkIHx8ICF1c2VyU2lnKSB7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHRcdHRpdGxlOiAn6K+35aGr5YaZIHNka0FwcElk44CBdXNlclNpZycsXHJcblx0XHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5pbml0VXNlclNpZ24oKTtcclxuXHRcdFx0XHRcdH0sIDIwMClcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdGhhbmRsZUludml0ZUN1c3RvbWVyVXNlcigpIHtcclxuXHRcdFx0XHR1bmkuc2hvd0xvYWRpbmcoKTtcclxuXHRcdFx0XHRBUEkubWVzc2FnZS5nZXRJbnZpdGVTZXJ2aWNlVXNlckpvaW4odGhpcy5yb29tLlJvb21ObykudGhlbihyZXMgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5oYXNJbnZpdGUgPSB0cnVlO1xyXG5cdFx0XHRcdH0pLmZpbmFsbHkoKCkgPT4ge1xyXG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGNyZWF0ZVJvb20oZGF0YSkge1xyXG5cdFx0XHRcdHVuaS5zaG93TG9hZGluZyh7XHJcblx0XHRcdFx0XHR0aXRsZTogJ+ato+WcqOWIm+W7uuaIv+mXtCdcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRBUEkubWVzc2FnZS5wb3N0QWRkUm9vbShkYXRhKS50aGVuKHJlcyA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnJvb20gPSByZXMuZGF0YTtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdwb3N0QWRkUm9vbScscmVzLmRhdGEpO1xyXG5cdFx0XHRcdFx0dGhpcy5yb29tSWQgPSByZXMuZGF0YS5Sb29tTm87XHJcblx0XHRcdFx0XHR0aGlzLmhhbmRsZUludml0ZUN1c3RvbWVyVXNlcigpO1xyXG5cdFx0XHRcdFx0dGhpcy5oYW5kbGVTdGFydE1lZXRpbmcodGhpcy51c2VySWQpO1xyXG5cdFx0XHRcdH0pLmZpbmFsbHkoKCkgPT4ge1xyXG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblxyXG5cdFx0XHRzZW5kTWVzc2FnZSgpIHtcclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXM7XHJcblx0XHRcdFx0dGhhdC5tZXNzYWdlTGlzdC5wdXNoKHtcclxuXHRcdFx0XHRcdGF1dGhvcjogJ+aIkScsXHJcblx0XHRcdFx0XHRjb250ZW50OiB0aGF0Lm1lc3NhZ2VDb250ZW50XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0XHR0aGF0Lm1lc3NhZ2VDb250ZW50ID0gJyc7XHJcblx0XHRcdFx0c29ja2V0VGFzay5zZW5kKHtcclxuXHRcdFx0XHRcdGRhdGE6IEpTT04uc3RyaW5naWZ5KHtcclxuXHRcdFx0XHRcdFx0Zm9ybVVzZXJJZDogdGhpcy51c2VySWQsXHJcblx0XHRcdFx0XHRcdGNvbnRlbnRUeXBlOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRjb250ZW50OiB0aGlzLm1lc3NhZ2VDb250ZW50LFxyXG5cdFx0XHRcdFx0XHRzZW5kVGltZTogbmV3IERhdGUoKSxcclxuXHRcdFx0XHRcdFx0bWV0aG9kOiAnc2VuZF90b19yb29tJyxcclxuXHRcdFx0XHRcdFx0Um9vbU5vOiB0aGlzLnJvb20uUm9vbU5vLFxyXG5cdFx0XHRcdFx0XHRSb29tTmFtZTogdGhpcy5yb29tLk5hbWUsXHJcblx0XHRcdFx0XHRcdElzUm9vbTogdHJ1ZVxyXG5cdFx0XHRcdFx0fSksXHJcblx0XHRcdFx0XHRzdWNjZXNzKHJlcykge30sXHJcblx0XHRcdFx0XHRmYWlsKGUpIHt9LFxyXG5cdFx0XHRcdFx0Y29tcGxldGUoKSB7fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRoYW5kbGVTdGFydE1lZXRpbmcodXNlcklkKSB7XHJcblx0XHRcdFx0dGhpcy5zdGFydGluZyA9IHRydWU7XHJcblx0XHRcdFx0dGhpcy4kbmV4dFRpY2soKCkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5jcmVhdGVUcnRjQ2xvdWQoKTtcclxuXHRcdFx0XHRcdHRoaXMuZW50ZXJSb29tKHVzZXJJZCk7XHJcblx0XHRcdFx0XHR0aGlzLnN0YXJ0TG9jYWxQcmV2aWV3KCk7XHJcblx0XHRcdFx0XHRpZih0aGlzLm1lZXRpbmdVc2VyT3RoZXIudXNlcklkKXtcclxuXHRcdFx0XHRcdFx0dGhpcy5zdGFydFJlbW90ZVZpZXcoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRoYW5kbGVFbmR0TWVldGluZygpIHtcclxuXHRcdFx0XHR0aGlzLmV4aXRSb29tKCk7XHJcblx0XHRcdFx0dGhpcy5kZXN0cm95SW5zdGFuY2UoKTtcclxuXHRcdFx0XHR1bmkubmF2aWdhdGVCYWNrKCk7XHJcblx0XHRcdH0sXHJcblxyXG5cdFx0XHRiaW5kSW5wdXRDaGFuZ2UoZXZlbnQsIHR5cGUpIHtcclxuXHRcdFx0XHRjb25zdCB2YWx1ZSA9IGV2ZW50LmRldGFpbC52YWx1ZTtcclxuXHRcdFx0XHRzd2l0Y2ggKHR5cGUpIHtcclxuXHRcdFx0XHRcdGNhc2UgJ3Jvb21JZCc6IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5yb29tSWQgPSB2YWx1ZTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRjYXNlICd1c2VySWQnOiB7XHJcblx0XHRcdFx0XHRcdHRoaXMudXNlcklkID0gdmFsdWU7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0ZGVzdHJveUluc3RhbmNlKCkge1xyXG5cdFx0XHRcdGlmICh0aGlzLnRydGNDbG91ZCkge1xyXG5cdFx0XHRcdFx0VHJ0Y0Nsb3VkLmRlc3Ryb3lJbnN0YW5jZSgpO1xyXG5cdFx0XHRcdFx0dGhpcy50cnRjQ2xvdWQgPSBudWxsO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0Y3JlYXRlVHJ0Y0Nsb3VkKCkge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdjcmVhdGVUcnRjQ2xvdWQnLCB0aGlzLnNka0FwcElkKTtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZCA9IFRydGNDbG91ZC5jcmVhdGVJbnN0YW5jZSgpO1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCd0aGlzLnRydGNDbG91ZCcsIHRoaXMudHJ0Y0Nsb3VkKVxyXG5cdFx0XHRcdHRoaXMuaGFuZGxlRXZlbnRzKCk7XHJcblx0XHRcdFx0dGhpcy5zZGtBcHBJZCAmJiB1bmkuJGNyZWF0ZVRydGNDbG91ZFVwbG9hZCh0aGlzLnNka0FwcElkKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0ZW50ZXJSb29tKHVzZXJJZCkge1xyXG5cdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRjb25zdCB7XHJcblx0XHRcdFx0XHRcdHNka0FwcElkLFxyXG5cdFx0XHRcdFx0XHRhcHBTY2VuZSxcclxuXHRcdFx0XHRcdFx0dXNlclNpZ1xyXG5cdFx0XHRcdFx0fSA9IHRoaXM7XHJcblx0XHRcdFx0XHRsZXQgcGFyYW0gPSB7XHJcblx0XHRcdFx0XHRcdHJvb21JZDogMCxcclxuXHRcdFx0XHRcdFx0c3RyUm9vbUlkOnRoaXMucm9vbS5Sb29tTm8sXHJcblx0XHRcdFx0XHRcdHVzZXJJZDogdXNlcklkLFxyXG5cdFx0XHRcdFx0XHRzZGtBcHBJZCxcclxuXHRcdFx0XHRcdFx0dXNlclNpZ1xyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdlbnRlclJvb20nLCBwYXJhbSk7XHJcblx0XHRcdFx0XHR0aGlzLnRydGNDbG91ZC5lbnRlclJvb20ocGFyYW0sIGFwcFNjZW5lKTtcclxuXHRcdFx0XHRcdHRoaXMuc2RrQXBwSWQgJiYgdW5pLiRlbnRlclJvb21TdWNjZXNzVXBsb2FkKHRoaXMuc2RrQXBwSWQpO1xyXG5cdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VMaXN0LnVuc2hpZnQoe1xyXG5cdFx0XHRcdFx0XHRjb250ZW50OiAnYGVudGVyUm9vbSBlcnJvciA9ICR7SlNPTi5zdHJpbmdpZnkoZXJyb3IpfWAnXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0dGhpcy5zZGtBcHBJZCAmJiB1bmkuJGVudGVyUm9vbUZhaWxlZFVwbG9hZCh0aGlzLnNka0FwcElkLCBKU09OLnN0cmluZ2lmeShlcnJvcikpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0ZXhpdFJvb20oKSB7XHJcblx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdHRoaXMuc3RhcnRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdHRoaXMuc3RvcExvY2FsUHJldmlldygpO1xyXG5cdFx0XHRcdFx0dGhpcy5zdG9wUmVtb3RlVmlldygpO1xyXG5cdFx0XHRcdFx0dGhpcy50cnRjQ2xvdWQuZXhpdFJvb20oKTtcclxuXHRcdFx0XHR9IGNhdGNoIChlKSB7XHJcblx0XHRcdFx0XHQvLyBUT0RPIGhhbmRsZSB0aGUgZXhjZXB0aW9uXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRzdGFydExvY2FsUHJldmlldygpIHtcclxuXHRcdFx0XHRjb25zb2xlLmxvZygnc3RhcnRMb2NhbFByZXZpZXcnLHRoaXMudXNlcklkKTtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5zdGFydExvY2FsUHJldmlldyh0aGlzLmlzRnJvbnRDYW1lcmEsIHRoaXMudXNlcklkKTtcclxuXHRcdFx0XHR0aGlzLnNka0FwcElkICYmIHVuaS4kc3RhcnRMb2NhbFByZXZpZXdVcGxvYWQodGhpcy5zZGtBcHBJZCk7XHJcblx0XHRcdH0sXHJcblx0XHRcdHN0b3BMb2NhbFByZXZpZXcoKSB7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQuc3RvcExvY2FsUHJldmlldygpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRzdGFydFJlbW90ZVZpZXcodXNlcklkKSB7XHJcblx0XHRcdFx0dXNlcklkID0gdXNlcklkIHx8IHRoaXMubWVldGluZ1VzZXJPdGhlci51c2VySWQ7XHJcblx0XHRcdFx0dGhpcy4kbmV4dFRpY2soKCkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy50cnRjQ2xvdWQuc3RhcnRSZW1vdGVWaWV3KHVzZXJJZCwgdGhpcy5zdHJlYW1UeXBlLCB1c2VySWQpO1xyXG5cdFx0XHRcdFx0dGhpcy5zZGtBcHBJZCAmJiB1bmkuJHN0YXJ0UmVtb3RlVmlld1N1Y2Nlc3NVcGxvYWQodGhpcy5zZGtBcHBJZCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdHN0b3BSZW1vdGVWaWV3KHVzZXJJZCkge1xyXG5cdFx0XHRcdGxldCBpbmRleCA9IHRoaXMubWVldGluZ1VzZXJzLmZpbmRJbmRleCh0ID0+IHQudXNlcklkID09IHVzZXJJZCk7XHJcblx0XHRcdFx0aWYgKGluZGV4ID4gLTEpIHtcclxuXHRcdFx0XHRcdHRoaXMubWVldGluZ1VzZXJzW2luZGV4XS5zdGFydGluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0dGhpcy5tZWV0aW5nVXNlcnMucHVzaCh0aGlzLm1lZXRpbmdVc2Vycy5wb3AoKSk7XHJcblx0XHRcdFx0XHR0aGlzLnRydGNDbG91ZC5zdG9wUmVtb3RlVmlldyh1c2VySWQsIHRoaXMuc3RyZWFtVHlwZSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDlkKznrZLjgIHlhY3mj5Ag5YiH5o2iXHJcblx0XHRcdHN3aXRjaEF1ZGlvUm91dGUoKSB7XHJcblx0XHRcdFx0dGhpcy5hdWRpb1JvdXRlID0gdGhpcy5hdWRpb1JvdXRlID09PSBUUlRDQ2xvdWREZWYuVFJUQ19BVURJT19ST1VURV9TUEVBS0VSID8gVFJUQ0Nsb3VkRGVmXHJcblx0XHRcdFx0XHQuVFJUQ19BVURJT19ST1VURV9FQVJQSUVDRSA6IFRSVENDbG91ZERlZi5UUlRDX0FVRElPX1JPVVRFX1NQRUFLRVI7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQuc2V0QXVkaW9Sb3V0ZSh0aGlzLmF1ZGlvUm91dGUpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRoYW5kbGVFdmVudHMoKSB7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uV2FybmluZycsIChyZXMpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGAtIG9uV2FybmluZyA9ICR7cmVzfWApO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLm9uKCdvbkVycm9yJywgKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ29uRXJyb3InLCByZXMpXHJcblx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VMaXN0LnVuc2hpZnQoe1xyXG5cdFx0XHRcdFx0XHRjb250ZW50OiBgZXJyb3I6ICR7SlNPTi5zdHJpbmdpZnkocmVzKX1gXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0dGhpcy5zZGtBcHBJZCAmJiB1bmkuJG9uRXJyb3JVcGxvYWQodGhpcy5zZGtBcHBJZCwgSlNPTi5zdHJpbmdpZnkocmVzKSk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uRW50ZXJSb29tJywgKHJlc3VsdCkgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coYC0gb25FbnRlclJvb20gPSAke3Jlc3VsdH1gKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5vbignb25FeGl0Um9vbScsIChyZWFzb24pID0+IHtcclxuXHRcdFx0XHRcdGNvbnN0IHJlYXNvbkxpc3QgPSBbJ+S4u+WKqOiwg+eUqCBleGl0Um9vbSDpgIDmiL8nLCAn6KKr5pyN5Yqh5Zmo6Lii5Ye65b2T5YmN5oi/6Ze0JywgJ+W9k+WJjeaIv+mXtOaVtOS4quiiq+ino+aVoyddO1xyXG5cdFx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdC51bnNoaWZ0KHtcclxuXHRcdFx0XHRcdFx0Y29udGVudDogYOmAgOaIvyAke3JlYXNvbkxpc3RbcmVhc29uXX1gXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLm9uKCdvbkZpcnN0VmlkZW9GcmFtZScsIChyZXMpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGDmuLLmn5PnmoTpppbluKfnlLvpnaLlk43lupQgPSAke0pTT04uc3RyaW5naWZ5KHJlcyl9YCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uUmVtb3RlVXNlckVudGVyUm9vbScsICh1c2VySWQpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdvblJlbW90ZVVzZXJFbnRlclJvb20nLHVzZXJJZCk7XHJcblx0XHRcdFx0XHR0aGlzLm1lZXRpbmdVc2VyT3RoZXIudXNlcklkID0gdXNlcklkO1xyXG5cdFx0XHRcdFx0dGhpcy5zdGFydFJzdGFydFJlbW90ZVZpZXcodXNlcklkKTtcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLm9uKCdvblJlbW90ZVVzZXJMZWF2ZVJvb20nLCAodXNlcklkKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnb25SZW1vdGVVc2VyTGVhdmVSb29tJyx1c2VySWQpO1xyXG5cdFx0XHRcdFx0dGhpcy5tZWV0aW5nID0gZmFsc2U7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uVXNlclZpZGVvQXZhaWxhYmxlJywgKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ29uVXNlclZpZGVvQXZhaWxhYmxlJyxyZXMpO1xyXG5cdFx0XHRcdFx0Y29uc3Qge1xyXG5cdFx0XHRcdFx0XHR1c2VySWQsXHJcblx0XHRcdFx0XHRcdGF2YWlsYWJsZVxyXG5cdFx0XHRcdFx0fSA9IHJlcztcclxuXHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3QudW5zaGlmdCh7XHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IGBvblVzZXJWaWRlb0F2YWlsYWJsZSA9ICR7SlNPTi5zdHJpbmdpZnkocmVzKX1gXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0aWYgKHVzZXJJZCAmJiBhdmFpbGFibGUpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5zdGFydFJlbW90ZVZpZXcodXNlcklkKTtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc3RvcFJlbW90ZVZpZXcodXNlcklkKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5vbignb25FeGl0Um9vbScsIChyZXMpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGBvbkV4aXRSb29tID0gJHtKU09OLnN0cmluZ2lmeShyZXMpfWApO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0fVxyXG5cdH1cclxuPC9zY3JpcHQ+XHJcbjxzdHlsZSBzcmM9XCJAL3BhZ2VzL21lZXRpbmcvc2VydmljZU1lZXRpbmcuY3NzXCI+PC9zdHlsZT5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///9\n"); 355 +eval("/* WEBPACK VAR INJECTION */(function(__webpack_provided_uni_dot_requireNativePlugin, __f__) {Object.defineProperty(exports, \"__esModule\", { value: true });exports.default = void 0;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _vuex = __webpack_require__(/*! vuex */ 12);\n\n\nvar _permission = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/permission.js */ 13));\nvar _index = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/lib/index */ 14));\nvar _TrtcDefines = __webpack_require__(/*! @/TrtcCloud/lib/TrtcDefines */ 16);\n\n\n\n\n\n\nvar _GenerateTestUserSig = __webpack_require__(/*! @/debug/GenerateTestUserSig */ 17);\n\n\nvar _TrtcLocalView = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/view/TrtcLocalView */ 19));\nvar _TrtcRemoteView = _interopRequireDefault(__webpack_require__(/*! @/TrtcCloud/view/TrtcRemoteView */ 25));\n\n\nvar _index2 = _interopRequireDefault(__webpack_require__(/*! @/apis/index.js */ 30));\nvar _config = _interopRequireDefault(__webpack_require__(/*! @/common/config/config.js */ 38));function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function ownKeys(object, enumerableOnly) {var keys = Object.keys(object);if (Object.getOwnPropertySymbols) {var symbols = Object.getOwnPropertySymbols(object);if (enumerableOnly) symbols = symbols.filter(function (sym) {return Object.getOwnPropertyDescriptor(object, sym).enumerable;});keys.push.apply(keys, symbols);}return keys;}function _objectSpread(target) {for (var i = 1; i < arguments.length; i++) {var source = arguments[i] != null ? arguments[i] : {};if (i % 2) {ownKeys(Object(source), true).forEach(function (key) {_defineProperty(target, key, source[key]);});} else if (Object.getOwnPropertyDescriptors) {Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));} else {ownKeys(Object(source)).forEach(function (key) {Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));});}}return target;}function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;}var TrtcEvent = __webpack_provided_uni_dot_requireNativePlugin('globalEvent');\nvar socketTask = getApp().globalData.socketTask;var _default =\n{\n components: {\n TrtcLocalView: _TrtcLocalView.default,\n TrtcRemoteView: _TrtcRemoteView.default },\n\n data: function data() {\n return {\n //是否正在视频\n meeting: false,\n hasInvite: false,\n //我\n meetingUserMy: {\n userId: 0 },\n\n //普通用户\n meetingUserOther: {\n userId: 0 },\n\n num: 10,\n trtcCloud: null,\n sdkAppId: 0,\n userSig: '',\n roomId: 0,\n userId: '',\n starting: false,\n userType: '等待进入',\n appScene: _TrtcDefines.TRTCAppScene.TRTCAppSceneVideoCall, // TRTCAppSceneVideoCall\n isFrontCamera: true,\n streamType: _TrtcDefines.TRTCVideoStreamType.TRTCVideoStreamTypeBig,\n remoteUserId: '',\n audioRoute: _TrtcDefines.TRTCCloudDef.TRTC_AUDIO_ROUTE_SPEAKER,\n messageList: [],\n messageContent: '',\n room: {},\n shopId: 0,\n customerUserId: 0 };\n\n },\n computed: _objectSpread({},\n (0, _vuex.mapState)(['user', 'statistics', 'common'])),\n\n onLoad: function onLoad(e) {\n __f__(\"log\", e, \" at pages/meeting/serviceMeeting.nvue:86\");\n __f__(\"log\", 'user', this.user, \" at pages/meeting/serviceMeeting.nvue:87\");\n this.roomId = e.roomId;\n this.customerUserId = e.userid;\n this.userId = 'user_' + this.user.id.toString();\n this.meetingUserMy = {\n userId: this.userId };\n\n\n this.initUserSign();\n\n if (this.roomId && this.customerUserId) {\n //客服点进来的\n this.meetingUserOther = {\n userId: 'user_' + this.customerUserId.toString() };\n\n this.room = {\n RoomNo: e.roomId };\n\n this.meeting = true;\n this.handleStartMeeting(this.userId);\n }\n\n if (!e.roomId) {\n this.createRoom({\n \"name\": \"测试房间\",\n \"bodyText\": \"\",\n \"roomNo\": \"\",\n \"description\": \"\",\n \"clientId\": \"\" });\n\n }\n },\n onShow: function onShow() {\n },\n onHide: function onHide() {},\n mounted: function mounted() {\n if (uni.getSystemInfoSync().platform === 'android') {\n _permission.default.requestAndroidPermission('android.permission.RECORD_AUDIO');\n _permission.default.requestAndroidPermission('android.permission.CAMERA');\n }\n\n },\n onUnload: function onUnload() {\n this.destroyInstance();\n __f__(\"log\", '- onUnload', \" at pages/meeting/serviceMeeting.nvue:131\");\n },\n onBackPress: function onBackPress() {\n this.destroyInstance();\n },\n methods: {\n initUserSign: function initUserSign() {var _this = this;\n if (this.userId) {\n // 生成 userSig\n var _genTestUserSig =\n\n\n (0, _GenerateTestUserSig.genTestUserSig)(this.userId),sdkAppId = _genTestUserSig.sdkAppId,userSig = _genTestUserSig.userSig;\n this.sdkAppId = sdkAppId;\n this.userSig = userSig;\n if (!sdkAppId || !userSig) {\n uni.showToast({\n title: '请填写 sdkAppId、userSig',\n icon: 'none' });\n\n }\n } else {\n setTimeout(function () {\n _this.initUserSign();\n }, 200);\n }\n },\n handleInviteCustomerUser: function handleInviteCustomerUser() {var _this2 = this;\n uni.showLoading();\n _index2.default.message.getInviteServiceUserJoin(this.room.RoomNo).then(function (res) {\n _this2.hasInvite = true;\n }).finally(function () {\n uni.hideLoading();\n });\n },\n createRoom: function createRoom(data) {var _this3 = this;\n uni.showLoading({\n title: '正在创建房间' });\n\n _index2.default.message.postAddRoom(data).then(function (res) {\n _this3.room = res.data;\n __f__(\"log\", 'postAddRoom', res.data, \" at pages/meeting/serviceMeeting.nvue:172\");\n _this3.roomId = res.data.RoomNo;\n _this3.handleInviteCustomerUser();\n _this3.handleStartMeeting(_this3.userId);\n }).finally(function () {\n uni.hideLoading();\n });\n },\n\n sendMessage: function sendMessage() {\n var that = this;\n that.messageList.push({\n author: '我',\n content: that.messageContent });\n\n that.messageContent = '';\n socketTask.send({\n data: JSON.stringify({\n formUserId: this.userId,\n contentType: \"\",\n content: this.messageContent,\n sendTime: new Date(),\n method: 'send_to_room',\n RoomNo: this.room.RoomNo,\n RoomName: this.room.Name,\n IsRoom: true }),\n\n success: function success(res) {},\n fail: function fail(e) {},\n complete: function complete() {} });\n\n },\n handleStartMeeting: function handleStartMeeting(userId) {var _this4 = this;\n this.starting = true;\n this.$nextTick(function () {\n _this4.createTrtcCloud();\n _this4.enterRoom(userId);\n _this4.startLocalPreview();\n if (_this4.meetingUserOther.userId) {\n _this4.startRemoteView();\n }\n });\n },\n handleEndtMeeting: function handleEndtMeeting() {\n this.exitRoom();\n this.destroyInstance();\n uni.navigateBack();\n },\n\n bindInputChange: function bindInputChange(event, type) {\n var value = event.detail.value;\n switch (type) {\n case 'roomId':{\n this.roomId = value;\n break;\n }\n case 'userId':{\n this.userId = value;\n break;\n }}\n\n },\n destroyInstance: function destroyInstance() {\n if (this.trtcCloud) {\n _index.default.destroyInstance();\n this.trtcCloud = null;\n }\n },\n createTrtcCloud: function createTrtcCloud() {\n __f__(\"log\", 'createTrtcCloud', this.sdkAppId, \" at pages/meeting/serviceMeeting.nvue:241\");\n this.trtcCloud = _index.default.createInstance();\n __f__(\"log\", 'this.trtcCloud', this.trtcCloud, \" at pages/meeting/serviceMeeting.nvue:243\");\n this.handleEvents();\n this.sdkAppId && uni.$createTrtcCloudUpload(this.sdkAppId);\n },\n enterRoom: function enterRoom(userId) {\n try {var\n\n sdkAppId =\n\n\n this.sdkAppId,appScene = this.appScene,userSig = this.userSig;\n var param = {\n roomId: 0,\n strRoomId: this.room.RoomNo,\n userId: userId,\n sdkAppId: sdkAppId,\n userSig: userSig };\n\n __f__(\"log\", 'enterRoom', param, \" at pages/meeting/serviceMeeting.nvue:261\");\n this.trtcCloud.enterRoom(param, appScene);\n this.sdkAppId && uni.$enterRoomSuccessUpload(this.sdkAppId);\n } catch (error) {\n this.messageList.unshift({\n content: '`enterRoom error = ${JSON.stringify(error)}`' });\n\n this.sdkAppId && uni.$enterRoomFailedUpload(this.sdkAppId, JSON.stringify(error));\n }\n },\n exitRoom: function exitRoom() {\n try {\n this.starting = false;\n this.stopLocalPreview();\n this.stopRemoteView(this.userId);\n this.trtcCloud.exitRoom();\n } catch (e) {\n // TODO handle the exception\n }\n },\n startLocalPreview: function startLocalPreview() {\n __f__(\"log\", 'startLocalPreview', this.userId, \" at pages/meeting/serviceMeeting.nvue:282\");\n this.trtcCloud.startLocalPreview(this.isFrontCamera, this.userId);\n this.trtcCloud.startLocalAudio(_TrtcDefines.TRTCAudioQuality.TRTCAudioQualityDefault);\n this.sdkAppId && uni.$startLocalPreviewUpload(this.sdkAppId);\n },\n stopLocalPreview: function stopLocalPreview() {\n this.trtcCloud.stopLocalPreview();\n },\n startRemoteView: function startRemoteView(userId) {var _this5 = this;\n userId = userId || this.meetingUserOther.userId;\n this.$nextTick(function () {\n _this5.trtcCloud.startRemoteView(userId, _this5.streamType, userId);\n _this5.sdkAppId && uni.$startRemoteViewSuccessUpload(_this5.sdkAppId);\n });\n },\n stopRemoteView: function stopRemoteView(userId) {\n this.trtcCloud.stopRemoteView(userId, this.streamType);\n },\n // 听筒、免提 切换\n switchAudioRoute: function switchAudioRoute() {\n this.audioRoute = this.audioRoute === _TrtcDefines.TRTCCloudDef.TRTC_AUDIO_ROUTE_SPEAKER ? _TrtcDefines.TRTCCloudDef.\n TRTC_AUDIO_ROUTE_EARPIECE : _TrtcDefines.TRTCCloudDef.TRTC_AUDIO_ROUTE_SPEAKER;\n this.trtcCloud.setAudioRoute(this.audioRoute);\n },\n handleEvents: function handleEvents() {var _this6 = this;\n this.trtcCloud.on('onWarning', function (res) {\n __f__(\"log\", \"- onWarning = \".concat(res), \" at pages/meeting/serviceMeeting.nvue:308\");\n });\n this.trtcCloud.on('onError', function (res) {\n __f__(\"log\", 'onError', res, \" at pages/meeting/serviceMeeting.nvue:311\");\n _this6.messageList.unshift({\n content: \"error: \".concat(JSON.stringify(res)) });\n\n _this6.sdkAppId && uni.$onErrorUpload(_this6.sdkAppId, JSON.stringify(res));\n });\n this.trtcCloud.on('onEnterRoom', function (result) {\n __f__(\"log\", \"- onEnterRoom = \".concat(result), \" at pages/meeting/serviceMeeting.nvue:318\");\n });\n this.trtcCloud.on('onExitRoom', function (reason) {\n __f__(\"log\", 'onExitRoom', reason, \" at pages/meeting/serviceMeeting.nvue:321\");\n var reasonList = ['主动调用 exitRoom 退房', '被服务器踢出当前房间', '当前房间整个被解散'];\n _this6.messageList.unshift({\n content: \"\\u9000\\u623F \".concat(reasonList[reason]) });\n\n });\n this.trtcCloud.on('onFirstVideoFrame', function (res) {\n __f__(\"log\", \"\\u6E32\\u67D3\\u7684\\u9996\\u5E27\\u753B\\u9762\\u54CD\\u5E94 = \".concat(JSON.stringify(res)), \" at pages/meeting/serviceMeeting.nvue:328\");\n });\n this.trtcCloud.on('onRemoteUserEnterRoom', function (userId) {\n __f__(\"log\", 'onRemoteUserEnterRoom', userId, \" at pages/meeting/serviceMeeting.nvue:331\");\n _this6.meetingUserOther.userId = userId;\n _this6.meeting = true;\n _this6.startRemoteView(userId);\n\n });\n this.trtcCloud.on('onRemoteUserLeaveRoom', function (userId) {\n __f__(\"log\", 'onRemoteUserLeaveRoom', userId, \" at pages/meeting/serviceMeeting.nvue:338\");\n _this6.meetingUserOther.userId = '';\n _this6.meeting = false;\n uni.showModal({\n content: '对方已退出',\n showCancel: false });\n\n\n });\n this.trtcCloud.on('onUserAudioAvailable', function (res) {\n __f__(\"log\", 'onUserAudioAvailable', res, \" at pages/meeting/serviceMeeting.nvue:348\");\n });\n this.trtcCloud.on('onUserVideoAvailable', function (res) {\n __f__(\"log\", 'onUserVideoAvailable', res, \" at pages/meeting/serviceMeeting.nvue:351\");var\n\n userId =\n\n res.userId,available = res.available;\n _this6.messageList.unshift({\n content: \"onUserVideoAvailable = \".concat(JSON.stringify(res)) });\n\n if (available) {\n _this6.startLocalPreview();\n }\n if (userId && available) {\n _this6.startRemoteView(userId);\n } else {\n _this6.stopRemoteView(userId);\n }\n });\n this.trtcCloud.on('onExitRoom', function (res) {\n __f__(\"log\", \"onExitRoom = \".concat(JSON.stringify(res)), \" at pages/meeting/serviceMeeting.nvue:369\");\n });\n } } };exports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-hbuilderx/packages/uni-app-plus-nvue/dist/require-native-plugin.js */ 10)[\"default\"], __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 11)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbWVldGluZy9zZXJ2aWNlTWVldGluZy5udnVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQTs7O0FBR0E7QUFDQTtBQUNBOzs7Ozs7O0FBT0E7OztBQUdBO0FBQ0E7OztBQUdBO0FBQ0EsK0Ysd25DQUhBO0FBSUEsZ0Q7QUFDQTtBQUNBO0FBQ0EseUNBREE7QUFFQSwyQ0FGQSxFQURBOztBQUtBLE1BTEEsa0JBS0E7QUFDQTtBQUNBO0FBQ0Esb0JBRkE7QUFHQSxzQkFIQTtBQUlBO0FBQ0E7QUFDQSxpQkFEQSxFQUxBOztBQVFBO0FBQ0E7QUFDQSxpQkFEQSxFQVRBOztBQVlBLGFBWkE7QUFhQSxxQkFiQTtBQWNBLGlCQWRBO0FBZUEsaUJBZkE7QUFnQkEsZUFoQkE7QUFpQkEsZ0JBakJBO0FBa0JBLHFCQWxCQTtBQW1CQSxzQkFuQkE7QUFvQkEsK0RBcEJBLEVBb0JBO0FBQ0EseUJBckJBO0FBc0JBLHlFQXRCQTtBQXVCQSxzQkF2QkE7QUF3QkEsb0VBeEJBO0FBeUJBLHFCQXpCQTtBQTBCQSx3QkExQkE7QUEyQkEsY0EzQkE7QUE0QkEsZUE1QkE7QUE2QkEsdUJBN0JBOztBQStCQSxHQXJDQTtBQXNDQTtBQUNBLHVEQURBLENBdENBOztBQXlDQSxRQXpDQSxrQkF5Q0EsQ0F6Q0EsRUF5Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFEQTs7O0FBSUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esd0RBREE7O0FBR0E7QUFDQSx3QkFEQTs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNCQURBO0FBRUEsc0JBRkE7QUFHQSxvQkFIQTtBQUlBLHlCQUpBO0FBS0Esc0JBTEE7O0FBT0E7QUFDQSxHQTFFQTtBQTJFQSxRQTNFQSxvQkEyRUE7QUFDQSxHQTVFQTtBQTZFQSxRQTdFQSxvQkE2RUEsRUE3RUE7QUE4RUEsU0E5RUEscUJBOEVBO0FBQ0E7QUFD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QUNBO0FBQ0Esd0RBREE7O0FBR0E7QUFDQSxPQU5BO0FBT0E7QUFDQTtBQUNBLE9BRkE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZEQURBOztBQUdBLE9BTkE7QUFPQTtBQUNBO0FBQ0EsT0FGQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsT0FOQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFEQTtBQUVBLDJCQUZBOzs7QUFLQSxPQVRBO0FBVUE7QUFDQTtBQUNBLE9BRkE7QUFHQTtBQUNBLCtGQURBOztBQUdBLGNBSEE7O0FBS0EsV0FMQSxDQUdBLE1BSEEsQ0FJQSxTQUpBLEdBS0EsR0FMQSxDQUlBLFNBSkE7QUFNQTtBQUNBLHdFQURBOztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUZBLE1BRUE7QUFDQTtBQUNBO0FBQ0EsT0FqQkE7QUFrQkE7QUFDQTtBQUNBLE9BRkE7QUFHQSxLQTNPQSxFQTVGQSxFIiwiZmlsZSI6IjkuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcblx0PHZpZXcgY2xhc3M9XCJwYWdlXCI+XHJcblx0XHQ8aW1hZ2Ugc3JjPVwiLi4vLi4vc3RhdGljL2hvbWUvYmFuY2syLnBuZ1wiIHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTtcIiBtb2RlPVwid2lkdGhGaXhcIj48L2ltYWdlPlxyXG5cdFx0PHZpZXcgc3R5bGU9XCJoZWlnaHQ6IDMwMHJweDt3aWR0aDogMjUwcnB4O3Bvc2l0aW9uOmZpeGVkO3RvcDo0MHB4O3JpZ2h0OjIwcHg7ei1pbmRleDogOTk5O1wiIHYtaWY9XCJtZWV0aW5nVXNlck90aGVyLnVzZXJJZFwiPlxyXG5cdFx0XHQ8dHJ0Yy1yZW1vdGUtdmlldyA6dXNlcklkPVwibWVldGluZ1VzZXJPdGhlci51c2VySWRcIiA6dmlld0lkPVwibWVldGluZ1VzZXJPdGhlci51c2VySWRcIiBcclxuXHRcdFx0XHRzdHlsZT1cImhlaWdodDogMzAwcnB4O3dpZHRoOiAyNTBycHg7XCI+XHJcblx0XHRcdDwvdHJ0Yy1yZW1vdGUtdmlldz5cclxuXHRcdDwvdmlldz5cclxuXHRcdDx0cnRjLWxvY2FsLXZpZXcgOnZpZXdJZD1cIm1lZXRpbmdVc2VyTXkudXNlcklkXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwO1wiPlxyXG5cdFx0PC90cnRjLWxvY2FsLXZpZXc+XHJcblx0XHQ8dGV4dCBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTt0b3A6IDEwMHB4O3dpZHRoOiA3NTBycHg7dGV4dC1hbGlnbjogY2VudGVyO2NvbG9yOiAjZmZmO1wiIHYtaWY9XCIhbWVldGluZ1wiPuetieW+heWuouacjei/m+WFpTwvdGV4dD5cclxuXHRcdDx2aWV3IHN0eWxlPVwiZmxleC1kaXJlY3Rpb246IHJvdztqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtwb3NpdGlvbjogZml4ZWQ7Ym90dG9tOjgwcHg7d2lkdGg6IDc1MHJweDtcIj5cclxuXHRcdFx0PGJsb2NrPlxyXG5cdFx0XHRcdDx0ZXh0IGNsYXNzPVwiYnRuXCIgQGNsaWNrPVwiaGFuZGxlRW5kdE1lZXRpbmdcIiBzdHlsZT1cIm1hcmdpbi1yaWdodDogMjBweDtcIj5cclxuXHRcdFx0XHRcdOaMguaWrVxyXG5cdFx0XHRcdDwvdGV4dD5cclxuXHRcdFx0PC9ibG9jaz5cclxuXHRcdDwvdmlldz5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcbjxzY3JpcHQ+XHJcblx0aW1wb3J0IHtcclxuXHRcdG1hcFN0YXRlXHJcblx0fSBmcm9tICd2dWV4JztcclxuXHRpbXBvcnQgcGVybWlzaW9uIGZyb20gXCJAL1RydGNDbG91ZC9wZXJtaXNzaW9uLmpzXCI7XHJcblx0aW1wb3J0IFRydGNDbG91ZCBmcm9tICdAL1RydGNDbG91ZC9saWIvaW5kZXgnO1xyXG5cdGltcG9ydCB7XHJcblx0XHRUUlRDQXBwU2NlbmUsXHJcblx0XHRUUlRDVmlkZW9TdHJlYW1UeXBlLFxyXG5cdFx0VFJUQ0Nsb3VkRGVmLFxyXG5cdFx0VFJUQ0F1ZGlvUXVhbGl0eVxyXG5cdH0gZnJvbSAnQC9UcnRjQ2xvdWQvbGliL1RydGNEZWZpbmVzJztcclxuXHRcclxuXHRpbXBvcnQge1xyXG5cdFx0Z2VuVGVzdFVzZXJTaWdcclxuXHR9IGZyb20gJ0AvZGVidWcvR2VuZXJhdGVUZXN0VXNlclNpZyc7XHJcblx0aW1wb3J0IFRydGNMb2NhbFZpZXcgZnJvbSAnQC9UcnRjQ2xvdWQvdmlldy9UcnRjTG9jYWxWaWV3JztcclxuXHRpbXBvcnQgVHJ0Y1JlbW90ZVZpZXcgZnJvbSAnQC9UcnRjQ2xvdWQvdmlldy9UcnRjUmVtb3RlVmlldyc7XHJcblx0Y29uc3QgVHJ0Y0V2ZW50ID0gdW5pLnJlcXVpcmVOYXRpdmVQbHVnaW4oJ2dsb2JhbEV2ZW50Jyk7XHJcblxyXG5cdGltcG9ydCBBUEkgZnJvbSAnQC9hcGlzL2luZGV4LmpzJ1xyXG5cdGltcG9ydCBjb25maWcgZnJvbSAnQC9jb21tb24vY29uZmlnL2NvbmZpZy5qcydcclxuXHRsZXQgc29ja2V0VGFzayA9IGdldEFwcCgpLmdsb2JhbERhdGEuc29ja2V0VGFzaztcclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRjb21wb25lbnRzOiB7XHJcblx0XHRcdFRydGNMb2NhbFZpZXc6IFRydGNMb2NhbFZpZXcsXHJcblx0XHRcdFRydGNSZW1vdGVWaWV3OiBUcnRjUmVtb3RlVmlldyxcclxuXHRcdH0sXHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdC8v5piv5ZCm5q2j5Zyo6KeG6aKRXHJcblx0XHRcdFx0bWVldGluZzogZmFsc2UsXHJcblx0XHRcdFx0aGFzSW52aXRlOiBmYWxzZSxcclxuXHRcdFx0XHQvL+aIkVxyXG5cdFx0XHRcdG1lZXRpbmdVc2VyTXk6IHtcclxuXHRcdFx0XHRcdHVzZXJJZDogMFxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0Ly/mma7pgJrnlKjmiLdcclxuXHRcdFx0XHRtZWV0aW5nVXNlck90aGVyOiB7XHJcblx0XHRcdFx0XHR1c2VySWQ6IDBcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdG51bTogMTAsXHJcblx0XHRcdFx0dHJ0Y0Nsb3VkOiBudWxsLFxyXG5cdFx0XHRcdHNka0FwcElkOiAwLFxyXG5cdFx0XHRcdHVzZXJTaWc6ICcnLFxyXG5cdFx0XHRcdHJvb21JZDogMCxcclxuXHRcdFx0XHR1c2VySWQ6ICcnLFxyXG5cdFx0XHRcdHN0YXJ0aW5nOiBmYWxzZSxcclxuXHRcdFx0XHR1c2VyVHlwZTogJ+etieW+hei/m+WFpScsXHJcblx0XHRcdFx0YXBwU2NlbmU6IFRSVENBcHBTY2VuZS5UUlRDQXBwU2NlbmVWaWRlb0NhbGwsIC8vIFRSVENBcHBTY2VuZVZpZGVvQ2FsbFxyXG5cdFx0XHRcdGlzRnJvbnRDYW1lcmE6IHRydWUsXHJcblx0XHRcdFx0c3RyZWFtVHlwZTogVFJUQ1ZpZGVvU3RyZWFtVHlwZS5UUlRDVmlkZW9TdHJlYW1UeXBlQmlnLFxyXG5cdFx0XHRcdHJlbW90ZVVzZXJJZDogJycsXHJcblx0XHRcdFx0YXVkaW9Sb3V0ZTogVFJUQ0Nsb3VkRGVmLlRSVENfQVVESU9fUk9VVEVfU1BFQUtFUixcclxuXHRcdFx0XHRtZXNzYWdlTGlzdDogW10sXHJcblx0XHRcdFx0bWVzc2FnZUNvbnRlbnQ6ICcnLFxyXG5cdFx0XHRcdHJvb206IHt9LFxyXG5cdFx0XHRcdHNob3BJZDogMCxcclxuXHRcdFx0XHRjdXN0b21lclVzZXJJZDogMFxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0Y29tcHV0ZWQ6IHtcclxuXHRcdFx0Li4ubWFwU3RhdGUoWyd1c2VyJywgJ3N0YXRpc3RpY3MnLCAnY29tbW9uJ10pXHJcblx0XHR9LFxyXG5cdFx0b25Mb2FkKGUpIHtcclxuXHRcdFx0Y29uc29sZS5sb2coZSk7XHJcblx0XHRcdGNvbnNvbGUubG9nKCd1c2VyJyx0aGlzLnVzZXIpO1xyXG5cdFx0XHR0aGlzLnJvb21JZCA9IGUucm9vbUlkO1xyXG5cdFx0XHR0aGlzLmN1c3RvbWVyVXNlcklkID0gZS51c2VyaWQ7XHJcblx0XHRcdHRoaXMudXNlcklkID0gJ3VzZXJfJyArIHRoaXMudXNlci5pZC50b1N0cmluZygpO1xyXG5cdFx0XHR0aGlzLm1lZXRpbmdVc2VyTXkgPSB7XHJcblx0XHRcdFx0dXNlcklkOiB0aGlzLnVzZXJJZFxyXG5cdFx0XHR9O1xyXG5cdFx0XHRcclxuXHRcdFx0dGhpcy5pbml0VXNlclNpZ24oKTtcclxuXHRcdFx0XHJcblx0XHRcdGlmICh0aGlzLnJvb21JZCAmJiB0aGlzLmN1c3RvbWVyVXNlcklkKSB7XHJcblx0XHRcdFx0Ly/lrqLmnI3ngrnov5vmnaXnmoRcclxuXHRcdFx0XHR0aGlzLm1lZXRpbmdVc2VyT3RoZXIgPSB7XHJcblx0XHRcdFx0XHR1c2VySWQ6ICd1c2VyXycgKyB0aGlzLmN1c3RvbWVyVXNlcklkLnRvU3RyaW5nKClcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdHRoaXMucm9vbSA9IHtcclxuXHRcdFx0XHRcdFJvb21ObzogZS5yb29tSWRcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdHRoaXMubWVldGluZyA9IHRydWU7XHJcblx0XHRcdFx0dGhpcy5oYW5kbGVTdGFydE1lZXRpbmcodGhpcy51c2VySWQpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoIWUucm9vbUlkKSB7XHJcblx0XHRcdFx0dGhpcy5jcmVhdGVSb29tKHtcclxuXHRcdFx0XHRcdFwibmFtZVwiOiBcIua1i+ivleaIv+mXtFwiLFxyXG5cdFx0XHRcdFx0XCJib2R5VGV4dFwiOiBcIlwiLFxyXG5cdFx0XHRcdFx0XCJyb29tTm9cIjogXCJcIixcclxuXHRcdFx0XHRcdFwiZGVzY3JpcHRpb25cIjogXCJcIixcclxuXHRcdFx0XHRcdFwiY2xpZW50SWRcIjogXCJcIixcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSBcclxuXHRcdH0sXHJcblx0XHRvblNob3coKSB7XHJcblx0XHR9LFxyXG5cdFx0b25IaWRlKCkge30sXHJcblx0XHRtb3VudGVkKCkge1xyXG5cdFx0XHRpZiAodW5pLmdldFN5c3RlbUluZm9TeW5jKCkucGxhdGZvcm0gPT09ICdhbmRyb2lkJykge1xyXG5cdFx0XHRcdHBlcm1pc2lvbi5yZXF1ZXN0QW5kcm9pZFBlcm1pc3Npb24oJ2FuZHJvaWQucGVybWlzc2lvbi5SRUNPUkRfQVVESU8nKTtcclxuXHRcdFx0XHRwZXJtaXNpb24ucmVxdWVzdEFuZHJvaWRQZXJtaXNzaW9uKCdhbmRyb2lkLnBlcm1pc3Npb24uQ0FNRVJBJyk7XHJcblx0XHRcdH1cclxuXHRcdFx0XHJcblx0XHR9LFxyXG5cdFx0b25VbmxvYWQoKSB7XHJcblx0XHRcdHRoaXMuZGVzdHJveUluc3RhbmNlKCk7XHJcblx0XHRcdGNvbnNvbGUubG9nKCctIG9uVW5sb2FkJyk7XHJcblx0XHR9LFxyXG5cdFx0b25CYWNrUHJlc3MoKSB7XHJcblx0XHRcdHRoaXMuZGVzdHJveUluc3RhbmNlKCk7XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHRpbml0VXNlclNpZ24oKSB7XHJcblx0XHRcdFx0aWYgKHRoaXMudXNlcklkKSB7XHJcblx0XHRcdFx0XHQvLyDnlJ/miJAgdXNlclNpZ1xyXG5cdFx0XHRcdFx0Y29uc3Qge1xyXG5cdFx0XHRcdFx0XHRzZGtBcHBJZCxcclxuXHRcdFx0XHRcdFx0dXNlclNpZ1xyXG5cdFx0XHRcdFx0fSA9IGdlblRlc3RVc2VyU2lnKHRoaXMudXNlcklkKTtcclxuXHRcdFx0XHRcdHRoaXMuc2RrQXBwSWQgPSBzZGtBcHBJZDtcclxuXHRcdFx0XHRcdHRoaXMudXNlclNpZyA9IHVzZXJTaWc7XHJcblx0XHRcdFx0XHRpZiAoIXNka0FwcElkIHx8ICF1c2VyU2lnKSB7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHRcdHRpdGxlOiAn6K+35aGr5YaZIHNka0FwcElk44CBdXNlclNpZycsXHJcblx0XHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5pbml0VXNlclNpZ24oKTtcclxuXHRcdFx0XHRcdH0sIDIwMClcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdGhhbmRsZUludml0ZUN1c3RvbWVyVXNlcigpIHtcclxuXHRcdFx0XHR1bmkuc2hvd0xvYWRpbmcoKTtcclxuXHRcdFx0XHRBUEkubWVzc2FnZS5nZXRJbnZpdGVTZXJ2aWNlVXNlckpvaW4odGhpcy5yb29tLlJvb21ObykudGhlbihyZXMgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5oYXNJbnZpdGUgPSB0cnVlO1xyXG5cdFx0XHRcdH0pLmZpbmFsbHkoKCkgPT4ge1xyXG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGNyZWF0ZVJvb20oZGF0YSkge1xyXG5cdFx0XHRcdHVuaS5zaG93TG9hZGluZyh7XHJcblx0XHRcdFx0XHR0aXRsZTogJ+ato+WcqOWIm+W7uuaIv+mXtCdcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRBUEkubWVzc2FnZS5wb3N0QWRkUm9vbShkYXRhKS50aGVuKHJlcyA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnJvb20gPSByZXMuZGF0YTtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdwb3N0QWRkUm9vbScscmVzLmRhdGEpO1xyXG5cdFx0XHRcdFx0dGhpcy5yb29tSWQgPSByZXMuZGF0YS5Sb29tTm87XHJcblx0XHRcdFx0XHR0aGlzLmhhbmRsZUludml0ZUN1c3RvbWVyVXNlcigpO1xyXG5cdFx0XHRcdFx0dGhpcy5oYW5kbGVTdGFydE1lZXRpbmcodGhpcy51c2VySWQpO1xyXG5cdFx0XHRcdH0pLmZpbmFsbHkoKCkgPT4ge1xyXG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblxyXG5cdFx0XHRzZW5kTWVzc2FnZSgpIHtcclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXM7XHJcblx0XHRcdFx0dGhhdC5tZXNzYWdlTGlzdC5wdXNoKHtcclxuXHRcdFx0XHRcdGF1dGhvcjogJ+aIkScsXHJcblx0XHRcdFx0XHRjb250ZW50OiB0aGF0Lm1lc3NhZ2VDb250ZW50XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0XHR0aGF0Lm1lc3NhZ2VDb250ZW50ID0gJyc7XHJcblx0XHRcdFx0c29ja2V0VGFzay5zZW5kKHtcclxuXHRcdFx0XHRcdGRhdGE6IEpTT04uc3RyaW5naWZ5KHtcclxuXHRcdFx0XHRcdFx0Zm9ybVVzZXJJZDogdGhpcy51c2VySWQsXHJcblx0XHRcdFx0XHRcdGNvbnRlbnRUeXBlOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRjb250ZW50OiB0aGlzLm1lc3NhZ2VDb250ZW50LFxyXG5cdFx0XHRcdFx0XHRzZW5kVGltZTogbmV3IERhdGUoKSxcclxuXHRcdFx0XHRcdFx0bWV0aG9kOiAnc2VuZF90b19yb29tJyxcclxuXHRcdFx0XHRcdFx0Um9vbU5vOiB0aGlzLnJvb20uUm9vbU5vLFxyXG5cdFx0XHRcdFx0XHRSb29tTmFtZTogdGhpcy5yb29tLk5hbWUsXHJcblx0XHRcdFx0XHRcdElzUm9vbTogdHJ1ZVxyXG5cdFx0XHRcdFx0fSksXHJcblx0XHRcdFx0XHRzdWNjZXNzKHJlcykge30sXHJcblx0XHRcdFx0XHRmYWlsKGUpIHt9LFxyXG5cdFx0XHRcdFx0Y29tcGxldGUoKSB7fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRoYW5kbGVTdGFydE1lZXRpbmcodXNlcklkKSB7XHJcblx0XHRcdFx0dGhpcy5zdGFydGluZyA9IHRydWU7XHJcblx0XHRcdFx0dGhpcy4kbmV4dFRpY2soKCkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5jcmVhdGVUcnRjQ2xvdWQoKTtcclxuXHRcdFx0XHRcdHRoaXMuZW50ZXJSb29tKHVzZXJJZCk7XHJcblx0XHRcdFx0XHR0aGlzLnN0YXJ0TG9jYWxQcmV2aWV3KCk7XHJcblx0XHRcdFx0XHRpZih0aGlzLm1lZXRpbmdVc2VyT3RoZXIudXNlcklkKXtcclxuXHRcdFx0XHRcdFx0dGhpcy5zdGFydFJlbW90ZVZpZXcoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRoYW5kbGVFbmR0TWVldGluZygpIHtcclxuXHRcdFx0XHR0aGlzLmV4aXRSb29tKCk7XHJcblx0XHRcdFx0dGhpcy5kZXN0cm95SW5zdGFuY2UoKTtcclxuXHRcdFx0XHR1bmkubmF2aWdhdGVCYWNrKCk7XHJcblx0XHRcdH0sXHJcblxyXG5cdFx0XHRiaW5kSW5wdXRDaGFuZ2UoZXZlbnQsIHR5cGUpIHtcclxuXHRcdFx0XHRjb25zdCB2YWx1ZSA9IGV2ZW50LmRldGFpbC52YWx1ZTtcclxuXHRcdFx0XHRzd2l0Y2ggKHR5cGUpIHtcclxuXHRcdFx0XHRcdGNhc2UgJ3Jvb21JZCc6IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5yb29tSWQgPSB2YWx1ZTtcclxuXHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRjYXNlICd1c2VySWQnOiB7XHJcblx0XHRcdFx0XHRcdHRoaXMudXNlcklkID0gdmFsdWU7XHJcblx0XHRcdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0ZGVzdHJveUluc3RhbmNlKCkge1xyXG5cdFx0XHRcdGlmICh0aGlzLnRydGNDbG91ZCkge1xyXG5cdFx0XHRcdFx0VHJ0Y0Nsb3VkLmRlc3Ryb3lJbnN0YW5jZSgpO1xyXG5cdFx0XHRcdFx0dGhpcy50cnRjQ2xvdWQgPSBudWxsO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0Y3JlYXRlVHJ0Y0Nsb3VkKCkge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdjcmVhdGVUcnRjQ2xvdWQnLCB0aGlzLnNka0FwcElkKTtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZCA9IFRydGNDbG91ZC5jcmVhdGVJbnN0YW5jZSgpO1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCd0aGlzLnRydGNDbG91ZCcsIHRoaXMudHJ0Y0Nsb3VkKVxyXG5cdFx0XHRcdHRoaXMuaGFuZGxlRXZlbnRzKCk7XHJcblx0XHRcdFx0dGhpcy5zZGtBcHBJZCAmJiB1bmkuJGNyZWF0ZVRydGNDbG91ZFVwbG9hZCh0aGlzLnNka0FwcElkKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0ZW50ZXJSb29tKHVzZXJJZCkge1xyXG5cdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRjb25zdCB7XHJcblx0XHRcdFx0XHRcdHNka0FwcElkLFxyXG5cdFx0XHRcdFx0XHRhcHBTY2VuZSxcclxuXHRcdFx0XHRcdFx0dXNlclNpZ1xyXG5cdFx0XHRcdFx0fSA9IHRoaXM7XHJcblx0XHRcdFx0XHRsZXQgcGFyYW0gPSB7XHJcblx0XHRcdFx0XHRcdHJvb21JZDogMCxcclxuXHRcdFx0XHRcdFx0c3RyUm9vbUlkOnRoaXMucm9vbS5Sb29tTm8sXHJcblx0XHRcdFx0XHRcdHVzZXJJZDogdXNlcklkLFxyXG5cdFx0XHRcdFx0XHRzZGtBcHBJZCxcclxuXHRcdFx0XHRcdFx0dXNlclNpZ1xyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdlbnRlclJvb20nLCBwYXJhbSk7XHJcblx0XHRcdFx0XHR0aGlzLnRydGNDbG91ZC5lbnRlclJvb20ocGFyYW0sIGFwcFNjZW5lKTtcclxuXHRcdFx0XHRcdHRoaXMuc2RrQXBwSWQgJiYgdW5pLiRlbnRlclJvb21TdWNjZXNzVXBsb2FkKHRoaXMuc2RrQXBwSWQpO1xyXG5cdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XHJcblx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VMaXN0LnVuc2hpZnQoe1xyXG5cdFx0XHRcdFx0XHRjb250ZW50OiAnYGVudGVyUm9vbSBlcnJvciA9ICR7SlNPTi5zdHJpbmdpZnkoZXJyb3IpfWAnXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0dGhpcy5zZGtBcHBJZCAmJiB1bmkuJGVudGVyUm9vbUZhaWxlZFVwbG9hZCh0aGlzLnNka0FwcElkLCBKU09OLnN0cmluZ2lmeShlcnJvcikpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0ZXhpdFJvb20oKSB7XHJcblx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdHRoaXMuc3RhcnRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRcdHRoaXMuc3RvcExvY2FsUHJldmlldygpO1xyXG5cdFx0XHRcdFx0dGhpcy5zdG9wUmVtb3RlVmlldyh0aGlzLnVzZXJJZCk7XHJcblx0XHRcdFx0XHR0aGlzLnRydGNDbG91ZC5leGl0Um9vbSgpO1xyXG5cdFx0XHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0XHRcdC8vIFRPRE8gaGFuZGxlIHRoZSBleGNlcHRpb25cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHN0YXJ0TG9jYWxQcmV2aWV3KCkge1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKCdzdGFydExvY2FsUHJldmlldycsdGhpcy51c2VySWQpO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLnN0YXJ0TG9jYWxQcmV2aWV3KHRoaXMuaXNGcm9udENhbWVyYSwgdGhpcy51c2VySWQpO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLnN0YXJ0TG9jYWxBdWRpbyhUUlRDQXVkaW9RdWFsaXR5LlRSVENBdWRpb1F1YWxpdHlEZWZhdWx0KTtcclxuXHRcdFx0XHR0aGlzLnNka0FwcElkICYmIHVuaS4kc3RhcnRMb2NhbFByZXZpZXdVcGxvYWQodGhpcy5zZGtBcHBJZCk7XHJcblx0XHRcdH0sXHJcblx0XHRcdHN0b3BMb2NhbFByZXZpZXcoKSB7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQuc3RvcExvY2FsUHJldmlldygpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRzdGFydFJlbW90ZVZpZXcodXNlcklkKSB7XHJcblx0XHRcdFx0dXNlcklkID0gdXNlcklkIHx8IHRoaXMubWVldGluZ1VzZXJPdGhlci51c2VySWQ7XHJcblx0XHRcdFx0dGhpcy4kbmV4dFRpY2soKCkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy50cnRjQ2xvdWQuc3RhcnRSZW1vdGVWaWV3KHVzZXJJZCwgdGhpcy5zdHJlYW1UeXBlLCB1c2VySWQpO1xyXG5cdFx0XHRcdFx0dGhpcy5zZGtBcHBJZCAmJiB1bmkuJHN0YXJ0UmVtb3RlVmlld1N1Y2Nlc3NVcGxvYWQodGhpcy5zZGtBcHBJZCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdHN0b3BSZW1vdGVWaWV3KHVzZXJJZCkge1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLnN0b3BSZW1vdGVWaWV3KHVzZXJJZCwgdGhpcy5zdHJlYW1UeXBlKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8g5ZCs562S44CB5YWN5o+QIOWIh+aNolxyXG5cdFx0XHRzd2l0Y2hBdWRpb1JvdXRlKCkge1xyXG5cdFx0XHRcdHRoaXMuYXVkaW9Sb3V0ZSA9IHRoaXMuYXVkaW9Sb3V0ZSA9PT0gVFJUQ0Nsb3VkRGVmLlRSVENfQVVESU9fUk9VVEVfU1BFQUtFUiA/IFRSVENDbG91ZERlZlxyXG5cdFx0XHRcdFx0LlRSVENfQVVESU9fUk9VVEVfRUFSUElFQ0UgOiBUUlRDQ2xvdWREZWYuVFJUQ19BVURJT19ST1VURV9TUEVBS0VSO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLnNldEF1ZGlvUm91dGUodGhpcy5hdWRpb1JvdXRlKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0aGFuZGxlRXZlbnRzKCkge1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLm9uKCdvbldhcm5pbmcnLCAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhgLSBvbldhcm5pbmcgPSAke3Jlc31gKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5vbignb25FcnJvcicsIChyZXMpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdvbkVycm9yJywgcmVzKVxyXG5cdFx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdC51bnNoaWZ0KHtcclxuXHRcdFx0XHRcdFx0Y29udGVudDogYGVycm9yOiAke0pTT04uc3RyaW5naWZ5KHJlcyl9YFxyXG5cdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdHRoaXMuc2RrQXBwSWQgJiYgdW5pLiRvbkVycm9yVXBsb2FkKHRoaXMuc2RrQXBwSWQsIEpTT04uc3RyaW5naWZ5KHJlcykpO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLm9uKCdvbkVudGVyUm9vbScsIChyZXN1bHQpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGAtIG9uRW50ZXJSb29tID0gJHtyZXN1bHR9YCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uRXhpdFJvb20nLCAocmVhc29uKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnb25FeGl0Um9vbScscmVhc29uKTtcclxuXHRcdFx0XHRcdGNvbnN0IHJlYXNvbkxpc3QgPSBbJ+S4u+WKqOiwg+eUqCBleGl0Um9vbSDpgIDmiL8nLCAn6KKr5pyN5Yqh5Zmo6Lii5Ye65b2T5YmN5oi/6Ze0JywgJ+W9k+WJjeaIv+mXtOaVtOS4quiiq+ino+aVoyddO1xyXG5cdFx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdC51bnNoaWZ0KHtcclxuXHRcdFx0XHRcdFx0Y29udGVudDogYOmAgOaIvyAke3JlYXNvbkxpc3RbcmVhc29uXX1gXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHRoaXMudHJ0Y0Nsb3VkLm9uKCdvbkZpcnN0VmlkZW9GcmFtZScsIChyZXMpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGDmuLLmn5PnmoTpppbluKfnlLvpnaLlk43lupQgPSAke0pTT04uc3RyaW5naWZ5KHJlcyl9YCk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uUmVtb3RlVXNlckVudGVyUm9vbScsICh1c2VySWQpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCdvblJlbW90ZVVzZXJFbnRlclJvb20nLHVzZXJJZCk7XHJcblx0XHRcdFx0XHR0aGlzLm1lZXRpbmdVc2VyT3RoZXIudXNlcklkID0gdXNlcklkO1xyXG5cdFx0XHRcdFx0dGhpcy5tZWV0aW5nID0gdHJ1ZTtcclxuXHRcdFx0XHRcdHRoaXMuc3RhcnRSZW1vdGVWaWV3KHVzZXJJZCk7XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5vbignb25SZW1vdGVVc2VyTGVhdmVSb29tJywgKHVzZXJJZCkgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ29uUmVtb3RlVXNlckxlYXZlUm9vbScsdXNlcklkKTtcclxuXHRcdFx0XHRcdHRoaXMubWVldGluZ1VzZXJPdGhlci51c2VySWQgPSAnJztcclxuXHRcdFx0XHRcdHRoaXMubWVldGluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6J+WvueaWueW3sumAgOWHuicsXHJcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6ZmFsc2VcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uVXNlckF1ZGlvQXZhaWxhYmxlJywocmVzKT0+e1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ29uVXNlckF1ZGlvQXZhaWxhYmxlJyxyZXMpO1xyXG5cdFx0XHRcdH0pXHJcblx0XHRcdFx0dGhpcy50cnRjQ2xvdWQub24oJ29uVXNlclZpZGVvQXZhaWxhYmxlJywgKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ29uVXNlclZpZGVvQXZhaWxhYmxlJyxyZXMpO1xyXG5cdFx0XHRcdFx0Y29uc3Qge1xyXG5cdFx0XHRcdFx0XHR1c2VySWQsXHJcblx0XHRcdFx0XHRcdGF2YWlsYWJsZVxyXG5cdFx0XHRcdFx0fSA9IHJlcztcclxuXHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3QudW5zaGlmdCh7XHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IGBvblVzZXJWaWRlb0F2YWlsYWJsZSA9ICR7SlNPTi5zdHJpbmdpZnkocmVzKX1gXHJcblx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0aWYoYXZhaWxhYmxlKXtcclxuXHRcdFx0XHRcdFx0dGhpcy5zdGFydExvY2FsUHJldmlldygpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0aWYgKHVzZXJJZCAmJiBhdmFpbGFibGUpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5zdGFydFJlbW90ZVZpZXcodXNlcklkKTtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuc3RvcFJlbW90ZVZpZXcodXNlcklkKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR0aGlzLnRydGNDbG91ZC5vbignb25FeGl0Um9vbScsIChyZXMpID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGBvbkV4aXRSb29tID0gJHtKU09OLnN0cmluZ2lmeShyZXMpfWApO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0fVxyXG5cdH1cclxuPC9zY3JpcHQ+XHJcbjxzdHlsZSBzcmM9XCJAL3BhZ2VzL21lZXRpbmcvc2VydmljZU1lZXRpbmcuY3NzXCI+PC9zdHlsZT5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///9\n");
373 356
374 /***/ }), 357 /***/ }),
375 /* 10 */ 358 /* 10 */
uniapp-wuduhuajiao/unpackage/release/apk/__UNI__E68BD56__20220801111452.apk 0 → 100644
No preview for this file type